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