[jbpm-commits] JBoss JBPM SVN: r2489 - in projects/spec/trunk/modules: cts and 3 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Oct 6 11:53:38 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-10-06 11:53:38 -0400 (Mon, 06 Oct 2008)
New Revision: 2489

Modified:
   projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java
   projects/spec/trunk/modules/cts/pom.xml
   projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
   projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java
   projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
Log:
Pass more gateway tests

Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java	2008-10-06 14:16:54 UTC (rev 2488)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java	2008-10-06 15:53:38 UTC (rev 2489)
@@ -72,4 +72,5 @@
    * Get the associated FlowHandler 
    */
   FlowHandler getFlowHandler(boolean defaultHandler);
+
 }
\ No newline at end of file

Modified: projects/spec/trunk/modules/cts/pom.xml
===================================================================
--- projects/spec/trunk/modules/cts/pom.xml	2008-10-06 14:16:54 UTC (rev 2488)
+++ projects/spec/trunk/modules/cts/pom.xml	2008-10-06 15:53:38 UTC (rev 2489)
@@ -71,11 +71,8 @@
         <configuration>
           <excludes>
             <exclude>org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java</exclude>
-            <exclude>org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java</exclude>
-            <exclude>org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java</exclude>
             <exclude>org/jbpm/test/cts/node/NodeInputSetTest.java</exclude>
             <exclude>org/jbpm/test/cts/node/NodeOutputSetTest.java</exclude>
-            <exclude>org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java</exclude>
             <exclude>org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java</exclude>
             <exclude>org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java</exclude>
           </excludes>

Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java	2008-10-06 14:16:54 UTC (rev 2488)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java	2008-10-06 15:53:38 UTC (rev 2489)
@@ -26,17 +26,12 @@
 import java.io.IOException;
 import java.util.List;
 
-import org.jbpm.api.client.SignalListener;
 import org.jbpm.api.model.Process;
 import org.jbpm.api.model.ProcessDefinition;
 import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.Event.EventDetailType;
 import org.jbpm.api.model.Gateway.GatewayType;
