[jbpm-commits] JBoss JBPM SVN: r1583 - in api/trunk: modules/api and 3 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Jul 11 09:11:03 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-07-11 09:11:03 -0400 (Fri, 11 Jul 2008)
New Revision: 1583

Modified:
   api/trunk/docs/VioletUML/APIModel.class.violet
   api/trunk/docs/VioletUML/APIModel.png
   api/trunk/modules/api/pom.xml
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractFlowObject.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractItermediateEvent.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Flow.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/MultipleInFlowSupport.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SingleInFlowSupport.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java
   api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
   api/trunk/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java
   api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/model/ProcessTest.java
Log:
Initialize FlowObject

Modified: api/trunk/docs/VioletUML/APIModel.class.violet
===================================================================
--- api/trunk/docs/VioletUML/APIModel.class.violet	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/docs/VioletUML/APIModel.class.violet	2008-07-11 13:11:03 UTC (rev 1583)
@@ -89,6 +89,11 @@
   </void> 
   <void method="addNode"> 
    <object id="ClassNode5" class="com.horstmann.violet.ClassNode"> 
+    <void property="attributes"> 
+     <void property="text"> 
+      <string>outFlow</string> 
+     </void> 
+    </void> 
     <void property="name"> 
      <void property="text"> 
       <string>StartEvent</string> 
@@ -97,8 +102,8 @@
    </object> 
    <object class="java.awt.geom.Point2D$Double"> 
     <void method="setLocation"> 
-     <double>33.0</double> 
-     <double>209.0</double> 
+     <double>32.0</double> 
+     <double>224.0</double> 
     </void> 
    </object> 
   </void> 
@@ -106,7 +111,9 @@
    <object id="ClassNode6" class="com.horstmann.violet.ClassNode"> 
     <void property="attributes"> 
      <void property="text"> 
-      <string>name</string> 
+      <string>name
+inFlows
+outFlows</string> 
      </void> 
     </void> 
     <void property="name"> 
@@ -117,8 +124,8 @@
    </object> 
    <object class="java.awt.geom.Point2D$Double"> 
     <void method="setLocation"> 
-     <double>9.0</double> 
-     <double>134.0</double> 
+     <double>12.0</double> 
+     <double>101.0</double> 
     </void> 
    </object> 
   </void> 
@@ -126,7 +133,8 @@
    <object id="ClassNode7" class="com.horstmann.violet.ClassNode"> 
     <void property="attributes"> 
      <void property="text"> 
-      <string>name</string> 
+      <string>name
+inFlow</string> 
      </void> 
     </void> 
     <void property="name"> 
@@ -137,8 +145,8 @@
    </object> 
    <object class="java.awt.geom.Point2D$Double"> 
     <void method="setLocation"> 
-     <double>27.0</double> 
-     <double>302.0</double> 
+     <double>26.0</double> 
+     <double>317.0</double> 
     </void> 
    </object> 
   </void> 
@@ -166,7 +174,9 @@
    <object id="ClassNode9" class="com.horstmann.violet.ClassNode"> 
     <void property="attributes"> 
      <void property="text"> 
-      <string>name</string> 
+      <string>name
+inFlows
+outFlows</string> 
      </void> 
     </void> 
     <void property="name"> 
@@ -187,7 +197,9 @@
    <object id="ClassNode10" class="com.horstmann.violet.ClassNode"> 
     <void property="attributes"> 
      <void property="text"> 
-      <string>parent</string> 
+      <string>parent
+inFlow
+outFlow</string> 
      </void> 
     </void> 
     <void property="name"> 
@@ -199,13 +211,19 @@
    </object> 
    <object class="java.awt.geom.Point2D$Double"> 
     <void method="setLocation"> 
-     <double>269.0</double> 
-     <double>342.0</double> 
+     <double>271.0</double> 
+     <double>356.0</double> 
     </void> 
    </object> 
   </void> 
   <void method="addNode"> 
    <object id="ClassNode11" class="com.horstmann.violet.ClassNode"> 
+    <void property="attributes"> 
+     <void property="text"> 
+      <string>inFlow
+outFlow</string> 
+     </void> 
+    </void> 
     <void property="name"> 
      <void property="text"> 
       <string>Task</string> 
@@ -309,8 +327,8 @@
    </object> 
    <object class="java.awt.geom.Point2D$Double"> 
     <void method="setLocation"> 
