@Test
public void readProcessWithCallActivityFromBusinessArchive() throws Exception {
final Expression fromCallerData = new ExpressionBuilder().createDataExpression("var1", Boolean.class.getName());
final LeftOperand dataInputLeftOp = new LeftOperandBuilder().createNewInstance("data1").done();
final Operation dataInputOperation = getOperation(fromCallerData, dataInputLeftOp);
final Expression fromCallableElementData = new ExpressionBuilder().createDataExpression("data2", Integer.class.getName());
final LeftOperand dataOutputOp = new LeftOperandBuilder().createNewInstance("var2").done();
final Operation dataOutputOperation = getOperation(fromCallableElementData, dataOutputOp);
final Expression targetProcess = new ExpressionBuilder().createConstantStringExpression("MyProcess2");
final Expression processVersion = new ExpressionBuilder().createConstantStringExpression("1.0");
final ProcessDefinitionBuilder builder = new ProcessDefinitionBuilder().createNewInstance("MyProcess", "1.0");
builder.addBooleanData("var1", null);
builder.addIntegerData("var2", null);
builder.addStartEvent("start1");
final CallActivityBuilder callActivityBuilder = builder.addCallActivity("callActivity", targetProcess, processVersion);
final Expression supportCaseIdExpression = new ExpressionBuilder().createConstantLongExpression(206L);
final String supportCaseIdInputName = "supportCaseId";
callActivityBuilder.addProcessStartContractInput(supportCaseIdInputName, supportCaseIdExpression);
callActivityBuilder.addDataInputOperation(dataInputOperation);
callActivityBuilder.addDataOutputOperation(dataOutputOperation);
builder.addEndEvent("end1");
builder.addTransition("start1", "callActivity");
builder.addTransition("callActivity", "end1");
final DesignProcessDefinition process = builder.getProcess();
final DesignProcessDefinition result = getDesignProcessDefinition(builder);
checkProcessForCallActivity(process, result);
final CallActivityDefinition callActivity = (CallActivityDefinition) result.getFlowElementContainer().getActivity("callActivity");
assertThat(callActivity.getProcessStartContractInputs().get(supportCaseIdInputName).isEquivalent(supportCaseIdExpression)).isTrue();
}