-import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.builder.EventBuilder;
 import org.jbpm.api.model.builder.ProcessBuilder;
 import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.service.SignalService;
 import org.jbpm.api.test.CTSTestCase;
 
 /**
@@ -53,25 +48,12 @@
     ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
     Process proc = procDef.newInstance();
 
-    // Add a signal listener that sends the other start trigger signal
-    SignalService sigService = SignalService.locateSignalService();
-    MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
-    sigService.addSignalListener(sigListener);
+    // Start the process and send start trigger signal
+    proc.startProcess();
 
-    try
-    {
-      // Send start trigger signals
-      proc.startProcess();
-      sigService.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+    // Wait for the process to end
+    proc.waitForEnd();
 
-      // Wait for the process to end
-      proc.waitForEnd();
-    }
-    finally
-    {
-      sigService.removeSignalListener(sigListener);
-    }
-
     List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
     assertEquals(2, endSignals.size());
   }
@@ -79,37 +61,12 @@
   public ProcessDefinition getProcessDefinition() throws IOException
   {
     ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
-    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", EventDetailType.Signal);
-    eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
-    eventBuilder = procBuilder.addSequenceFlow("Merge").addStartEvent("StartB", EventDetailType.Signal);
-    eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
-    procBuilder.addSequenceFlow("Merge").addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
+    procBuilder.addProcess("ParallelGatewayMerge").addStartEvent("Start").addSequenceFlow("Split");
+    procBuilder.addGateway("Split", GatewayType.Inclusive).addSequenceFlow("TaskA").addSequenceFlow("TaskB");
+    procBuilder.addTask("TaskA").addSequenceFlow("Merge");
+    procBuilder.addTask("TaskB").addSequenceFlow("Merge");
+    procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
     procBuilder.addEndEvent("End");
     return procBuilder.getProcessDefinition();
   }
-
-  class MergeListener implements SignalListener
-  {
-    private Signal nextSignal;
-
-    public MergeListener(Signal nextSignal)
-    {
-      this.nextSignal = nextSignal;
-    }
-
-    public boolean acceptSignal(Signal signal)
-    {
-      return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
-    }
-
-    public void catchSignal(Signal signal)
-    {
-      if (nextSignal != null)
-      {
-        SignalService sigService = SignalService.locateSignalService();
-        sigService.throwSignal(nextSignal);
-        nextSignal = null;
-      }
-    }
-  }
 }

Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java	2008-10-06 14:16:54 UTC (rev 2488)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java	2008-10-06 15:53:38 UTC (rev 2489)
@@ -25,22 +25,16 @@
 
 import java.io.IOException;
 
-import org.jbpm.api.client.SignalListener;
 import org.jbpm.api.model.Message;
 import org.jbpm.api.model.Process;
 import org.jbpm.api.model.ProcessDefinition;
-import org.jbpm.api.model.Signal;
 import org.jbpm.api.model.Assignment.AssignTime;
 import org.jbpm.api.model.Event.EventDetailType;
 import org.jbpm.api.model.Expression.ExpressionLanguage;
 import org.jbpm.api.model.Gateway.GatewayType;
-import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.builder.EventBuilder;
 import org.jbpm.api.model.builder.MessageBuilder;
 import org.jbpm.api.model.builder.ProcessBuilder;
 import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.model.builder.TaskBuilder;
-import org.jbpm.api.service.SignalService;
 import org.jbpm.api.test.CTSTestCase;
 
 /**
@@ -57,103 +51,13 @@
   {
     ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
     Process proc = procDef.newInstance();
-
-    // Add a signal listener that sends the other start trigger signal
-    SignalService sigManager = SignalService.locateSignalService();
-    MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
-    sigManager.addSignalListener(sigListener);
-
-    try
-    {
-      // Start the process and send start trigger signal
-      proc.startProcess();
-      sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
-
-      // Wait for the process to end
-      proc.waitForEnd();
-    }
-    finally
-    {
-      sigManager.removeSignalListener(sigListener);
-    }
-
-    // Verify the result
-    Message endMessage = getMessages().get(0);
-    assertEquals("TaskA", endMessage.getProperty("taskValueA").getValue());
-    assertEquals("TaskB", endMessage.getProperty("taskValueB").getValue());
-  }
-
-  public void testMergeTimeout() throws Exception
-  {
-    ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
-    Process proc = procDef.newInstance();
-
+    
     // Start the process and send start trigger signal
     proc.startProcess();
-    SignalService sigService = SignalService.locateSignalService();
-    sigService.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
 
     // Wait for the process to end
-    try
-    {
-      proc.waitForEnd(1000);
-      fail("timeout expected");
-    }
-    catch (RuntimeException rte)
-    {
-      // expected
-    }
-  }
+    proc.waitForEnd();
 
-  public void testInvalidToken() throws Exception
-  {
-    ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
-    Process proc = procDef.newInstance();
-
-    // Add a signal listener that sends the other start trigger signal
-    SignalService sigManager = SignalService.locateSignalService();
-    MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
-    sigManager.addSignalListener(sigListener);
-
-    try
-    {
-      // Start the process and send start trigger signal
-      proc.startProcess();
-      sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
-
-      try
-      {
-        proc.waitForEnd();
-        fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
-      }
-      catch (RuntimeException rte)
-      {
-        // expected
-      }
-    }
-    finally
-    {
-      sigManager.removeSignalListener(sigListener);
-    }
-
-    // Add a signal listener that sends the other start trigger signal
-    sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
-    sigManager.addSignalListener(sigListener);
-
-    try
-    {
-      // Start the process and send start trigger signal
-      proc.startProcess();
-      sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
-
-      // Wait for the process to end
-      proc.waitForEnd();
-    }
-    finally
-    {
-      sigManager.removeSignalListener(sigListener);
-    }
-
     // Verify the result
     Message endMessage = getMessages().get(0);
     assertEquals("TaskA", endMessage.getProperty("taskValueA").getValue());
@@ -163,45 +67,14 @@
   public ProcessDefinition getProcessDefinition() throws IOException
   {
     ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
-    EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", EventDetailType.Signal);
-    eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
-    TaskBuilder taskBuilder = procBuilder.addSequenceFlow("TaskA").addTask("TaskA");
-    taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA");
-    taskBuilder.addSequenceFlow("Merge");
-    eventBuilder = procBuilder.addStartEvent("StartB", EventDetailType.Signal);
-    eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
-    taskBuilder = procBuilder.addSequenceFlow("TaskB").addTask("TaskB");
-    taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB");
-    taskBuilder.addSequenceFlow("Merge");
+    procBuilder.addProcess("ParallelGatewayMerge").addStartEvent("Start").addSequenceFlow("Split");
+    procBuilder.addGateway("Split", GatewayType.Parallel).addSequenceFlow("TaskA").addSequenceFlow("TaskB");
+    procBuilder.addTask("TaskA").addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA").addSequenceFlow("Merge");
+    procBuilder.addTask("TaskB").addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB").addSequenceFlow("Merge");
     procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("End");
     procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
     MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
     msgBuilder.addToRef(getTestID()).addProperty("taskValueA", null, true).addProperty("taskValueB", null, true);
     return procBuilder.getProcessDefinition();
   }
-
-  public static class MergeListener implements SignalListener
-  {
-    private Signal nextSignal;
-
-    public MergeListener(Signal nextSignal)
-    {
-      this.nextSignal = nextSignal;
-    }
-
-    public boolean acceptSignal(Signal signal)
-    {
-      return signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER;
-    }
-
-    public void catchSignal(Signal signal)
-    {
-      if (nextSignal != null)
-      {
-        SignalService sigService = SignalService.locateSignalService();
-        sigService.throwSignal(nextSignal);
-        nextSignal = null;
-      }
-    }
-  }
 }

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java	2008-10-06 14:16:54 UTC (rev 2488)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java	2008-10-06 15:53:38 UTC (rev 2489)
@@ -123,17 +123,21 @@
     };
   }
 
-  // Get applicable gates which' condition evaluates to TRUE
-  // Fall back to the default gate if there is one
-  // Choke if there is no applicable gate
+  // Get applicable gates which' condition evaluates to TRUE.
+  // Fall back to the default gate if there is one.
+  // Choke if there is no applicable gate.
   private List<SequenceFlow> getApplicableGates(Token token)
   {
     List<SequenceFlow> applicableGates = new ArrayList<SequenceFlow>();
     for (SequenceFlow auxGate : getGates())
     {
       SequenceFlow seqFlow = auxGate;
-      if (seqFlow.getConditionType() == ConditionType.Expression)
+      if (seqFlow.getConditionType() == ConditionType.None)
       {
+        applicableGates.add(auxGate);
+      }
+      else if (seqFlow.getConditionType() == ConditionType.Expression)
+      {
         Expression expr = seqFlow.getConditionExpression();
         if (expr.getExpressionLanguage() == ExpressionLanguage.MVEL)
         {
@@ -172,17 +176,6 @@
       }
     }
 
-    // Fallback to the single outgoing gate that is not conditional
-    if (applicableGates.size() == 0 && getGates().size() == 1)
-    {
-      SequenceFlow auxGate = getGates().get(0);
-      SequenceFlow seqFlow = auxGate;
-      if (seqFlow.getConditionType() == ConditionType.None)
-      {
-        applicableGates.add(auxGate);
-      }
-    }
-
     if (applicableGates.size() == 0)
       throw new IllegalStateException("Cannot select applicable gate in: " + this);
 

Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java	2008-10-06 14:16:54 UTC (rev 2488)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java	2008-10-06 15:53:38 UTC (rev 2489)
@@ -235,6 +235,7 @@
     this.sigHandler = clazz.getName();
   }
 
+  @Override
   public ExecutionHandler getExecutionHandler(boolean defaultHandler)
   {
     if (customExecHandler == null && execHandler != null)
@@ -271,6 +272,7 @@
     };
   }
 
+  @Override
   public SignalHandler getSignalHandler(boolean defaultHandler)
   {
     if (customSignalHandler == null && sigHandler != null)
@@ -284,6 +286,7 @@
   
   protected abstract SignalHandler getDefaultSignalHandler();
 
+  @Override
   public FlowHandler getFlowHandler(boolean defaultHandler)
   {
     if (customFlowHandler == null && flowHandler != null)




More information about the jbpm-commits mailing list