[jbpm-commits] JBoss JBPM SVN: r1827 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/runtime and 15 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Aug 5 15:47:06 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-08-05 15:47:06 -0400 (Tue, 05 Aug 2008)
New Revision: 1827

Modified:
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/ExecutionHandler.java
   jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
   jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
   jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java
   jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java
   jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
   jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java
   jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
   jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AvailabilityHandler.java
   jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/ValidationHandler.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/ParallelSplitTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
   jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java
Log:
Move access to inputSet/outputSet to Token

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -53,11 +53,19 @@
    * Get the {@link Process}. 
    * <p/> 
    * This is the final call to the ProcessBuilder after all elements have been added.
-   * @param initProcess If true the builder initializes the process 
+   * The {@link Process} is initialized and put in state READY
    */
-  Process getProcess(boolean initProcess);
+  Process getProcess();
 
   /**
+   * Get the {@link Process} for inclusion in another.
+   * <p/> 
+   * This is the final call to the ProcessBuilder after all elements have been added.
+   * The {@link Process} is not initialized and put in state READY
+   */
+  Process getProcessForInclude();
+
+  /**
    * Add a {@link SequenceFlow} with a given name
    */
   ProcessBuilder addSequenceFlow(String targetName);

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/ExecutionHandler.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/ExecutionHandler.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/ExecutionHandler.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -25,8 +25,6 @@
 
 import org.jboss.bpm.client.ProcessEngine;
 import org.jboss.bpm.model.FlowObject;
-import org.jboss.bpm.model.InputSet;
-import org.jboss.bpm.model.OutputSet;
 
 /**
  * The {@link ProcessEngine} invokes the ExecutionHandler on a 
@@ -40,6 +38,6 @@
   /**
    * Execute the associated business logic.
    */
-  void execute(Token token, InputSet input, OutputSet output);
+  void execute(Token token);
 
 }
\ No newline at end of file

Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Token.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -24,7 +24,8 @@
 //$Id$
 
 import org.jboss.bpm.model.ConnectingObject;
-import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.InputSet;
+import org.jboss.bpm.model.OutputSet;
 import org.jboss.bpm.model.SequenceFlow;
 
 /**
@@ -47,11 +48,6 @@
   String getTokenID();
 
   /**
-   * Get the associated {@link Process}
-   */
-  Process getProcess();
-
-  /**
    * Get the associated {@link ExecutionContext}
    */
   ExecutionContext getExecutionContext();
