[jboss-user] [JBoss jBPM] - Re: Problem with a decision node in a fork, join construct.

kukeltje do-not-reply at jboss.com
Tue Dec 16 16:51:25 EST 2008


Martin... I found a similarity.... Oracle and Postgress use sequences, mysql, h2 and hsqldb use auto-increment like id's. I've seen that postgress can also support auto-increment if the int8 is changed to  'serial', see http://www.postgresql.org/docs/8.1/interactive/datatype.html#DATATYPE-SERIAL

hibernate does seem to support this: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1675

You have to change 'native' to 'identity' then in the Node.hbm.xml besides changing the sql. Maybe it is worth a try (besides trying with the flush added)

I have a unit test


  | package org.jbpm.graph.node;
  | 
  | import org.hibernate.LockMode;
  | import org.jbpm.db.AbstractDbTestCase;
  | import org.jbpm.graph.def.ProcessDefinition;
  | import org.jbpm.graph.exe.ExecutionContext;
  | import org.jbpm.graph.exe.ProcessInstance;
  | 
  | public class StaleObjectExceptionJoinTest extends AbstractDbTestCase {
  | 
  |         public void testDirectTransitionsToJoin() {
  |                 ProcessDefinition processDefinition = ProcessDefinition
  |                                 .parseXmlString("<process-definition name='"
  |                                                 + getName()
  |                                                 + "'>"
  |                                                 + "  <start-state name='start'>"
  |                                                 + "    <transition name='fromStartToFork' to='fork'/>"
  |                                                 + "  </start-state>"
  |                                                 + "  <fork name='fork'>" // the default
  |                                                 //+ "  <fork name='fork' async='true'>" // Async sometimes solves things that should not be a problem 
  |                                                 + "    <transition name='fromForkToDecide1' to='decide1'/>"
  |                                                 + "    <transition name='fromForkToDecide2' to='decide2'/>"
  |                                                 + "    <transition name='fromForkToState' to='state'/>"
  |                                                 + "  </fork>"
  |                                                 + "  <decision name='decide1'>"
  |                                                 + "    <handler class='org.jbpm.graph.node.StaleObjectExceptionJoinTest$Decision1'/>"
  |                                                 + "    <transition name='fromDecide1ToJoin' to='join'/>"
  |                                                 + "  </decision>"
  |                                                 + "  <decision name='decide2'>"
  |                                                 + "    <handler class='org.jbpm.graph.node.StaleObjectExceptionJoinTest$Decision2'/>"
  |                                                 + "    <transition name='fromDecide2ToJoin' to='join'/>"
  |                                                 + "  </decision>"
  |                                                 + "  <state name='state'>"
  |                                                 + "    <transition name='fromStateToJoin' to='join'/>"
  |                                                 + "  </state>"
  |                                             + "  <join name='join'>" /* the default */
  |                                                 //+ "  <join name='join' lock='"+ LockMode.UPGRADE.toString() + "'>" /* same as 'pessimistic' */
  |                                                 //+ "  <join name='join' lock='"+ LockMode.UPGRADE_NOWAIT.toString() + "'>" /* something for Oracle */
  |                                                 //+ "  <join name='join' lock='"+ LockMode.READ.toString() + "'>" /*... */
  |                                                 //+ "  <join name='join' lock='"+ LockMode.WRITE.toString() + "'>" /*... */
  |                                                 + "    <transition name='fromJoinToEnd' to='end'/>"
  |                                                 + "  </join>"
  |                                                 + "  <end name='end'/>"
  |                                                 + "</process-definition>");
  | 
  |                 jbpmContext.deployProcessDefinition(processDefinition);
  |                 long processDefinitionId = processDefinition.getId();
  |                 newTransaction();
  | 
  |                 try {
  |                         processDefinition = graphSession
  |                                         .findLatestProcessDefinition(getName());
  |                         ProcessInstance pi = jbpmContext.newProcessInstance(getName());
  |                         assertEquals("start", pi.getRootToken().getNode().getName());
  |                         pi.signal();
  |                         assertEquals("fork", pi.getRootToken().getNode().getName());
  |                         assertEquals("join", pi.findToken("/fromForkToDecide1").getNode().getName());
  |                         assertEquals("join", pi.findToken("/fromForkToDecide2").getNode().getName());
  |                         assertEquals("state", pi.findToken("/fromForkToState").getNode().getName());
  | 
  |                 } finally {
  |                         newTransaction();
  |                         graphSession.deleteProcessDefinition(processDefinitionId);
  |                 }
  | 
  |         }
  | 
  |         public static class Decision1 implements DecisionHandler {
  |                 private static final long serialVersionUID = 1L;
  | 
  |                 public String decide(ExecutionContext executionContext) {
  |                         return "fromDecide1ToJoin";
  |                 }
  |         }
  | 
  |         public static class Decision2 implements DecisionHandler {
  |                 private static final long serialVersionUID = 1L;
  | 
  |                 public String decide(ExecutionContext executionContext) {
  |                         return "fromDecide2ToJoin";
  |                 }
  |         }
  | 
  | }
  | 
  | 


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

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



More information about the jboss-user mailing list