My process is a fork with two task nodes and a join.
I trigger the process to start both tasks and then end each of them.
During the execution of end() on task 1, the task is being submitted and then
immediately re-instantiated. So when the token is at the join, I still have a
freshly created task 1 pending in the actor's queue.
Also, it seems like though 'task-end' is called on the child token, the root
token proceeds with 'node-enter' on the same task.
Here's the process definition:
| <?xml version="1.0" encoding="UTF-8"?>
|
| <process-definition xmlns="" name="parallel.two.sequential.one">
|
| <swimlane name="...">
| ....
| </swimlane>
|
| <start-state name="start">
| <transition to="fork1"></transition>
| </start-state>
|
| <fork name="fork1">
| <transition to="task-node1" name="to-task-1"></transition>
| <transition to="task-node2" name="to-task-2"></transition>
| </fork>
|
| <join name="join1">
| <transition to="task-node3"></transition>
| </join>
| <task-node name="task-node1" >
| <task swimlane="..." name="Task 1" notify="true">
| <controller class="..."/>
| </task>
| <transition to="join1" name="to-the-end"></transition>
| </task-node>
|
| <task-node name="task-node2">
| <task swimlane="..." name="Task 2" notify="true">
| <controller class="..."/>
| </task>
| <transition to="join1" name="to-the-end"></transition>
| </task-node>
|
| <end-state name="end"></end-state>
| </process-definition>
Here's the snippet of the execution:
|
| ProcessInstance processInstance = new ProcessInstance(processDefinition);
|
| Token token = processInstance.getRootToken();
| assertEquals("start", token.getNode().getName());
|
| token.signal();
|
| Map<String, Token> childTokens = token.getActiveChildren();
| assertTrue(childTokens.size() > 0);
|
| final Iterator<Token> iterator = childTokens.values().iterator();
| Token oneBranchToken = iterator.next();
| TaskMgmtInstance taskManagementInstance = oneBranchToken
.getProcessInstance().getTaskMgmtInstance();
| Collection<TaskInstance> taskInstances =
|
taskManagementInstance.getUnfinishedTasks(oneBranchToken );
| TaskInstance taskInstance = taskInstances.iterator().next();
| taskInstance.end();
|
| jbpmContext.save(processInstance);
|
Here's the debug log snippet that shows task 1 being submitted and then
immediately initialized again:
08:48:11,091 DEBUG|main|: [GraphElement:fireEvent:179] event 'after-signal' on
StartState(start) for Token(/)
08:48:11,091 DEBUG|main|: [GraphElement:fireEvent:179] event 'task-end' on
Task(Task 1) for Token(/to-task-1)
08:48:11,091 DEBUG|main|: [Controller:submitTaskVariables:23]
-------------current node::Task 1
08:48:11,091 DEBUG|main|: [GraphElement:fireEvent:179] event 'before-signal' on
Fork(fork1) for Token(/)
08:48:11,091 DEBUG|main|: [GraphElement:fireEvent:179] event 'node-leave' on
Fork(fork1) for Token(/)
08:48:11,091 DEBUG|main|: [GraphElement:fireEvent:179] event 'transition' on
Transition(to-task-1) for Token(/)
08:48:11,091 DEBUG|main|: [GraphElement:fireEvent:179] event 'node-enter' on
TaskNode(task-node1) for Token(/)
08:48:11,107 DEBUG|main|: [Controller:initializeTaskVariables:17]
-------------current node::Task 1
08:48:11,107 DEBUG|main|: [GraphElement:fireEvent:179] event 'task-create' on
Task(Task 1) for Token(/)
08:48:11,107 DEBUG|main|: [TaskInstance:setActorId:258] assigning task 'Task 1'
to 'analyst'
08:48:11,107 DEBUG|main|: [GraphElement:fireEvent:179] event 'task-assign' on
Task(Task 1) for Token(/)
08:48:11,107 DEBUG|main|: [GraphElement:executeAction:271] executing
Action(Task 1)
08:48:11,107 DEBUG|main|: [Token:lock:748] token[2489] is locked by token[2489]
08:48:11,107 DEBUG|main|: [Mail:send:189] skipping mail because there are no
recipients
08:48:11,122 DEBUG|main|: [Token:unlock:765] token[2489] is unlocked by
token[2489]
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4266552#4266552
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4266552
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user