I'm facing the same problem: jBPM swallows the StaleObjectStateException 
causing the calling code not to notice that the operation failed.

I figured out a workaround, but I'm not sure yet, whether it's proper or not. 
The idea is to do the hibernate-commit() by myself and so be able to receive 
the StaleObjectStateException in case there was a concurrent update on the 
process-instance. In this case a retry can be scheduled.


  | ProcessInstance pi = jbpmContext.loadProcessInstanceForUpdate(id);
  | 
  | pi.signal("someTransitionIfYouWant");
  | 
  | boolean error = false;
  | 
  |   try {
  |     // commit() on hibernate-level
  |     jbpmContext.getSession().getTransaction().commit();
  | 
  |   } catch (StaleObjectStateException e) {
  |     error = true;
  | 
  |   } finally {
  |     // the tricky part: on the close()-method the jbpmContext tries to 
commit(), again!
  |     // to avoid irritating error-messages, we need to make the jbpmContext 
NOT try to commit()
  |     DbPersistenceService dbps =
  |                     (DbPersistenceService) 
jbpmContext.getServices().getPersistenceService();
  |     
  |     // this can be achieved by pretending that transactions are disabled 
anyway
  |     dbps.setTransactionEnabled(false);
  |     jbpmContext.getServices().setPersistenceService(dbps);
  |       
  |     // close jbpmContext
  |     jbpmContext.close();
  |   }
  | 
  | // handle error if present
  | if(error){
  | // e.g. schedule retry
  | }
  | else{
  | ...
  | }
  | 

What do you guys think? Any suggestions?

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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4163464
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to