cancel
Showing results for 
Search instead for 
Did you mean: 

Different order of execution of the tasks: activiti bug?

udoderk
Champ in-the-making
Champ in-the-making
Hi all,
I model the following business process. This business process includes the following steps:
1 - "Start" User Task.
2 - "Make decision" User Task: the user specifies whether "yes" path or "No" path must be chosen.
3 - If "Yes" path is selected, then is "Bugfix" User Task runs.

4 - Whether "Yes" or "No" is selected, "Checkpoint" User Task must be allways running.
5 - "End" User Task must be running.

I have tried to model this process firstly without the inclusive gateway. If  inclusive gateway would be used, so it would be look like the diagram as follows:

[img]http://img267.imageshack.us/img267/8277/myprocessyesnoyesandnoi.png[/img]


Note, the generation of BPMN20 XML for Activiti 5.10 is based on the existing data from another application. This another application is used to model business process too.

My problem is that i have for same business process two generation-cases and a different order of execution of the tasks in Activiti Explorer depending on how I design the business process in another application.

Therefore, I would like to know the rules by which the order is the flow of tasks defined.

Details:

If i use the following xml, and select "No" checkbox within "Make decision" user task ,  so the "Checkpoint" user task with number 4 occurs before of the user task "Bugfix" number 3 (not correct !):
 


