I have a state node that requires a specific time be set (e.g. at 16:00 instead 
of 3 hours from now). I can achieve this via the following:

jpdl code:

  |    <state name="Buffer period">
  |      <event type="timer-create">
  |        <action expression="#{orderFulfillmentWorkflow.setBufferDueDate}" />
  |      </event>
  |      <timer duedate="12 hours">
  |         <action expression="#{orderFulfillmentWorkflow.progress}" />
  |      </timer>
  |      <transition name="bufferPeriodTimeout" to="Is order 
valid?"></transition>
  |    </state>
  | 

java (seam) code:

  |   public void setBufferDueDate() {
  |     Timer timer = ExecutionContext.currentExecutionContext().getTimer() ;
  |     if (timer != null) {
  |       // 3 min in future for test purposes...
  |       Date bufferDueDate = new Date( now.getTime() + 180000 )
  |       getLog().debug("Buffer due to expire on #0", bufferDueDate) ;
  | 
  |       timer.setDueDate(bufferDueDate) ;
  | 
  |     } else {
  |       getLog().error("No timer was available.") ;
  |     }
  | 
  |   }
  | 
  |   public void progress() {
  |     ExecutionContext.currentExecutionContext().leaveNode() ;
  |   }
  | 

The timer then fires at the time I set and the workflow then progresses until 
the end (or hits a wait state). At that point, the following exception is 
logged and the workflow is not saved:


  | 2008-02-11 11:05:02,412 DEBUG [org.jbpm.svc.save.CascadeSaveOperation] 
cascading save of '[EMAIL PROTECTED]'
  | 2008-02-11 11:05:02,412 DEBUG [org.jbpm.svc.save.CascadeSaveOperation] 
cascading save to process instance '[EMAIL PROTECTED]'
  | 2008-02-11 11:05:02,412 DEBUG [org.jbpm.svc.Services] executing default 
save operations
  | 2008-02-11 11:05:02,412 DEBUG [org.jbpm.svc.save.HibernateSaveOperation] 
saving process instance
  | 2008-02-11 11:05:02,412 DEBUG [org.jbpm.svc.save.SaveLogsOperation] 
flushing logs to logging service.
  | 2008-02-11 11:05:02,412 DEBUG [org.jbpm.svc.save.CascadeSaveOperation] 
cascading save of '[EMAIL PROTECTED]'
  | 2008-02-11 11:05:02,412 DEBUG [org.jbpm.db.JobSession] deleting 
timer(Buffer period,08-02-11 11:05:00,653,Token: 90)
  | 2008-02-11 11:05:02,412 DEBUG [org.jbpm.JbpmContext] closing jbpmContext 
[EMAIL PROTECTED]
  | 2008-02-11 11:05:02,412 DEBUG [org.jbpm.svc.Services] closing service 
'persistence': [EMAIL PROTECTED]
  | 2008-02-11 11:05:02,427 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] flushing hibernate session 
