[jbpm-commits] JBoss JBPM SVN: r2736 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/runtime and 16 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Sat Nov 1 06:45:22 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-11-01 06:45:21 -0400 (Sat, 01 Nov 2008)
New Revision: 2736

Modified:
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/SequenceFlow.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/Token.java
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/ProcessCatalog.java
   projects/spec/trunk/modules/cts/.classpath
   projects/spec/trunk/modules/dialects/api10/.classpath
   projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/ProcessMarshaller.java
   projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/ProcessUnmarshaller.java
   projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/model/JAXBFlow.java
   projects/spec/trunk/modules/dialects/jpdl32/.classpath
   projects/spec/trunk/modules/dialects/stp/.classpath
   projects/spec/trunk/modules/dialects/xpdl21/.classpath
   projects/spec/trunk/modules/ri/.classpath
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/AbstractElementImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EndEventImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EventImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GateImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GroupImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InputSetImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/OutputSetImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SequenceFlowImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/StartEventImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/TaskImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/UserTaskImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RunnableToken.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
   projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java
   projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/EndEventPersistenceTest.java
   projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/NodePersistenceTest.java
   projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/TaskPersistenceTest.java
   projects/spec/trunk/modules/ri/src/test/resources/log4j.xml
   projects/spec/trunk/modules/samples/airticket/client/.classpath
   projects/spec/trunk/modules/samples/airticket/server/.classpath
Log:
Remove FetchType.EAGER

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/SequenceFlow.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/SequenceFlow.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/SequenceFlow.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -52,19 +52,14 @@
    * Object is connected from. Note: there are restrictions as to what objects Sequence
    * Flow and Message Flow can connect. 
    */
-  Node getSourceRef();
+  String getSourceRef();
 
   /**
    * TargetRef is an attribute that identifies which Graphical Element the Connecting
    * Object is connected to. Note: there are restrictions as to what objects Sequence
    * Flow and Message Flow can connect.
    */
-  Node getTargetRef();
-
-  /**
-   * Get the required target name
-   */
-  String getTargetName();
+  String getTargetRef();
   
   /**
    * By default, the ConditionType of a Sequence Flow is None. This means that there is no evaluation at runtime to

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/Token.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/Token.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/Token.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -24,6 +24,7 @@
 // $Id$
 
 import org.hibernate.Session;
+import org.jbpm.api.model.Process;
 import org.jbpm.api.model.SequenceFlow;
 
 /**
@@ -56,6 +57,11 @@
   TokenStatus getTokenStatus();
 
   /**
+   * Get the associated {@link Process}
+   */
+  Process getProcess();
+  
+  /**
    * Get the associated {@link ExecutionContext}
    */
   ExecutionContext getExecutionContext();

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/ProcessCatalog.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/ProcessCatalog.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/ProcessCatalog.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -95,14 +95,12 @@
     
     SequenceFlow startFlow = start.getOutFlow();
     TestCase.assertNotNull("Start flow not null", startFlow);
-    TestCase.assertEquals("Task", startFlow.getTargetName());
-    TestCase.assertSame(start, startFlow.getSourceRef());
-    TestCase.assertSame(task, startFlow.getTargetRef());
+    TestCase.assertEquals("Task", startFlow.getTargetRef());
+    TestCase.assertEquals("Start", startFlow.getSourceRef());
 
     SequenceFlow taskFlow = task.getOutFlow();
     TestCase.assertNotNull("Task flow not null", taskFlow);
-    TestCase.assertEquals("End", taskFlow.getTargetName());
-    TestCase.assertSame(task, taskFlow.getSourceRef());
-    TestCase.assertSame(end, taskFlow.getTargetRef());
+    TestCase.assertEquals("End", taskFlow.getTargetRef());
+    TestCase.assertEquals("Task", taskFlow.getSourceRef());
   }
 }

Modified: projects/spec/trunk/modules/cts/.classpath
===================================================================
--- projects/spec/trunk/modules/cts/.classpath	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/cts/.classpath	2008-11-01 10:45:21 UTC (rev 2736)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
+	<classpathentry kind="src" path="src/test/java"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>

Modified: projects/spec/trunk/modules/dialects/api10/.classpath
===================================================================
--- projects/spec/trunk/modules/dialects/api10/.classpath	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/dialects/api10/.classpath	2008-11-01 10:45:21 UTC (rev 2736)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
+	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>

Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/ProcessMarshaller.java
===================================================================
--- projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/ProcessMarshaller.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/ProcessMarshaller.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -423,7 +423,7 @@
     {
       throw new NotImplementedException("JBPM-1382", "Message Flow");
     }
-    jaxb.setTargetName(flow.getTargetName());
+    jaxb.setTargetRef(flow.getTargetRef());
     return jaxb;
   }
 

Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/ProcessUnmarshaller.java
===================================================================
--- projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/ProcessUnmarshaller.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/ProcessUnmarshaller.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -359,15 +359,15 @@
         if (jaxbSeq.getConditionType() == ConditionType.Expression)
         {
           JAXBExpression jaxbExpr = jaxbSeq.getCondition();
-          gwBuilder.addConditionalGate(jaxbFlow.getTargetName(), jaxbExpr.getLang(), jaxbExpr.getBody());
+          gwBuilder.addConditionalGate(jaxbFlow.getTargetRef(), jaxbExpr.getLang(), jaxbExpr.getBody());
         }
         else if (jaxbSeq.getConditionType() == ConditionType.Default)
         {
-          gwBuilder.addDefaultGate(jaxbFlow.getTargetName());
+          gwBuilder.addDefaultGate(jaxbFlow.getTargetRef());
         }
         else
         {
-          gwBuilder.addGate(jaxbFlow.getTargetName());
+          gwBuilder.addGate(jaxbFlow.getTargetRef());
         }
       }
       else if (jaxbFlow instanceof JAXBMessageFlow)