-     <double>28.0</double> 
-     <double>396.0</double> 
+     <double>25.0</double> 
+     <double>421.0</double> 
     </void> 
    </object> 
   </void> 
@@ -324,8 +342,8 @@
    </object> 
    <object class="java.awt.geom.Point2D$Double"> 
     <void method="setLocation"> 
-     <double>29.0</double> 
-     <double>490.0</double> 
+     <double>33.0</double> 
+     <double>495.0</double> 
     </void> 
    </object> 
   </void> 

Modified: api/trunk/docs/VioletUML/APIModel.png
===================================================================
(Binary files differ)

Modified: api/trunk/modules/api/pom.xml
===================================================================
--- api/trunk/modules/api/pom.xml	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/pom.xml	2008-07-11 13:11:03 UTC (rev 1583)
@@ -89,6 +89,7 @@
             <include>AbstractFlow.java</include>
             <include>AbstractFlowObject.java</include>
             <include>AbstractGateway.java</include>
+            <include>AbstractItermediateEvent.java</include>
             <include>AbstractProcess.java</include>
             <include>AbstractStartEvent.java</include>
             <include>AbstractSubProcess.java</include>

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractFlowObject.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractFlowObject.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractFlowObject.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -23,6 +23,7 @@
 
 //$Id$
 
+import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 /**
@@ -34,4 +35,16 @@
 @XmlType(name = "AbstractFlowObject")
 abstract class AbstractFlowObject
 {
+  @XmlTransient
+  private Process process;
+
+  public Process getProcess()
+  {
+    return process;
+  }
+
+  public void setProcess(Process process)
+  {
+    this.process = process;
+  }
 }
\ No newline at end of file

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractItermediateEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractItermediateEvent.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/AbstractItermediateEvent.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -43,7 +43,7 @@
  * @since 08-Jul-2008
  */
 @XmlType(name="AbstractItermediateEvent")
-abstract class AbstractItermediateEvent extends Event implements MultipleOutFlowSupport, MultipleInFlowSupport
+abstract class AbstractItermediateEvent extends Event implements MultipleOutFlowSupport, MultipleInFlowSupport, NamedFlowObject
 {
   private String name;
   
@@ -51,6 +51,7 @@
     @XmlElement(name = "sequence", type = SequenceFlow.class), 
     @XmlElement(name = "message", type = MessageFlow.class) 
     })
+    
   protected List<Flow> outFlows = new ArrayList<Flow>();
   /**
    * Construct an anonymous StartEvent. 

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -40,9 +40,10 @@
  * @since 08-Jul-2008
  */
 @XmlType(name="EndEvent")