@@ -62,6 +58,18 @@
   ConnectingObject getFlow();
   
   /**
+   * Get the active {@link InputSet}  
+   * @return null if the {@link Activity} does not define one
+   */
+  InputSet getInputSet();
+  
+  /**
+   * Get the active {@link OutputSet}  
+   * @return null if the {@link Activity} does not define one
+   */
+  OutputSet getOutputSet();
+  
+  /**
    * Create a schallow copy of this Token.
    * <p/>
    * The content in the {@link ExecutionContext} will be copied by reference. 

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -126,7 +126,7 @@
       }
     }
     
-    Process proc = procBuilder.getProcess(!isInclude);
+    Process proc = (isInclude ? procBuilder.getProcessForInclude() : procBuilder.getProcess());
     return proc;
   }
 

Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -51,7 +51,7 @@
     procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("End").addEndEvent("End");
     MessageBuilder msgBuilder = procBuilder.addMessage("FooMsg");
     msgBuilder.addProperty("foo", "bar");
-    Process expProc = procBuilder.getProcess(true);
+    Process expProc = procBuilder.getProcess();
     
     ProcessManager pm = ProcessManager.locateProcessManager();
     DialectHandler dh = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
@@ -72,7 +72,7 @@
     MessageBuilder msgBuilder = taskBuilder.addMessage("FooMsg");
     msgBuilder.addProperty("foo", "bar");
     procBuilder.addSequenceFlow("End").addEndEvent("End");
-    Process expProc = procBuilder.getProcess(true);
+    Process expProc = procBuilder.getProcess();
     
     ProcessManager pm = ProcessManager.locateProcessManager();
     DialectHandler dh = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
@@ -96,7 +96,7 @@
     TaskBuilder taskBuilder = procBuilder.addTask("A", TaskType.Receive);
     taskBuilder.addMessageRef("FooMsg");
     procBuilder.addSequenceFlow("End").addEndEvent("End");
-    Process expProc = procBuilder.getProcess(true);
+    Process expProc = procBuilder.getProcess();
     
     ProcessManager pm = ProcessManager.locateProcessManager();
     DialectHandler dh = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);

Modified: jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -78,7 +78,7 @@
       }
     }
 
-    Process proc = builder.getProcess(true);
+    Process proc = builder.getProcess();
     return proc;
   }
 

Modified: jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -90,7 +90,7 @@
 
     Element root = doc.getDocumentElement();
     diagram = unmarshaller.unmarshal(root, BpmnDiagram.class).getValue();
-    ProcessBuilder builder = adaptDiagram(diagram);
+    ProcessBuilder procBuilder = adaptDiagram(diagram);
 
     // Initialize the list of sequence edges
     Element poolEl = (Element)DOMUtils.getChildElements(root, "pools").next();
@@ -130,10 +130,10 @@
     // Build the activities
     for (Activity stpActivity : activities)
     {
-      adaptActivity(builder, stpActivity);
+      adaptActivity(procBuilder, stpActivity);
     }
 
-    Process proc = builder.getProcess(!isInclude);
+    Process proc = (isInclude ? procBuilder.getProcessForInclude() : procBuilder.getProcess());
     return proc;
   }
 

Modified: jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -70,7 +70,7 @@
       }
     }
 
-    Process proc = builder.getProcess(true);
+    Process proc = builder.getProcess();
     return proc;
   }
 }

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -78,7 +78,7 @@
     MutableFlowScheduler flowScheduler = rtProc.getFlowScheduler();
     try
     {
-      Token initalToken = new TokenImpl(proc, att);
+      Token initalToken = new TokenImpl(att);
       StartEvent start = proc.getStartEvent();
       flowScheduler.scheduleTuple(new InitialFlow(start), initalToken);
 

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -42,6 +42,7 @@
 import org.jboss.bpm.runtime.FlowScheduler;
 import org.jboss.bpm.runtime.MutablePropertySupport;
 import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.internal.TokenImpl;
 
 /**
  * An activity is a generic term for work that a company or organization performs via business processes. An activity
@@ -52,7 +53,8 @@
  * @since 08-Jul-2008
  */
 @SuppressWarnings("serial")