@@ -390,7 +390,7 @@
     {
       if (jaxbFlow instanceof JAXBSequenceFlow)
       {
-        procBuilder.addSequenceFlow(jaxbFlow.getTargetName());
+        procBuilder.addSequenceFlow(jaxbFlow.getTargetRef());
       }
       else if (jaxbFlow instanceof JAXBMessageFlow)
       {

Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/model/JAXBFlow.java
===================================================================
--- projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/model/JAXBFlow.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jbpm/dialect/api10/model/JAXBFlow.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -39,16 +39,16 @@
 @XmlType(name = "Flow")
 public class JAXBFlow extends JAXBGraphicalElement
 {
-  private String targetName;
+  private String targetRef;
 
-  public String getTargetName()
+  public String getTargetRef()
   {
-    return targetName;
+    return targetRef;
   }
 
   @XmlAttribute(name = "to", required = true)
-  public void setTargetName(String targetName)
+  public void setTargetRef(String targetRef)
   {
-    this.targetName = targetName;
+    this.targetRef = targetRef;
   }
 }
\ No newline at end of file

Modified: projects/spec/trunk/modules/dialects/jpdl32/.classpath
===================================================================
--- projects/spec/trunk/modules/dialects/jpdl32/.classpath	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/dialects/jpdl32/.classpath	2008-11-01 10:45:21 UTC (rev 2736)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>

Modified: projects/spec/trunk/modules/dialects/stp/.classpath
===================================================================
--- projects/spec/trunk/modules/dialects/stp/.classpath	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/dialects/stp/.classpath	2008-11-01 10:45:21 UTC (rev 2736)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>

Modified: projects/spec/trunk/modules/dialects/xpdl21/.classpath
===================================================================
--- projects/spec/trunk/modules/dialects/xpdl21/.classpath	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/dialects/xpdl21/.classpath	2008-11-01 10:45:21 UTC (rev 2736)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>

Modified: projects/spec/trunk/modules/ri/.classpath
===================================================================
--- projects/spec/trunk/modules/ri/.classpath	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/.classpath	2008-11-01 10:45:21 UTC (rev 2736)
@@ -1,9 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/AbstractElementImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/AbstractElementImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/AbstractElementImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -24,11 +24,12 @@
 //$Id$
 
 import javax.management.ObjectName;
-import javax.persistence.Column;
+import javax.persistence.Basic;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.MappedSuperclass;
 
+import org.hibernate.Session;
 import org.jbpm.api.InvalidProcessException;
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Process;
@@ -49,7 +50,7 @@
   @Id @GeneratedValue
   protected Integer id;
 
-  @Column
+  @Basic
   private String engineName;
   
   protected AbstractElementImpl(ProcessEngine engine)
@@ -81,6 +82,9 @@
     return ProcessEngine.getProcessEngine(engineName);
   }
   
+  /** Initializes the persistent object */
+  public abstract void initialize(Session session);
+  
   protected void create(ProcessDefinition procDef)
   {
     // nothing to do

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EndEventImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EndEventImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EndEventImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -103,7 +103,7 @@
   public void setInFlow(SequenceFlowImpl inFlow)
   {
     inFlow.setTargetIndex(inFlows.size());
-    inFlow.setTargetRef(this);
+    inFlow.setTargetRef(getName());
     inFlows.add(inFlow);
   }
 

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EventImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EventImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EventImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -27,7 +27,6 @@
 import javax.persistence.CascadeType;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
 import javax.persistence.MappedSuperclass;
 import javax.persistence.OneToOne;
 
@@ -66,10 +65,10 @@
   @Enumerated(EnumType.STRING)
   protected EventDetailType detailType = EventDetailType.None;
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = MessageImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = MessageImpl.class)
   private Message messageRef;
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = SignalImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = SignalImpl.class)
   private Signal signalRef;
 
   public EventImpl(ProcessStructure procStruct, String name)

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -124,7 +124,7 @@
 
       public void execute(TokenExecutor tokenExecutor, Token token)
       {
-        Node sourceRef = token.getSequenceFlow().getSourceRef();
+        String sourceRef = token.getSequenceFlow().getSourceRef();
         
         // Schedule the first token that arrives
         if (token == receivedTokens.get(0))

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GateImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GateImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GateImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -29,7 +29,6 @@
 
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.OneToMany;
@@ -65,11 +64,11 @@
   @GeneratedValue
   protected Integer id;
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = SequenceFlowImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = SequenceFlowImpl.class)
   protected SequenceFlow outFlow;
 
   @IndexColumn(name = "assignIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = AssignmentImpl.class)
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = AssignmentImpl.class)
   private List<Assignment> assignments = new ArrayList<Assignment>();
 
   @Override

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -103,7 +103,7 @@
   public void addOutFlow(SequenceFlowImpl outFlow)
   {
     outFlow.setSourceIndex(outFlows.size());
-    outFlow.setSourceRef(this);
+    outFlow.setSourceRef(getName());
     outFlows.add(outFlow);
   }
 
