I have a process with a task in a loop, and although the assignment handler 
gets called the first time, it doesn't get called any subsequent times.  Here's 
an example process that shows the behavior:


  | <process-definition name="Task Loop Test">
  |     <swimlane name='sl'>
  |             <assignment 
class='com.gallium.sandbox.delegation.TaskAssignmentHandler' />
  |     </swimlane>
  |     <start-state name="start">
  |             <transition name="go" to="mytask" />
  |     </start-state>
  |     <task-node name="mytask">
  |             <task name='myTask' swimlane='sl' />
  |             <transition name="again" to="wait" />
  |             <transition name="done" to="end" />
  |     </task-node>
  |     <state name="wait">
  |             <timer duedate="20 seconds" transition="continue" />
  |             <transition name="continue" to="mytask" />
  |     </state>
  |     <end-state name="end"/>
  | </process-definition>
  | 

Here's my assignment handler:


  |     public void assign(Assignable ass, ExecutionContext ctx) throws 
Exception {
  |             log.debug("****************");
  |             log.debug("Assigning to Ian");
  |             log.debug("****************");
  |             ass.setActorId("ian");
  |     }
  | 

Here's my log for leaving the start state:


  | 2006-02-23 09:58:42,375 DEBUG [org.jbpm.configuration.JbpmContextInfo] 
creating jbpm context with service factories '[message, scheduler, logging, 
persistence, authentication]'
  | 2006-02-23 09:58:42,375 DEBUG [org.jbpm.JbpmContext] creating JbpmContext
  | 2006-02-23 09:58:42,375 DEBUG 
[org.jbpm.persistence.db.DbPersistenceServiceFactory] creating persistence 
service
  | 2006-02-23 09:58:42,375 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] creating hibernate session
  | 2006-02-23 09:58:42,375 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] beginning hibernate transaction
  | 2006-02-23 09:58:42,406 DEBUG [org.jbpm.graph.def.GraphElement] event 
'before-signal' on 'StartState(start)' for 'Token(/)'
  | 2006-02-23 09:58:42,421 WARN  
[org.hibernate.engine.StatefulPersistenceContext] Narrowing proxy to class 
org.jbpm.graph.node.StartState - this operation breaks ==
  | 2006-02-23 09:58:42,421 DEBUG [org.jbpm.graph.def.GraphElement] event 
'node-leave' on 'StartState(start)' for 'Token(/)'
  | 2006-02-23 09:58:42,421 DEBUG [org.jbpm.graph.def.GraphElement] event 
'transition' on 'Transition(go)' for 'Token(/)'
  | 2006-02-23 09:58:42,421 DEBUG [org.jbpm.graph.def.GraphElement] event 
'node-enter' on 'TaskNode(mytask)' for 'Token(/)'
  | 2006-02-23 09:58:42,421 WARN  
[org.hibernate.engine.StatefulPersistenceContext] Narrowing proxy to class 
org.jbpm.graph.node.TaskNode - this operation breaks ==
  | 2006-02-23 09:58:42,921 DEBUG [org.jbpm.graph.def.GraphElement] event 
'task-create' on 'Task(myTask)' for 'Token(/)'
  | 2006-02-23 09:58:42,953 DEBUG [long] ****************
  | 2006-02-23 09:58:42,953 DEBUG [long] Assigning to Ian
  | 2006-02-23 09:58:42,953 DEBUG [long] ****************
  | 2006-02-23 09:58:42,953 DEBUG [org.jbpm.graph.def.GraphElement] event 
'task-assign' on 'Task(myTask)' for 'Token(/)'
  | 2006-02-23 09:58:42,953 DEBUG [org.jbpm.graph.def.GraphElement] event 
'after-signal' on 'StartState(start)' for 'Token(/)'
  | 2006-02-23 09:58:42,953 DEBUG [org.jbpm.svc.Services] executing default 
save operations
  | 2006-02-23 09:58:42,953 DEBUG [org.jbpm.svc.save.HibernateSaveOperation] 
saving process instance
  | 2006-02-23 09:58:42,953 DEBUG [org.jbpm.svc.save.SaveLogsOperation] 
flushing logs to logging service.
  | 2006-02-23 09:58:42,953 DEBUG [org.jbpm.svc.save.CascadeSaveOperation] 
cascading save of '[EMAIL PROTECTED]'
  | 2006-02-23 09:58:42,984 DEBUG [org.jbpm.JbpmContext] closing JbpmContext
  | 2006-02-23 09:58:42,984 DEBUG [org.jbpm.svc.Services] closing service 
'persistence': [EMAIL PROTECTED]
  | 2006-02-23 09:58:42,984 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] committing hibernate transaction
  | 2006-02-23 09:58:43,171 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] closing hibernate session
  | 2006-02-23 09:58:43,187 DEBUG [org.jbpm.svc.Services] closing service 
'logging': [EMAIL PROTECTED]
  | 

