[jboss-user] [JBoss jBPM] - Row was updated or deleted by another transaction

luiseterc do-not-reply at jboss.com
Wed Jun 25 08:31:01 EDT 2008


Hi,

I am using the jbpm console for orchestrate my process definition. However, some of the process nodes request asynchronous tasks to external systems. When those tasks  finish, the workflow engine receives an incoming message through JMS (openMQ). What I'm currently doing in response to that message is just to signal the root token to the next node:


  | try {
  | 		
  | 		MapMessage mapMessage = (MapMessage)message;
  | 		JbpmConfiguration conf = JbpmConfiguration.getInstance(); 
  | 		JbpmContext ctx = conf.createJbpmContext();
  | 		try {		
  | 			
  | 			ProcessInstance processInstance = ctx.loadProcessInstanceForUpdate(Long.parseLong(mapMessage.getString("processInstance")));			
  | 			processInstance.getRootToken().signal();		
  | 			
  | 		}finally {
  | 			ctx.close();
  | 		}
  | 
  | 

It works but I'm getting this obvious exception:


  | ERROR - AbstractFlushingEventListener.performExecutions(301) | 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.graph.exe.Token#64]
  |         at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1769)
  |         at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2412)
  |         at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2312)
  |         at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2612)
  |         at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:96)
  |         at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
  |         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
  |         at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)
  |         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.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
  |         at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
  |         at org.jbpm.persistence.db.DbPersistenceService.commit(DbPersistenceService.java:256)
  |         at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:214)
  |         at org.jbpm.svc.Services.close(Services.java:225)
  |         at org.jbpm.JbpmContext.close(JbpmContext.java:139)
  |         at com.marketsentinel.workflow.messaging.MessageListener.onMessage(MessageListener.java:42)
  |         at com.sun.messaging.jmq.jmsclient.MessageConsumerImpl.deliverAndAcknowledge(MessageConsumerImpl.java:338)
  |         at com.sun.messaging.jmq.jmsclient.MessageConsumerImpl.onMessageToListenerFromReceiveQueue(MessageConsumerImpl.java:316)
  |         at com.sun.messaging.jmq.jmsclient.SessionReader.onMessageToLateListeners(SessionReader.java:171)
  |         at com.sun.messaging.jmq.jmsclient.SessionReader.deliver(SessionReader.java:149)
  |         at com.sun.messaging.jmq.jmsclient.ConsumerReader.run(ConsumerReader.java:189)
  |         at java.lang.Thread.run(Thread.java
  | 

Since I'm creating a new different hibernate session/Jbpm context from the message listener. I wonder how could I get the JbpmContext used by the console in order to use the same session to update the token status.

I've been searching the jbpm4jsf source code and all the action classes use a static "context" . Where does that object is instanciated?

Thanks.


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

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



More information about the jboss-user mailing list