-public class EndEvent extends AbstractEndEvent implements NamedFlowObject
+public class EndEvent extends AbstractEndEvent implements NamedFlowObject, SingleInFlowSupport
 {
   private Result result;
+  private Flow inFlow;
   
   /**
    * Construct an anonymous StartEvent. 
@@ -61,6 +62,23 @@
     super(name);
   }
   
+  /**
+   * Get the out flow
+   */
+  public Flow getInFlow()
+  {
+    return inFlow;
+  }
+  
+  /**
+   * Set the in flow
+   */
+  @XmlTransient
+  public void setInFlow(Flow inFlow)
+  {
+    this.inFlow = inFlow;
+  }
+  
   /** 
    * Get the result 
    */

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Flow.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Flow.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Flow.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -42,6 +42,7 @@
 public abstract class Flow extends AbstractFlow
 {
   private FlowObject source;
+  private FlowObject target;
   
   /**
    * Construct a flow with no target
@@ -77,4 +78,22 @@
   {
     this.source = source;
   }
+
+  /**
+   * Get the target flow object
+   */
+  public FlowObject getTarget()
+  {
+    return target;
+  }
+
+  /**
+   * Set the target flow object
+   * Note, this MUST NOT leak into the public API.
+   */
+  @XmlTransient
+  public void setTarget(FlowObject target)
+  {
+    this.target = target;
+  }
 }
\ No newline at end of file

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -24,6 +24,7 @@
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
+import org.jboss.bpm.InvalidProcessException;
 import org.jboss.bpm.client.SignalManager;
 import org.jboss.bpm.runtime.Token;
 
@@ -39,8 +40,6 @@
 public abstract class FlowObject extends AbstractFlowObject
 {
   @XmlTransient
-  private Process process;
-  @XmlTransient
   private Object implObject;
   
   /**
@@ -51,12 +50,84 @@
   {
   }
   
+  /**
+   * Initialize the flow object
+   */
+  protected void initialize(Process proc)
+  {
+    setProcess(proc);
+    
+    Flow outFlow = null;
+    if (this instanceof SingleOutFlowSupport)
+    {
+      SingleOutFlowSupport sof = (SingleOutFlowSupport)this;
+      outFlow = sof.getOutFlow();
+      initFlow(proc, outFlow);
+    }
+    else if (this instanceof MultipleOutFlowSupport)
+    {
+      MultipleOutFlowSupport mof = (MultipleOutFlowSupport)this;
+      for (Flow flow : mof.getOutFlows())
+      {
+        outFlow = flow;
+        initFlow(proc, flow);
+      }
+    }
+    
+    Flow inFlow = null;
+    if (this instanceof SingleInFlowSupport)
+    {
+      SingleInFlowSupport sif = (SingleInFlowSupport)this;
+      inFlow = sif.getInFlow();
+    }
+    else if (this instanceof MultipleInFlowSupport)
+    {
+      MultipleInFlowSupport mif = (MultipleInFlowSupport)this;
+      for (Flow flow : mif.getInFlows())
+      {
+        inFlow = flow;
+      }
+    }
+    
+    //if (inFlow == null && outFlow == null)
+    //  throw new InvalidProcessException("Unconnected flow object: " + this);
+  }
+
+  private void initFlow(Process proc, Flow flow)
+  {
+    if (flow != null)
+    {
+      String name = flow.getTargetName();
+      FlowObject target = proc.findFlowObject(name);
+      if (target == null)
+        throw new InvalidProcessException("Cannot find target for out flow: " + name);
+      
+      if (target instanceof SingleInFlowSupport)
+      {
+        SingleInFlowSupport sif = (SingleInFlowSupport)target;
+        sif.setInFlow(flow);
+      }
+      else if (target instanceof MultipleInFlowSupport)
+      {
+        MultipleInFlowSupport mif = (MultipleInFlowSupport)target;
+        mif.addInFlow(flow);
+      }
+      else
+      {
+        throw new InvalidProcessException("Target does not support in flow: " + target);
+      }
+      
+      flow.setSource(this);
+      flow.setTarget(target);
+    }
+  }
+  
   /** 
    * Get the associated Process 
    */
   public Process getProcess()
   {
-    return process;
+    return super.getProcess();
   }
 
   /** 
@@ -72,20 +143,6 @@
   public abstract Signal getExitSignal();
 
   /** 
-   * Set the associated process
-   * Note, this MUST NOT leak into the public API. 
-   */
-  @XmlTransient
-  // TODO
-  public void setProcess(Process process)
-  {
-    if (this.process != null && this.process != process)
-      throw new IllegalStateException("Cannot reassign task to process");
-    
-    this.process = process;
-  }
-
-  /** 
    * Set the associated implementation object
    * Note, this MUST NOT leak into the public API. 
    */

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -78,4 +78,9 @@
   {
     this.inFlows.add(inFlow);
   }
+  
+  public String toString()
+  {
+    return "ItermediateEvent[" + getName() + "]";
+  }
 }
\ No newline at end of file

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/MultipleInFlowSupport.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/MultipleInFlowSupport.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/MultipleInFlowSupport.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -35,5 +35,5 @@
   /**
    * Add an out flow
    */
-  void addOutFlow(Flow flow);
+  void addInFlow(Flow flow);
 }

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -21,7 +21,7 @@
  */
 package org.jboss.bpm.model;
 
-//$Id$
+//$Id: Process.java 1581 2008-07-10 19:41:52Z thomas.diesler at jboss.com $
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -97,9 +97,8 @@
     if (flowObject instanceof NamedFlowObject)
     {
       NamedFlowObject nfo = (NamedFlowObject)flowObject;
-      String name = nfo.getName();
-      if (name != null && findFlowObject(name) != null)
-        throw new NameNotUniqueException("NamedFlowObject: " + name);
+      if (findFlowObject(nfo.getName()) != null)
+        throw new NameNotUniqueException("NamedFlowObject: " + nfo.getName());
     }
 
     flowObjects.add(flowObject);
@@ -171,18 +170,22 @@
    * 
    * @return null if not found
    */