@@ -111,7 +111,7 @@
   public void addInFlow(SequenceFlowImpl inFlow)
   {
     inFlow.setTargetIndex(inFlows.size());
-    inFlow.setTargetRef(this);
+    inFlow.setTargetRef(getName());
     inFlows.add(inFlow);
   }
   
@@ -139,7 +139,7 @@
     SequenceFlow gate = null;
     for (SequenceFlow aux : outFlows)
     {
-      if (aux.getTargetName().equals(targetName))
+      if (aux.getTargetRef().equals(targetName))
       {
         gate = aux;
         break;

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GroupImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GroupImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GroupImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -30,7 +30,6 @@
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.OneToOne;
@@ -53,7 +52,7 @@
   @Id @GeneratedValue
   protected int id;
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = PropertySupportImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = PropertySupportImpl.class)
   private PropertySupport propSupport = new PropertySupportImpl();
 
   @Enumerated(EnumType.STRING)

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -84,7 +84,7 @@
       public void execute(TokenExecutor tokenExecutor, Token token)
       {
         MutableToken mutableToken = (MutableToken)token;
-        Node sourceRef = token.getSequenceFlow().getSourceRef();
+        String sourceRef = token.getSequenceFlow().getSourceRef();
         log.debug("Propagate token comming from: " + sourceRef);
 
         // Get the applicable gates

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InputSetImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InputSetImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InputSetImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -28,7 +28,6 @@
 import javax.persistence.Basic;
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.OneToOne;
@@ -54,7 +53,7 @@
   @Basic
   private int setIndex;
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = PropertySupportImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = PropertySupportImpl.class)
   protected PropertySupport propSupport = new PropertySupportImpl();
 
   int getSetIndex()

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -28,7 +28,6 @@
 import javax.persistence.Basic;
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.OneToOne;
@@ -60,13 +59,13 @@
   @Basic
   private String name;
   
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = ParticipantImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = ParticipantImpl.class)
   private Participant fromRef;
   
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = ParticipantImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = ParticipantImpl.class)
   private Participant toRef;
   
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = PropertySupportImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = PropertySupportImpl.class)
   protected PropertySupport propSupport = new PropertySupportImpl();
 
   public MessageImpl(String name)

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -31,13 +31,15 @@
 import javax.persistence.Basic;
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.Inheritance;
 import javax.persistence.InheritanceType;
+import javax.persistence.JoinTable;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
 
+import org.hibernate.Hibernate;
+import org.hibernate.Session;
 import org.hibernate.annotations.IndexColumn;
 import org.jbpm.api.InvalidProcessException;
 import org.jbpm.api.NameNotUniqueException;
@@ -91,18 +93,21 @@
   private int nodeIndex;
 
   @IndexColumn(name = "targetIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, mappedBy = "targetRef", targetEntity = SequenceFlowImpl.class)
+  @JoinTable(name = "BPMNodeInFlows")
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = SequenceFlowImpl.class)
   protected List<SequenceFlow> inFlows = new ArrayList<SequenceFlow>();
 
   @IndexColumn(name = "sourceIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, mappedBy = "sourceRef", targetEntity = SequenceFlowImpl.class)
+  @JoinTable(name = "BPMNodeOutFlows")
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = SequenceFlowImpl.class)
   protected List<SequenceFlow> outFlows = new ArrayList<SequenceFlow>();
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = PropertySupportImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = PropertySupportImpl.class)
   protected PropertySupport propSupport = new PropertySupportImpl();
 
   @IndexColumn(name = "assignIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = AssignmentImpl.class)
+  @JoinTable(name = "BPMNodeAssignments")
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = AssignmentImpl.class)
   private List<Assignment> assignments = new ArrayList<Assignment>();
 
   @Basic
@@ -182,7 +187,7 @@
   {
     this.groupRef = groupRef;
   }
-  
+
   @Override
   public Property getProperty(String name)
   {
@@ -233,12 +238,12 @@
 
   public List<SequenceFlow> getInFlows()
   {
-    return inFlows;
+    return Collections.unmodifiableList(inFlows);
   }
 
   public List<SequenceFlow> getOutFlows()
   {
-    return outFlows;
+    return Collections.unmodifiableList(outFlows);
   }
 
   public void execute(RuntimeContext rtContext)
@@ -398,6 +403,16 @@
     checkAndInitializeStructure(procStruct);
   }
 
+  @Override
+  public void initialize(Session session)
+  {
+    Hibernate.initialize(this);
+    Hibernate.initialize(propSupport);
+    Hibernate.initialize(assignments);
+    Hibernate.initialize(outFlows);
+    Hibernate.initialize(inFlows);
+  }
+
   private void checkAndInitializeStructure(ProcessStructure procStruct)
   {
     // Check required name
@@ -419,7 +434,7 @@
       Group procGroup = procStruct.getGroup(grpName);
       if (procGroup == null)
         throw new InvalidProcessException("Cannot obtain group for name: " + grpName);
-      
+
       this.groupRef = procGroup;
     }
 