-public abstract class ActivityImpl extends FlowObjectImpl implements Activity, MutablePropertySupport, SingleInFlowSetterSupport, SingleOutFlowSetterSupport
+public abstract class ActivityImpl extends FlowObjectImpl implements Activity, MutablePropertySupport,
+    SingleInFlowSetterSupport, SingleOutFlowSetterSupport
 {
   private String name;
   private List<InputSet> inputSets = new ArrayList<InputSet>();
@@ -186,11 +188,12 @@
   @Override
   public void execute(Token token)
   {
-    OutputSetImpl outputSet = new OutputSetImpl();
-    InputSet inputSet = getActiveInputSet(token);
-    executeHandler(token, inputSet, outputSet);
-    processOutputSet(token, outputSet);
-    postProcessInputSet(token, inputSet);
+    TokenImpl tokenImpl = (TokenImpl)token;
+    tokenImpl.setOutputSet(getActiveOutputSet());
+    tokenImpl.setInputSet(getActiveInputSet(token));
+    executeHandler(token);
+    processOutputSet(token);
+    postProcessInputSet(token);
   }
 
   /**
@@ -236,55 +239,76 @@
   }
 
   /**
+   * Select the active outputSet
+   */
+  protected OutputSet getActiveOutputSet()
+  {
+    OutputSet outputSet = null;
+    if (outputSets.size() > 0)
+    {
+      if (outputSets.size() > 1)
+        throw new NotImplementedException("IORules and multiple outputSets not supported");
+
+      outputSet = new OutputSetImpl();
+      for (Property prop : outputSets.get(0).getProperties())
+      {
+        outputSet.addProperty(prop);
+      }
+    }
+
+    // Create an empty output set
+    if (outputSet == null)
+      outputSet = new OutputSetImpl();
+
+    return outputSet;
+  }
+
+  /**
    * Execute external business logic
    */
-  protected void executeHandler(Token token, InputSet inputSet, OutputSet outputSet)
+  protected void executeHandler(Token token)
   {
     // Call the execution handler with the InputSet
     ExecutionHandler handler = getExecutionHandler();
     if (handler != null)
     {
-      handler.execute(token, inputSet, outputSet);
+      handler.execute(token);
     }
   }
 
   /**
    * Transfer data from outputSet to Token
    */
-  protected void processOutputSet(Token token, OutputSet outputSet)
+  protected void processOutputSet(Token token)
   {
     ExecutionContext exContext = token.getExecutionContext();
 
     // Add the outputSet properties to the Token
-    if (outputSet != null && outputSets.size() > 0)
+    OutputSet outputSet = token.getOutputSet();
+    for (Property prop : getActiveOutputSet().getProperties())
     {
-      if (outputSets.size() > 1)
-        throw new NotImplementedException("IORules and multiple outputSets not supported");
+      Property outProp = outputSet.getProperty(prop.getName());
+      if (outProp == null)
+        throw new IllegalStateException("Cannot find outputSet property '" + prop.getName() + "' in Activity: " + getName());
 
-      OutputSet auxSet = outputSets.get(0);
-      for (Property prop : auxSet.getProperties())
-      {
-        Property outProp = outputSet.getProperty(prop.getName());
-        if (outProp == null)
-          throw new IllegalStateException("Cannot find required outputSet property '" + prop.getName()
-              + "' in Activity: " + getName());
-
-        exContext.addAttachment(outProp.getName(), outProp.getValue().getExpressionBody());
-      }
+      String name = outProp.getName();
+      String value = outProp.getValue().getExpressionBody();
+      exContext.addAttachment(name, value);
     }
   }
 
   /**
    * Remove the inputSet properties
    */
-  protected void postProcessInputSet(Token token, InputSet inputSet)
+  protected void postProcessInputSet(Token token)
   {
-//    ExecutionContext exContext = token.getExecutionContext();
-//    for (Property prop : inputSet.getProperties())
-//    {
-//      // TODO: define proper scope for token data
-//      exContext.removeAttachment(prop.getName());
-//    }
+    // InputSet inputSet = token.getInputSet();
+    // ExecutionContext exContext = token.getExecutionContext();
+    // for (Property prop : inputSet.getProperties())
+    // {
+    // // TODO: define proper scope for token data
+    // exContext.removeAttachment(prop.getName());
+    // }
   }
 
   public FlowHandler getFlowHandler()

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -37,9 +37,7 @@
 import org.jboss.bpm.model.Gate;
 import org.jboss.bpm.model.Gateway;
 import org.jboss.bpm.model.GraphicalElement;
-import org.jboss.bpm.model.InputSet;
 import org.jboss.bpm.model.NameSupport;
-import org.jboss.bpm.model.OutputSet;
 import org.jboss.bpm.model.SequenceFlow;
 import org.jboss.bpm.model.Signal;
 import org.jboss.bpm.model.SequenceFlow.ConditionType;
@@ -146,7 +144,7 @@
     ExecutionHandler handler = getExecutionHandler();
     if (handler != null)
     {
-      handler.execute(token, null, null);
+      handler.execute(token);
     }
   }
 