It enters the task node and correctly calls the swimlane's assignment handler.

Here I end the task with a transition to "wait:"


  | 2006-02-23 09:59:08,656 DEBUG [org.jbpm.configuration.JbpmContextInfo] 
creating jbpm context with service factories '[message, scheduler, logging, 
persistence, authentication]'
  | 2006-02-23 09:59:08,656 DEBUG [org.jbpm.JbpmContext] creating JbpmContext
  | 2006-02-23 09:59:08,656 DEBUG 
[org.jbpm.persistence.db.DbPersistenceServiceFactory] creating persistence 
service
  | 2006-02-23 09:59:08,656 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] creating hibernate session
  | 2006-02-23 09:59:08,656 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] beginning hibernate transaction
  | 2006-02-23 09:59:08,781 DEBUG [org.jbpm.graph.def.GraphElement] event 
'task-end' on 'Task(myTask)' for 'Token(/)'
  | 2006-02-23 09:59:08,796 DEBUG [org.jbpm.taskmgmt.exe.TaskInstance] 
completion of task 'myTask' results in taking transition 'Transition(again)'
  | 2006-02-23 09:59:08,796 DEBUG [org.jbpm.graph.def.GraphElement] event 
'before-signal' on 'TaskNode(mytask)' for 'Token(/)'
  | 2006-02-23 09:59:08,796 DEBUG [org.jbpm.graph.def.GraphElement] event 
'node-leave' on 'TaskNode(mytask)' for 'Token(/)'
  | 2006-02-23 09:59:08,796 DEBUG [org.jbpm.graph.def.GraphElement] event 
'transition' on 'Transition(again)' for 'Token(/)'
  | 2006-02-23 09:59:08,812 DEBUG [org.jbpm.graph.def.GraphElement] event 
'node-enter' on 'State(wait)' for 'Token(/)'
  | 2006-02-23 09:59:08,812 WARN  
[org.hibernate.engine.StatefulPersistenceContext] Narrowing proxy to class 
org.jbpm.graph.node.State - this operation breaks ==
  | 2006-02-23 09:59:08,875 DEBUG [org.jbpm.graph.def.GraphElement] executing 
action 'CreateTimerAction(130cda4)'
  | 2006-02-23 09:59:08,875 DEBUG [org.jbpm.graph.def.GraphElement] event 
'timer-create' on 'State(wait)' for 'Token(/)'
  | 2006-02-23 09:59:08,890 DEBUG [org.jbpm.graph.def.GraphElement] event 
'after-signal' on 'TaskNode(mytask)' for 'Token(/)'
  | 2006-02-23 09:59:08,890 DEBUG [org.jbpm.svc.Services] executing default 
save operations
  | 2006-02-23 09:59:08,890 DEBUG [org.jbpm.svc.save.HibernateSaveOperation] 
saving process instance
  | 2006-02-23 09:59:08,890 DEBUG [org.jbpm.svc.save.SaveLogsOperation] 
flushing logs to logging service.
  | 2006-02-23 09:59:08,890 DEBUG [org.jbpm.svc.save.CascadeSaveOperation] 
cascading save of '[EMAIL PROTECTED]'
  | 2006-02-23 09:59:08,921 DEBUG [org.jbpm.JbpmContext] closing JbpmContext
  | 2006-02-23 09:59:08,921 DEBUG [org.jbpm.svc.Services] closing service 
'persistence': [EMAIL PROTECTED]
  | 2006-02-23 09:59:08,921 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] committing hibernate transaction
  | 2006-02-23 09:59:08,984 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] closing hibernate session
  | 2006-02-23 09:59:08,984 DEBUG [org.jbpm.svc.Services] closing service 
'scheduler': [EMAIL PROTECTED]
  | 2006-02-23 09:59:08,984 DEBUG [org.jbpm.svc.Services] closing service 
'logging': [EMAIL PROTECTED]
  | 

Here's a clip to show that it was saved properly and the scheduler finds the 
timer:


  | 2006-02-23 09:59:11,234 DEBUG [org.jbpm.configuration.JbpmContextInfo] 
creating jbpm context with service factories '[message, scheduler, logging, 
persistence, authentication]'
  | 2006-02-23 09:59:11,328 DEBUG [org.jbpm.JbpmContext] creating JbpmContext
  | 2006-02-23 09:59:11,328 DEBUG 
[org.jbpm.persistence.db.DbPersistenceServiceFactory] creating persistence 
service
  | 2006-02-23 09:59:11,328 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] creating hibernate session
  | 2006-02-23 09:59:11,328 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] beginning hibernate transaction
  | 2006-02-23 09:59:11,328 DEBUG [org.jbpm.scheduler.impl.SchedulerThread] 
checking for timers
  | 2006-02-23 09:59:11,328 DEBUG [org.jbpm.scheduler.impl.SchedulerThread] 