@@ -467,7 +482,7 @@
   {
     if (flow != null)
     {
-      String name = flow.getTargetName();
+      String name = flow.getTargetRef();
       Node target = procStruct.getNode(name);
       if (target == null)
         throw new InvalidProcessException("Cannot find target for out flow: " + name);
@@ -487,8 +502,8 @@
         throw new InvalidProcessException("Target does not support in flow: " + target);
       }
 
-      flow.setSourceRef(this);
-      flow.setTargetRef(target);
+      flow.setSourceRef(getName());
+      flow.setTargetRef(target.getName());
     }
   }
 }
\ No newline at end of file

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/OutputSetImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/OutputSetImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/OutputSetImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -28,7 +28,6 @@
 import javax.persistence.Basic;
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.OneToOne;
@@ -54,7 +53,7 @@
   @Basic
   private int setIndex;
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = PropertySupportImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = PropertySupportImpl.class)
   protected PropertySupport propSupport = new PropertySupportImpl();
 
   int getSetIndex()

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -199,7 +199,7 @@
   
   private TokenImpl getMergedTokens()
   {
-    TokenImpl mergedToken = new TokenImpl(getProcessEngine(), null);
+    TokenImpl mergedToken = new TokenImpl(getProcess(), null);
     for (Token auxToken : mergeTokens)
     {
       log.debug("mergeToken: " + auxToken);

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -34,11 +34,12 @@
 import javax.management.ObjectName;
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.Lob;
 import javax.persistence.OneToOne;
 import javax.persistence.Transient;
 
+import org.hibernate.Hibernate;
+import org.hibernate.Session;
 import org.jbpm.api.Constants;
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Assignment;
@@ -67,7 +68,7 @@
   // provide logging
   final static Logger log = LoggerFactory.getLogger(ProcessDefinitionImpl.class);
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = ProcessStructureImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = ProcessStructureImpl.class)
   private ProcessStructure procStruct;
   
   @Lob
@@ -232,6 +233,14 @@
   }
 
   @Override
+  public void initialize(Session session)
+  {
+    Hibernate.initialize(this);
+    ProcessStructureImpl procStructImpl = (ProcessStructureImpl)procStruct;
+    procStructImpl.initialize(session);
+  }
+  
+  @Override
   protected void create(ProcessDefinition procDef)
   {
     super.create(procDef);

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -31,11 +31,12 @@
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToOne;
 import javax.persistence.Transient;
 
+import org.hibernate.Hibernate;
+import org.hibernate.Session;
 import org.jbpm.api.Constants;
 import org.jbpm.api.client.ProcessEngine;
 import org.jbpm.api.model.Assignment;
@@ -46,7 +47,6 @@
 import org.jbpm.api.model.ProcessDefinition;
 import org.jbpm.api.model.Property;
 import org.jbpm.api.model.builder.ObjectNameFactory;
-import org.jbpm.api.model.internal.ProcessStructure;
 import org.jbpm.api.runtime.Attachments;
 import org.jbpm.api.service.ExecutionService;
 import org.jbpm.api.service.ProcessService;
@@ -71,10 +71,10 @@
   private ProcessStatus status = ProcessStatus.None;
 
   @ManyToOne(targetEntity = ProcessDefinitionImpl.class)
-  private ProcessDefinition procDef;
+  private ProcessDefinitionImpl procDef;
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = ProcessStructureImpl.class)
-  private ProcessStructure procStruct;
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = ProcessStructureImpl.class)
+  private ProcessStructureImpl procStruct;
   
   @Transient
   private transient RuntimeException runtimeException;
@@ -276,35 +276,39 @@
   }
 
   @Override
+  public void initialize(Session session)
+  {
+    Hibernate.initialize(this);
+    procDef.initialize(session);
+    procStruct.initialize(session);
+  }
+  
+  @Override
   protected void create(Process proc)
   {
     super.create(proc);
-    ProcessStructureImpl procStructImpl = (ProcessStructureImpl)procStruct;
-    procStructImpl.create(proc);
+    procStruct.create(proc);
   }
 
   @Override
   public void register(Process proc)
   {
     super.register(proc);
-    ProcessStructureImpl procStructImpl = (ProcessStructureImpl)procStruct;
-    procStructImpl.register(proc);
+    procStruct.register(proc);
   }
 
   @Override
   public void unregister(Process proc)
   {
     super.unregister(proc);
-    ProcessStructureImpl procStructImpl = (ProcessStructureImpl)procStruct;
-    procStructImpl.unregister(proc);
+    procStruct.unregister(proc);
   }
 
   @Override
   protected void destroy(Process proc)
   {
     super.destroy(proc);
-    ProcessStructureImpl procStructImpl = (ProcessStructureImpl)procStruct;
-    procStructImpl.destroy(proc);
+    procStruct.destroy(proc);
   }
 
   public String toString()

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -32,11 +32,12 @@
 import javax.persistence.Basic;
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
 import javax.persistence.Transient;
 
+import org.hibernate.Hibernate;
+import org.hibernate.Session;
 import org.hibernate.annotations.IndexColumn;
 import org.jbpm.api.Constants;
 import org.jbpm.api.InvalidProcessException;