-  public NamedFlowObject findFlowObject(String name)
+  public FlowObject findFlowObject(String name)
   {
     if (name == null)
       throw new IllegalArgumentException("Cannot find flow object with name: null");
 
-    NamedFlowObject nfo = null;
+    FlowObject nfo = null;
     for (FlowObject aux : flowObjects)
     {
-      if (aux instanceof NamedFlowObject && name.equals(((NamedFlowObject)aux).getName()))
+      if (aux instanceof NamedFlowObject)
       {
-        nfo = (NamedFlowObject)aux;
-        break;
+        NamedFlowObject auxnfo = (NamedFlowObject)aux;
+        if (auxnfo.getName().equals(name))
+        {
+          nfo = aux;
+          break;
+        }
       }
     }
     return nfo;
@@ -230,7 +233,7 @@
 
     // Set the associated process
     for (FlowObject aux : flowObjects)
-      aux.setProcess(this);
+      aux.initialize(this);
 
     processState = ProcessState.INITIALIZED;
   }

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SingleInFlowSupport.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SingleInFlowSupport.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SingleInFlowSupport.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -33,5 +33,5 @@
   /**
    * Set the in flow
    */
-  void setOutFlow(Flow flow);
+  void setInFlow(Flow flow);
 }

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -35,7 +35,7 @@
  * @since 08-Jul-2008
  */
 @XmlType(name = "StartEvent")
