[jboss-user] [JBoss jBPM] - Process State in a Fork not executing correctly

philso do-not-reply at jboss.com
Mon Jan 5 10:19:16 EST 2009


Hi, I have a test running that contains multiple nodes including two Process States. JPEG of the Process Definition is at:

http://picasaweb.google.com/lh/sredir?uname=phil.omalley&target=ALBUM&id=5287822354390912129&authkey=uuhzGmyCK8M&invite=CNzcsOsJ&feat=email 

 Process State 1 (LoadSubProcess1) is on the main path of execution. Process State 2 (LoadSubProcess2) is in a fork with two paths. I find I can execute my test fine up to the Process State in the Fork (LoadSubProcess2). My test can traverse fine through the first process State (LoadSubProcess1). When execution gets to the Fork alls well, child tokens are created OK but when execution is called on the transition into LoadSubProcess2 the Sub Process is not entered and the only available transition to this token is "fromLoadSubProcess2" (the transition after LoadSubProcess2). So it looks like the child tokens execution path cannot execute the Sub Process. For this test I've made LoadSubProcess1 & 2 point to the same ProcessDefinition xml so I know the xml is OK. The two other child paths execute fine and complete ok into the join node. The only difference I can see is one Process State call is made from the main execution path and the failing one is made from a child execution path. Does anyone have an idea what I'm doing wrong here? Many thanks for your time & effort.


The Main Process Definition xml

  | <?xml version="1.0" encoding="UTF-8"?>
  | <process-definition xmlns="urn:jbpm.org:jpdl-3.2urn:jbpm.org:jpdl-3.2"
  | 	name="SampleProcess">
  | 	<start-state name="Start">
  | 		<transition to="task-node1" name="to task-node1">
  | 		</transition>
  | 	</start-state>
  | 	<task-node name="task-node1" signal="never">
  | 		<task name="taskNametask-node1" />
  | 		<transition to="state0" name="to-state0"></transition>
  | 	</task-node>
  | 	<state name="state0">
  | 		<transition to="LoadSubProcess1" name="toLoadSubProcess1"></transition>
  | 	</state>
  | 	<fork name="fork1">
  | 		<transition to="state1" name="toState1"></transition>
  | 		<transition to="state2" name="to state2"></transition>
  | 		<transition to="state3" name="to state3"></transition>
  | 	</fork>
  | 	<state name="state1">
  | 		<event type="node-leave">
  | 			<action
  | 				class="com.meridianp2p.stf.impl.workflow.ProcessChangeEventNotifier"></action>
  | 		</event>
  | 		<transition to="task-node2" name="to task-node2"></transition>
  | 	</state>
  | 	<state name="state2">
  | 		<event type="node-leave">
  | 			<action
  | 				class="com.meridianp2p.stf.impl.workflow.ProcessChangeEventNotifier"></action>
  | 		</event>
  | 		<transition to="task-node3" name="to task-node3"></transition>
  | 	</state>
  | 	<task-node name="task-node2" signal="never">
  | 		<task name="taskNametask-node2" />
  | 		<transition to="LoadSubProcess2" name="toLoadSubProcess2"></transition>
  | 	</task-node>
  | 	<task-node name="task-node3" signal="never">
  | 		<task name="taskNametask-node3" />
  | 		<transition to="join1" name="from task-node3"></transition>
  | 	</task-node>
  | 	<state name="state3">
  | 		<event type="node-leave">
  | 			<action
  | 				class="com.meridianp2p.stf.impl.workflow.ProcessChangeEventNotifier"></action>
  | 		</event>
  | 		<transition to="task-node4" name="to task-node4"></transition>
  | 	</state>
  | 	<task-node name="task-node4" signal="never">
  | 		<task name="taskNametask-node4" />
  | 		<transition to="state4" name="to state4"></transition>
  | 	</task-node>
  | 	<join name="join1">
  | 		<transition to="taskNode6" name="toTaskNode6"></transition>
  | 	</join>
  | 	<task-node name="task-node5" signal="never">
  | 		<task name="taskNametask-node5" />
  | 		<transition to="join1" name="from task-node5"></transition>
  | 	</task-node>
  | 	<state name="state4">
  | 		<event type="node-enter">
  | 			<action
  | 				class="com.meridianp2p.stf.impl.workflow.ProcessChangeEventNotifier"></action>
  | 		</event>
  | 		<transition to="task-node5" name="to task-node5"></transition>
  | 	</state>
  | 	<process-state name="LoadSubProcess2">
  | 		<sub-process name="LoadSubProcess" />
  | 		<transition to="join1" name="fromLoadSubProcess2"></transition>
  | 	</process-state>
  | 	<task-node name="taskNode6" signal="never">
  | 		<task name="taskNametask-node6" />
  | 		<transition to="End" name="toEnd"></transition>
  | 	</task-node>
  | 	<process-state name="LoadSubProcess1">
  | 		<sub-process name="LoadSubProcess" />
  | 		<transition to="task-nodeA" name="to task-nodeA"></transition>
  | 	</process-state>
  | 
  | 	<state name="stateA">
  | 		<transition to="fork1" name="toFork1"></transition>
  | 	</state>
  | 
  | 	<task-node name="task-nodeA" signal="never">
  | 		<task name="taskNametask-nodeA" />
  | 		<transition to="stateA" name="toStateA"></transition>
  | 	</task-node>
  | 	<end-state name="End"></end-state>
  | </process-definition>
  | 