@@ -157,7 +155,7 @@
     {
       handler = new ExecutionHandler()
       {
-        public void execute(Token token, InputSet inputSet, OutputSet outputSet)
+        public void execute(Token token)
         {
           log.debug("Nothing to do in gateway: " + getName());
         }
@@ -213,7 +211,7 @@
 
   private Token mergeTokens(Token token)
   {
-    TokenImpl mergedToken = new TokenImpl(token.getProcess(), null);
+    TokenImpl mergedToken = new TokenImpl(null);
     for (Token auxToken : mergeTokens)
       mergedToken.mergeToken(auxToken);
 

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -25,7 +25,9 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.jboss.bpm.model.ArtifactInput;
 import org.jboss.bpm.model.InputSet;
@@ -42,7 +44,7 @@
 public class InputSetImpl extends SupportingElementImpl implements InputSet, MutablePropertySupport
 {
   private List<ArtifactInput> artInputs = new ArrayList<ArtifactInput>();
-  private List<Property> props = new ArrayList<Property>();
+  private Map<String,Property> props = new LinkedHashMap<String,Property>();
 
   public List<ArtifactInput> getArtifactInputs()
   {
@@ -56,12 +58,7 @@
   
   public Property getProperty(String name)
   {
-    for (Property prop : props)
-    {
-      if (prop.getName().equals(name))
-        return prop;
-    }
-    return null;
+    return props.get(name);
   }
 
   public String getPropertyValue(String name)
@@ -72,21 +69,16 @@
 
   public List<Property> getProperties()
   {
-    return Collections.unmodifiableList(props);
+    return Collections.unmodifiableList(new ArrayList<Property>(props.values()));
   }
 
   public List<String> getPropertyNames()
   {
-    List<String> names = new ArrayList<String>();
-    for (Property prop : props)
-    {
-      names.add(prop.getName());
-    }
-    return names;
+    return new ArrayList<String>(props.keySet());
   }
 
   public void addProperty(Property prop)
   {
-    props.add(prop);
+    props.put(prop.getName(), prop);
   }
 }

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -26,9 +26,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jboss.bpm.model.ConnectingObject;
-import org.jboss.bpm.model.InputSet;
 import org.jboss.bpm.model.IntermediateEvent;
-import org.jboss.bpm.model.OutputSet;
 import org.jboss.bpm.model.Signal;
 import org.jboss.bpm.runtime.ExecutionHandler;
 import org.jboss.bpm.runtime.FlowHandler;
@@ -91,7 +89,7 @@
     {
       handler = new ExecutionHandler()
       {
-        public void execute(Token token, InputSet inputSet, OutputSet outputSet)
+        public void execute(Token token)
         {
           log.debug("Nothing to do in event");
         }

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -25,7 +25,9 @@
 
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.jboss.bpm.model.ArtifactOutput;
 import org.jboss.bpm.model.OutputSet;
@@ -42,7 +44,7 @@
 public class OutputSetImpl extends SupportingElementImpl implements OutputSet, MutablePropertySupport
 {
   private List<ArtifactOutput> artOutputs = new ArrayList<ArtifactOutput>();
-  private List<Property> props = new ArrayList<Property>();
+  private Map<String,Property> props = new LinkedHashMap<String,Property>();
 
   public List<ArtifactOutput> getArtifactOutputs()
   {
@@ -56,12 +58,7 @@
   
   public Property getProperty(String name)
   {
-    for (Property prop : props)
-    {
-      if (prop.getName().equals(name))
-        return prop;
-    }
-    return null;
+    return props.get(name);
   }
 
   public String getPropertyValue(String name)
@@ -72,21 +69,16 @@
 
   public List<Property> getProperties()
   {
-    return Collections.unmodifiableList(props);
+    return Collections.unmodifiableList(new ArrayList<Property>(props.values()));
   }
 
   public List<String> getPropertyNames()
   {
-    List<String> names = new ArrayList<String>();
-    for (Property prop : props)
-    {
-      names.add(prop.getName());
-    }
-    return names;
+    return new ArrayList<String>(props.keySet());
   }
 
   public void addProperty(Property prop)
   {
-    props.add(prop);
+    props.put(prop.getName(), prop);
   }
 }

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -78,17 +78,21 @@
     return this;
   }
 
-  public Process getProcess(boolean initProcess)
+  public Process getProcess()
   {
     if (proc == null)
       throw new IllegalStateException("No process has been added");
-    
-    if (initProcess)
-      proc.initialize();
-    
+    proc.initialize();
     return proc;
   }
 
+  public Process getProcessForInclude()
+  {
+    if (proc == null)
+      throw new IllegalStateException("No process has been added");
+    return proc;
+  }
+
   public ProcessBuilder addSequenceFlow(String targetName)
   {
     if (flowObject instanceof SingleOutFlowSetterSupport)

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -27,11 +27,9 @@
 import org.jboss.bpm.client.MessageManager;
 import org.jboss.bpm.client.ObjectNameFactory;
 import org.jboss.bpm.model.Entity;
-import org.jboss.bpm.model.InputSet;
 import org.jboss.bpm.model.Message;
 import org.jboss.bpm.model.MessageBuilder;
 import org.jboss.bpm.model.MessageBuilderFactory;
-import org.jboss.bpm.model.OutputSet;
 import org.jboss.bpm.model.Participant;
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.model.Property;
@@ -84,13 +82,13 @@
   /**
    * Execute external business logic
    */
-  protected void executeHandler(Token token, InputSet inputSet, OutputSet outputSet)
+  protected void executeHandler(Token token)
   {
     // Call the execution handler with the InputSet
     ExecutionHandler handler = getExecutionHandler();
     if (handler != null)
     {
-      handler.execute(token, inputSet, outputSet);
+      handler.execute(token);
     }
     // Assume the the single IORule actually mapps the data
     else 

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -28,10 +28,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.model.EventDetail;
 import org.jboss.bpm.model.ConnectingObject;
-import org.jboss.bpm.model.InputSet;
-import org.jboss.bpm.model.OutputSet;
+import org.jboss.bpm.model.EventDetail;
 import org.jboss.bpm.model.Signal;
 import org.jboss.bpm.model.StartEvent;
 import org.jboss.bpm.runtime.ExecutionHandler;
@@ -78,7 +76,7 @@
     {
       handler = new ExecutionHandler()
       {
-        public void execute(Token token, InputSet inputSet, OutputSet outputSet)
+        public void execute(Token token)
         {
           log.debug("Nothing to do in start-event");
         }

Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/TokenImpl.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -24,6 +24,9 @@
 //$Id$
 
 import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.InputSet;
+import org.jboss.bpm.model.OutputSet;
 import org.jboss.bpm.model.Process;
 import org.jboss.bpm.runtime.Attachments;
 import org.jboss.bpm.runtime.BasicAttachments;
@@ -35,11 +38,11 @@
 /**
  * A Token is a descriptive construct used to describe how the flow of a Process will proceed at runtime.
  * 
- * By tracking how the Token traverses the Flow Objects, gets diverted through alternative paths, and gets split into parallel paths, the normal Sequence Flow should be
- * completely definable.
+ * By tracking how the Token traverses the Flow Objects, gets diverted through alternative paths, 
+ * and gets split into parallel paths, the normal Sequence Flow should be completely definable.
  * 
- * A Token will have a unique identity that can be used to separate multiple Tokens that may exist because of concurrent process instances or the splitting of the Token
- * for parallel processing within a single process instance.
+ * A Token will have a unique identity that can be used to separate multiple Tokens that may exist because of 
+ * concurrent process instances or the splitting of the Token for parallel processing within a single process instance.
  * 
  * @author Thomas.Diesler at jboss.com
  * @since 20-Apr-2007
@@ -47,16 +50,16 @@
 public class TokenImpl implements Token
 {
   private String id;
-  private Process proc;
   private ConnectingObject flow;
   private ExecutionContext context;
+  private InputSet inputSet;
+  private OutputSet outputSet;
 
   /**
    * Construct a Token with a given {@link Process} and {@link Attachments}
    */
-  public TokenImpl(Process proc, Attachments att)
+  public TokenImpl(Attachments att)
   {
-    this.proc = proc;
     this.context = new InitialContext(att);
     this.id = new UID().toString();
   }
@@ -66,11 +69,6 @@
     return id;
   }
 
-  public Process getProcess()
-  {
-    return proc;
-  }
-  
   public ExecutionContext getExecutionContext()
   {
     return context;
@@ -86,6 +84,26 @@
     this.flow = flow;
   }
 
+  public InputSet getInputSet()
+  {
+    return inputSet;
+  }
+
+  public void setInputSet(InputSet inputSet)
+  {
+    this.inputSet = inputSet;
+  }
+
+  public OutputSet getOutputSet()
+  {
+    return outputSet;
+  }
+
+  public void setOutputSet(OutputSet outputSet)
+  {
+    this.outputSet = outputSet;
+  }
+
   /**
    * Create a schallow copy of this Token.
    * <p/>
@@ -93,7 +111,7 @@
    */
   public Token copyToken()
   {
-    return new TokenImpl(proc, context);
+    return new TokenImpl(context);
   }
   
   /**
@@ -115,7 +133,8 @@
   
   public String toString()
   {
-    return "[proc=" + proc.getID() + ",ctx=" + context + "]";
+    FlowObject fo = (FlowObject)flow.getTargetRef();
+    return "[fo=" + fo + ",ctx=" + context + "]";
   }
   
   static class InitialContext extends BasicAttachments implements ExecutionContext

Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -254,7 +254,7 @@
     addProperty(PROPERTY_PRICE, null, true);
     
     // Get the process
-    Process proc = procBuilder.getProcess(true);
+    Process proc = procBuilder.getProcess();
     return proc;
   }
 }
\ No newline at end of file

Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AvailabilityHandler.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AvailabilityHandler.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AvailabilityHandler.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -39,8 +39,10 @@
 @SuppressWarnings("serial")
 public class AvailabilityHandler implements ExecutionHandler
 {
-  public void execute(Token token, InputSet inputSet, OutputSet outputSet)
+  public void execute(Token token)
   {
+    InputSet inputSet = token.getInputSet();
+    OutputSet outputSet = token.getOutputSet();
     PropertyBuilder builder = PropertyBuilderFactory.newInstance().newPropertyBuilder();
     Integer seats = Integer.valueOf(inputSet.getPropertyValue(AirticketProcessBuilder.PROPERTY_SEATS));
     outputSet.addProperty(builder.newProperty(AirticketProcessBuilder.PROPERTY_IS_AVAILABLE, new Boolean(seats < 10).toString()));

Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/ValidationHandler.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/ValidationHandler.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/ValidationHandler.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -39,8 +39,10 @@
 @SuppressWarnings("serial")
 public class ValidationHandler implements ExecutionHandler
 {
-  public void execute(Token token, InputSet inputSet, OutputSet outputSet)
+  public void execute(Token token)
   {
+    InputSet inputSet = token.getInputSet();
+    OutputSet outputSet = token.getOutputSet();
     String name = inputSet.getPropertyValue(AirticketProcessBuilder.PROPERTY_NAME);
     String from = inputSet.getPropertyValue(AirticketProcessBuilder.PROPERTY_FROM);
     String to = inputSet.getPropertyValue(AirticketProcessBuilder.PROPERTY_TO);

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -48,7 +48,7 @@
     // Create a Process through the ProcessBuilder
     ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     Process proc = builder.addProcess(null).addStartEvent().addSequenceFlow("taskA").addTask("taskA").
-    addSequenceFlow("end").addEndEvent("end").getProcess(true);
+    addSequenceFlow("end").addEndEvent("end").getProcess();
     assertEquals("AnonymousProcess#0", proc.getName());
 
     StartEvent start = proc.getStartEvent();
@@ -68,7 +68,7 @@
     {
       // Create a Process through the ProcessBuilder
       ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
-      builder.addProcess(null).addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess(true);
+      builder.addProcess(null).addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
       fail("InvalidProcessException expected");
     }
     catch (InvalidProcessException ex)
@@ -84,7 +84,7 @@
       // Create a Process through the ProcessBuilder
       ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
       builder.addProcess(null).addStartEvent().addSequenceFlow("taskA").addTask("taskA").addSequenceFlow("end").
-      addTask("end").getProcess(true);
+      addTask("end").getProcess();
       fail("InvalidProcessException expected");
     }
     catch (InvalidProcessException ex)

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -66,7 +66,7 @@
   {
     ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     Process proc = builder.addProcess(getName()).addStartEvent().addSequenceFlow("taskA").
-    addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess(true);
+    addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
     return proc;
   }
 }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/processmanager/ProcessRegistryTest.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -76,7 +76,7 @@
   {
     ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     Process proc = builder.addProcess(getName()).addStartEvent().addSequenceFlow("taskA").
-    addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess(true);
+    addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
     return proc;
   }
 }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -44,7 +44,7 @@
     procBuilder.addTask("A", TaskType.Receive).addSequenceFlow("End").addEndEvent("End");
     try
     {
-      procBuilder.getProcess(true);
+      procBuilder.getProcess();
       fail("A Message for the MessageRef attribute MUST be entered");
     }
     catch (InvalidProcessException ex)
@@ -60,7 +60,7 @@
     procBuilder.addTask("A", TaskType.Send).addSequenceFlow("End").addEndEvent("End");
     try
     {
-      procBuilder.getProcess(true);
+      procBuilder.getProcess();
       fail("A Message for the MessageRef attribute MUST be entered");
     }
     catch (InvalidProcessException ex)

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/ParallelSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/ParallelSplitTest.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/parallelsplit/ParallelSplitTest.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -73,7 +73,7 @@
     // Create a Process through the ProcessBuilder
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     Process proc = procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("gateway").addGateway("gateway", GatewayType.Parallel).
-    addSequenceFlow("endA").addSequenceFlow("endB").addEndEvent("endA").addEndEvent("endB").getProcess(true);
+    addSequenceFlow("endA").addSequenceFlow("endB").addEndEvent("endA").addEndEvent("endB").getProcess();
     
     runProcess(proc);
   }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -73,7 +73,7 @@
     // Create a Process through the ProcessBuilder
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     Process proc = procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("stateA").addTask("stateA").
-    addSequenceFlow("end").addEndEvent("end").getProcess(true);
+    addSequenceFlow("end").addEndEvent("end").getProcess();
 
     runProcess(proc);
   }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -73,7 +73,7 @@
     // Create a Process through the ProcessBuilder
     ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
     Process proc = procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("stateA").addTask("stateA").
-    addExecutionHandler(TaskA.class).addSequenceFlow("end").addEndEvent("end").getProcess(true);
+    addExecutionHandler(TaskA.class).addSequenceFlow("end").addEndEvent("end").getProcess();
 
     runProcess(proc);
   }

Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java	2008-08-05 17:18:46 UTC (rev 1826)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java	2008-08-05 19:47:06 UTC (rev 1827)
@@ -23,11 +23,7 @@
 
 // $Id$
 
-import org.jboss.bpm.model.InputSet;
-import org.jboss.bpm.model.OutputSet;
-import org.jboss.bpm.model.Property;
-import org.jboss.bpm.model.PropertyBuilder;
-import org.jboss.bpm.model.PropertyBuilderFactory;
+import org.jboss.bpm.runtime.ExecutionContext;
 import org.jboss.bpm.runtime.ExecutionHandler;
 import org.jboss.bpm.runtime.Token;
 
@@ -40,10 +36,9 @@
 @SuppressWarnings("serial")
 public class TaskA implements ExecutionHandler
 {
-  public void execute(Token token, InputSet inputSet, OutputSet outputSet)
+  public void execute(Token token)
   {
-    PropertyBuilder builder = PropertyBuilderFactory.newInstance().newPropertyBuilder();
-    Property prop = builder.newProperty("SomeString", "Task: TaskA");
-    outputSet.addProperty(prop);
+    ExecutionContext exContext = token.getExecutionContext();
+    exContext.addAttachment("SomeString", "Task: TaskA");
   }
 }




More information about the jbpm-commits mailing list