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
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to