[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