SessionImpl(PersistenceContext[entityKeys=[EntityKey[org.jbpm.graph.log.SignalLog#1411],
 EntityKey[org.jbpm.graph.log.ProcessInstanceEndLog#1410], 
EntityKey[org.jbpm.graph.log.TransitionLog#1413], 
EntityKey[org.jbpm.graph.log.ProcessStateLog#1412], 
EntityKey[org.jbpm.graph.log.ActionLog#1407], 
EntityKey[org.jbpm.graph.def.ProcessDefinition#996], 
EntityKey[org.jbpm.graph.log.TransitionLog#1406], 
EntityKey[org.jbpm.context.log.variableinstance.StringUpdateLog#1409], 
EntityKey[org.jbpm.context.log.VariableCreateLog#1408], 
EntityKey[org.jbpm.graph.log.TransitionLog#1403], 
EntityKey[org.jbpm.graph.log.NodeLog#1402], 
EntityKey[org.jbpm.graph.log.NodeLog#1405], 
EntityKey[org.jbpm.graph.log.ActionLog#1404], 
EntityKey[org.jbpm.graph.log.ActionLog#1399], 
EntityKey[org.jbpm.graph.log.ActionLog#1398], 
EntityKey[org.jbpm.graph.log.TransitionLog#1401], 
EntityKey[org.jbpm.graph.log.N!
 odeLog#1400], EntityKey[org.jbpm.graph.def.Action#5456], 
EntityKey[org.jbpm.graph.exe.ProcessInstance#56], 
EntityKey[org.jbpm.graph.def.Event#2346], 
EntityKey[org.jbpm.graph.def.Event#2345], 
EntityKey[org.jbpm.graph.def.Event#2348], 
EntityKey[org.jbpm.graph.exe.ProcessInstance#55], 
EntityKey[org.jbpm.graph.def.Action#5445], 
EntityKey[org.jbpm.graph.def.Action#5447], 
EntityKey[org.jbpm.graph.def.Action#5442], 
EntityKey[org.jbpm.graph.def.Action#5444], 
EntityKey[org.jbpm.graph.def.Transition#16612], 
EntityKey[org.jbpm.graph.def.Transition#16611], 
EntityKey[org.jbpm.context.exe.TokenVariableMap#55], 
EntityKey[org.jbpm.context.exe.TokenVariableMap#56], 
EntityKey[org.jbpm.graph.def.Transition#16603], 
EntityKey[org.jbpm.graph.def.Event#2353], 
EntityKey[org.jbpm.context.log.variableinstance.StringUpdateLog#1418], 
EntityKey[org.jbpm.graph.log.ProcessInstanceEndLog#1419], 
EntityKey[org.jbpm.graph.log.ActionLog#1416], 
EntityKey[org.jbpm.context.log.VariableCreateLog#1417], EntityKey[!
 org.jbpm.graph.log.NodeLog#1414], EntityKey[org.jbpm.context.def.Varia
bleAccess#3131], EntityKey[org.jbpm.graph.log.TransitionLog#1415], 
EntityKey[org.jbpm.context.def.VariableAccess#3130], 
EntityKey[org.jbpm.graph.exe.Token#89], EntityKey[org.jbpm.graph.exe.Token#90], 
EntityKey[org.jbpm.graph.def.Node#12781], 
EntityKey[org.jbpm.graph.def.Node#12787], 
EntityKey[org.jbpm.graph.def.Transition#16569], 
EntityKey[org.jbpm.graph.def.Transition#16570], 
EntityKey[org.jbpm.graph.def.Transition#16571], 
EntityKey[org.jbpm.graph.exe.Token#87], 
EntityKey[org.jbpm.graph.def.Transition#16572], EntityKey[org.jbpm.job.Job#26], 
EntityKey[org.jbpm.graph.exe.Token#88], 
EntityKey[org.jbpm.taskmgmt.exe.TaskInstance#56], 
EntityKey[org.jbpm.graph.node.State#12758], 
EntityKey[org.jbpm.graph.def.Node#12759], 
EntityKey[org.jbpm.graph.def.Node#12760], 
EntityKey[org.jbpm.graph.def.Node#12762], 
EntityKey[org.jbpm.module.exe.ModuleInstance#109], 
EntityKey[org.jbpm.module.exe.ModuleInstance#110], 
EntityKey[org.jbpm.context.exe.variableinstance.StringInstance#120], EntityKey[!
 org.jbpm.context.exe.variableinstance.StringInstance#119], 
EntityKey[org.jbpm.context.exe.VariableInstance#118], 
EntityKey[org.jbpm.context.exe.VariableInstance#117], 
EntityKey[org.jbpm.module.exe.ModuleInstance#111], 
EntityKey[org.jbpm.module.exe.ModuleInstance#112], 
EntityKey[org.jbpm.context.exe.VariableInstance#116], 
EntityKey[org.jbpm.context.exe.VariableInstance#115], 
EntityKey[org.jbpm.graph.def.ProcessDefinition#997], 
EntityKey[org.jbpm.graph.def.Node#12789]],collectionKeys=[CollectionKey[org.jbpm.graph.def.ProcessDefinition.events#996],
 CollectionKey[org.jbpm.graph.exe.Token.children#87], 
CollectionKey[org.jbpm.graph.node.ProcessState.variableAccesses#12781], 
CollectionKey[org.jbpm.graph.def.ProcessDefinition.events#997], 
CollectionKey[org.jbpm.graph.def.Transition.exceptionHandlers#16603], 
CollectionKey[org.jbpm.graph.exe.Token.children#90], 
CollectionKey[org.jbpm.graph.exe.Token.children#89], 
CollectionKey[org.jbpm.graph.exe.Token.children#88], CollectionKey[org.!
 jbpm.graph.def.Transition.exceptionHandlers#16611], CollectionKey[org.
jbpm.graph.def.Node.leavingTransitions#12781], 
CollectionKey[org.jbpm.graph.def.Node.leavingTransitions#12787], 
CollectionKey[org.jbpm.graph.def.Node.arrivingTransitions#12781], 
CollectionKey[org.jbpm.graph.def.Transition.events#16603], 
CollectionKey[org.jbpm.graph.def.Node.leavingTransitions#12789], 
CollectionKey[org.jbpm.graph.def.Node.arrivingTransitions#12789], 
CollectionKey[org.jbpm.graph.def.Transition.events#16612], 
CollectionKey[org.jbpm.graph.def.Transition.events#16611], 
CollectionKey[org.jbpm.graph.def.Node.arrivingTransitions#12787], 
CollectionKey[org.jbpm.context.exe.ContextInstance.tokenVariableMaps#111], 
CollectionKey[org.jbpm.graph.def.Event.actions#2345], 
CollectionKey[org.jbpm.graph.def.Node.arrivingTransitions#12762], 
CollectionKey[org.jbpm.graph.def.Event.actions#2348], 
CollectionKey[org.jbpm.graph.def.Event.actions#2346], 
CollectionKey[org.jbpm.graph.def.Event.actions#2353], 
CollectionKey[org.jbpm.taskmgmt.exe.TaskMgmtInstance.taskInstances#110], 
Collect!
 ionKey[org.jbpm.graph.def.Transition.events#16570], 
CollectionKey[org.jbpm.graph.def.Transition.exceptionHandlers#16612], 
CollectionKey[org.jbpm.graph.def.Transition.events#16569], 
CollectionKey[org.jbpm.graph.def.Transition.events#16572], 
CollectionKey[org.jbpm.graph.def.Transition.events#16571], 
CollectionKey[org.jbpm.graph.exe.Token.comments#88], 
CollectionKey[org.jbpm.graph.def.Node.arrivingTransitions#12760], 
CollectionKey[org.jbpm.graph.def.Node.arrivingTransitions#12759], 
CollectionKey[org.jbpm.graph.exe.Token.comments#87], 
CollectionKey[org.jbpm.graph.def.Node.arrivingTransitions#12758], 
CollectionKey[org.jbpm.graph.exe.Token.comments#90], 
CollectionKey[org.jbpm.graph.exe.Token.comments#89], 
CollectionKey[org.jbpm.graph.def.ProcessDefinition.nodes#996], 
CollectionKey[org.jbpm.graph.def.ProcessDefinition.nodes#997], 
CollectionKey[org.jbpm.context.exe.ContextInstance.tokenVariableMaps#109], 
CollectionKey[org.jbpm.graph.def.ProcessDefinition.exceptionHandlers#996], Col!
 lectionKey[org.jbpm.graph.def.ProcessDefinition.exceptionHandlers#997]
, CollectionKey[org.jbpm.taskmgmt.exe.TaskInstance.pooledActors#56], 
CollectionKey[org.jbpm.graph.node.Decision.decisionConditions#12760], 
CollectionKey[org.jbpm.graph.node.Decision.decisionConditions#12789], 
CollectionKey[org.jbpm.taskmgmt.exe.TaskMgmtInstance.swimlaneInstances#110], 
CollectionKey[org.jbpm.taskmgmt.exe.TaskMgmtInstance.swimlaneInstances#112], 
CollectionKey[org.jbpm.taskmgmt.exe.TaskMgmtInstance.taskInstances#112], 
CollectionKey[org.jbpm.context.exe.TokenVariableMap.variableInstances#56], 
CollectionKey[org.jbpm.graph.def.Node.exceptionHandlers#12759], 
CollectionKey[org.jbpm.graph.def.Node.exceptionHandlers#12760], 
CollectionKey[org.jbpm.context.exe.TokenVariableMap.variableInstances#55], 
CollectionKey[org.jbpm.graph.def.Node.exceptionHandlers#12762], 
CollectionKey[org.jbpm.graph.def.Node.exceptionHandlers#12758], 
CollectionKey[org.jbpm.graph.def.Node.events#12787], 
CollectionKey[org.jbpm.graph.def.ProcessDefinition.actions#996], 
CollectionKey[org.jbpm.graph.!
 def.ProcessDefinition.actions#997], 
CollectionKey[org.jbpm.graph.def.Node.events#12789], 
CollectionKey[org.jbpm.graph.def.Transition.exceptionHandlers#16569], 
CollectionKey[org.jbpm.graph.def.Node.exceptionHandlers#12781], 
CollectionKey[org.jbpm.graph.def.Transition.exceptionHandlers#16570], 
CollectionKey[org.jbpm.graph.def.Transition.exceptionHandlers#16571], 
CollectionKey[org.jbpm.graph.def.Transition.exceptionHandlers#16572], 
CollectionKey[org.jbpm.graph.def.Node.events#12781], 
CollectionKey[org.jbpm.taskmgmt.exe.TaskInstance.comments#56], 
CollectionKey[org.jbpm.graph.exe.ProcessInstance.runtimeActions#55], 
CollectionKey[org.jbpm.graph.exe.ProcessInstance.runtimeActions#56], 
CollectionKey[org.jbpm.taskmgmt.exe.TaskInstance.variableInstances#56], 
CollectionKey[org.jbpm.graph.def.Node.leavingTransitions#12762], 
CollectionKey[org.jbpm.graph.def.ProcessDefinition.definitions#997], 
CollectionKey[org.jbpm.graph.exe.ProcessInstance.instances#55], 
CollectionKey[org.jbpm.graph.de!
 f.ProcessDefinition.definitions#996], CollectionKey[org.jbpm.graph.exe
.ProcessInstance.instances#56], 
CollectionKey[org.jbpm.graph.def.Node.leavingTransitions#12758], 
CollectionKey[org.jbpm.graph.def.Node.events#12762], 
CollectionKey[org.jbpm.graph.def.Node.leavingTransitions#12760], 
CollectionKey[org.jbpm.graph.def.Node.leavingTransitions#12759], 
CollectionKey[org.jbpm.graph.def.Node.exceptionHandlers#12789], 
CollectionKey[org.jbpm.graph.def.Node.events#12758], 
CollectionKey[org.jbpm.graph.def.Node.events#12759], 
CollectionKey[org.jbpm.graph.def.Node.exceptionHandlers#12787], 
CollectionKey[org.jbpm.graph.def.Node.events#12760]]];ActionQueue[insertions=[] 
updates=[] deletions=[EntityDeleteAction[org.jbpm.job.Timer#26]] 
collectionCreations=[] collectionRemovals=[] collectionUpdates=[]])
  | 2008-02-11 11:05:02,427 ERROR 
[org.hibernate.event.def.AbstractFlushingEventListener] Could not synchronize 
database state with session
  | org.hibernate.StaleObjectStateException: Row was updated or deleted by 
another transaction (or unsaved-value mapping was incorrect): 
[org.jbpm.job.Timer#26]
  |     at 
org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1761)
  |     at 
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2519)
  |     at 
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2693)
  |     at 
org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:74)
  |     at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
  |     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
  |     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:144)
  |     at 
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
  |     at 
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
  |     at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
  |     at 
org.jbpm.persistence.db.DbPersistenceService.flushSession(DbPersistenceService.java:272)
  |     at 
org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:232)
  |     at org.jbpm.svc.Services.close(Services.java:224)
  |     at org.jbpm.JbpmContext.close(JbpmContext.java:139)
  |     at 
org.jbpm.job.executor.JobExecutorThread.executeJob(JobExecutorThread.java:193)
  |     at 
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:64)
  | 2008-02-11 11:05:02,443 ERROR 
[org.jbpm.persistence.db.DbPersistenceService] hibernate flush failed
  | org.hibernate.StaleObjectStateException: Row was updated or deleted by 
another transaction (or unsaved-value mapping was incorrect): 
[org.jbpm.job.Timer#26]
  |     at 
org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1761)
  |     at 
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2519)
  |     at 
org.hibernate.persister.entity.AbstractEntityPersister.delete(AbstractEntityPersister.java:2693)
  |     at 
org.hibernate.action.EntityDeleteAction.execute(EntityDeleteAction.java:74)
  |     at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
  |     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
  |     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:144)
  |     at 
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
  |     at 
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
  |     at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
  |     at 
org.jbpm.persistence.db.DbPersistenceService.flushSession(DbPersistenceService.java:272)
  |     at 
org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:232)
  |     at org.jbpm.svc.Services.close(Services.java:224)
  |     at org.jbpm.JbpmContext.close(JbpmContext.java:139)
  |     at 
org.jbpm.job.executor.JobExecutorThread.executeJob(JobExecutorThread.java:193)
  |     at 
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:64)
  | 2008-02-11 11:05:02,458 DEBUG 
[org.jbpm.persistence.db.DbPersistenceService] rolling back hibernate 
transaction
  | 2008-02-11 11:05:02,458 ERROR 
[org.jbpm.persistence.db.DbPersistenceService] hibernate rollback failed
  | java.lang.NullPointerException
  |     at 
org.jbpm.persistence.db.DbPersistenceService.rollback(DbPersistenceService.java:304)
  |     at 
org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:234)
  |     at org.jbpm.svc.Services.close(Services.java:224)
  |     at org.jbpm.JbpmContext.close(JbpmContext.java:139)
  |     at 
org.jbpm.job.executor.JobExecutorThread.executeJob(JobExecutorThread.java:193)
  |     at 
org.jbpm.job.executor.JobExecutorThread.run(JobExecutorThread.java:64)
  | 

Any ideas on how to avoid/ solve this problem? Any suggestions or comments 
would be gratefully received.

Many thanks, Peter.

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

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

_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to