found timer timer(wait,09:59:28,000)
  | 2006-02-23 09:59:11,406 DEBUG [org.jbpm.JbpmContext] closing JbpmContext
  | 2006-02-23 09:59:11,406 DEBUG [org.jbpm.svc.Services] closing service 
'persistence': [EMAIL PROTECTED]
  | 2006-02-23 09:59:11,406 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] committing hibernate transaction
  | 2006-02-23 09:59:11,406 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] closing hibernate session
  | 

And here's the execution of the timer:

  | 2006-02-23 09:59:28,000 DEBUG [org.jbpm.configuration.JbpmContextInfo] 
creating jbpm context with service factories '[message, scheduler, logging, 
persistence, authentication]'
  | 2006-02-23 09:59:28,000 DEBUG [org.jbpm.JbpmContext] creating JbpmContext
  | 2006-02-23 09:59:28,000 DEBUG 
[org.jbpm.persistence.db.DbPersistenceServiceFactory] creating persistence 
service
  | 2006-02-23 09:59:28,000 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] creating hibernate session
  | 2006-02-23 09:59:28,000 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] beginning hibernate transaction
  | 2006-02-23 09:59:28,000 DEBUG [org.jbpm.scheduler.impl.SchedulerThread] 
checking for timers
  | 2006-02-23 09:59:28,000 DEBUG [org.jbpm.scheduler.impl.SchedulerThread] 
found timer timer(wait,09:59:28,000)
  | 2006-02-23 09:59:28,000 DEBUG [org.jbpm.scheduler.impl.SchedulerThread] 
executing timer 'timer(wait,09:59:28,000)'
  | 2006-02-23 09:59:28,015 DEBUG [org.jbpm.graph.def.GraphElement] event 
'before-signal' on 'State(wait)' for 'Token(/)'
  | 2006-02-23 09:59:28,015 DEBUG [org.jbpm.graph.def.GraphElement] event 
'node-leave' on 'State(wait)' for 'Token(/)'
  | 2006-02-23 09:59:28,109 DEBUG [org.jbpm.graph.def.GraphElement] executing 
action 'CancelTimerAction(8d2e37)'
  | 2006-02-23 09:59:28,109 DEBUG [org.jbpm.graph.def.GraphElement] event 
'transition' on 'Transition(continue)' for 'Token(/)'
  | 2006-02-23 09:59:28,109 DEBUG [org.jbpm.graph.def.GraphElement] event 
'node-enter' on 'TaskNode(mytask)' for 'Token(/)'
  | 2006-02-23 09:59:28,109 WARN  
[org.hibernate.engine.StatefulPersistenceContext] Narrowing proxy to class 
org.jbpm.graph.node.TaskNode - this operation breaks ==
  | 2006-02-23 09:59:28,109 DEBUG [org.jbpm.graph.def.GraphElement] event 
'task-create' on 'Task(myTask)' for 'Token(/)'
  | 2006-02-23 09:59:28,203 DEBUG [org.jbpm.graph.def.GraphElement] event 
'task-assign' on 'Task(myTask)' for 'Token(/)'
  | 2006-02-23 09:59:28,203 DEBUG [org.jbpm.graph.def.GraphElement] event 
'after-signal' on 'State(wait)' for 'Token(/)'
  | 2006-02-23 09:59:28,203 DEBUG [org.jbpm.svc.Services] executing default 
save operations
  | 2006-02-23 09:59:28,203 DEBUG [org.jbpm.svc.save.HibernateSaveOperation] 
saving process instance
  | 2006-02-23 09:59:28,203 DEBUG [org.jbpm.svc.save.SaveLogsOperation] 
flushing logs to logging service.
  | 2006-02-23 09:59:28,203 DEBUG [org.jbpm.svc.save.CascadeSaveOperation] 
cascading save of '[EMAIL PROTECTED]'
  | 2006-02-23 09:59:28,234 DEBUG [org.jbpm.scheduler.impl.SchedulerThread] 
deleting timer 'timer(wait,09:59:28,000)'
  | 2006-02-23 09:59:28,234 DEBUG [org.jbpm.JbpmContext] closing JbpmContext
  | 2006-02-23 09:59:28,234 DEBUG [org.jbpm.svc.Services] closing service 
'persistence': [EMAIL PROTECTED]
  | 2006-02-23 09:59:28,234 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] committing hibernate transaction
  | 2006-02-23 09:59:28,296 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] closing hibernate session
  | 2006-02-23 09:59:28,296 DEBUG [org.jbpm.svc.Services] closing service 
'scheduler': [EMAIL PROTECTED]
  | 2006-02-23 09:59:28,296 DEBUG [org.jbpm.svc.Services] closing service 
'logging': [EMAIL PROTECTED]
  | 

It fires the task-assign event, it just doesn't call my custom code.  Any ideas 
what's going on here, or any workaround?  This is a critical part of my 
application, and all help is appreciated.

Thanks in advance,
Ian

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

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


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to