-public class StartEvent extends AbstractStartEvent implements SingleOutFlowSupport
+public class StartEvent extends AbstractStartEvent
 {
   /**
    * Construct a StartEvent with a constant name: 'start' 

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -33,10 +33,9 @@
  * @since 08-Jul-2008
  */
 @XmlType(name="SubProcess")
-public class SubProcess extends AbstractSubProcess
+public class SubProcess extends AbstractSubProcess implements SingleInFlowSupport
 {
-  @XmlTransient
-  private Process parentProcess;
+  private Flow inFlow;
   
   /**
    * Construct an anonymous process
@@ -55,9 +54,25 @@
     super(name);
   }
 
-  /** Get the parent process */
-  public Process getParentProcess()
+  /**
+   * Get the out flow
+   */
+  public Flow getInFlow()
   {
-    return parentProcess;
+    return inFlow;
   }
+  
+  /**
+   * Set the in flow
+   */
+  @XmlTransient
+  public void setInFlow(Flow inFlow)
+  {
+    this.inFlow = inFlow;
+  }
+  
+  public String toString()
+  {
+    return "SubProcess[" + getName() + "]";
+  }
 }
\ No newline at end of file

Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -21,6 +21,7 @@
  */
 package org.jboss.bpm.model;
 
+import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
 //$Id$
@@ -35,8 +36,10 @@
  * @since 08-Jul-2008
  */
 @XmlType(name = "Task")
-public class Task extends AbstractTask implements SingleOutFlowSupport
+public class Task extends AbstractTask implements SingleInFlowSupport
 {
+  private Flow inFlow;
+
   /**
    * Construct an anonymous Task
    * Note, this MUST NOT leak into the public API.
@@ -54,6 +57,23 @@
     super(name);
   }
 
+  /**
+   * Get the out flow
+   */
+  public Flow getInFlow()
+  {
+    return inFlow;
+  }
+  
+  /**
+   * Set the in flow
+   */
+  @XmlTransient
+  public void setInFlow(Flow inFlow)
+  {
+    this.inFlow = inFlow;
+  }
+  
   /** Get signal for enter */
   public Signal getEnterSignal()
   {

Modified: api/trunk/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java
===================================================================
--- api/trunk/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/api/src/test/java/org/jboss/bpm/model/ProcessMarshallerTest.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -41,7 +41,7 @@
 {
   public void testProcess() throws Exception
   { 
-    Process inProc = new ProcessBuilder("myproc").addStartEvent().addSequenceFlow("task").addTask("taskA").
+    Process inProc = new ProcessBuilder("myproc").addStartEvent().addSequenceFlow("task").addTask("task").
     addSequenceFlow("split").addParallelGateway("split").addSequenceFlow("subproc").addSequenceFlow("event").
     addSubProcess("subproc").addSequenceFlow("join").addItermediateEvent("event").addSequenceFlow("join").
     addParallelGateway("join").addSequenceFlow("end").addEndEvent("end").getProcess();
@@ -56,16 +56,87 @@
     ProcessUnmarshaller unmarshaller = new ProcessUnmarshaller();
     Process outProc = unmarshaller.unmarshallProcess(new StringReader(xml));
     StartEvent start = outProc.getStartEvent();
-    Task taskA = (Task)outProc.findFlowObject("taskA");
-    EndEvent end = outProc.getEndEvents().get(0);
+    Task task = (Task)outProc.findFlowObject("task");
+    ParallelGateway split = (ParallelGateway)outProc.findFlowObject("split");
+    ParallelGateway join = (ParallelGateway)outProc.findFlowObject("join");
+    ItermediateEvent event = (ItermediateEvent)outProc.findFlowObject("event");
+    SubProcess subproc = (SubProcess)outProc.findFlowObject("subproc");
+    EndEvent end = (EndEvent)outProc.findFlowObject("end");
+    
+    assertEquals(inProc.getName(), outProc.getName());
+    assertEquals(1, outProc.getEndEvents().size());
 
-    assertEquals(inProc.getName(), outProc.getName());
     assertNotNull(start);
+    assertNotNull(task);
+    assertNotNull(event);
+    assertNotNull(join);
+    assertNotNull(split);
+    assertNotNull(subproc);
+    assertNotNull(end);
+    
     assertEquals(outProc, start.getProcess());
-    assertNotNull(taskA);
-    assertEquals(outProc, taskA.getProcess());
-    assertEquals(1, outProc.getEndEvents().size());
-    assertNotNull(end);
+    assertEquals(outProc, task.getProcess());
+    assertEquals(outProc, event.getProcess());
+    assertEquals(outProc, join.getProcess());
+    assertEquals(outProc, split.getProcess());
+    assertEquals(outProc, subproc.getProcess());
     assertEquals(outProc, end.getProcess());
+    
+    Flow of1 = start.getOutFlow();
+    Flow of2 = task.getOutFlow();
+    Flow of3 = split.getOutFlows().get(0);
+    Flow of4 = split.getOutFlows().get(1);
+    Flow of5 = subproc.getOutFlow();
+    Flow of6 = event.getOutFlows().get(0);
+    Flow of7 = join.getOutFlows().get(0);
+    
+    assertNotNull(of1);
+    assertNotNull(of2);
+    assertNotNull(of3);
+    assertNotNull(of4);
+    assertNotNull(of5);
+    assertNotNull(of6);
+    assertNotNull(of7);
+
+    assertEquals(2, split.getOutFlows().size());
+    assertEquals(1, event.getOutFlows().size());
+    assertEquals(1, join.getOutFlows().size());
+
+    Flow if1 = task.getInFlow();
+    Flow if2 = split.getInFlows().get(0);
+    Flow if3 = subproc.getInFlow();
+    Flow if4 = event.getInFlows().get(0);
+    Flow if5 = join.getInFlows().get(0);
+    Flow if6 = join.getInFlows().get(1);
+    Flow if7 = end.getInFlow();
+
+    assertEquals(of1, if1);
+    assertEquals(of2, if2);
+    assertEquals(of3, if3);
+    assertEquals(of4, if4);
+    assertEquals(of5, if5);
+    assertEquals(of6, if6);
+    assertEquals(of7, if7);
+    
+    assertEquals(start, of1.getSource());
+    assertEquals(task, of1.getTarget());
+    
+    assertEquals(task, of2.getSource());
+    assertEquals(split, of2.getTarget());
+    
+    assertEquals(split, of3.getSource());
+    assertEquals(subproc, of3.getTarget());
+    
+    assertEquals(split, of4.getSource());
+    assertEquals(event, of4.getTarget());
+    
+    assertEquals(subproc, of5.getSource());
+    assertEquals(join, of5.getTarget());
+    
+    assertEquals(event, of6.getSource());
+    assertEquals(join, of6.getTarget());
+    
+    assertEquals(join, of7.getSource());
+    assertEquals(end, of7.getTarget());
   }
 }

Modified: api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/model/ProcessTest.java
===================================================================
--- api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/model/ProcessTest.java	2008-07-11 11:23:42 UTC (rev 1582)
+++ api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/model/ProcessTest.java	2008-07-11 13:11:03 UTC (rev 1583)
@@ -52,7 +52,7 @@
     StartEvent start = proc.getStartEvent();
     assertNotNull("Start expected", start);
 
-    NamedFlowObject nfo = proc.findFlowObject("stateA");
+    FlowObject nfo = proc.findFlowObject("stateA");
     assertNotNull("FlowObject expected", nfo);
     assertTrue("Task expected", nfo instanceof Task);
     




More information about the jbpm-commits mailing list