[jboss-user] [JBoss jBPM] - Timer never stop
greenHand
do-not-reply at jboss.com
Thu Jun 5 22:13:30 EDT 2008
I ran into a situation like this when I try a test process. I have a very simple process:
<?xml version="1.0" encoding="UTF-8"?>
|
| <process-definition xmlns="" name="TryTimer">
| <start-state name="start-state1">
| <transition to="task-node1"></transition>
| </start-state>
| <task-node name="task-node1">
| <task name="asignApprover">
| <assignment class="com.pbsg.mst.wf.ApproverAssignmentHandler"></assignment>
| </task>
| <event type="node-enter">
| <create-timer duedate="5 seconds" name="myTimer" repeat="10 seconds">
| <action name="printsomething" class="com.pbsg.mst.wf.ApproverReminderAction"></action>
| </create-timer>
| </event>
| <event type="node-leave">
| <cancel-timer name="myTimer"></cancel-timer>
| </event>
| <transition to="end-state1"></transition>
| </task-node>
| <end-state name="end-state1"></end-state>
| </process-definition>
I have this in onMessage in my MDB:
NewProcessInstanceCommand newProcessInstanceCommand = new NewProcessInstanceCommand(
| "TryTimer");
| newProcessInstanceCommand.setKey(msg.getJMSCorrelationID());
| RemoteCommandServiceHome commandServiceHome = (RemoteCommandServiceHome) ctx
| .lookup("ejb/CommandServiceBean");
| RemoteCommandService commandService = commandServiceHome.create();
| ProcessInstance pi = (ProcessInstance) commandService
| .execute(newProcessInstanceCommand);
|
| String name = pi.getRootToken().getNode().getName();
| long id = pi.getId();
| JbpmContext jbpmContext = getJbpmContext();
| ProcessInstance pi2 = jbpmContext.getProcessInstance(id);
| pi2.signal(); //leaving start node
| name = pi2.getRootToken().getNode().getName();
| id = pi2.getId();
| jbpmContext.close();
| jbpmContext = getJbpmContext();
|
| name = pi2.getRootToken().getNode().getName();
| pi2.signal();
| jbpmContext.close();
The the session time out because of a breakpoint, then an exception is thrown. I believe this caused that the process never leave the node, so the timer never gets cancelled.
Now the ActionHandler prints the debug message 10 seconds. Even I shut down the app server. When the server is restarted, it starts printing without getting new MQ message.
I am not sure how to stop the running timer. Can anyone help?
A more fundemental question is that how to end the task and leave the node programatically and hopefully the timer can be stopped? I did not specify actorId for the task. The methods in TaskMgmtSession require a instance or an id. Is there a way that I get all the task instance without requiring an id?
Thanks!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4156162#4156162
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4156162
More information about the jboss-user
mailing list