Sub Process XML

  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <process-definition  xmlns=""  name="LoadSubProcess">
  | 
  | 
  | 	<start-state name="Start">
  | 		<event type="node-enter"  >
  | 			<action class="com.meridianp2p.stf.impl.workflow.ProcessChangeEventNotifier"></action> 
  | 		</event>
  | 		<transition to="LoadIncomplete" name="toLoadIncomplete"></transition>
  | 	</start-state>
  | 
  | 
  | 	<state name="LoadIncomplete">
  | 		<event type="node-enter"  >
  | 			<action class="com.meridianp2p.stf.impl.workflow.ProcessChangeEventNotifier"></action> 
  | 		</event>
  | 		<transition to="CreateOrUpdateDoc" name="toCreateOrUpdateDoc"></transition>
  | 		<transition to="CancelTrip" name="toCancelTrip"></transition>
  | 		<transition to="CreateDoc" name="toCreateDoc"></transition>
  | 		<transition to="TripCompleted" name="toTripCompleted"></transition>
  | 	</state>
  | 
  | 	<task-node name="CreateDoc" signal="never">
  | 		<event type="node-enter"  >
  | 			<action class="com.meridianp2p.stf.impl.workflow.WorkflowTaskExecuterImpl"></action> 
  | 		</event> 
  | 		<task name ="taskCreateDoc" />
  | 		<transition to="LoadIncomplete" name="fromCreateDocToLoadIncomplete"></transition>
  | 	</task-node>
  | 
  | 	<task-node name="CreateOrUpdateDoc" signal="never">
  | 		<event type="node-enter"  >
  | 			<action class="com.meridianp2p.stf.impl.workflow.WorkflowTaskExecuterImpl"></action> 
  | 		</event>
  | 		<task name ="taskCreateOrUpdateDoc" />
  | 		<transition to="LoadIncomplete" name="fromCreateOrUpdateDocToLoadIncomplete"></transition>
  | 	</task-node>
  | 
  | 	<task-node name="CancelTrip" signal="never">
  | 		<event type="node-enter"  >
  | 			<action class="com.meridianp2p.stf.impl.workflow.WorkflowTaskExecuterImpl"></action> 
  | 		</event>
  | 		<task name ="taskCancelTrip" />
  | 		<transition to="TripConcelled" name="toTripCancelled"></transition>
  | 	</task-node>
  | 
  | 	<task-node name="TripCompleted" signal="never">
  | 		<event type="node-enter"  >
  | 			<action class="com.meridianp2p.stf.impl.workflow.WorkflowTaskExecuterImpl"></action> 
  | 		</event>
  | 		<task name ="taskTripCompleted" />
  | 		<transition to="LoadCompleted" name="toLoadCompleted"></transition>
  | 	</task-node>
  | 
  | 	<state name="LoadCompleted">
  | 		<description>
  | 			Had to add this state node here because the running tests we see the end state is never rested on when this process is used 
  | as a subprocess
  | 		</description>
  | 		<transition to="LoadEnd" name="toLoadEnd"></transition>
  | 	</state>
  | 
  | 	<state name="TripConcelled">
  | 		<transition to="TripCancelEnd" name="toTripCancelEnd"></transition>
  | 	</state>
  | 
  | 
  | 	<end-state name="TripCancelEnd">
  | 		<event type="node-enter"  >
  | 			<action class="com.meridianp2p.stf.impl.workflow.ProcessChangeEventNotifier"></action> 
  | 		</event>
  | 	</end-state>
  | 
  | 	<end-state name="LoadEnd"  >
  | 		<event type="node-enter"  >
  | 			<action class="com.meridianp2p.stf.impl.workflow.ProcessChangeEventNotifier"></action> 
  | 		</event>
  | 	</end-state>
  | 
  | </process-definition>
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4199561#4199561

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4199561




More information about the jboss-user mailing list