<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="adhoc">
<process id="process_438" isExecutable="true" name="TestYesNo_YesAndNo">
<documentation id="process_doc_438">created at: Fri Jan 11 14:30:15 CET 2013</documentation>
<userTask id="ut_1_" name="1 Start (A)">
<extensionElements />
<potentialOwner id="IDPRFX_po_565">
<resourceAssignmentExpression id="IDPRFX_po_rae_565">
<formalExpression id="IDPRFX_po_rae_fe_565">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_565">
<resourceAssignmentExpression id="IDPRFX_hp_rae_565">
<formalExpression id="IDPRFX_hp_rae_fe_565">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_2_" name="2 OK? (A)">
<extensionElements>
<activiti:formProperty id="yes_path_566" variable="yes_path_VAR" name="Yes" value="true" required="false" type="boolean" />
<activiti:formProperty id="no_path_566" variable="no_path_VAR" name="No" value="true" required="false" type="boolean" />
</extensionElements>
<potentialOwner id="IDPRFX_po_566">
<resourceAssignmentExpression id="IDPRFX_po_rae_566">
<formalExpression id="IDPRFX_po_rae_fe_566">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_566">
<resourceAssignmentExpression id="IDPRFX_hp_rae_566">
<formalExpression id="IDPRFX_hp_rae_fe_566">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_3_" name="3 Bugfix (D)">
<extensionElements />
<potentialOwner id="IDPRFX_po_569">
<resourceAssignmentExpression id="IDPRFX_po_rae_569">
<formalExpression id="IDPRFX_po_rae_fe_569">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_569">
<resourceAssignmentExpression id="IDPRFX_hp_rae_569">
<formalExpression id="IDPRFX_hp_rae_fe_569">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_4_" name="4 Checkpoint (B)">
<extensionElements />
<potentialOwner id="IDPRFX_po_568">
<resourceAssignmentExpression id="IDPRFX_po_rae_568">
<formalExpression id="IDPRFX_po_rae_fe_568">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_568">
<resourceAssignmentExpression id="IDPRFX_hp_rae_568">
<formalExpression id="IDPRFX_hp_rae_fe_568">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_5_" name="5 End (A)">
<extensionElements />
<potentialOwner id="IDPRFX_po_567">
<resourceAssignmentExpression id="IDPRFX_po_rae_567">
<formalExpression id="IDPRFX_po_rae_fe_567">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_567">
<resourceAssignmentExpression id="IDPRFX_hp_rae_567">
<formalExpression id="IDPRFX_hp_rae_fe_567">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<sequenceFlow id="vid_451" sourceRef="ut_1_" targetRef="ut_2_" />
<sequenceFlow id="vid_453" sourceRef="ut_2_" targetRef="ut_5_">
<conditionExpression xsi:type="tFormalExpression">${yes_path_VAR == 'true'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_454" sourceRef="ut_2_" targetRef="ut_4_">
<conditionExpression xsi:type="tFormalExpression">${yes_path_VAR == 'true' || no_path_VAR == 'true' }</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_456" sourceRef="ut_4_" targetRef="ut_5_" />
<sequenceFlow id="vid_461" sourceRef="ut_3_" targetRef="ut_5_" />
<sequenceFlow id="vid_462" sourceRef="ut_2_" targetRef="ut_3_">
<conditionExpression xsi:type="tFormalExpression">${no_path_VAR == 'true'}</conditionExpression>
</sequenceFlow>
<startEvent id="theStart" activiti:initiator="initiator" />
<sequenceFlow id="fromStart" sourceRef="theStart" targetRef="ut_1_" />
<endEvent id="theEnd_567" />
<sequenceFlow id="toEnd_567" sourceRef="ut_5_" targetRef="theEnd_567" />
</process>
</definitions>



If i use the following xml, and select "No" checkbox within "Make decision" user task , so the "Checkpoint" user task with number 4 occurs after of the user task "Bugfix" number 3 (correct 😞

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="adhoc">
<process id="process_463" isExecutable="true" name="TestYesNoYesAndNo2">
<documentation id="process_doc_463">created at: Fri Jan 11 14:35:15 CET 2013</documentation>
<userTask id="ut_1_" name="1 Start (A)">
<extensionElements />
<potentialOwner id="IDPRFX_po_590">
<resourceAssignmentExpression id="IDPRFX_po_rae_590">
<formalExpression id="IDPRFX_po_rae_fe_590">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_590">
<resourceAssignmentExpression id="IDPRFX_hp_rae_590">
<formalExpression id="IDPRFX_hp_rae_fe_590">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_2_" name="2 OK? (A)">
<extensionElements>
<activiti:formProperty id="yes_path_591" variable="yes_path_VAR" name="Yes" value="true" required="false" type="boolean" />
<activiti:formProperty id="no_path_591" variable="no_path_VAR" name="No" value="true" required="false" type="boolean" />
</extensionElements>
<potentialOwner id="IDPRFX_po_591">
<resourceAssignmentExpression id="IDPRFX_po_rae_591">
<formalExpression id="IDPRFX_po_rae_fe_591">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_591">
<resourceAssignmentExpression id="IDPRFX_hp_rae_591">
<formalExpression id="IDPRFX_hp_rae_fe_591">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_3_" name="3 Bugfix (D)">
<extensionElements />
<potentialOwner id="IDPRFX_po_592">
<resourceAssignmentExpression id="IDPRFX_po_rae_592">
<formalExpression id="IDPRFX_po_rae_fe_592">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_592">
<resourceAssignmentExpression id="IDPRFX_hp_rae_592">
<formalExpression id="IDPRFX_hp_rae_fe_592">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_4_" name="4 Checkpoint (B)">
<extensionElements />
<potentialOwner id="IDPRFX_po_593">
<resourceAssignmentExpression id="IDPRFX_po_rae_593">
<formalExpression id="IDPRFX_po_rae_fe_593">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_593">
<resourceAssignmentExpression id="IDPRFX_hp_rae_593">
<formalExpression id="IDPRFX_hp_rae_fe_593">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_5_" name="5 End (A)">
<extensionElements />
<potentialOwner id="IDPRFX_po_594">
<resourceAssignmentExpression id="IDPRFX_po_rae_594">
<formalExpression id="IDPRFX_po_rae_fe_594">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_594">
<resourceAssignmentExpression id="IDPRFX_hp_rae_594">
<formalExpression id="IDPRFX_hp_rae_fe_594">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<sequenceFlow id="vid_478" sourceRef="ut_2_" targetRef="ut_3_">
<conditionExpression xsi:type="tFormalExpression">${no_path_VAR == 'true'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_479" sourceRef="ut_2_" targetRef="ut_5_">
<conditionExpression xsi:type="tFormalExpression">${yes_path_VAR == 'true'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_480" sourceRef="ut_2_" targetRef="ut_4_">
<conditionExpression xsi:type="tFormalExpression">${yes_path_VAR == 'true' || no_path_VAR == 'true' }</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_481" sourceRef="ut_1_" targetRef="ut_2_" />
<sequenceFlow id="vid_482" sourceRef="ut_4_" targetRef="ut_5_" />
<sequenceFlow id="vid_483" sourceRef="ut_3_" targetRef="ut_5_" />
<startEvent id="theStart" activiti:initiator="initiator" />
<sequenceFlow id="fromStart" sourceRef="theStart" targetRef="ut_1_" />
<endEvent id="theEnd_594" />
<sequenceFlow id="toEnd_594" sourceRef="ut_5_" targetRef="theEnd_594" />
</process>
</definitions>



I thank you for the some ideas and help!
13 REPLIES 13

frederikherema1
Star Contributor
Star Contributor
It would be good if you highlight the difference in the two BPMN-files. Just pasting them both unformatted is really discouraging for other people to dive in Smiley Wink

udoderk
Champ in-the-making
Champ in-the-making
It would be good if you highlight the difference in the two BPMN-files. Just pasting them both unformatted is really discouraging for other people to dive in Smiley Wink

Hi frederikheremans, i set the same element ids for all xml elements (except process id). The difference is the ordering of the sequence flow elements within xmls.
Left - 3 before 4 (correct). On the right- 4 before 3 (not correct).
The xml with correct sequence has after user task with name "5 End (A)" the conditional flow.
[img]http://img213.imageshack.us/img213/9199/43v1.png[/img]

The whole xmls with adjusted ids:
3 before 4 (correct)


<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlnsSmiley Surprisedmgdc="http://www.omg.org/spec/DD/20100524/DC" xmlnsSmiley Surprisedmgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="adhoc">
<process id="process_438_3b4" isExecutable="true" name="TestYesNo_YesAndNo–3b4">

<userTask id="ut_1_" name="1 Start (A)">
<extensionElements />
<potentialOwner id="IDPRFX_po_565">
<resourceAssignmentExpression id="IDPRFX_po_rae_565">
<formalExpression id="IDPRFX_po_rae_fe_565">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_565">
<resourceAssignmentExpression id="IDPRFX_hp_rae_565">
<formalExpression id="IDPRFX_hp_rae_fe_565">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_2_" name="2 OK? (A)">
<extensionElements>
<activiti:formProperty id="yes_path_566" variable="yes_path_VAR" name="Yes" value="true" required="false" type="boolean" />
<activiti:formProperty id="no_path_566" variable="no_path_VAR" name="No" value="true" required="false" type="boolean" />
</extensionElements>
<potentialOwner id="IDPRFX_po_566">
<resourceAssignmentExpression id="IDPRFX_po_rae_566">
<formalExpression id="IDPRFX_po_rae_fe_566">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_566">
<resourceAssignmentExpression id="IDPRFX_hp_rae_566">
<formalExpression id="IDPRFX_hp_rae_fe_566">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_3_" name="3 Bugfix (D)">
<extensionElements />
<potentialOwner id="IDPRFX_po_569">
<resourceAssignmentExpression id="IDPRFX_po_rae_569">
<formalExpression id="IDPRFX_po_rae_fe_569">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_569">
<resourceAssignmentExpression id="IDPRFX_hp_rae_569">
<formalExpression id="IDPRFX_hp_rae_fe_569">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_4_" name="4 Checkpoint (B)">
<extensionElements />
<potentialOwner id="IDPRFX_po_568">
<resourceAssignmentExpression id="IDPRFX_po_rae_568">
<formalExpression id="IDPRFX_po_rae_fe_568">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_568">
<resourceAssignmentExpression id="IDPRFX_hp_rae_568">
<formalExpression id="IDPRFX_hp_rae_fe_568">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_5_" name="5 End (A)">
<extensionElements />
<potentialOwner id="IDPRFX_po_567">
<resourceAssignmentExpression id="IDPRFX_po_rae_567">
<formalExpression id="IDPRFX_po_rae_fe_567">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_567">
<resourceAssignmentExpression id="IDPRFX_hp_rae_567">
<formalExpression id="IDPRFX_hp_rae_fe_567">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<sequenceFlow id="vid_462" sourceRef="ut_2_" targetRef="ut_3_">
<conditionExpression xsi:type="tFormalExpression">${no_path_VAR == 'true'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_453" sourceRef="ut_2_" targetRef="ut_5_">
<conditionExpression xsi:type="tFormalExpression">${yes_path_VAR == 'true'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_454" sourceRef="ut_2_" targetRef="ut_4_">
<conditionExpression xsi:type="tFormalExpression">${yes_path_VAR == 'true' || no_path_VAR == 'true' }</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_451" sourceRef="ut_1_" targetRef="ut_2_" />
<sequenceFlow id="vid_456" sourceRef="ut_4_" targetRef="ut_5_" />
<sequenceFlow id="vid_461" sourceRef="ut_3_" targetRef="ut_5_" />
<startEvent id="theStart" activiti:initiator="initiator" />
<sequenceFlow id="fromStart" sourceRef="theStart" targetRef="ut_1_" />
<endEvent id="theEnd_567" />
<sequenceFlow id="toEnd_567" sourceRef="ut_5_" targetRef="theEnd_567" />
</process>
</definitions>



4 before 3 (not correct)

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlnsSmiley Surprisedmgdc="http://www.omg.org/spec/DD/20100524/DC" xmlnsSmiley Surprisedmgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="adhoc">
<process id="process_438_4b3" isExecutable="true" name="TestYesNo_YesAndNo-4b3">

<userTask id="ut_1_" name="1 Start (A)">
<extensionElements />
<potentialOwner id="IDPRFX_po_565">
<resourceAssignmentExpression id="IDPRFX_po_rae_565">
<formalExpression id="IDPRFX_po_rae_fe_565">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_565">
<resourceAssignmentExpression id="IDPRFX_hp_rae_565">
<formalExpression id="IDPRFX_hp_rae_fe_565">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_2_" name="2 OK? (A)">
<extensionElements>
<activiti:formProperty id="yes_path_566" variable="yes_path_VAR" name="Yes" value="true" required="false" type="boolean" />
<activiti:formProperty id="no_path_566" variable="no_path_VAR" name="No" value="true" required="false" type="boolean" />
</extensionElements>
<potentialOwner id="IDPRFX_po_566">
<resourceAssignmentExpression id="IDPRFX_po_rae_566">
<formalExpression id="IDPRFX_po_rae_fe_566">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_566">
<resourceAssignmentExpression id="IDPRFX_hp_rae_566">
<formalExpression id="IDPRFX_hp_rae_fe_566">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_3_" name="3 Bugfix (D)">
<extensionElements />
<potentialOwner id="IDPRFX_po_569">
<resourceAssignmentExpression id="IDPRFX_po_rae_569">
<formalExpression id="IDPRFX_po_rae_fe_569">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_569">
<resourceAssignmentExpression id="IDPRFX_hp_rae_569">
<formalExpression id="IDPRFX_hp_rae_fe_569">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_4_" name="4 Checkpoint (B)">
<extensionElements />
<potentialOwner id="IDPRFX_po_568">
<resourceAssignmentExpression id="IDPRFX_po_rae_568">
<formalExpression id="IDPRFX_po_rae_fe_568">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_568">
<resourceAssignmentExpression id="IDPRFX_hp_rae_568">
<formalExpression id="IDPRFX_hp_rae_fe_568">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<userTask id="ut_5_" name="5 End (A)">
<extensionElements />
<potentialOwner id="IDPRFX_po_567">
<resourceAssignmentExpression id="IDPRFX_po_rae_567">
<formalExpression id="IDPRFX_po_rae_fe_567">management</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
<humanPerformer id="IDPRFX_hp_567">
<resourceAssignmentExpression id="IDPRFX_hp_rae_567">
<formalExpression id="IDPRFX_hp_rae_fe_567">${initiator}</formalExpression>
</resourceAssignmentExpression>
</humanPerformer>
</userTask>
<sequenceFlow id="vid_451" sourceRef="ut_1_" targetRef="ut_2_" />
<sequenceFlow id="vid_453" sourceRef="ut_2_" targetRef="ut_5_">
<conditionExpression xsi:type="tFormalExpression">${yes_path_VAR == 'true'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_454" sourceRef="ut_2_" targetRef="ut_4_">
<conditionExpression xsi:type="tFormalExpression">${yes_path_VAR == 'true' || no_path_VAR == 'true' }</conditionExpression>
</sequenceFlow>
<sequenceFlow id="vid_456" sourceRef="ut_4_" targetRef="ut_5_" />
<sequenceFlow id="vid_461" sourceRef="ut_3_" targetRef="ut_5_" />
<sequenceFlow id="vid_462" sourceRef="ut_2_" targetRef="ut_3_">
<conditionExpression xsi:type="tFormalExpression">${no_path_VAR == 'true'}</conditionExpression>
</sequenceFlow>
<startEvent id="theStart" activiti:initiator="initiator" />
<sequenceFlow id="fromStart" sourceRef="theStart" targetRef="ut_1_" />
<endEvent id="theEnd_567" />
<sequenceFlow id="toEnd_567" sourceRef="ut_5_" targetRef="theEnd_567" />
</process>
</definitions>

frederikherema1
Star Contributor
Star Contributor
So the conditions on the sequence-flows aren't added to the second bpmn20.xml file, this explains why there is different behavior… What tool did you use?

udoderk
Champ in-the-making
Champ in-the-making
So the conditions on the sequence-flows aren't added to the second bpmn20.xml file, this explains why there is different behavior… What tool did you use?

The condition of the sequence flows are added to second bpmn20.xml. But the following condition
<sequenceFlow id="vid_462" sourceRef="ut_2_" targetRef="ut_3_">
<conditionExpression xsi:type="tFormalExpression">${no_path_VAR == 'true'}</conditionExpression>
</sequenceFlow>

has in second file (4 before 3) the different order as in first xml file…

I use the tool, that our developer team have been develouped, to convert the given business model to BPMN20 and deploy it into activiti.

ronald_van_kuij
Champ on-the-rise
Champ on-the-rise
you seem to rely on the order in which the conditions on sequenceflows are evaluated or am I wrong? What I read in the spec is that there is something about evaluating them in the order from top to bottom.

With "NO", the order of creation of the usertasks (waitstates)  (officially?) would be 3, 4.  But if 3 is executed before 4, 5  becomes active and might come before 4 as well and if 4 is executed, 5 will be executed again. 4 could also be executed (it is a user task) before three, so all possible orders are 3,4,5,5 and 3,5,4,5 and 4,5,3,5 and 4,3,5,5…

With "YES" it would (officially?) be 5, 4 . But again, since they are user tasks, they could still be excuted manually in a different order. So the possible orders are: 4,5,5 5,4,5

So Personally I'd never rely on this. If you want 3 to be executed first and then 4, then model it that way explicitly. But that is just my 2 cents…

(unless I understand the spec wrong, no expert, just a little more knowledge that the average john or jane)

udoderk
Champ in-the-making
Champ in-the-making
you seem to rely on the order in which the conditions on sequenceflows are evaluated or am I wrong? What I read in the spec is that there is something about evaluating them in the order from top to bottom.

Hi , i rely on the order in which the conditions on sequenceflows are evaluated. The evaluating in the order from top to bottom illustrated the root of my problem! Thanks!
Where exactly is it exactly explained in spec??

P.S if an user  would be assigned to "Checkpoint" and another user to other user tasks of process, so that problem would not be existed.

ronald_van_kuij
Champ on-the-rise
Champ on-the-rise
The order is btw only valid for Exclusive gateways (see 13.3.2 in the spec) :

In order to determine the outgoing Sequence Flows that receives the token, the conditions are evaluated in order.

What the order is, is not specified, but TopToBottom seems to be 'common' in some situations. Or the order in the file? And these could be different. I therefor would not rely on this… BUT….

You use an inclusive gateay and 13.3.3 in the spec says:

In order to determine the outgoing Sequence Flows that receive a token, all conditions on the outgoing Sequence Flows are evaluated. The eval- uation does not have to respect a certain order.

For every condition which evaluates to true, a token MUST be passed on the respective Sequence Flow.

So it seems you rely on something that is not even to be expected according to the spec.

Modelling it something like this is what I would do (maybe the sequenceflow from 3 to the parallel gateway (join) can be removed including the parallel gateway itself

udoderk
Champ in-the-making
Champ in-the-making
Thank you Smiley Happy
You're right, this your solution
[img]http://kukeltje.files.wordpress.com/2013/01/selectie_002.png?w=648[/img]


explicitly defines the order! But in this case the Checkpoint assigned to same swimlane Smiley Surprisedops: But it is no real problem Smiley Happy Just shift to bottom :ugeek:

ronald_van_kuij
Champ on-the-rise
Champ on-the-rise
how do you get the image in there? I tried everything….

And swimlanes are just visual candy. Use the assignee for that. 3, 4 and 5 can have different assignees…I do not understand the 'shift to bottom'