@@ -73,25 +74,25 @@
   @Basic
   private String name;
 
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = PropertySupportImpl.class)
+  protected PropertySupport propSupport = new PropertySupportImpl();
+
   @IndexColumn(name = "nodeIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, mappedBy = "procStruct", targetEntity = NodeImpl.class)
+  @OneToMany(cascade = { CascadeType.ALL }, mappedBy = "procStruct", targetEntity = NodeImpl.class)
   private List<Node> nodes = new ArrayList<Node>();
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = PropertySupportImpl.class)
-  protected PropertySupport propSupport = new PropertySupportImpl();
-
   @IndexColumn(name = "msgIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = MessageImpl.class)
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = MessageImpl.class)
   private List<Message> messages = new ArrayList<Message>();
 
   @IndexColumn(name = "assignIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = AssignmentImpl.class)
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = AssignmentImpl.class)
   private List<Assignment> assignments = new ArrayList<Assignment>();
 
   @IndexColumn(name = "groupIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = GroupImpl.class)
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = GroupImpl.class)
   private List<Group> groups = new ArrayList<Group>();
-  
+
   public ProcessStructureImpl(ProcessEngine engine, String name)
   {
     super(engine);
@@ -257,13 +258,13 @@
   {
     return propSupport.removeProperty(name);
   }
-  
+
   public void addGroup(GroupImpl groupImpl)
   {
     groupImpl.setGroupIndex(groups.size());
     groups.add(groupImpl);
   }
-  
+
   @Override
   public Group getGroup(String grpName)
   {
@@ -286,6 +287,22 @@
   }
 
   @Override
+  public void initialize(Session session)
+  {
+    Hibernate.initialize(this);
+    Hibernate.initialize(propSupport);
+    Hibernate.initialize(messages);
+    Hibernate.initialize(assignments);
+    Hibernate.initialize(groups);
+    
+    for (Node node : getNodes())
+    {
+      AbstractElementImpl elImpl = (AbstractElementImpl)node;
+      elImpl.initialize(session);
+    }
+  }
+
+  @Override
   public void create(ProcessDefinition procDef)
   {
     super.create(procDef);

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SequenceFlowImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SequenceFlowImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SequenceFlowImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -28,14 +28,11 @@
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
-import javax.persistence.ManyToOne;
 import javax.persistence.OneToOne;
 
 import org.jbpm.api.model.Expression;
-import org.jbpm.api.model.Node;
 import org.jbpm.api.model.SequenceFlow;
 
 /**
@@ -64,25 +61,22 @@
   private ConditionType conditionType = ConditionType.None;
 
   @Basic
-  private String targetName;
+  private String targetRef;
 
-  @ManyToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = NodeImpl.class)
-  private Node sourceRef;
+  @Basic
+  private String sourceRef;
 
-  @ManyToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = NodeImpl.class)
-  private Node targetRef;
-
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = ExpressionImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = ExpressionImpl.class)
   private Expression conditionExpression;
 
-  public SequenceFlowImpl(String targetName)
+  public SequenceFlowImpl(String targetRef)
   {
-    this.targetName = targetName;
+    this.targetRef = targetRef;
   }
 
-  public SequenceFlowImpl(String targetName, ConditionType type, Expression expr)
+  public SequenceFlowImpl(String targetRef, ConditionType type, Expression expr)
   {
-    this.targetName = targetName;
+    this.targetRef = targetRef;
     this.conditionType = type;
     this.conditionExpression = (ExpressionImpl)expr;
   }
@@ -112,36 +106,35 @@
     this.targetIndex = targetIndex;
   }
 
-  public Node getSourceRef()
+  @Override
+  public String getSourceRef()
   {
     return sourceRef;
   }
 
-  protected void setSourceRef(Node source)
+  protected void setSourceRef(String sourceRef)
   {
-    this.sourceRef = source;
+    this.sourceRef = sourceRef;
   }
 
-  public Node getTargetRef()
+  @Override
+  public String getTargetRef()
   {
     return targetRef;
   }
 
-  protected void setTargetRef(Node target)
+  protected void setTargetRef(String targetRef)
   {
-    this.targetRef = target;
+    this.targetRef = targetRef;
   }
 
-  public String getTargetName()
-  {
-    return targetName;
-  }
-
+  @Override
   public ConditionType getConditionType()
   {
     return conditionType;
   }
 
+  @Override
   public Expression getConditionExpression()
   {
     return conditionExpression;
@@ -149,17 +142,6 @@
 
   public String toString()
   {
-    Node sourceRef = getSourceRef();
-    Node targetRef = getTargetRef();
-
-    String srcName = null;
-    if (sourceRef != null)
-      srcName = (sourceRef.getName() != null ? sourceRef.getName() : sourceRef.getKey().getCanonicalName());
-
-    String tarName = null;
-    if (targetRef != null)
-      tarName = (targetRef.getName() != null ? targetRef.getName() : targetRef.getKey().getCanonicalName());
-
-    return "SequenceFlow[" + srcName + "->" + tarName + "]";
+    return "SequenceFlow[" + sourceRef + "->" + targetRef + "]";
   }
 }
\ No newline at end of file

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/StartEventImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/StartEventImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/StartEventImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -108,7 +108,7 @@
   public void setOutFlow(SequenceFlowImpl outFlow)
   {
     outFlow.setSourceIndex(outFlows.size());
-    outFlow.setSourceRef(this);
+    outFlow.setSourceRef(getName());
     outFlows.add(outFlow);
   }
 

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/TaskImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/TaskImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/TaskImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -32,7 +32,6 @@
 import javax.persistence.Entity;
 import javax.persistence.EnumType;
 import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
 import javax.persistence.OneToMany;
 import javax.persistence.Transient;
 
@@ -78,15 +77,15 @@
   protected TaskType taskType;
 
   @IndexColumn(name = "setIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = InputSetImpl.class)
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = InputSetImpl.class)
   private List<InputSet> inputSets = new ArrayList<InputSet>();
   
   @IndexColumn(name = "setIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = OutputSetImpl.class)
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = OutputSetImpl.class)
   private List<OutputSet> outputSets = new ArrayList<OutputSet>();
   
   @IndexColumn(name = "exprIndex")
-  @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = ExpressionImpl.class)
+  @OneToMany(cascade = { CascadeType.ALL }, targetEntity = ExpressionImpl.class)
   private List<Expression> ioRules = new ArrayList<Expression>();
   
   public TaskImpl(ProcessStructure procStruct, TaskType taskType, String name)
@@ -125,7 +124,7 @@
   public void setInFlow(SequenceFlowImpl inFlow)
   {
     inFlow.setTargetIndex(inFlows.size());
-    inFlow.setTargetRef(this);
+    inFlow.setTargetRef(getName());
     inFlows.add(inFlow);
   }
 
@@ -140,7 +139,7 @@
   public void setOutFlow(SequenceFlowImpl outFlow)
   {
     outFlow.setSourceIndex(outFlows.size());
-    outFlow.setSourceRef(this);
+    outFlow.setSourceRef(getName());
     outFlows.add(outFlow);
   }
 

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/UserTaskImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/UserTaskImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/UserTaskImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -29,7 +29,6 @@
 import javax.management.ObjectName;
 import javax.persistence.CascadeType;
 import javax.persistence.Entity;
-import javax.persistence.FetchType;
 import javax.persistence.OneToOne;
 import javax.persistence.Transient;
 
@@ -62,10 +61,10 @@
 
   final static Logger log = LoggerFactory.getLogger(UserTaskImpl.class);
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = MessageImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = MessageImpl.class)
   protected MessageImpl outMessageRef;
 
-  @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = MessageImpl.class)
+  @OneToOne(cascade = { CascadeType.ALL }, targetEntity = MessageImpl.class)
   protected MessageImpl inMessageRef;
 
   @Transient

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/DelegatingToken.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -25,6 +25,7 @@
 
 import org.hibernate.Session;
 import org.jbpm.api.model.Node;
+import org.jbpm.api.model.Process;
 import org.jbpm.api.model.SequenceFlow;
 import org.jbpm.api.runtime.ExecutionContext;
 import org.jbpm.api.runtime.Token;
@@ -44,9 +45,10 @@
   {
     this.delegateToken = token;
 
-    Node targetRef = token.getSequenceFlow().getTargetRef();
+    String targetRef = token.getSequenceFlow().getTargetRef();
+    Node targetNode = token.getProcess().getNode(targetRef);
     ExecutionContext exContext = token.getExecutionContext();
-    this.delegateContext = new DelegatingExecutionContext(targetRef, exContext);
+    this.delegateContext = new DelegatingExecutionContext(targetNode, exContext);
   }
 
   @Override
@@ -80,6 +82,12 @@
   }
 
   @Override
+  public Process getProcess()
+  {
+    return delegateToken.getProcess();
+  }
+
+  @Override
   public void mergeToken(Token token)
   {
     delegateToken.mergeToken(token);

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RunnableToken.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RunnableToken.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RunnableToken.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -79,7 +79,8 @@
       while (continueTokenThread())
       {
         // Get the target node
-        Node node = token.getSequenceFlow().getTargetRef();
+        String targetRef = token.getSequenceFlow().getTargetRef();
+        Node node = proc.getNode(targetRef);
 
         // Synchronize on the target Node
         synchronized (node)

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/RuntimeContext.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -57,7 +57,8 @@
 
   public Node getNode()
   {
-    return token.getSequenceFlow().getTargetRef();
+    String targetRef = token.getSequenceFlow().getTargetRef();
+    return token.getProcess().getNode(targetRef);
   }
 
   public Token getToken()

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TokenImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -26,6 +26,7 @@
 import org.hibernate.Session;
 import org.jboss.util.id.UID;
 import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Process;
 import org.jbpm.api.model.SequenceFlow;
 import org.jbpm.api.runtime.Attachments;
 import org.jbpm.api.runtime.BasicExecutionContext;
@@ -52,18 +53,18 @@
   private SequenceFlow flow;
   private ExecutionContext context;
   private TokenStatus status;
-  private ProcessEngine engine;
+  private Process process;
   private Session session;
 
   /**
    * Construct a Token with given {@link Attachments}
    */
-  public TokenImpl(ProcessEngine engine, Attachments att)
+  public TokenImpl(Process process, Attachments att)
   {
     this.context = new BasicExecutionContext(att);
     this.id = new UID().toString();
     this.status = TokenStatus.Created;
-    this.engine = engine;
+    this.process = process;
   }
 
   @Override
@@ -85,6 +86,12 @@
   }
   
   @Override
+  public Process getProcess()
+  {
+    return process;
+  }
+
+  @Override
   public ExecutionContext getExecutionContext()
   {
     return context;
@@ -107,6 +114,7 @@
   {
     if (session == null)
     {
+      ProcessEngine engine = process.getProcessEngine();
       PersistenceService service = engine.getService(PersistenceService.class);
       session = service.createSession();
     }
@@ -126,7 +134,7 @@
   @Override
   public MutableToken copyToken()
   {
-    return new TokenImpl(engine, context);
+    return new TokenImpl(process, context);
   }
   
   @Override

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -114,7 +114,6 @@
       InitialFlow(StartEvent start)
       {
         super(start.getName());
-        setTargetRef(start);
       }
     }
 
@@ -122,7 +121,7 @@
     boolean startProcessThread = (rtProc == null);
 
     // Create initial Token
-    TokenImpl initialToken = new TokenImpl(getProcessEngine(), att);
+    TokenImpl initialToken = new TokenImpl(proc, att);
     InitialFlow initialFlow = new InitialFlow(start);
     initialToken.setSequenceFlow(initialFlow);
 

Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/HibernatePersistenceServiceImpl.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -29,7 +29,6 @@
 
 import javax.management.ObjectName;
 
-import org.hibernate.Hibernate;
 import org.hibernate.ObjectNotFoundException;
 import org.hibernate.Session;
 import org.hibernate.SessionFactory;
@@ -43,6 +42,7 @@
 import org.jbpm.api.model.ProcessDefinition;
 import org.jbpm.api.service.PersistenceService;
 import org.jbpm.api.service.Service;
+import org.jbpm.ri.model.AbstractElementImpl;
 import org.jbpm.ri.model.ProcessDefinitionImpl;
 import org.jbpm.ri.model.ProcessImpl;
 import org.slf4j.Logger;
@@ -108,13 +108,14 @@
   public ProcessDefinition loadProcessDefinition(ObjectName procDefID)
   {
     log.debug("START loadProcessDefinition: " + procDefID);
-    ProcessDefinitionImpl procDefImpl = null;
+    ProcessDefinition procDef = null;
     Session session = getSessionFactory().openSession();
     try
     {
       Integer id = Integer.valueOf(procDefID.getKeyProperty("id"));
-      procDefImpl = (ProcessDefinitionImpl)session.load(ProcessDefinitionImpl.class, id);
-      Hibernate.initialize(procDefImpl);
+      procDef = (ProcessDefinition)session.load(ProcessDefinitionImpl.class, id);
+      AbstractElementImpl elImpl = (AbstractElementImpl)procDef;
+      elImpl.initialize(session);
     }
     catch (ObjectNotFoundException ex)
     {
@@ -125,7 +126,7 @@
       session.close();
     }
     log.debug("END loadProcessDefinition: " + procDefID);
-    return (ProcessDefinition)procDefImpl;
+    return (ProcessDefinition)procDef;
   }
 
   @Override
@@ -136,6 +137,9 @@
     Transaction tx = session.beginTransaction();
     try
     {
+      ObjectName procDefID = procDef.getKey();
+      Integer id = Integer.valueOf(procDefID.getKeyProperty("id"));
+      procDef = (ProcessDefinition)session.load(ProcessDefinitionImpl.class, id);
       session.delete(procDef);
       tx.commit();
     }
@@ -175,7 +179,8 @@
     {
       Integer id = Integer.valueOf(procID.getKeyProperty("id"));
       proc = (Process)session.load(ProcessImpl.class, id);
-      Hibernate.initialize(proc);
+      AbstractElementImpl elImpl = (AbstractElementImpl)proc;
+      elImpl.initialize(session);
     }
     catch (ObjectNotFoundException ex)
     {
@@ -197,6 +202,9 @@
     Transaction tx = session.beginTransaction();
     try
     {
+      ObjectName procID = proc.getKey();
+      Integer id = Integer.valueOf(procID.getKeyProperty("id"));
+      proc = (Process)session.load(ProcessImpl.class, id);
       session.delete(proc);
       tx.commit();
     }
@@ -211,9 +219,9 @@
   public ObjectName saveNode(Session session, Node node)
   {
     log.debug("START saveNode: " + node.getKey());
-    
+
     session.saveOrUpdate(node);
-    
+
     log.debug("END saveNode: " + node.getKey());
     return node.getKey();
   }
@@ -228,7 +236,6 @@
     {
       Integer id = Integer.valueOf(nodeID.getKeyProperty("id"));
       node = (T)session.load(nodeClass, id);
-      Hibernate.initialize(node);
     }
     catch (ObjectNotFoundException ex)
     {
@@ -241,9 +248,7 @@
   public void deleteNode(Session session, Node node)
   {
     log.debug("START deleteNode: " + node);
-    
     session.delete(node);
-    
     log.debug("END deleteNode: " + node);
   }
 

Modified: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/EndEventPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/EndEventPersistenceTest.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/EndEventPersistenceTest.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -25,14 +25,14 @@
 
 import javax.management.ObjectName;
 
+import org.jbpm.api.model.EndEvent;
 import org.jbpm.api.model.Message;
 import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.EndEvent;
 import org.jbpm.api.model.Event.EventDetailType;
 import org.jbpm.api.model.Signal.SignalType;
+import org.jbpm.ri.model.EndEventImpl;
 import org.jbpm.ri.model.MessageImpl;
 import org.jbpm.ri.model.SignalImpl;
-import org.jbpm.ri.model.EndEventImpl;
 
 /**
  * Test the HibernatePersistenceService for EndEvent

Modified: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/NodePersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/NodePersistenceTest.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/NodePersistenceTest.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -25,10 +25,7 @@
 
 import javax.management.ObjectName;
 
-import org.hibernate.Hibernate;
 import org.hibernate.Session;
-import org.hibernate.StaleStateException;
-import org.hibernate.Transaction;
 import org.jbpm.api.model.Node;
 import org.jbpm.api.service.PersistenceService;
 import org.jbpm.api.test.CTSTestCase;
@@ -43,61 +40,37 @@
 public abstract class NodePersistenceTest extends CTSTestCase
 {
   protected HibernatePersistenceServiceImpl service;
-  
+  private Session session;
+
   @Override
   protected void setUp() throws Exception
   {
     super.setUp();
     service = (HibernatePersistenceServiceImpl)PersistenceService.locatePersistenceService();
+    session = service.createSession();
   }
 
+  @Override
+  protected void tearDown() throws Exception
+  {
+    super.tearDown();
+    session.close();
+  }
+
   protected ObjectName saveNode(Node node)
   {
-    Session session = service.createSession();
-    Transaction tx = session.beginTransaction();
-    try
-    {
-      service.saveNode(session, node);
-      tx.commit();
-      
-      return node.getKey();
-    }
-    finally
-    {
-      session.close();
-    }
+    service.saveNode(session, node);
+    return node.getKey();
   }
-  
+
   protected <T extends Node> T loadNode(Class<T> nodeClass, ObjectName nodeID)
   {
-    Session session = service.createSession();
-    try
-    {
-      T node = service.loadNode(session, nodeClass, nodeID);
-      return node;
-    }
-    finally
-    {
-      session.close();
-    }
+    T node = service.loadNode(session, nodeClass, nodeID);
+    return node;
   }
 
   protected void deleteNode(Node node)
   {
-    Session session = service.createSession();
-    Transaction tx = session.beginTransaction();
-    try
-    {
-      service.deleteNode(session, node);
-      tx.commit();
-    }
-    catch(StaleStateException ex)
-    {
-      // ignore, because the node was already deleted by a cascade
-    }
-    finally
-    {
-      session.close();
-    }
+    service.deleteNode(session, node);
   }
 }

Modified: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/TaskPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/TaskPersistenceTest.java	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/TaskPersistenceTest.java	2008-11-01 10:45:21 UTC (rev 2736)
@@ -112,6 +112,25 @@
     deleteNode(wasNode);
   }
 
+  public void testOutFlow() throws Exception
+  {
+    TaskImpl taskA = new TaskImpl(null, TaskType.None, "TaskA");
+    
+    SequenceFlowImpl flow = new SequenceFlowImpl("TaskB", ConditionType.Expression, new ExpressionImpl("expr"));
+    taskA.setOutFlow(flow);
+    
+    ObjectName aID = saveNode(taskA);
+    
+    Task wasA = loadNode(TaskImpl.class, aID);
+
+    SequenceFlow outFlowA = wasA.getOutFlow();
+    assertEquals("TaskB", outFlowA.getTargetRef());
+    assertEquals(ConditionType.Expression, outFlowA.getConditionType());
+    assertEquals("expr", outFlowA.getConditionExpression().getExpressionBody());
+    
+    deleteNode(wasA);
+  }
+
   public void testInOutFlows() throws Exception
   {
     TaskImpl taskA = new TaskImpl(null, TaskType.None, "TaskA");
@@ -128,14 +147,12 @@
     Task wasB = loadNode(TaskImpl.class, bID);
 
     SequenceFlow outFlowA = wasA.getOutFlow();
-    assertEquals("TaskB", outFlowA.getTargetName());
-    assertEquals("TaskB", outFlowA.getTargetRef().getName());
+    assertEquals("TaskB", outFlowA.getTargetRef());
     assertEquals(ConditionType.Expression, outFlowA.getConditionType());
     assertEquals("expr", outFlowA.getConditionExpression().getExpressionBody());
-    assertSame(wasA, outFlowA.getSourceRef());
     
     SequenceFlow inFlowB = wasB.getInFlow();
-    assertEquals(outFlowA.getTargetName(), inFlowB.getTargetName());
+    assertEquals(outFlowA.getTargetRef(), inFlowB.getTargetRef());
     
     deleteNode(wasA);
     deleteNode(wasB);

Modified: projects/spec/trunk/modules/ri/src/test/resources/log4j.xml
===================================================================
--- projects/spec/trunk/modules/ri/src/test/resources/log4j.xml	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/ri/src/test/resources/log4j.xml	2008-11-01 10:45:21 UTC (rev 2736)
@@ -33,9 +33,6 @@
   <!-- ================ -->
 
   <category name="org.hibernate">
-    <priority value="INFO" />
-  </category>
-  <category name="org.hibernate.persister">
     <priority value="DEBUG" />
   </category>
 

Modified: projects/spec/trunk/modules/samples/airticket/client/.classpath
===================================================================
--- projects/spec/trunk/modules/samples/airticket/client/.classpath	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/samples/airticket/client/.classpath	2008-11-01 10:45:21 UTC (rev 2736)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>

Modified: projects/spec/trunk/modules/samples/airticket/server/.classpath
===================================================================
--- projects/spec/trunk/modules/samples/airticket/server/.classpath	2008-11-01 10:19:43 UTC (rev 2735)
+++ projects/spec/trunk/modules/samples/airticket/server/.classpath	2008-11-01 10:45:21 UTC (rev 2736)
@@ -1,9 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
-	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
+	<classpathentry kind="src" path="src/main/java"/>
 	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
-	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
 	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="output" path="target/classes"/>




More information about the jbpm-commits mailing list