cancel
Showing results for 
Search instead for 
Did you mean: 

callActivity doesn't work when calling another xml

clever
Champ in-the-making
Champ in-the-making
HI can someone please explain how callActivity works calling another xml process or tell me what's wrong with this:

I'm trying to put a subprocess in its own file to make it 1) reusable and 2) make the main xml smaller cause it is getting big. so i create a simple subprocess that if called within the same xml works ok, but once i create a callActivity and i move the subprocess to another file it doesnt work anymore.

This works:

mainprocess.bpmn20.xml…<serviceTask id="handleProcess" name="Handle process" activiti:class="com.package.activiti.ActivitiServiceProcess" /><sequenceFlow id="flow1" sourceRef="handleProcess" targetRef="handleSubProcess" /><sequenceFlow id="flow2" sourceRef="handleSubProcess" targetRef="end" /><subProcess id="handleSubProcess" name="Handle Sub-Process">   <startEvent id="handleSubProcessStart" />   <exclusiveGateway id="makeDecision" name="Is this true" />   <serviceTask id="create_process" name="Create process"   activiti:class="com.package.activiti.ActivitiServiceProcess" />   <receiveTask id="complete_process" name="Complete process" />   <exclusiveGateway id="makeDecisionEnd" name="END is this true" />   <endEvent id="handleSubProcessEnd" />   <sequenceFlow id="flow3" sourceRef="handleSubProcessStart"   targetRef="makeDecision" />   <sequenceFlow id="flow4" sourceRef="makeDecision" targetRef="create_process">      <conditionExpression>${service.evaluate(execution, "isThisTrue")}</conditionExpression>   </sequenceFlow>   <sequenceFlow id="flow5" sourceRef="create_process" targetRef="complete_process" />   <sequenceFlow id="flow6" sourceRef="complete_process" targetRef="makeDecisionEnd" /></subProcess>…‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


IF i change this to look as follows it doesn't work anymore:
mainprocess.bpmn20.xml…<serviceTask id="handleProcess" name="Handle process" activiti:class="com.package.activiti.ActivitiServiceProcess" /><sequenceFlow id="flow1" sourceRef="handleProcess" targetRef="handleSubProcessCall" /><callActivity id="handleSubProcessCall" name="Handle Sub-Process" calledElement="handleSubProcess" /><sequenceFlow id="flowSD3" sourceRef="handleSubProcessCall" targetRef="end" />…subprocess.bpmn20.xml…<process id="handleSubProcess" name="Handle Sub-Process">   <startEvent id="start" />      <exclusiveGateway id="makeDecision" name="Is this true" />      <serviceTask id="create_process" name="Create process" activiti:class="com.package.activiti.ActivitiServiceProcess" />      <receiveTask id="complete_process" name="Complete process" />      <exclusiveGateway id="makeDecisionEnd" name="END is this true" />   <endEvent id="end" />   <sequenceFlow id="flow3" sourceRef="handleSubProcessStart"   targetRef="makeDecision" />   <sequenceFlow id="flow4" sourceRef="makeDecision" targetRef="create_process">      <conditionExpression>${service.evaluate(execution, "isThisTrue")}</conditionExpression>   </sequenceFlow>   <sequenceFlow id="flow5" sourceRef="create_process" targetRef="complete_process" />   <sequenceFlow id="flow6" sourceRef="complete_process" targetRef="makeDecisionEnd" /></process>…‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍


can someone please tell me what's wrong with it or how to make this work? there is no concrete example in the user guide about calling a different XML and my code was based on the only example i was able to find: http://forums.activiti.org/content/subprocess-definition-separate-xml
i've moved the code exactly to the other file as you can see and i've just made the call to it from the main.

i get a runtime exception:
org.activiti.engine.ActivitiException: Error while evalutaing expression
   at org.activiti.engine.impl.el.JuelExpression.getValue(JuelExpression.java:59)
   at org.activiti.engine.impl.el.UelExpressionCondition.evaluate(UelExpressionCondition.java:37)
   at org.activiti.engine.impl.bpmn.behavior.ExclusiveGatewayActivityBehavior.leave(ExclusiveGatewayActivityBehavior.java:63)
   at org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.execute(FlowNodeActivityBehavior.java:36)
   at org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute.execute(AtomicOperationActivityExecute.java:40)
1 REPLY 1

trademak
Star Contributor
Star Contributor
Answered in your other post.