JBoss JBPM SVN: r1891 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/test and 10 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-14 11:16:13 -0400 (Thu, 14 Aug 2008)
New Revision: 1891
Added:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceAPITest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceSTPTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn_diagram
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.png
Removed:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn_diagram
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.png
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
Log:
Add pattern sequence
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-08-14 14:39:59 UTC (rev 1890)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-08-14 15:16:13 UTC (rev 1891)
@@ -101,6 +101,8 @@
public void throwSignal(String procName, Signal signal)
{
log.debug("throwSignal: " + signal);
+
+ // Throw Signal to listeners associated with the process
Set<SignalListener> set = listeners.get(procName);
if (set != null)
{
@@ -109,5 +111,15 @@
listener.catchSignal(signal);
}
}
+
+ // Throw Signal to listeners not associated with any process
+ set = listeners.get(null);
+ if (set != null)
+ {
+ for (SignalListener listener : set)
+ {
+ listener.catchSignal(signal);
+ }
+ }
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-14 14:39:59 UTC (rev 1890)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-14 15:16:13 UTC (rev 1891)
@@ -82,7 +82,7 @@
// Setup the SignalListener
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getName(), getSignalListener());
+ signalManager.addSignalListener(null, getSignalListener());
signals.clear();
// Setup the MessageListener
@@ -97,7 +97,7 @@
// Tear down the SignalListener
SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.removeSignalListeners(getName());
+ signalManager.removeSignalListeners(null);
// Tear down the MessageListener
MessageManager messageManager = MessageManager.locateMessageManager();
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceAPITest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceAPITest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceAPITest.java 2008-08-14 15:16:13 UTC (rev 1891)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.pattern.control.sequence;
+
+// $Id$
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * Test the basic execution sequence
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public class SequenceAPITest extends SequenceTest
+{
+ public Process getProcess() throws IOException
+ {
+ URL jpdlURL = getResourceURL("pattern/control/sequence/basic-sequence-api10.xml");
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ Process proc = pm.createProcess(jpdlURL);
+ return proc;
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceAPITest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceProcBuilderTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceProcBuilderTest.java 2008-08-14 15:16:13 UTC (rev 1891)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.pattern.control.sequence;
+
+// $Id$
+
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+
+/**
+ * Test the basic execution sequence
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public class SequenceProcBuilderTest extends SequenceTest
+{
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA").addSequenceFlow("End").addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceProcBuilderTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceSTPTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceSTPTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceSTPTest.java 2008-08-14 15:16:13 UTC (rev 1891)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.pattern.control.sequence;
+
+// $Id$
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * Test the basic execution sequence
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public class SequenceSTPTest extends SequenceTest
+{
+ public Process getProcess() throws IOException
+ {
+ URL jpdlURL = getResourceURL("pattern/control/sequence/basic-sequence.bpmn");
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ Process proc = pm.createProcess(jpdlURL);
+ return proc;
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceSTPTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceTest.java 2008-08-14 15:16:13 UTC (rev 1891)
@@ -0,0 +1,61 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.pattern.control.sequence;
+
+// $Id$
+
+import java.io.IOException;
+import java.util.List;
+
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test the basic execution sequence
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public abstract class SequenceTest extends DefaultEngineTestCase
+{
+ public void testSequence() throws Exception
+ {
+ // Start the Process
+ Process proc = getProcess();
+ proc.startProcess();
+ proc.waitForEnd();
+
+ // Validate received signals
+ List<Signal> signals = getSignals();
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getSignalType());
+ }
+
+ public abstract Process getProcess() throws IOException;
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/sequence/SequenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence)
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence-api10.xml 2008-08-13 17:36:40 UTC (rev 1886)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence-api10.xml 2008-08-14 15:16:13 UTC (rev 1891)
@@ -1,9 +0,0 @@
-<ns2:process name="testBasicSequence" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
- <start>
- <seqflow to="stateA" />
- </start>
- <task name="stateA">
- <seqflow to="end" />
- </task>
- <end name="end" />
-</ns2:process>
\ No newline at end of file
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence-api10.xml (from rev 1890, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence-api10.xml)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence-api10.xml (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence-api10.xml 2008-08-14 15:16:13 UTC (rev 1891)
@@ -0,0 +1,9 @@
+<ns2:process name="testSequence" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
+ <start>
+ <seqflow to="TaskA" />
+ </start>
+ <task name="TaskA">
+ <seqflow to="End" />
+ </task>
+ <end name="End" />
+</ns2:process>
\ No newline at end of file
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence.bpmn 2008-08-13 17:36:40 UTC (rev 1886)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn 2008-08-14 15:16:13 UTC (rev 1891)
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_UstEIE3nEd2LNJlZf0NQOw" iD="_UspZwE3nEd2LNJlZf0NQOw">
- <pools xmi:type="bpmn:Pool" xmi:id="_Ut2ToE3nEd2LNJlZf0NQOw" iD="_Ut1skE3nEd2LNJlZf0NQOw" name="Pool">
- <vertices xmi:type="bpmn:Activity" xmi:id="_UuUNsU3nEd2LNJlZf0NQOw" iD="_UuUNsE3nEd2LNJlZf0NQOw" outgoingEdges="_c8S7wU3nEd2LNJlZf0NQOw" incomingEdges="_bWie4E3nEd2LNJlZf0NQOw" name="StateA" activityType="Task"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_aeNvwE3nEd2LNJlZf0NQOw" iD="_aeNIsE3nEd2LNJlZf0NQOw" outgoingEdges="_bWie4E3nEd2LNJlZf0NQOw" activityType="EventStartEmpty"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_cUlbgU3nEd2LNJlZf0NQOw" iD="_cUlbgE3nEd2LNJlZf0NQOw" incomingEdges="_c8S7wU3nEd2LNJlZf0NQOw" activityType="EventEndEmpty"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_bWie4E3nEd2LNJlZf0NQOw" iD="_bWh30E3nEd2LNJlZf0NQOw" source="_aeNvwE3nEd2LNJlZf0NQOw" target="_UuUNsU3nEd2LNJlZf0NQOw"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_c8S7wU3nEd2LNJlZf0NQOw" iD="_c8S7wE3nEd2LNJlZf0NQOw" source="_UuUNsU3nEd2LNJlZf0NQOw" target="_cUlbgU3nEd2LNJlZf0NQOw"/>
- </pools>
-</bpmn:BpmnDiagram>
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn (from rev 1890, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence.bpmn)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn 2008-08-14 15:16:13 UTC (rev 1891)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_UstEIE3nEd2LNJlZf0NQOw" iD="_UspZwE3nEd2LNJlZf0NQOw">
+ <pools xmi:type="bpmn:Pool" xmi:id="_Ut2ToE3nEd2LNJlZf0NQOw" iD="_Ut1skE3nEd2LNJlZf0NQOw" name="Pool">
+ <vertices xmi:type="bpmn:Activity" xmi:id="_UuUNsU3nEd2LNJlZf0NQOw" iD="_UuUNsE3nEd2LNJlZf0NQOw" outgoingEdges="_c8S7wU3nEd2LNJlZf0NQOw" incomingEdges="_bWie4E3nEd2LNJlZf0NQOw" name="TaskA" activityType="Task"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_aeNvwE3nEd2LNJlZf0NQOw" iD="_aeNIsE3nEd2LNJlZf0NQOw" outgoingEdges="_bWie4E3nEd2LNJlZf0NQOw" activityType="EventStartEmpty"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_cUlbgU3nEd2LNJlZf0NQOw" iD="_cUlbgE3nEd2LNJlZf0NQOw" incomingEdges="_c8S7wU3nEd2LNJlZf0NQOw" name="End " activityType="EventEndEmpty"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_bWie4E3nEd2LNJlZf0NQOw" iD="_bWh30E3nEd2LNJlZf0NQOw" source="_aeNvwE3nEd2LNJlZf0NQOw" target="_UuUNsU3nEd2LNJlZf0NQOw"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_c8S7wU3nEd2LNJlZf0NQOw" iD="_c8S7wE3nEd2LNJlZf0NQOw" source="_UuUNsU3nEd2LNJlZf0NQOw" target="_cUlbgU3nEd2LNJlZf0NQOw"/>
+ </pools>
+</bpmn:BpmnDiagram>
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn_diagram
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence.bpmn_diagram 2008-08-13 17:36:40 UTC (rev 1886)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn_diagram 2008-08-14 15:16:13 UTC (rev 1891)
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmi:id="_UtiKkE3nEd2LNJlZf0NQOw" type="Bpmn" name="basic-sequence.bpmn_diagram" measurementUnit="Pixel">
- <children xmi:type="notation:Node" xmi:id="_Uufz4E3nEd2LNJlZf0NQOw" type="1001">
- <children xmi:type="notation:Node" xmi:id="_UuksYE3nEd2LNJlZf0NQOw" type="4008"/>
- <children xmi:type="notation:Node" xmi:id="_UunIoE3nEd2LNJlZf0NQOw" type="5001">
- <children xmi:type="notation:Node" xmi:id="_Uupk4E3nEd2LNJlZf0NQOw" type="2001">
- <children xmi:type="notation:Node" xmi:id="_UuqL8E3nEd2LNJlZf0NQOw" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_Uupk4U3nEd2LNJlZf0NQOw" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_Uupk4k3nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_Uupk403nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Uupk5E3nEd2LNJlZf0NQOw" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="basic-sequence.bpmn#_UuUNsU3nEd2LNJlZf0NQOw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UuqL8U3nEd2LNJlZf0NQOw" x="84" y="28" width="111" height="61"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_aeUdcE3nEd2LNJlZf0NQOw" type="2001">
- <children xmi:type="notation:Node" xmi:id="_aeW5sE3nEd2LNJlZf0NQOw" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_aeVEgE3nEd2LNJlZf0NQOw" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_aeVEgU3nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_aeVEgk3nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_aeVEg03nEd2LNJlZf0NQOw" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="basic-sequence.bpmn#_aeNvwE3nEd2LNJlZf0NQOw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeVEhE3nEd2LNJlZf0NQOw" x="12" y="40"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_cUmpoE3nEd2LNJlZf0NQOw" type="2001">
- <children xmi:type="notation:Node" xmi:id="_cUnQsE3nEd2LNJlZf0NQOw" type="4001"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_cUmpoU3nEd2LNJlZf0NQOw" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_cUmpok3nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_cUmpo03nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_cUmppE3nEd2LNJlZf0NQOw" lineColor="0"/>
- <element xmi:type="bpmn:Activity" href="basic-sequence.bpmn#_cUlbgU3nEd2LNJlZf0NQOw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cUmppU3nEd2LNJlZf0NQOw" x="240" y="40"/>
- </children>
- <styles xmi:type="notation:DrawerStyle" xmi:id="_UunvsE3nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_UunvsU3nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_Uunvsk3nEd2LNJlZf0NQOw"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_Uufz4U3nEd2LNJlZf0NQOw" fontName="Arial"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_Uufz4k3nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:FillStyle" xmi:id="_Uufz403nEd2LNJlZf0NQOw" fillColor="16771304"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Uufz5E3nEd2LNJlZf0NQOw" lineColor="11119017"/>
- <element xmi:type="bpmn:Pool" href="basic-sequence.bpmn#_Ut2ToE3nEd2LNJlZf0NQOw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uunvs03nEd2LNJlZf0NQOw" x="16" y="16" width="333" height="129"/>
- </children>
- <styles xmi:type="notation:PageStyle" xmi:id="_UtiKkU3nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:GuideStyle" xmi:id="_UtiKkk3nEd2LNJlZf0NQOw"/>
- <styles xmi:type="notation:DescriptionStyle" xmi:id="_UtiKk03nEd2LNJlZf0NQOw"/>
- <element xmi:type="bpmn:BpmnDiagram" href="basic-sequence.bpmn#_UstEIE3nEd2LNJlZf0NQOw"/>
- <edges xmi:type="notation:Edge" xmi:id="_bWolgE3nEd2LNJlZf0NQOw" type="3001" source="_aeUdcE3nEd2LNJlZf0NQOw" target="_Uupk4E3nEd2LNJlZf0NQOw">
- <children xmi:type="notation:Node" xmi:id="_bWqasE3nEd2LNJlZf0NQOw" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_bWqasU3nEd2LNJlZf0NQOw" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_bWqask3nEd2LNJlZf0NQOw" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_bWqas03nEd2LNJlZf0NQOw" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_bWolgU3nEd2LNJlZf0NQOw" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_bWolgk3nEd2LNJlZf0NQOw" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_bWolg03nEd2LNJlZf0NQOw" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="basic-sequence.bpmn#_bWie4E3nEd2LNJlZf0NQOw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bWolhE3nEd2LNJlZf0NQOw" points="[0, -15, -110, -16]$[57, -2, -53, -3]"/>
- </edges>
- <edges xmi:type="notation:Edge" xmi:id="_c8Uw8E3nEd2LNJlZf0NQOw" type="3001" source="_Uupk4E3nEd2LNJlZf0NQOw" target="_cUmpoE3nEd2LNJlZf0NQOw">
- <children xmi:type="notation:Node" xmi:id="_c8VYAE3nEd2LNJlZf0NQOw" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_c8VYAU3nEd2LNJlZf0NQOw" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_c8VYAk3nEd2LNJlZf0NQOw" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_c8VYA03nEd2LNJlZf0NQOw" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_c8Uw8U3nEd2LNJlZf0NQOw" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_c8Uw8k3nEd2LNJlZf0NQOw" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_c8Uw803nEd2LNJlZf0NQOw" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="basic-sequence.bpmn#_c8S7wU3nEd2LNJlZf0NQOw"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_c8Uw9E3nEd2LNJlZf0NQOw" points="[54, -8, -64, -7]$[103, -2, -15, -1]"/>
- </edges>
-</notation:Diagram>
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn_diagram (from rev 1890, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence.bpmn_diagram)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn_diagram (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.bpmn_diagram 2008-08-14 15:16:13 UTC (rev 1891)
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmi:id="_UtiKkE3nEd2LNJlZf0NQOw" type="Bpmn" name="basic-sequence.bpmn_diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_Uufz4E3nEd2LNJlZf0NQOw" type="1001">
+ <children xmi:type="notation:Node" xmi:id="_UuksYE3nEd2LNJlZf0NQOw" type="4008"/>
+ <children xmi:type="notation:Node" xmi:id="_UunIoE3nEd2LNJlZf0NQOw" type="5001">
+ <children xmi:type="notation:Node" xmi:id="_Uupk4E3nEd2LNJlZf0NQOw" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_UuqL8E3nEd2LNJlZf0NQOw" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Uupk4U3nEd2LNJlZf0NQOw" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_Uupk4k3nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_Uupk403nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_Uupk5E3nEd2LNJlZf0NQOw" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="basic-sequence.bpmn#_UuUNsU3nEd2LNJlZf0NQOw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UuqL8U3nEd2LNJlZf0NQOw" x="84" y="28" width="111" height="61"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_aeUdcE3nEd2LNJlZf0NQOw" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_aeW5sE3nEd2LNJlZf0NQOw" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_aeVEgE3nEd2LNJlZf0NQOw" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_aeVEgU3nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_aeVEgk3nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_aeVEg03nEd2LNJlZf0NQOw" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="basic-sequence.bpmn#_aeNvwE3nEd2LNJlZf0NQOw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aeVEhE3nEd2LNJlZf0NQOw" x="12" y="40"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_cUmpoE3nEd2LNJlZf0NQOw" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_cUnQsE3nEd2LNJlZf0NQOw" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_cUmpoU3nEd2LNJlZf0NQOw" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_cUmpok3nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_cUmpo03nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_cUmppE3nEd2LNJlZf0NQOw" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="basic-sequence.bpmn#_cUlbgU3nEd2LNJlZf0NQOw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cUmppU3nEd2LNJlZf0NQOw" x="240" y="40"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_UunvsE3nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UunvsU3nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uunvsk3nEd2LNJlZf0NQOw"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Uufz4U3nEd2LNJlZf0NQOw" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_Uufz4k3nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_Uufz403nEd2LNJlZf0NQOw" fillColor="16771304"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_Uufz5E3nEd2LNJlZf0NQOw" lineColor="11119017"/>
+ <element xmi:type="bpmn:Pool" href="basic-sequence.bpmn#_Ut2ToE3nEd2LNJlZf0NQOw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uunvs03nEd2LNJlZf0NQOw" x="16" y="16" width="333" height="129"/>
+ </children>
+ <styles xmi:type="notation:PageStyle" xmi:id="_UtiKkU3nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:GuideStyle" xmi:id="_UtiKkk3nEd2LNJlZf0NQOw"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_UtiKk03nEd2LNJlZf0NQOw"/>
+ <element xmi:type="bpmn:BpmnDiagram" href="basic-sequence.bpmn#_UstEIE3nEd2LNJlZf0NQOw"/>
+ <edges xmi:type="notation:Edge" xmi:id="_bWolgE3nEd2LNJlZf0NQOw" type="3001" source="_aeUdcE3nEd2LNJlZf0NQOw" target="_Uupk4E3nEd2LNJlZf0NQOw">
+ <children xmi:type="notation:Node" xmi:id="_bWqasE3nEd2LNJlZf0NQOw" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_bWqasU3nEd2LNJlZf0NQOw" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_bWqask3nEd2LNJlZf0NQOw" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bWqas03nEd2LNJlZf0NQOw" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_bWolgU3nEd2LNJlZf0NQOw" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bWolgk3nEd2LNJlZf0NQOw" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_bWolg03nEd2LNJlZf0NQOw" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="basic-sequence.bpmn#_bWie4E3nEd2LNJlZf0NQOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bWolhE3nEd2LNJlZf0NQOw" points="[0, -15, -110, -16]$[57, -2, -53, -3]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_c8Uw8E3nEd2LNJlZf0NQOw" type="3001" source="_Uupk4E3nEd2LNJlZf0NQOw" target="_cUmpoE3nEd2LNJlZf0NQOw">
+ <children xmi:type="notation:Node" xmi:id="_c8VYAE3nEd2LNJlZf0NQOw" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_c8VYAU3nEd2LNJlZf0NQOw" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_c8VYAk3nEd2LNJlZf0NQOw" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_c8VYA03nEd2LNJlZf0NQOw" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_c8Uw8U3nEd2LNJlZf0NQOw" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_c8Uw8k3nEd2LNJlZf0NQOw" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_c8Uw803nEd2LNJlZf0NQOw" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="basic-sequence.bpmn#_c8S7wU3nEd2LNJlZf0NQOw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_c8Uw9E3nEd2LNJlZf0NQOw" points="[54, -8, -64, -7]$[103, -2, -15, -1]"/>
+ </edges>
+</notation:Diagram>
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.png
===================================================================
(Binary files differ)
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/pattern/control/sequence/basic-sequence.png (from rev 1890, jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence.png)
===================================================================
(Binary files differ)
17 years, 8 months
JBoss JBPM SVN: r1890 - in jbossbpm/spec/trunk/modules: ri/src/main/java/org/jboss/bpm/client/internal and 3 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-14 10:39:59 -0400 (Thu, 14 Aug 2008)
New Revision: 1890
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.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/client/internal/ProcessManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java
Log:
Fix synchronization issues
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-14 13:29:28 UTC (rev 1889)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessManager.java 2008-08-14 14:39:59 UTC (rev 1890)
@@ -41,7 +41,6 @@
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.EngineShutdownException;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.Process.ProcessStatus;
import org.jboss.bpm.runtime.Attachments;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -159,6 +158,7 @@
*/
public void destroyProcess(Process proc)
{
+ log.debug("destroyProcess: " + proc);
procs.remove(proc.getID());
}
@@ -191,14 +191,6 @@
}
/**
- * Wait for the Process to end. All Tokens that are generated at the Start Event for that Process must eventually
- * arrive at an End Event. The Process will be in a running state until all Tokens are consumed. <p/> If the process
- * was aborted this method throws the causing RuntimeException if avaialable.
- *
- */
- public abstract ProcessStatus waitForEnd(ObjectName procID, long timeout);
-
- /**
* Get the handler for the dialect with the given namespace URI
*/
public DialectHandler getDialectHandler(String nsURI)
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-14 13:29:28 UTC (rev 1889)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-14 14:39:59 UTC (rev 1890)
@@ -136,20 +136,23 @@
boolean hasActiveTokens = tokenExecutor.hasActiveTokens();
try
{
- while (procStatus == ProcessStatus.Active && hasActiveTokens)
+ synchronized (procImpl)
{
- try
+ while (procStatus == ProcessStatus.Active && hasActiveTokens)
{
- Thread.sleep(100);
+ try
+ {
+ procImpl.wait();
+ }
+ catch (InterruptedException ex)
+ {
+ log.error("Executor thread interrupted");
+ }
+ procStatus = procImpl.getProcessStatus();
+ hasActiveTokens = tokenExecutor.hasActiveTokens();
}
- catch (InterruptedException ex)
- {
- log.error("Executor thread interrupted");
- }
- procStatus = procImpl.getProcessStatus();
- hasActiveTokens = tokenExecutor.hasActiveTokens();
+ log.debug("End execution thread [status=" + procStatus + ",tokens=" + tokenExecutor.getActiveTokens() + "]");
}
- log.debug("End execution thread [status=" + procStatus + ",tokens=" + tokenExecutor.getActiveTokens() + "]");
}
finally
{
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-14 14:39:59 UTC (rev 1890)
@@ -29,15 +29,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jboss.bpm.BPMException;
-import org.jboss.bpm.ProcessTimeoutException;
import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.client.DialectRegistry;
import org.jboss.bpm.client.ExecutionManager;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.Process.ProcessStatus;
-import org.jboss.bpm.model.internal.ProcessImpl;
import org.jboss.bpm.runtime.Attachments;
/**
@@ -75,72 +71,15 @@
exm.startProcess(proc, att);
}
- @Override
- public ProcessStatus waitForEnd(ObjectName procID, long timeout)
- {
- Process proc = getProcessStrict(procID);
- ProcessImpl procImpl = (ProcessImpl)proc;
- ProcessStatus status = proc.getProcessStatus();
-
- if (status == ProcessStatus.None || status == ProcessStatus.Ready)
- throw new IllegalStateException("Cannot wait for process in state: " + status);
-
- // Get the executor thread for interuption
- Thread executorThread = procImpl.getExecutorThread();
-
- // Wait a little for the process to end
- boolean forever = (timeout < 1);
- long now = System.currentTimeMillis();
- long until = now + timeout;
- try
- {
- while (forever || now < until)
- {
- if (status == ProcessStatus.Cancelled || status == ProcessStatus.Completed || status == ProcessStatus.Aborted)
- {
- RuntimeException rte = procImpl.getRuntimeException();
- if (rte != null)
- throw new BPMException("Process aborted", rte);
-
- break;
- }
-
- // Join the executor thread
- executorThread.join(timeout);
- now = System.currentTimeMillis();
- status = proc.getProcessStatus();
- }
-
- // Throw timeout exception if it took too long
- if (status != ProcessStatus.Cancelled && status != ProcessStatus.Completed && status != ProcessStatus.Aborted)
- {
- ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + procID);
- log.error(rte);
-
- log.error("Interrupt executor thread");
- executorThread.interrupt();
-
- throw rte;
- }
- }
- catch (InterruptedException ex)
- {
- log.warn(ex);
- }
- finally
- {
- // Destroy the process
- destroyProcess(procImpl);
- }
-
- return status;
- }
-
private Process getProcessStrict(ObjectName procID)
{
Process proc = getProcessByID(procID);
if (proc == null)
- throw new IllegalStateException("Cannot obtain process: " + procID);
+ {
+ IllegalStateException rte = new IllegalStateException("Cannot obtain process: " + procID);
+ log.error(rte);
+ throw rte;
+ }
return proc;
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-14 13:29:28 UTC (rev 1889)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-14 14:39:59 UTC (rev 1890)
@@ -110,7 +110,6 @@
{
signalManager.throwSignal(procImpl.getName(), sigHandler.getExitSignal());
}
-
}
tokStatus = token.getTokenStatus();
@@ -125,14 +124,19 @@
catch (RuntimeException rte)
{
log.error("Process aborted: " + procImpl, rte);
- token.setTokenStatus(TokenStatus.Destroyed);
procImpl.setProcessStatus(ProcessStatus.Aborted);
procImpl.setRuntimeException(rte);
}
-// finally
-// {
-// procImpl.notifyAll();
-// }
+ finally
+ {
+
+ token.setTokenStatus(TokenStatus.Destroyed);
+ // Notify the ExecutionManager when a token terminates
+ synchronized (procImpl)
+ {
+ procImpl.notifyAll();
+ }
+ }
}
private SignalHandler getSignalHandler(FlowObject target)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-14 14:39:59 UTC (rev 1890)
@@ -35,8 +35,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.BPMException;
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.ProcessTimeoutException;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.client.internal.ProcessManagerImpl;
import org.jboss.bpm.model.EndEvent;
@@ -235,16 +237,69 @@
public void waitForEnd()
{
- ProcessManager pm = ProcessManager.locateProcessManager();
- pm.waitForEnd(getID(), 0);
+ waitForEndInternal(0);
}
public void waitForEnd(long timeout)
{
- ProcessManager pm = ProcessManager.locateProcessManager();
- pm.waitForEnd(getID(), timeout);
+ waitForEndInternal(timeout);
}
+
+ /**
+ * Wait for the Process to end. All Tokens that are generated at the Start Event for that Process must eventually
+ * arrive at an End Event. The Process will be in a running state until all Tokens are consumed. If the process
+ * was aborted this method throws the causing RuntimeException if avaialable.
+ */
+ private void waitForEndInternal(long timeout)
+ {
+ if (status == ProcessStatus.None || status == ProcessStatus.Ready)
+ throw new IllegalStateException("Cannot wait for process in state: " + status);
+ // Wait a little for the process to end
+ boolean forever = (timeout < 1);
+ long now = System.currentTimeMillis();
+ long until = now + timeout;
+ try
+ {
+ while (forever || now < until)
+ {
+ if (status == ProcessStatus.Cancelled || status == ProcessStatus.Completed || status == ProcessStatus.Aborted)
+ {
+ if (runtimeException != null)
+ throw new BPMException("Process aborted", runtimeException);
+
+ break;
+ }
+
+ // Join the executor thread
+ executorThread.join(timeout);
+ now = System.currentTimeMillis();
+ }
+
+ // Throw timeout exception if it took too long
+ if (status != ProcessStatus.Cancelled && status != ProcessStatus.Completed && status != ProcessStatus.Aborted)
+ {
+ ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + getID());
+ log.error(rte);
+
+ log.error("Interrupt executor thread");
+ executorThread.interrupt();
+
+ throw rte;
+ }
+ }
+ catch (InterruptedException ex)
+ {
+ log.warn(ex);
+ }
+ finally
+ {
+ // Destroy the process
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ procManager.destroyProcess(this);
+ }
+ }
+
public FlowObject getFlowObject(String name)
{
if (name == null)
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java 2008-08-14 13:29:28 UTC (rev 1889)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java 2008-08-14 14:39:59 UTC (rev 1890)
@@ -91,6 +91,7 @@
URL expURL = getResourceURL("samples/airticket/airticket-api10.xml");
ProcessManager pm = ProcessManager.locateProcessManager();
Process proc = pm.createProcess(expURL);
+ pm.destroyProcess(proc);
StringWriter strwr = new StringWriter();
DialectHandler dh = pm.getDialectHandler("urn:bpm.jboss:pdl-0.1");
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-14 13:29:28 UTC (rev 1889)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java 2008-08-14 14:39:59 UTC (rev 1890)
@@ -27,6 +27,8 @@
import javax.management.ObjectName;
+import org.jboss.bpm.client.SignalListener;
+import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
@@ -42,6 +44,8 @@
*/
public class ProcessStartTest extends DefaultEngineTestCase
{
+ private RuntimeException startException;
+
public void testStartProcessReturn() throws Exception
{
Process proc = getProcess();
@@ -52,19 +56,34 @@
public void testStartTwice() throws Exception
{
- Process proc = getProcess();
- ObjectName procID = proc.getID();
- assertEquals(procID, proc.startProcess());
- try
+ startException = null;
+
+ final Process proc = getProcess();
+ SignalListener signalListener = new SignalListener()
{
- proc.startProcess();
- fail("Cannot start process twice");
- }
- catch (RuntimeException rte)
- {
- // expected;
- }
+ public void catchSignal(Signal signal)
+ {
+ if (signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER)
+ {
+ try
+ {
+ proc.startProcess();
+ fail("Cannot start process twice");
+ }
+ catch (RuntimeException rte)
+ {
+ startException = rte;
+ }
+ }
+ }
+ };
+ SignalManager sm = SignalManager.locateSignalManager();
+ sm.addSignalListener(getName(), signalListener);
+
+ proc.startProcess();
proc.waitForEnd();
+
+ assertNotNull("Start exception expected", startException);
}
public void testProcessRestart() throws Exception
17 years, 8 months
JBoss JBPM SVN: r1889 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/model and 12 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-14 09:29:28 -0400 (Thu, 14 Aug 2008)
New Revision: 1889
Added:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeAPITest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitAPITest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeAPITest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitAPITest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeAPITest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitAPITest.java
Removed:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
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/model/JAXBActivity.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBGateway.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBIntermediateEvent.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBStartEvent.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/client/internal/ProcessManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.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/EndEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.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/ParallelGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-stp-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/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
Log:
Add gateway API tests. Optimize thread handling
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/ProcessEngine.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -23,6 +23,8 @@
import java.net.URL;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.BPMException;
import org.jboss.bpm.client.internal.EmbeddedBeansDeployer;
import org.jboss.kernel.Kernel;
@@ -41,6 +43,9 @@
*/
public class ProcessEngine
{
+ // provide logging
+ private static final Log log = LogFactory.getLog(ProcessEngine.class);
+
/** The process engine bean name - jBPMEngine */
public static final String BEAN_NAME = "jBPMProcessEngine";
/** The default bean config: jbpm-beans.xml */
@@ -110,6 +115,7 @@
*/
public void prepareForShutdown()
{
+ log.debug("prepareForShutdown");
prepareForShutdown = true;
}
@@ -126,6 +132,7 @@
*/
public void cancelShutdown()
{
+ log.debug("cancelShutdown");
prepareForShutdown = false;
}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -48,7 +48,7 @@
* Each Property has a Type (e.g., type=”String”). Properties may be defined
* hierarchically.
*/
- PropertyType getType();
+ PropertyType getPropertyType();
/**
* Each Property MAY have a Value specified.
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -76,7 +76,7 @@
return fromRef;
}
- public SignalType getType()
+ public SignalType getSignalType()
{
return type;
}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -26,10 +26,12 @@
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.io.Writer;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Set;
import javax.management.ObjectName;
@@ -101,6 +103,16 @@
MessageManager messageManager = MessageManager.locateMessageManager();
messageManager.removeMessageListener(getMessageListenerID());
+ // Check that there are no registered processes left
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ Set<Process> procs = procManager.getProcesses();
+ if (procs.size() > 0)
+ {
+ String logMsg = "Registered processes on tear down of " + getName() + ": " + procs;
+ System.out.println(logMsg);
+ log.warn(logMsg);
+ }
+
super.tearDown();
}
@@ -163,7 +175,7 @@
List<Signal> retSignals = new ArrayList<Signal>();
for (Signal sig : signals)
{
- if (sig.getType() == type)
+ if (sig.getSignalType() == type)
retSignals.add(sig);
}
return Collections.unmodifiableList(retSignals);
@@ -200,15 +212,24 @@
return Collections.unmodifiableList(messages);
}
- public void marshallProcess(Process proc)
+ /**
+ * Marshall the given process
+ * @param out if null, the proces is marshalled to a file
+ */
+ public void marshallProcess(Process proc, Writer out)
{
try
{
- File file = new File(getName() + "-api10.xml");
+ if (out == null)
+ {
+ File file = new File("target/" + getName() + "-api10.xml");
+ out = new FileWriter(file);
+ System.out.println("Marshall process to: " + file.getCanonicalPath());
+ }
+
ProcessManager pm = ProcessManager.locateProcessManager();
DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
- dhapi.marshallProcess(proc, new FileWriter(file));
- System.out.println("marshalled: " + file.getCanonicalPath());
+ dhapi.marshallProcess(proc, out);
}
catch (IOException ex)
{
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -50,6 +50,8 @@
import org.jboss.bpm.dialect.api10.model.JAXBProcess;
import org.jboss.bpm.dialect.api10.model.JAXBProperty;
import org.jboss.bpm.dialect.api10.model.JAXBSequenceFlow;
+import org.jboss.bpm.dialect.api10.model.JAXBSignal;
+import org.jboss.bpm.dialect.api10.model.JAXBSignalEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBSignalHandler;
import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
@@ -57,6 +59,7 @@
import org.jboss.bpm.model.ComplexGateway;
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.Event;
+import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.ExclusiveGateway;
import org.jboss.bpm.model.Expression;
import org.jboss.bpm.model.ConnectingObject;
@@ -74,8 +77,11 @@
import org.jboss.bpm.model.ReceiveTask;
import org.jboss.bpm.model.SendTask;
import org.jboss.bpm.model.SequenceFlow;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SignalEventDetail;
import org.jboss.bpm.model.StartEvent;
import org.jboss.bpm.model.Task;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.FlowHandler;
@@ -143,7 +149,24 @@
{
StartEvent start = (StartEvent)event;
JAXBStartEvent jaxbStart = new JAXBStartEvent();
+ jaxbStart.setName(start.getName());
jaxbStart.setOutFlow(getJAXBFlow(start.getOutFlow()));
+ for (EventDetail trigger : start.getTrigger())
+ {
+ EventDetailType type = trigger.getEventDetailType();
+ if (type == EventDetailType.Signal)
+ {
+ SignalEventDetail signalTrigger = (SignalEventDetail)trigger;
+ Signal signal = signalTrigger.getSignalRef();
+ JAXBSignalEventDetail jaxbTrigger = new JAXBSignalEventDetail();
+ jaxbTrigger.setSignal(new JAXBSignal(signal.getSignalType(), signal.getMessage()));
+ jaxbStart.getTrigger().add(jaxbTrigger);
+ }
+ else
+ {
+ throw new NotImplementedException("Trigger: " + type);
+ }
+ }
jaxb = jaxbStart;
}
else if (event instanceof EndEvent)
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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -42,6 +42,7 @@
import org.jboss.bpm.dialect.api10.model.JAXBComplexGateway;
import org.jboss.bpm.dialect.api10.model.JAXBEndEvent;
import org.jboss.bpm.dialect.api10.model.JAXBEvent;
+import org.jboss.bpm.dialect.api10.model.JAXBEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBExclusiveGateway;
import org.jboss.bpm.dialect.api10.model.JAXBExpression;
import org.jboss.bpm.dialect.api10.model.JAXBFlow;
@@ -58,10 +59,13 @@
import org.jboss.bpm.dialect.api10.model.JAXBProcess;
import org.jboss.bpm.dialect.api10.model.JAXBProperty;
import org.jboss.bpm.dialect.api10.model.JAXBSequenceFlow;
+import org.jboss.bpm.dialect.api10.model.JAXBSignal;
+import org.jboss.bpm.dialect.api10.model.JAXBSignalEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
import org.jboss.bpm.dialect.api10.model.JAXBSupportingElement;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
+import org.jboss.bpm.model.EventBuilder;
import org.jboss.bpm.model.GatewayBuilder;
import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.Process;
@@ -184,8 +188,21 @@
{
if (jaxb instanceof JAXBStartEvent)
{
- procBuilder.addStartEvent("Start");
JAXBStartEvent jaxbStart = (JAXBStartEvent)jaxb;
+ EventBuilder eventBuilder = procBuilder.addStartEvent(jaxbStart.getName());
+ for(JAXBEventDetail jaxbTrigger : jaxbStart.getTrigger())
+ {
+ if (jaxbTrigger instanceof JAXBSignalEventDetail)
+ {
+ JAXBSignalEventDetail jaxbSignalTrigger = (JAXBSignalEventDetail)jaxbTrigger;
+ JAXBSignal jaxbSignal = jaxbSignalTrigger.getSignal();
+ eventBuilder.addSignalTrigger(jaxbSignal.getType(), jaxbSignal.getMessage());
+ }
+ else
+ {
+ throw new NotImplementedException("Trigger: " + jaxbTrigger);
+ }
+ }
addOutFlow(procBuilder, jaxbStart.getOutFlow());
}
else if (jaxb instanceof JAXBEndEvent)
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBActivity.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBActivity.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBActivity.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -40,18 +40,11 @@
{
private String name;
- /**
- * Get the name
- */
public String getName()
{
return name;
}
- /**
- * Set the name.
- * Note, this MUST NOT leak into the public API.
- */
@XmlAttribute(required = true)
public void setName(String name)
{
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -40,18 +40,11 @@
{
private String name;
- /**
- * Get the name
- */
public String getName()
{
return name;
}
- /**
- * Set the name.
- * Note, this MUST NOT leak into the public API.
- */
@XmlAttribute(required = true)
public void setName(String name)
{
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The base of all supported event details
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "EventDetail")
+public class JAXBEventDetail extends JAXBSupportingElement
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBGateway.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBGateway.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBGateway.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -57,10 +57,6 @@
return name;
}
- /**
- * Set the name.
- * Note, this MUST NOT leak into the public API.
- */
@XmlAttribute(required = true)
public void setName(String name)
{
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBIntermediateEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBIntermediateEvent.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBIntermediateEvent.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -21,7 +21,6 @@
*/
package org.jboss.bpm.dialect.api10.model;
-import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlTransient;
@@ -43,32 +42,12 @@
@XmlType(name="ItermediateEvent")
public class JAXBIntermediateEvent extends JAXBEvent
{
- private String name;
-
@XmlElements( {
@XmlElement(name = "seqflow", type = JAXBSequenceFlow.class),
@XmlElement(name = "msgflow", type = JAXBMessageFlow.class)
})
private JAXBFlow outFlow;
- public String getName()
- {
- return name;
- }
-
- /**
- * Set the name.
- * Note, this MUST NOT leak into the public API.
- */
- @XmlAttribute(required = true)
- public void setName(String name)
- {
- if (this.name != null)
- throw new IllegalStateException("Cannot rename: " + name);
-
- this.name = name;
- }
-
public JAXBFlow getOutFlow()
{
return outFlow;
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,75 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.bpm.model.Signal.SignalType;
+
+/**
+ * The base of all supported event details
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "Signal")
+public class JAXBSignal
+{
+ private SignalType type;
+ private String message;
+
+ public JAXBSignal()
+ {
+ }
+
+ public JAXBSignal(SignalType type, String message)
+ {
+ this.type = type;
+ this.message = message;
+ }
+
+ public SignalType getType()
+ {
+ return type;
+ }
+
+ @XmlAttribute(required = true)
+ public void setType(SignalType type)
+ {
+ this.type = type;
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+
+ @XmlElement
+ public void setMessage(String message)
+ {
+ this.message = message;
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,51 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The Signal event detail
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@XmlType(name = "SignalEventDetail")
+public class JAXBSignalEventDetail extends JAXBEventDetail
+{
+ private JAXBSignal signal;
+
+ public JAXBSignal getSignal()
+ {
+ return signal;
+ }
+
+ @XmlElement
+ public void setSignal(JAXBSignal signal)
+ {
+ this.signal = signal;
+ }
+
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignalEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBStartEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBStartEvent.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBStartEvent.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -23,26 +23,49 @@
//$Id$
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
/**
- * A Start Event indicates where a particular Process will start. In terms of Sequence Flow, the Start Event starts the Flow of the Process, and thus, will not have any
- * incoming Sequence Flow. A Start Event can have a Trigger that indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
+ * A Start Event indicates where a particular Process will start. In terms of Sequence Flow, the Start Event starts the
+ * Flow of the Process, and thus, will not have any incoming Sequence Flow. A Start Event can have a Trigger that
+ * indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
*
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-@XmlType(name = "AbstractStartEvent")
+@XmlType(name = "AbstractStartEvent", propOrder = { "outFlow", "trigger" })
public class JAXBStartEvent extends JAXBEvent
{
@XmlElements( {
- @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class),
@XmlElement(name = "msgflow", type = JAXBMessageFlow.class) })
private JAXBFlow outFlow;
+ @XmlElements( {
+ @XmlElement(name = "signal-trigger", type = JAXBSignalEventDetail.class)
+ })
+ private List<JAXBEventDetail> trigger = new ArrayList<JAXBEventDetail>();
+
+ private String name;
+
+ public String getName()
+ {
+ return name;
+ }
+
+ @XmlAttribute(required = false)
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
public JAXBFlow getOutFlow()
{
return outFlow;
@@ -53,4 +76,15 @@
{
this.outFlow = outFlow;
}
+
+ public List<JAXBEventDetail> getTrigger()
+ {
+ return trigger;
+ }
+
+ @XmlTransient
+ public void setTrigger(List<JAXBEventDetail> trigger)
+ {
+ this.trigger = trigger;
+ }
}
\ No newline at end of file
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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ExecutionManagerImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -60,7 +60,7 @@
{
ProcessImpl procImpl = (ProcessImpl)proc;
procImpl.setProcessStatus(ProcessStatus.Active);
-
+
SignalManager signalManager = SignalManager.locateSignalManager();
signalManager.throwSignal(proc.getName(), new Signal(proc.getName(), SignalType.SYSTEM_PROCESS_ENTER));
@@ -73,16 +73,16 @@
new Thread(runner).start();
}
};
- TokenExecutor scheduler = new TokenExecutorImpl(rtProc, callback);
- rtProc.setTokenExecutor(scheduler);
+ TokenExecutor tokenExecutor = new TokenExecutorImpl(rtProc, callback);
+ rtProc.setTokenExecutor(tokenExecutor);
addRuntimeProcess(rtProc);
-
+
StartEvent start = getStartEvent(proc);
if (start != null)
{
TokenImpl token = new TokenImpl(att);
- scheduler.create(token, new InitialFlow(start));
- scheduler.start(token);
+ tokenExecutor.create(token, new InitialFlow(start));
+ tokenExecutor.start(token);
}
}
@@ -113,7 +113,7 @@
setTargetRef(start);
}
}
-
+
class RunnableProcess implements Runnable
{
RuntimeProcess rtProc;
@@ -127,31 +127,38 @@
public void run()
{
- TokenExecutor scheduler = rtProc.getTokenExecutor();
+ TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
+ procImpl.setExecutorThread(Thread.currentThread());
+
String procName = procImpl.getName();
-
ProcessStatus procStatus = procImpl.getProcessStatus();
+ boolean hasActiveTokens = tokenExecutor.hasActiveTokens();
try
{
- while (procStatus == ProcessStatus.Active && scheduler.hasActiveTokens())
+ while (procStatus == ProcessStatus.Active && hasActiveTokens)
{
- Thread.sleep(100);
+ try
+ {
+ Thread.sleep(100);
+ }
+ catch (InterruptedException ex)
+ {
+ log.error("Executor thread interrupted");
+ }
procStatus = procImpl.getProcessStatus();
+ hasActiveTokens = tokenExecutor.hasActiveTokens();
}
+ log.debug("End execution thread [status=" + procStatus + ",tokens=" + tokenExecutor.getActiveTokens() + "]");
}
- catch (InterruptedException ex)
- {
- log.error(ex);
- }
finally
{
SignalManager signalManager = SignalManager.locateSignalManager();
signalManager.throwSignal(procName, new Signal(procName, Signal.SignalType.SYSTEM_PROCESS_EXIT));
-
+
if (procStatus == ProcessStatus.Active)
procImpl.setProcessStatus(ProcessStatus.Completed);
-
+
ProcessManager procManager = ProcessManager.locateProcessManager();
procManager.destroyProcess(rtProc.getProcess());
removeRuntimeProcess(rtProc);
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -50,7 +50,7 @@
{
// provide logging
private static final Log log = LogFactory.getLog(ProcessManagerImpl.class);
-
+
public void setDialectHandlers(Map<String, DialectHandler> dialectHandlers)
{
this.dialectHandlers = dialectHandlers;
@@ -85,6 +85,9 @@
if (status == ProcessStatus.None || status == ProcessStatus.Ready)
throw new IllegalStateException("Cannot wait for process in state: " + status);
+ // Get the executor thread for interuption
+ Thread executorThread = procImpl.getExecutorThread();
+
// Wait a little for the process to end
boolean forever = (timeout < 1);
long now = System.currentTimeMillis();
@@ -93,32 +96,44 @@
{
while (forever || now < until)
{
- status = proc.getProcessStatus();
- if (status == ProcessStatus.Cancelled || status == ProcessStatus.Completed)
+ if (status == ProcessStatus.Cancelled || status == ProcessStatus.Completed || status == ProcessStatus.Aborted)
{
- return status;
- }
- else if (status == ProcessStatus.Aborted)
- {
RuntimeException rte = procImpl.getRuntimeException();
- if (rte == null)
- return status;
- else
+ if (rte != null)
throw new BPMException("Process aborted", rte);
+
+ break;
}
- Thread.sleep(100);
+
+ // Join the executor thread
+ executorThread.join(timeout);
now = System.currentTimeMillis();
+ status = proc.getProcessStatus();
}
+
+ // Throw timeout exception if it took too long
+ if (status != ProcessStatus.Cancelled && status != ProcessStatus.Completed && status != ProcessStatus.Aborted)
+ {
+ ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + procID);
+ log.error(rte);
+
+ log.error("Interrupt executor thread");
+ executorThread.interrupt();
+
+ throw rte;
+ }
}
catch (InterruptedException ex)
{
log.warn(ex);
}
-
- // Throw timeout exception if it took too long
- ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + procID);
- log.error(rte);
- throw rte;
+ finally
+ {
+ // Destroy the process
+ destroyProcess(procImpl);
+ }
+
+ return status;
}
private Process getProcessStrict(ObjectName procID)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -67,7 +67,7 @@
public void run()
{
SignalManager signalManager = SignalManager.locateSignalManager();
- TokenExecutor scheduler = rtProc.getTokenExecutor();
+ TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
token.setTokenStatus(TokenStatus.Started);
@@ -98,7 +98,7 @@
target.execute(token);
// Transfer the token to the FlowHandler
- flowHandler.execute(scheduler, token);
+ flowHandler.execute(tokenExecutor, token);
}
catch(RuntimeException rte)
{
@@ -129,6 +129,10 @@
procImpl.setProcessStatus(ProcessStatus.Aborted);
procImpl.setRuntimeException(rte);
}
+// finally
+// {
+// procImpl.notifyAll();
+// }
}
private SignalHandler getSignalHandler(FlowObject target)
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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -307,9 +307,9 @@
{
handler = new FlowHandler()
{
- public void execute(TokenExecutor scheduler, Token token)
+ public void execute(TokenExecutor tokenExecutor, Token token)
{
- scheduler.move(token, outFlow);
+ tokenExecutor.move(token, outFlow);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -84,10 +84,10 @@
{
handler = new FlowHandler()
{
- public void execute(TokenExecutor scheduler, Token token)
+ public void execute(TokenExecutor tokenExecutor, Token token)
{
log.debug("End reached in: " + getName());
- scheduler.destroy(token);
+ tokenExecutor.destroy(token);
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -98,7 +98,7 @@
{
handler = new FlowHandler()
{
- public void execute(TokenExecutor scheduler, Token token)
+ public void execute(TokenExecutor tokenExecutor, Token token)
{
GraphicalElement sourceRef = token.getFlow().getSourceRef();
@@ -108,13 +108,13 @@
log.debug("Propagate token comming from: " + sourceRef);
Gate selectedGate = getSelectedGate(token);
SequenceFlow outFlow = selectedGate.getOutgoingSequenceFlow();
- scheduler.move(token, outFlow);
+ tokenExecutor.move(token, outFlow);
}
// Ignore all other tokens
else
{
log.debug("Ignore token comming from: " + sourceRef);
- scheduler.destroy(token);
+ tokenExecutor.destroy(token);
}
// Reset the gateway
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -76,7 +76,7 @@
{
handler = new FlowHandler()
{
- public void execute(TokenExecutor scheduler, Token token)
+ public void execute(TokenExecutor tokenExecutor, Token token)
{
GraphicalElement sourceRef = token.getFlow().getSourceRef();
log.debug("Propagate token comming from: " + sourceRef);
@@ -88,20 +88,20 @@
// Destroy the incomming token if there are
// more than one applicable gates
if (applicableGates.size() > 1)
- scheduler.destroy(token);
+ tokenExecutor.destroy(token);
for (Gate aux : applicableGates)
{
SequenceFlow outFlow = aux.getOutgoingSequenceFlow();
if (applicableGates.size() == 1)
{
- scheduler.move(token, outFlow);
+ tokenExecutor.move(token, outFlow);
}
else
{
Token outToken = token.copyToken();
- scheduler.create(outToken, outFlow);
- scheduler.start(outToken);
+ tokenExecutor.create(outToken, outFlow);
+ tokenExecutor.start(outToken);
}
}
}
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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -77,9 +77,9 @@
{
handler = new FlowHandler()
{
- public void execute(TokenExecutor scheduler, Token token)
+ public void execute(TokenExecutor tokenExecutor, Token token)
{
- scheduler.move(token, getOutFlow());
+ tokenExecutor.move(token, getOutFlow());
}
};
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -90,10 +90,10 @@
handler = new FlowHandler()
{
- public void execute(TokenExecutor scheduler, Token token)
+ public void execute(TokenExecutor tokenExecutor, Token token)
{
// In any case, the incomming token is not propagated
- scheduler.suspend(token);
+ tokenExecutor.suspend(token);
// If the gateway has a single incomming flow the outgoing token is the incomming token
Token outToken = (getInFlows().size() == 1 ? token : null);
@@ -123,14 +123,14 @@
{
SequenceFlow outFlow = gate.getOutgoingSequenceFlow();
Token copyToken = outToken.copyToken();
- scheduler.create(copyToken, outFlow);
- scheduler.start(copyToken);
+ tokenExecutor.create(copyToken, outFlow);
+ tokenExecutor.start(copyToken);
}
// Destroy the received tokens
for (Token auxToken : receivedTokens)
{
- scheduler.destroy(auxToken);
+ tokenExecutor.destroy(auxToken);
}
// Reset the gateway
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -75,6 +75,8 @@
private ProcessStatus status = ProcessStatus.None;
// The possible exception that caused the process to abort
private RuntimeException runtimeException;
+ // The thread of the executor
+ private Thread executorThread;
public ProcessImpl(String name)
{
@@ -234,7 +236,7 @@
public void waitForEnd()
{
ProcessManager pm = ProcessManager.locateProcessManager();
- pm.waitForEnd(getID(), -1);
+ pm.waitForEnd(getID(), 0);
}
public void waitForEnd(long timeout)
@@ -286,6 +288,16 @@
this.status = status;
}
+ public Thread getExecutorThread()
+ {
+ return executorThread;
+ }
+
+ public void setExecutorThread(Thread executorThread)
+ {
+ this.executorThread = executorThread;
+ }
+
public List<Message> getMessages()
{
return Collections.unmodifiableList(messages);
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -62,7 +62,7 @@
this.name = name;
}
- public PropertyType getType()
+ public PropertyType getPropertyType()
{
return PropertyType.String;
}
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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -66,7 +66,7 @@
public StartEventImpl(String name)
{
- super(name);
+ super(name == null ? "Start" : name);
}
public List<EventDetail> getTrigger()
@@ -102,9 +102,9 @@
{
handler = new FlowHandler()
{
- public void execute(TokenExecutor scheduler, Token token)
+ public void execute(TokenExecutor tokenExecutor, Token token)
{
- scheduler.move(token, outFlow);
+ tokenExecutor.move(token, outFlow);
}
};
}
@@ -145,17 +145,17 @@
{
public void catchSignal(Signal signal)
{
- if (startSignal.getType() == signal.getType() && startSignal.getMessage().equals(signal.getMessage()))
+ if (startSignal.getSignalType() == signal.getSignalType() && startSignal.getMessage().equals(signal.getMessage()))
{
if (proc.getProcessStatus() == ProcessStatus.Active)
{
log.debug("Start process from signal: " + signal);
ExecutionManager exManager = ExecutionManager.locateExecutionManager();
RuntimeProcess rtProc = exManager.getRuntimeProcess(start.getProcess().getID());
- TokenExecutor scheduler = rtProc.getTokenExecutor();
+ TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
TokenImpl token = new TokenImpl(null);
- scheduler.create(token, getOutFlow());
- scheduler.start(token);
+ tokenExecutor.create(token, getOutFlow());
+ tokenExecutor.start(token);
}
else
{
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml 2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,5 +1,5 @@
<ns2:process name='Airticket' xmlns:ns2='urn:bpm.jboss:pdl-0.1'>
- <start>
+ <start name='Start'>
<seqflow to='ReceiveReq'/>
</start>
<task name='ReceiveReq' taskType='Receive'>
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-stp-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-stp-api10.xml 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-stp-api10.xml 2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,6 +1,6 @@
<ns2:process name='Airticket' xmlns:ns2='urn:bpm.jboss:pdl-0.1'>
<include namespace="http://stp.eclipse.org/bpmn" location="samples/airticket/airticket.bpmn" />
- <!-- start>
+ <!-- start name='Start'>
<seqflow to='ReceiveReq' />
</start-->
<task name='ReceiveReq' taskType='Receive'>
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/engine/EngineShutdownTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -39,24 +39,14 @@
*/
public class EngineShutdownTest extends DefaultEngineTestCase
{
- private ProcessEngine engine;
-
- private URL jpdlURL;
-
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- jpdlURL = getResourceURL("cts/engine/basic-engine-" + getDialect() + ".xml");
- engine = ProcessEngine.locateProcessEngine();
- engine.cancelShutdown();
- }
-
/**
* Try to create a Process during shutdown
*/
public void testCreateProcess() throws Exception
{
+ ProcessEngine engine = ProcessEngine.locateProcessEngine();
+ URL jpdlURL = getResourceURL("cts/engine/basic-engine-" + getDialect() + ".xml");
+
// Create a Process through the ProcessManager
ProcessManager pm = ProcessManager.locateProcessManager();
Process proc = pm.createProcess(jpdlURL);
@@ -75,6 +65,7 @@
finally
{
pm.destroyProcess(proc);
+ engine.cancelShutdown();
}
}
}
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeAPITest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeAPITest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.exclusive;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * ExclusiveMergeTest using the API Descriptor
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class ExclusiveMergeAPITest extends ExclusiveMergeTest
+{
+ @Override
+ public Process getProcess()
+ {
+ Process proc = super.getProcess();
+
+ // Marshall the process to a string
+ StringWriter strwr = new StringWriter();
+ marshallProcess(proc, strwr);
+ String procXML = strwr.toString();
+
+ // Recreate the process from the marshalled process
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ proc = procManager.createProcess(procXML);
+
+ return proc;
+ }
+}
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,60 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.exclusive;
-
-// $Id$
-
-import org.jboss.bpm.model.EventBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Gateway.GatewayType;
-import org.jboss.bpm.model.Signal.SignalType;
-
-/**
- * ExclusiveMergeTest using the ProcessBuilder
- *
- * @author thomas.diesler(a)jboss.com
- * @since 06-Aug-2008
- */
-public class ExclusiveMergeProcBuilderTest extends ExclusiveMergeTest
-{
- @Override
- public Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
- procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
- procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
- procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
- procBuilder.addEndEvent("End");
- Process proc = procBuilder.getProcess();
-
- //marshallProcess(proc);
-
- return proc;
- }
-}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -25,8 +25,12 @@
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.ExecutionHandler;
@@ -41,7 +45,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public abstract class ExclusiveMergeTest extends DefaultEngineTestCase
+public class ExclusiveMergeTest extends DefaultEngineTestCase
{
public void testGateA() throws Exception
{
@@ -123,7 +127,21 @@
assertEquals("TaskA", TaskC.taskValue);
}
- public abstract Process getProcess();
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+ eventBuilder = procBuilder.addStartEvent("StartB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
+ procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
public static class MergeListener implements SignalListener
{
@@ -138,7 +156,7 @@
public void catchSignal(Signal signal)
{
- if (signal.getType() == SignalType.SYSTEM_GATEWAY_ENTER)
+ if (signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER)
{
if (nextSignal != null)
{
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitAPITest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitAPITest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.exclusive;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * ExclusiveSplitTest using the API Descriptor
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class ExclusiveSplitAPITest extends ExclusiveSplitTest
+{
+ @Override
+ public Process getProcess()
+ {
+ Process proc = super.getProcess();
+
+ // Marshall the process to a string
+ StringWriter strwr = new StringWriter();
+ marshallProcess(proc, strwr);
+ String procXML = strwr.toString();
+
+ // Recreate the process from the marshalled process
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ proc = procManager.createProcess(procXML);
+
+ return proc;
+ }
+}
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,53 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.exclusive;
-
-// $Id$
-
-import org.jboss.bpm.model.GatewayBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Expression.ExpressionLanguage;
-import org.jboss.bpm.model.Gateway.GatewayType;
-
-/**
- * ExclusiveSplitTest using the ProcessBuilder
- *
- * @author thomas.diesler(a)jboss.com
- * @since 06-Aug-2008
- */
-public class ExclusiveSplitProcBuilderTest extends ExclusiveSplitTest
-{
- @Override
- public Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
- GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Exclusive);
- gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
- gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo > 10");
- procBuilder.addEndEvent("EndA").addEndEvent("EndB");
- Process proc = procBuilder.getProcess();
- return proc;
- }
-}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -25,8 +25,13 @@
import java.util.List;
+import org.jboss.bpm.model.GatewayBuilder;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.runtime.BasicAttachments;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -37,7 +42,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public abstract class ExclusiveSplitTest extends DefaultEngineTestCase
+public class ExclusiveSplitTest extends DefaultEngineTestCase
{
public void testGateA() throws Exception
{
@@ -85,5 +90,15 @@
}
}
- public abstract Process getProcess();
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
+ GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Exclusive);
+ gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
+ gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo > 10");
+ procBuilder.addEndEvent("EndA").addEndEvent("EndB");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
}
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeAPITest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeAPITest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.inclusive;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * InclusiveMergeTest using the API Descriptor
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class InclusiveMergeAPITest extends InclusiveMergeTest
+{
+ @Override
+ public Process getProcess()
+ {
+ Process proc = super.getProcess();
+
+ // Marshall the process to a string
+ StringWriter strwr = new StringWriter();
+ marshallProcess(proc, strwr);
+ String procXML = strwr.toString();
+
+ // Recreate the process from the marshalled process
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ proc = procManager.createProcess(procXML);
+
+ return proc;
+ }
+}
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,54 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.inclusive;
-
-// $Id$
-
-import org.jboss.bpm.model.EventBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Gateway.GatewayType;
-import org.jboss.bpm.model.Signal.SignalType;
-
-/**
- * InclusiveMergeTest using the ProcessBuilder
- *
- * @author thomas.diesler(a)jboss.com
- * @since 06-Aug-2008
- */
-public class InclusiveMergeProcBuilderTest extends InclusiveMergeTest
-{
- @Override
- public Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
- procBuilder.addEndEvent("End");
- Process proc = procBuilder.getProcess();
- return proc;
- }
-}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -26,8 +26,12 @@
import java.util.List;
import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -58,5 +62,16 @@
assertEquals(2, endSignals.size());
}
- public abstract Process getProcess();
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
+ eventBuilder = procBuilder.addStartEvent("StartB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
}
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitAPITest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitAPITest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.inclusive;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * InclusiveSplitTest using the API Descriptor
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class InclusiveSplitAPITest extends InclusiveSplitTest
+{
+ @Override
+ public Process getProcess()
+ {
+ Process proc = super.getProcess();
+
+ // Marshall the process to a string
+ StringWriter strwr = new StringWriter();
+ marshallProcess(proc, strwr);
+ String procXML = strwr.toString();
+
+ // Recreate the process from the marshalled process
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ proc = procManager.createProcess(procXML);
+
+ return proc;
+ }
+}
\ No newline at end of file
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,52 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.inclusive;
-
-// $Id$
-
-import org.jboss.bpm.model.GatewayBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Expression.ExpressionLanguage;
-import org.jboss.bpm.model.Gateway.GatewayType;
-
-/**
- * InclusiveSplitTest using the ProcessBuilder
- *
- * @author thomas.diesler(a)jboss.com
- * @since 06-Aug-2008
- */
-public class InclusiveSplitProcBuilderTest extends InclusiveSplitTest
-{
- public Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
- GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Inclusive);
- gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
- gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
- procBuilder.addEndEvent("EndA").addEndEvent("EndB");
- Process proc = procBuilder.getProcess();
- return proc;
- }
-}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -25,8 +25,13 @@
import java.util.List;
+import org.jboss.bpm.model.GatewayBuilder;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.runtime.BasicAttachments;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -37,7 +42,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public abstract class InclusiveSplitTest extends DefaultEngineTestCase
+public class InclusiveSplitTest extends DefaultEngineTestCase
{
public void testGateA() throws Exception
{
@@ -66,5 +71,15 @@
assertEquals("EndB", endSignals.get(0).getFromRef());
}
- public abstract Process getProcess();
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
+ GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Inclusive);
+ gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
+ gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
+ procBuilder.addEndEvent("EndA").addEndEvent("EndB");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
}
\ No newline at end of file
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeAPITest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeAPITest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.parallel;
+
+//$Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+
+/**
+ * ParallelMergeTest using the API Descriptor
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class ParallelMergeAPITest extends ParallelMergeTest
+{
+ @Override
+ public Process getProcess()
+ {
+ Process proc = super.getProcess();
+
+ // Marshall the process to a string
+ StringWriter strwr = new StringWriter();
+ marshallProcess(proc, strwr);
+ String procXML = strwr.toString();
+
+ // Recreate the process from the marshalled process
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ proc = procManager.createProcess(procXML);
+
+ return proc;
+ }
+}
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,56 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.parallel;
-
-// $Id$
-
-import org.jboss.bpm.model.EventBuilder;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Gateway.GatewayType;
-import org.jboss.bpm.model.Signal.SignalType;
-
-/**
- * ParallelMergeTest using the ProcessBuilder
- *
- * @author thomas.diesler(a)jboss.com
- * @since 06-Aug-2008
- */
-public class ParallelMergeProcBuilderTest extends ParallelMergeTest
-{
- public Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
- procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
- procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
- procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
- procBuilder.addEndEvent("End");
- Process proc = procBuilder.getProcess();
- return proc;
- }
-}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -25,8 +25,12 @@
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.ExecutionHandler;
@@ -41,7 +45,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public abstract class ParallelMergeTest extends DefaultEngineTestCase
+public class ParallelMergeTest extends DefaultEngineTestCase
{
public void testParallelMerge() throws Exception
{
@@ -124,7 +128,21 @@
assertEquals("TaskA:TaskB", TaskC.taskValue);
}
- public abstract Process getProcess();
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+ eventBuilder = procBuilder.addStartEvent("StartB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
+ procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
public static class MergeListener implements SignalListener
{
@@ -139,7 +157,7 @@
public void catchSignal(Signal signal)
{
- if (signal.getType() == SignalType.SYSTEM_GATEWAY_ENTER)
+ if (signal.getSignalType() == SignalType.SYSTEM_GATEWAY_ENTER)
{
if (nextSignal != null)
{
Copied: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitAPITest.java (from rev 1886, jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitAPITest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitAPITest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.parallel;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * ParallelSplitTest using the API Descriptor
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class ParallelSplitAPITest extends ParallelSplitTest
+{
+ @Override
+ public Process getProcess()
+ {
+ Process proc = super.getProcess();
+
+ // Marshall the process to a string
+ StringWriter strwr = new StringWriter();
+ marshallProcess(proc, strwr);
+ String procXML = strwr.toString();
+
+ // Recreate the process from the marshalled process
+ ProcessManager procManager = ProcessManager.locateProcessManager();
+ proc = procManager.createProcess(procXML);
+
+ return proc;
+ }
+}
Deleted: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -1,46 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.bpm.cts.gateway.parallel;
-
-// $Id$
-
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Gateway.GatewayType;
-
-/**
- * ParallelMergeTest using the ParallelSplitTest
- *
- * @author thomas.diesler(a)jboss.com
- * @since 06-Aug-2008
- */
-public class ParallelSplitProcBuilderTest extends ParallelSplitTest
-{
- public Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split").addGateway("Split", GatewayType.Parallel).
- addSequenceFlow("EndA").addSequenceFlow("EndB").addEndEvent("EndA").addEndEvent("EndB").getProcess();
- return proc;
- }
-}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -26,7 +26,10 @@
import java.util.List;
import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -37,7 +40,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public abstract class ParallelSplitTest extends DefaultEngineTestCase
+public class ParallelSplitTest extends DefaultEngineTestCase
{
public void testParallelSplit() throws Exception
{
@@ -53,5 +56,11 @@
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndB"));
}
- public abstract Process getProcess();
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split").addGateway("Split", GatewayType.Parallel).
+ addSequenceFlow("EndA").addSequenceFlow("EndB").addEndEvent("EndA").addEndEvent("EndB").getProcess();
+ return 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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -77,13 +77,13 @@
// Validate received signals
List<Signal> signals = getSignals();
- assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getType());
- assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getType());
- assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getType());
- assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getType());
- assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getType());
- assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getType());
- assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getType());
- assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getType());
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getSignalType());
}
}
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-14 10:49:29 UTC (rev 1888)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java 2008-08-14 13:29:28 UTC (rev 1889)
@@ -77,13 +77,13 @@
// Validate received signals
List<Signal> signals = getSignals();
- assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getType());
- assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getType());
- assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getType());
- assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getType());
- assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getType());
- assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getType());
- assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getType());
- assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getType());
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_ENTER, signals.get(0).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_ENTER, signals.get(1).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_START_EVENT_EXIT, signals.get(2).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_ENTER, signals.get(3).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_TASK_EXIT, signals.get(4).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_ENTER, signals.get(5).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_END_EVENT_EXIT, signals.get(6).getSignalType());
+ assertEquals(Signal.SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getSignalType());
}
}
17 years, 8 months
JBoss JBPM SVN: r1888 - jbossbpm/spec/trunk/modules/samples/airticket/server.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-08-14 06:49:29 -0400 (Thu, 14 Aug 2008)
New Revision: 1888
Modified:
jbossbpm/spec/trunk/modules/samples/airticket/server/pom.xml
Log:
Add missing compile time dependency
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/pom.xml
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/pom.xml 2008-08-14 09:45:17 UTC (rev 1887)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/pom.xml 2008-08-14 10:49:29 UTC (rev 1888)
@@ -13,7 +13,7 @@
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ <modelVersion>4.0.0</modelVersion>
<name>JBossBPM - Spec Samples Airticket (Server)</name>
<groupId>org.jboss.bpm</groupId>
<artifactId>bpm-sample-airticket-server</artifactId>
@@ -37,17 +37,21 @@
<artifactId>bpm-dialect-stp</artifactId>
<scope>runtime</scope>
</dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ </dependency>
</dependencies>
<!-- Build -->
- <build>
- <resources>
- <resource>
- <directory>src/main/java</directory>
- </resource>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/java</directory>
+ </resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
</resources>
</build>
</project>
\ No newline at end of file
17 years, 8 months
JBoss JBPM SVN: r1887 - in jbpm4/pvm/trunk/modules/core/src/test: java/org/jbpm/pvm/internal/util and 3 other directories.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2008-08-14 05:45:17 -0400 (Thu, 14 Aug 2008)
New Revision: 1887
Added:
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/util/
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/util/FileUtil.java
jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/
jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/file.properties
jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/resource.properties
jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/url.properties
Removed:
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/file.properties
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/resource.properties
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/url.properties
Modified:
jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/PropertiesWireTest.java
Log:
fixed space problem in directory name in wire tests
Added: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/util/FileUtil.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/util/FileUtil.java (rev 0)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/util/FileUtil.java 2008-08-14 09:45:17 UTC (rev 1887)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.pvm.internal.util;
+
+import java.io.File;
+import java.net.URL;
+import java.util.StringTokenizer;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public abstract class FileUtil {
+
+ private static final String FILE_SEPARATOR = System.getProperty("file.separator");
+
+ public static String getFileNameForResource(String resource) throws Exception {
+ String testClassesUrl = FileUtil.class.getProtectionDomain().getCodeSource().getLocation().toString();
+ URL fileUrl = new URL(testClassesUrl);
+ File file = new File(fileUrl.toURI());
+ String fileName = file.getAbsolutePath();
+
+ StringTokenizer tokenizer = new StringTokenizer(resource, "/");
+ while (tokenizer.hasMoreTokens()) {
+ fileName = fileName+FILE_SEPARATOR+tokenizer.nextToken();
+ }
+
+ return fileName;
+ }
+}
Modified: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/PropertiesWireTest.java
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/PropertiesWireTest.java 2008-08-13 17:36:40 UTC (rev 1886)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/PropertiesWireTest.java 2008-08-14 09:45:17 UTC (rev 1887)
@@ -21,9 +21,13 @@
*/
package org.jbpm.pvm.internal.wire;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.List;
import java.util.Properties;
+import org.jbpm.pvm.internal.util.FileUtil;
import org.jbpm.pvm.internal.wire.WireContext;
import org.jbpm.pvm.internal.wire.WireException;
import org.jbpm.pvm.internal.xml.Problem;
@@ -75,11 +79,8 @@
assertTextPresent("property must have name and value attribute", problems.get(0).toString());
}
- public void testFileProperties() {
- String testClassesUrl = PropertiesWireTest.class.getProtectionDomain().getCodeSource().getLocation().toString();
- // skip the "file:" to get a file string
- String testClassesDir = testClassesUrl.substring(5);
- String propertiesFile = testClassesDir+"/org/jbpm/wire/file.properties";
+ public void testFileProperties() throws Exception {
+ String propertiesFile = FileUtil.getFileNameForResource("org/jbpm/pvm/internal/wire/file.properties");
WireContext wireContext = createWireContext(
"<objects>" +
@@ -167,11 +168,8 @@
}
}
- public void testOverridenFileProperties() {
- String testClassesUrl = PropertiesWireTest.class.getProtectionDomain().getCodeSource().getLocation().toString();
- // skip the "file:" to get a file string
- String testClassesDir = testClassesUrl.substring(5);
- String propertiesFile = testClassesDir+"/org/jbpm/wire/file.properties";
+ public void testOverridenFileProperties() throws Exception {
+ String propertiesFile = FileUtil.getFileNameForResource("/org/jbpm/wire/file.properties");
WireContext wireContext = createWireContext(
"<objects>" +
Deleted: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/file.properties
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/file.properties 2008-08-13 17:36:40 UTC (rev 1886)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/file.properties 2008-08-14 09:45:17 UTC (rev 1887)
@@ -1,3 +0,0 @@
-1=flute
-2=fagot
-3=fecundity
Deleted: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/resource.properties
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/resource.properties 2008-08-13 17:36:40 UTC (rev 1886)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/resource.properties 2008-08-14 09:45:17 UTC (rev 1887)
@@ -1,3 +0,0 @@
-1=rubber
-2=rack
-3=ramblas
Deleted: jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/url.properties
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/url.properties 2008-08-13 17:36:40 UTC (rev 1886)
+++ jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/url.properties 2008-08-14 09:45:17 UTC (rev 1887)
@@ -1,3 +0,0 @@
-1=umbrella
-2=ultraviolet
-3=ubiquitous
Copied: jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/file.properties (from rev 1886, jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/file.properties)
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/file.properties (rev 0)
+++ jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/file.properties 2008-08-14 09:45:17 UTC (rev 1887)
@@ -0,0 +1,3 @@
+1=flute
+2=fagot
+3=fecundity
Property changes on: jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/file.properties
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/resource.properties (from rev 1886, jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/resource.properties)
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/resource.properties (rev 0)
+++ jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/resource.properties 2008-08-14 09:45:17 UTC (rev 1887)
@@ -0,0 +1,3 @@
+1=rubber
+2=rack
+3=ramblas
Property changes on: jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/resource.properties
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/url.properties (from rev 1886, jbpm4/pvm/trunk/modules/core/src/test/java/org/jbpm/pvm/internal/wire/url.properties)
===================================================================
--- jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/url.properties (rev 0)
+++ jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/url.properties 2008-08-14 09:45:17 UTC (rev 1887)
@@ -0,0 +1,3 @@
+1=umbrella
+2=ultraviolet
+3=ubiquitous
Property changes on: jbpm4/pvm/trunk/modules/core/src/test/resources/org/jbpm/pvm/internal/wire/url.properties
___________________________________________________________________
Name: svn:mergeinfo
+
17 years, 8 months
JBoss JBPM SVN: r1886 - in jbossbpm/spec/trunk/modules: testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive and 5 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-13 13:36:40 -0400 (Wed, 13 Aug 2008)
New Revision: 1886
Added:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.png
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-split.png
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.png
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-split.png
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.png
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-split.png
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram
Log:
WIP - gateway descriptor tests
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-13 16:04:11 UTC (rev 1885)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -23,6 +23,9 @@
// $Id$
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
@@ -35,14 +38,17 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.BPMException;
+import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.client.MessageListener;
import org.jboss.bpm.client.MessageManager;
import org.jboss.bpm.client.ObjectNameFactory;
+import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.client.internal.EmbeddedBeansDeployer;
import org.jboss.bpm.model.BPMNElement;
import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Signal;
public abstract class AbstractAPITestCase extends TestCase
@@ -193,4 +199,20 @@
{
return Collections.unmodifiableList(messages);
}
+
+ public void marshallProcess(Process proc)
+ {
+ try
+ {
+ File file = new File(getName() + "-api10.xml");
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
+ dhapi.marshallProcess(proc, new FileWriter(file));
+ System.out.println("marshalled: " + file.getCanonicalPath());
+ }
+ catch (IOException ex)
+ {
+ throw new BPMException("Cannot marshall process", ex);
+ }
+ }
}
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -0,0 +1,60 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.exclusive;
+
+// $Id$
+
+import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.model.Signal.SignalType;
+
+/**
+ * ExclusiveMergeTest using the ProcessBuilder
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class ExclusiveMergeProcBuilderTest extends ExclusiveMergeTest
+{
+ @Override
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+ eventBuilder = procBuilder.addStartEvent("StartB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
+ procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+
+ //marshallProcess(proc);
+
+ return proc;
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeProcBuilderTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-13 16:04:11 UTC (rev 1885)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveMergeTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -25,12 +25,8 @@
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.EventBuilder;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.ExecutionHandler;
@@ -45,7 +41,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public class ExclusiveMergeTest extends DefaultEngineTestCase
+public abstract class ExclusiveMergeTest extends DefaultEngineTestCase
{
public void testGateA() throws Exception
{
@@ -127,21 +123,7 @@
assertEquals("TaskA", TaskC.taskValue);
}
- private Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
- procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
- procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
- procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
- procBuilder.addEndEvent("End");
- Process proc = procBuilder.getProcess();
- return proc;
- }
+ public abstract Process getProcess();
public static class MergeListener implements SignalListener
{
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -0,0 +1,53 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.exclusive;
+
+// $Id$
+
+import org.jboss.bpm.model.GatewayBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.Gateway.GatewayType;
+
+/**
+ * ExclusiveSplitTest using the ProcessBuilder
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class ExclusiveSplitProcBuilderTest extends ExclusiveSplitTest
+{
+ @Override
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
+ GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Exclusive);
+ gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
+ gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo > 10");
+ procBuilder.addEndEvent("EndA").addEndEvent("EndB");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitProcBuilderTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java 2008-08-13 16:04:11 UTC (rev 1885)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveSplitTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -25,13 +25,8 @@
import java.util.List;
-import org.jboss.bpm.model.GatewayBuilder;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.model.Expression.ExpressionLanguage;
-import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.runtime.BasicAttachments;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -42,7 +37,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public class ExclusiveSplitTest extends DefaultEngineTestCase
+public abstract class ExclusiveSplitTest extends DefaultEngineTestCase
{
public void testGateA() throws Exception
{
@@ -90,15 +85,5 @@
}
}
- private Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
- GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Exclusive);
- gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
- gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo > 10");
- procBuilder.addEndEvent("EndA").addEndEvent("EndB");
- Process proc = procBuilder.getProcess();
- return proc;
- }
+ public abstract Process getProcess();
}
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -0,0 +1,54 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.inclusive;
+
+// $Id$
+
+import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.model.Signal.SignalType;
+
+/**
+ * InclusiveMergeTest using the ProcessBuilder
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class InclusiveMergeProcBuilderTest extends InclusiveMergeTest
+{
+ @Override
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
+ eventBuilder = procBuilder.addStartEvent("StartB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeProcBuilderTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-13 16:04:11 UTC (rev 1885)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -26,12 +26,8 @@
import java.util.List;
import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.EventBuilder;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -43,7 +39,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public class InclusiveMergeTest extends DefaultEngineTestCase
+public abstract class InclusiveMergeTest extends DefaultEngineTestCase
{
public void testGateA() throws Exception
{
@@ -62,16 +58,5 @@
assertEquals(2, endSignals.size());
}
- private Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
- procBuilder.addEndEvent("End");
- Process proc = procBuilder.getProcess();
- return proc;
- }
+ public abstract Process getProcess();
}
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.inclusive;
+
+// $Id$
+
+import org.jboss.bpm.model.GatewayBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.Gateway.GatewayType;
+
+/**
+ * InclusiveSplitTest using the ProcessBuilder
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class InclusiveSplitProcBuilderTest extends InclusiveSplitTest
+{
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
+ GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Inclusive);
+ gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
+ gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
+ procBuilder.addEndEvent("EndA").addEndEvent("EndB");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitProcBuilderTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-13 16:04:11 UTC (rev 1885)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -25,13 +25,8 @@
import java.util.List;
-import org.jboss.bpm.model.GatewayBuilder;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.model.Expression.ExpressionLanguage;
-import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.runtime.BasicAttachments;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -42,7 +37,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public class InclusiveSplitTest extends DefaultEngineTestCase
+public abstract class InclusiveSplitTest extends DefaultEngineTestCase
{
public void testGateA() throws Exception
{
@@ -71,15 +66,5 @@
assertEquals("EndB", endSignals.get(0).getFromRef());
}
- private Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
- GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Inclusive);
- gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
- gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
- procBuilder.addEndEvent("EndA").addEndEvent("EndB");
- Process proc = procBuilder.getProcess();
- return proc;
- }
+ public abstract Process getProcess();
}
\ No newline at end of file
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.parallel;
+
+// $Id$
+
+import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.model.Signal.SignalType;
+
+/**
+ * ParallelMergeTest using the ProcessBuilder
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class ParallelMergeProcBuilderTest extends ParallelMergeTest
+{
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+ eventBuilder = procBuilder.addStartEvent("StartB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
+ procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeProcBuilderTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 16:04:11 UTC (rev 1885)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -25,12 +25,8 @@
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.EventBuilder;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.ExecutionHandler;
@@ -45,7 +41,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public class ParallelMergeTest extends DefaultEngineTestCase
+public abstract class ParallelMergeTest extends DefaultEngineTestCase
{
public void testParallelMerge() throws Exception
{
@@ -128,21 +124,7 @@
assertEquals("TaskA:TaskB", TaskC.taskValue);
}
- private Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
- procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
- procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
- procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
- procBuilder.addEndEvent("End");
- Process proc = procBuilder.getProcess();
- return proc;
- }
+ public abstract Process getProcess();
public static class MergeListener implements SignalListener
{
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.gateway.parallel;
+
+// $Id$
+
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Gateway.GatewayType;
+
+/**
+ * ParallelMergeTest using the ParallelSplitTest
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 06-Aug-2008
+ */
+public class ParallelSplitProcBuilderTest extends ParallelSplitTest
+{
+ public Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split").addGateway("Split", GatewayType.Parallel).
+ addSequenceFlow("EndA").addSequenceFlow("EndB").addEndEvent("EndA").addEndEvent("EndB").getProcess();
+ return proc;
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitProcBuilderTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-13 16:04:11 UTC (rev 1885)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelSplitTest.java 2008-08-13 17:36:40 UTC (rev 1886)
@@ -26,10 +26,7 @@
import java.util.List;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -40,7 +37,7 @@
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
-public class ParallelSplitTest extends DefaultEngineTestCase
+public abstract class ParallelSplitTest extends DefaultEngineTestCase
{
public void testParallelSplit() throws Exception
{
@@ -56,11 +53,5 @@
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndB"));
}
- private Process getProcess()
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split").addGateway("Split", GatewayType.Parallel).
- addSequenceFlow("EndA").addSequenceFlow("EndB").addEndEvent("EndA").addEndEvent("EndB").getProcess();
- return proc;
- }
+ public abstract Process getProcess();
}
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge-api10.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge-api10.xml (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge-api10.xml 2008-08-13 17:36:40 UTC (rev 1886)
@@ -0,0 +1,24 @@
+<ns2:process name="exclusive-merge" xmlns:ns2="urn:bpm.jboss:pdl-0.1">
+ <start>
+ <seqflow to="TaskA" />
+ </start>
+ <task taskType="None" name="TaskA">
+ <seqflow to="Merge" />
+ <execution-handler class="org.jboss.bpm.cts.gateway.exclusive.ExclusiveMergeTest$TaskA" />
+ </task>
+ <start>
+ <seqflow to="TaskB" />
+ </start>
+ <task taskType="None" name="TaskB">
+ <seqflow to="Merge" />
+ <execution-handler class="org.jboss.bpm.cts.gateway.exclusive.ExclusiveMergeTest$TaskB" />
+ </task>
+ <exclusive-gateway name="Merge">
+ <seqflow to="TaskC" />
+ </exclusive-gateway>
+ <task taskType="None" name="TaskC">
+ <seqflow to="End" />
+ <execution-handler class="org.jboss.bpm.cts.gateway.exclusive.ExclusiveMergeTest$TaskC" />
+ </task>
+ <end name="End" />
+</ns2:process>
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge-api10.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.png
===================================================================
(Binary files differ)
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-merge.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-split.png
===================================================================
(Binary files differ)
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/exclusive/exclusive-split.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.png
===================================================================
(Binary files differ)
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-merge.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-split.png
===================================================================
(Binary files differ)
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/inclusive/inclusive-split.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn 2008-08-13 16:04:11 UTC (rev 1885)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn 2008-08-13 17:36:40 UTC (rev 1886)
@@ -1,12 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_AXFyUWOSEd2mS_8SFTXMeQ" iD="_AXFyUGOSEd2mS_8SFTXMeQ">
<pools xmi:type="bpmn:Pool" xmi:id="_AXHAcWOSEd2mS_8SFTXMeQ" iD="_AXHAcGOSEd2mS_8SFTXMeQ" name="Pool">
- <vertices xmi:type="bpmn:Activity" xmi:id="_EPuQwWOSEd2mS_8SFTXMeQ" iD="_EPuQwGOSEd2mS_8SFTXMeQ" outgoingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" incomingEdges="_ImmxcWOSEd2mS_8SFTXMeQ _JC-kYWOSEd2mS_8SFTXMeQ" activityType="GatewayParallel"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_FY9wwWOSEd2mS_8SFTXMeQ" iD="_FY9wwGOSEd2mS_8SFTXMeQ" outgoingEdges="_ImmxcWOSEd2mS_8SFTXMeQ" name="StartA" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_FobwIWOSEd2mS_8SFTXMeQ" iD="_FobwIGOSEd2mS_8SFTXMeQ" outgoingEdges="_JC-kYWOSEd2mS_8SFTXMeQ" name="StartB" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_LFtRIWOSEd2mS_8SFTXMeQ" iD="_LFtRIGOSEd2mS_8SFTXMeQ" incomingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" activityType="EventEndEmpty"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_ImmxcWOSEd2mS_8SFTXMeQ" iD="_ImmxcGOSEd2mS_8SFTXMeQ" source="_FY9wwWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_JC-kYWOSEd2mS_8SFTXMeQ" iD="_JC-kYGOSEd2mS_8SFTXMeQ" source="_FobwIWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_LxpxIWOSEd2mS_8SFTXMeQ" iD="_LxpxIGOSEd2mS_8SFTXMeQ" source="_EPuQwWOSEd2mS_8SFTXMeQ" target="_LFtRIWOSEd2mS_8SFTXMeQ"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_EPuQwWOSEd2mS_8SFTXMeQ" iD="_EPuQwGOSEd2mS_8SFTXMeQ" outgoingEdges="_6HqqgWlWEd2VTpmAjt3VIA" incomingEdges="_x1ziAWlWEd2VTpmAjt3VIA _25I5AWlWEd2VTpmAjt3VIA" activityType="GatewayParallel"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_FY9wwWOSEd2mS_8SFTXMeQ" iD="_FY9wwGOSEd2mS_8SFTXMeQ" outgoingEdges="_xbzGkWlWEd2VTpmAjt3VIA" name="StartA" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_FobwIWOSEd2mS_8SFTXMeQ" iD="_FobwIGOSEd2mS_8SFTXMeQ" outgoingEdges="_1inyAWlWEd2VTpmAjt3VIA" name="StartB" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_LFtRIWOSEd2mS_8SFTXMeQ" iD="_LFtRIGOSEd2mS_8SFTXMeQ" incomingEdges="_696WAWlWEd2VTpmAjt3VIA" activityType="EventEndEmpty"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_tQcgcWlWEd2VTpmAjt3VIA" iD="_tQcgcGlWEd2VTpmAjt3VIA" outgoingEdges="_x1ziAWlWEd2VTpmAjt3VIA" incomingEdges="_xbzGkWlWEd2VTpmAjt3VIA" name="TaskA"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_y-u48WlWEd2VTpmAjt3VIA" iD="_y-u48GlWEd2VTpmAjt3VIA" outgoingEdges="_25I5AWlWEd2VTpmAjt3VIA" incomingEdges="_1inyAWlWEd2VTpmAjt3VIA" name="TaskB"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_4Egf8WlWEd2VTpmAjt3VIA" iD="_4Egf8GlWEd2VTpmAjt3VIA" outgoingEdges="_696WAWlWEd2VTpmAjt3VIA" incomingEdges="_6HqqgWlWEd2VTpmAjt3VIA" name="TaskC"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_xbzGkWlWEd2VTpmAjt3VIA" iD="_xbzGkGlWEd2VTpmAjt3VIA" source="_FY9wwWOSEd2mS_8SFTXMeQ" target="_tQcgcWlWEd2VTpmAjt3VIA"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_x1ziAWlWEd2VTpmAjt3VIA" iD="_x1ziAGlWEd2VTpmAjt3VIA" source="_tQcgcWlWEd2VTpmAjt3VIA" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_1inyAWlWEd2VTpmAjt3VIA" iD="_1inyAGlWEd2VTpmAjt3VIA" source="_FobwIWOSEd2mS_8SFTXMeQ" target="_y-u48WlWEd2VTpmAjt3VIA"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_25I5AWlWEd2VTpmAjt3VIA" iD="_25I5AGlWEd2VTpmAjt3VIA" source="_y-u48WlWEd2VTpmAjt3VIA" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_6HqqgWlWEd2VTpmAjt3VIA" iD="_6HqqgGlWEd2VTpmAjt3VIA" source="_EPuQwWOSEd2mS_8SFTXMeQ" target="_4Egf8WlWEd2VTpmAjt3VIA"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_696WAWlWEd2VTpmAjt3VIA" iD="_696WAGlWEd2VTpmAjt3VIA" source="_4Egf8WlWEd2VTpmAjt3VIA" target="_LFtRIWOSEd2mS_8SFTXMeQ"/>
</pools>
</bpmn:BpmnDiagram>
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram 2008-08-13 16:04:11 UTC (rev 1885)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram 2008-08-13 17:36:40 UTC (rev 1886)
@@ -10,7 +10,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_EPve42OSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:LineStyle" xmi:id="_EPve5GOSEd2mS_8SFTXMeQ" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_EPuQwWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EPve5WOSEd2mS_8SFTXMeQ" x="108" y="72"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EPve5WOSEd2mS_8SFTXMeQ" x="240" y="72"/>
</children>
<children xmi:type="notation:Node" xmi:id="_FY--4GOSEd2mS_8SFTXMeQ" type="2001">
<children xmi:type="notation:Node" xmi:id="_FY_l8GOSEd2mS_8SFTXMeQ" type="4001"/>
@@ -37,8 +37,35 @@
<styles xmi:type="notation:FillStyle" xmi:id="_LFufQmOSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:LineStyle" xmi:id="_LFufQ2OSEd2mS_8SFTXMeQ" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_LFtRIWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LFufRGOSEd2mS_8SFTXMeQ" x="204" y="84"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LFufRGOSEd2mS_8SFTXMeQ" x="492" y="84"/>
</children>
+ <children xmi:type="notation:Node" xmi:id="_tQlDUGlWEd2VTpmAjt3VIA" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_tQmRcGlWEd2VTpmAjt3VIA" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tQlDUWlWEd2VTpmAjt3VIA" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_tQlDUmlWEd2VTpmAjt3VIA"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_tQlDU2lWEd2VTpmAjt3VIA"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_tQlDVGlWEd2VTpmAjt3VIA" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_tQcgcWlWEd2VTpmAjt3VIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tQlDVWlWEd2VTpmAjt3VIA" x="96" y="12"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_y-wHEGlWEd2VTpmAjt3VIA" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_y-wuIGlWEd2VTpmAjt3VIA" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_y-wHEWlWEd2VTpmAjt3VIA" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_y-wHEmlWEd2VTpmAjt3VIA"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_y-wHE2lWEd2VTpmAjt3VIA"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_y-wHFGlWEd2VTpmAjt3VIA" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_y-u48WlWEd2VTpmAjt3VIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y-wHFWlWEd2VTpmAjt3VIA" x="96" y="132"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_4EhHAGlWEd2VTpmAjt3VIA" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_4EhuEGlWEd2VTpmAjt3VIA" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4EhHAWlWEd2VTpmAjt3VIA" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_4EhHAmlWEd2VTpmAjt3VIA"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_4EhHA2lWEd2VTpmAjt3VIA"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_4EhHBGlWEd2VTpmAjt3VIA" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_4Egf8WlWEd2VTpmAjt3VIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4EhHBWlWEd2VTpmAjt3VIA" x="336" y="72"/>
+ </children>
<styles xmi:type="notation:DrawerStyle" xmi:id="_AXI1omOSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_AXI1o2OSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_AXI1pGOSEd2mS_8SFTXMeQ"/>
@@ -48,46 +75,82 @@
<styles xmi:type="notation:FillStyle" xmi:id="_AXIOk2OSEd2mS_8SFTXMeQ" fillColor="16771304"/>
<styles xmi:type="notation:LineStyle" xmi:id="_AXIOlGOSEd2mS_8SFTXMeQ" lineColor="11119017"/>
<element xmi:type="bpmn:Pool" href="parallel-merge.bpmn#_AXHAcWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AXI1pWOSEd2mS_8SFTXMeQ" x="16" y="16" width="424" height="213"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AXI1pWOSEd2mS_8SFTXMeQ" x="16" y="16" width="585" height="213"/>
</children>
<styles xmi:type="notation:PageStyle" xmi:id="_AXGZYWOSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:GuideStyle" xmi:id="_AXGZYmOSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:DescriptionStyle" xmi:id="_AXGZY2OSEd2mS_8SFTXMeQ"/>
<element xmi:type="bpmn:BpmnDiagram" href="parallel-merge.bpmn#_AXFyUWOSEd2mS_8SFTXMeQ"/>
- <edges xmi:type="notation:Edge" xmi:id="_ImomoGOSEd2mS_8SFTXMeQ" type="3001" source="_FY--4GOSEd2mS_8SFTXMeQ" target="_EPve4GOSEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_Imp0wGOSEd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_Imp0wWOSEd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Imp0wmOSEd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_Imp0w2OSEd2mS_8SFTXMeQ" y="-10"/>
+ <edges xmi:type="notation:Edge" xmi:id="_xb2w8GlWEd2VTpmAjt3VIA" type="3001" source="_FY--4GOSEd2mS_8SFTXMeQ" target="_tQlDUGlWEd2VTpmAjt3VIA">
+ <children xmi:type="notation:Node" xmi:id="_xb5NMGlWEd2VTpmAjt3VIA" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_xb5NMWlWEd2VTpmAjt3VIA" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_xb5NMmlWEd2VTpmAjt3VIA" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xb5NM2lWEd2VTpmAjt3VIA" y="-10"/>
</children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_ImomoWOSEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_ImomomOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Imomo2OSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_ImmxcWOSEd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ImompGOSEd2mS_8SFTXMeQ" points="[15, 11, -73, -63]$[106, 80, 18, 6]"/>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_xb2w8WlWEd2VTpmAjt3VIA" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_xb2w8mlWEd2VTpmAjt3VIA" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_xb2w82lWEd2VTpmAjt3VIA" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_xbzGkWlWEd2VTpmAjt3VIA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xb2w9GlWEd2VTpmAjt3VIA" points="[15, 1, -148, -14]$[217, 23, 54, 8]"/>
</edges>
- <edges xmi:type="notation:Edge" xmi:id="_JC_ygGOSEd2mS_8SFTXMeQ" type="3001" source="_Foc-QGOSEd2mS_8SFTXMeQ" target="_EPve4GOSEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_JDAZkGOSEd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_JDAZkWOSEd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_JDAZkmOSEd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_JDAZk2OSEd2mS_8SFTXMeQ" y="-10"/>
+ <edges xmi:type="notation:Edge" xmi:id="_x11-QGlWEd2VTpmAjt3VIA" type="3001" source="_tQlDUGlWEd2VTpmAjt3VIA" target="_EPve4GOSEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_x12lUGlWEd2VTpmAjt3VIA" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_x12lUWlWEd2VTpmAjt3VIA" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_x12lUmlWEd2VTpmAjt3VIA" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_x12lU2lWEd2VTpmAjt3VIA" y="-10"/>
</children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_JC_ygWOSEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_JC_ygmOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_JC_yg2OSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_JC-kYWOSEd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JC_yhGOSEd2mS_8SFTXMeQ" points="[15, -8, -70, 42]$[95, -35, 10, 15]"/>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_x11-QWlWEd2VTpmAjt3VIA" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_x11-QmlWEd2VTpmAjt3VIA" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_x11-Q2lWEd2VTpmAjt3VIA" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_x1ziAWlWEd2VTpmAjt3VIA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_x11-RGlWEd2VTpmAjt3VIA" points="[54, 6, -189, -37]$[244, 19, 1, -24]"/>
</edges>
- <edges xmi:type="notation:Edge" xmi:id="_Lxq_QGOSEd2mS_8SFTXMeQ" type="3001" source="_EPve4GOSEd2mS_8SFTXMeQ" target="_LFt4MGOSEd2mS_8SFTXMeQ">
- <children xmi:type="notation:Node" xmi:id="_LxrmUGOSEd2mS_8SFTXMeQ" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_LxrmUWOSEd2mS_8SFTXMeQ" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_LxrmUmOSEd2mS_8SFTXMeQ" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_LxrmU2OSEd2mS_8SFTXMeQ" y="-10"/>
+ <edges xmi:type="notation:Edge" xmi:id="_1ipAIGlWEd2VTpmAjt3VIA" type="3001" source="_Foc-QGOSEd2mS_8SFTXMeQ" target="_y-wHEGlWEd2VTpmAjt3VIA">
+ <children xmi:type="notation:Node" xmi:id="_1ipnMGlWEd2VTpmAjt3VIA" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_1ipnMWlWEd2VTpmAjt3VIA" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_1ipnMmlWEd2VTpmAjt3VIA" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1ipnM2lWEd2VTpmAjt3VIA" y="-10"/>
</children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_Lxq_QWOSEd2mS_8SFTXMeQ" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_Lxq_QmOSEd2mS_8SFTXMeQ" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_Lxq_Q2OSEd2mS_8SFTXMeQ" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_LxpxIWOSEd2mS_8SFTXMeQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Lxq_RGOSEd2mS_8SFTXMeQ" points="[24, -1, -86, -3]$[125, -4, 15, -6]"/>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_1ipAIWlWEd2VTpmAjt3VIA" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1ipAImlWEd2VTpmAjt3VIA" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_1ipAI2lWEd2VTpmAjt3VIA" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_1inyAWlWEd2VTpmAjt3VIA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1ipAJGlWEd2VTpmAjt3VIA" points="[15, -3, -199, 16]$[161, -46, -53, -27]"/>
</edges>
+ <edges xmi:type="notation:Edge" xmi:id="_25KHIGlWEd2VTpmAjt3VIA" type="3001" source="_y-wHEGlWEd2VTpmAjt3VIA" target="_EPve4GOSEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_25KuMGlWEd2VTpmAjt3VIA" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_25KuMWlWEd2VTpmAjt3VIA" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_25KuMmlWEd2VTpmAjt3VIA" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_25KuM2lWEd2VTpmAjt3VIA" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_25KHIWlWEd2VTpmAjt3VIA" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_25KHImlWEd2VTpmAjt3VIA" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_25KHI2lWEd2VTpmAjt3VIA" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_25I5AWlWEd2VTpmAjt3VIA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_25KHJGlWEd2VTpmAjt3VIA" points="[54, -10, -254, 53]$[303, -43, -5, 20]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_6Hr4oGlWEd2VTpmAjt3VIA" type="3001" source="_EPve4GOSEd2mS_8SFTXMeQ" target="_4EhHAGlWEd2VTpmAjt3VIA">
+ <children xmi:type="notation:Node" xmi:id="_6HsfsWlWEd2VTpmAjt3VIA" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_6HsfsmlWEd2VTpmAjt3VIA" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_6Hsfs2lWEd2VTpmAjt3VIA" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6HsftGlWEd2VTpmAjt3VIA" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_6Hr4oWlWEd2VTpmAjt3VIA" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_6Hr4omlWEd2VTpmAjt3VIA" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_6Hr4o2lWEd2VTpmAjt3VIA" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_6HqqgWlWEd2VTpmAjt3VIA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6HsfsGlWEd2VTpmAjt3VIA" points="[22, -3, -154, -6]$[175, -25, -1, -28]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_697kIGlWEd2VTpmAjt3VIA" type="3001" source="_4EhHAGlWEd2VTpmAjt3VIA" target="_LFt4MGOSEd2mS_8SFTXMeQ">
+ <children xmi:type="notation:Node" xmi:id="_698LMGlWEd2VTpmAjt3VIA" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_698LMWlWEd2VTpmAjt3VIA" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_698LMmlWEd2VTpmAjt3VIA" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_698LM2lWEd2VTpmAjt3VIA" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_697kIWlWEd2VTpmAjt3VIA" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_697kImlWEd2VTpmAjt3VIA" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_697kI2lWEd2VTpmAjt3VIA" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="parallel-merge.bpmn#_696WAWlWEd2VTpmAjt3VIA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_697kJGlWEd2VTpmAjt3VIA" points="[54, -2, -88, -1]$[127, -16, -15, -15]"/>
+ </edges>
</notation:Diagram>
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.png
===================================================================
(Binary files differ)
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-split.png
===================================================================
(Binary files differ)
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-split.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
17 years, 8 months
JBoss JBPM SVN: r1885 - in jbossbpm/spec/trunk/modules: samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-13 12:04:11 -0400 (Wed, 13 Aug 2008)
New Revision: 1885
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java
Log:
Pull up MessageListener setup
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-13 15:50:48 UTC (rev 1884)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-13 16:04:11 UTC (rev 1885)
@@ -36,6 +36,7 @@
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.BPMException;
import org.jboss.bpm.client.MessageListener;
+import org.jboss.bpm.client.MessageManager;
import org.jboss.bpm.client.ObjectNameFactory;
import org.jboss.bpm.client.SignalListener;
import org.jboss.bpm.client.SignalManager;
@@ -72,37 +73,28 @@
deployer = new EmbeddedBeansDeployer();
// Setup the SignalListener
- signalListener = new SignalListener()
- {
- public void catchSignal(Signal signal)
- {
- signals.add(signal);
- }
- };
SignalManager signalManager = SignalManager.locateSignalManager();
signalManager.addSignalListener(getName(), getSignalListener());
signals.clear();
// Setup the MessageListener
- messageListener = new MessageListener()
- {
- public ObjectName getID()
- {
- return getMessageListenerID();
- }
-
- public void catchMessage(Message message)
- {
- log.debug("catchMessage: " + message);
- messages.add(message);
- }
- };
+ MessageManager messageManager = MessageManager.locateMessageManager();
+ messageManager.addMessageListener(getMessageListener());
}
@Override
protected void tearDown() throws Exception
{
log.debug("tearDown: " + getClass().getName() + "." + getName());
+
+ // Tear down the SignalListener
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.removeSignalListeners(getName());
+
+ // Tear down the MessageListener
+ MessageManager messageManager = MessageManager.locateMessageManager();
+ messageManager.removeMessageListener(getMessageListenerID());
+
super.tearDown();
}
@@ -142,6 +134,16 @@
public SignalListener getSignalListener()
{
+ if (signalListener == null)
+ {
+ signalListener = new SignalListener()
+ {
+ public void catchSignal(Signal signal)
+ {
+ signals.add(signal);
+ }
+ };
+ }
return signalListener;
}
@@ -163,6 +165,22 @@
public MessageListener getMessageListener()
{
+ if (messageListener == null)
+ {
+ messageListener = new MessageListener()
+ {
+ public ObjectName getID()
+ {
+ return getMessageListenerID();
+ }
+
+ public void catchMessage(Message message)
+ {
+ log.debug("catchMessage: " + message);
+ messages.add(message);
+ }
+ };
+ }
return messageListener;
}
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java 2008-08-13 15:50:48 UTC (rev 1884)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java 2008-08-13 16:04:11 UTC (rev 1885)
@@ -52,11 +52,10 @@
}
@Override
- protected void setUp() throws Exception
+ public MessageListener getMessageListener()
{
- super.setUp();
msgListener = new AirticketMessageListener(getMessageListenerID());
- messageManager.addMessageListener(msgListener);
+ return msgListener;
}
@Override
17 years, 8 months
JBoss JBPM SVN: r1884 - jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-13 11:50:48 -0400 (Wed, 13 Aug 2008)
New Revision: 1884
Modified:
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java
Log:
Add testProcessRestart
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-13 15:45:31 UTC (rev 1883)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessStartTest.java 2008-08-13 15:50:48 UTC (rev 1884)
@@ -23,11 +23,15 @@
// $Id$
+import java.util.List;
+
import javax.management.ObjectName;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -63,11 +67,25 @@
proc.waitForEnd();
}
+ public void testProcessRestart() throws Exception
+ {
+ Process proc = getProcess();
+
+ proc.startProcess();
+ proc.waitForEnd();
+
+ proc.startProcess();
+ proc.waitForEnd();
+
+ List<Signal> signals = getSignals(SignalType.SYSTEM_END_EVENT_EXIT);
+ assertEquals(2, signals.size());
+ }
+
private Process getProcess()
{
ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- Process proc = builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("taskA").
- addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
+ Process proc = builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("TaskA").
+ addTask("TaskA").addSequenceFlow("End").addEndEvent("End").getProcess();
return proc;
}
}
17 years, 8 months
JBoss JBPM SVN: r1883 - in jbossbpm/spec/trunk/modules: testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-13 11:45:31 -0400 (Wed, 13 Aug 2008)
New Revision: 1883
Modified:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GateImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
Log:
InclusiveGateway ok
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GateImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GateImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GateImpl.java 2008-08-13 15:45:31 UTC (rev 1883)
@@ -63,4 +63,10 @@
{
throw new NotImplementedException();
}
+
+ public String toString()
+ {
+ String flowStr = seqFlow.toString();
+ return "Gate" + flowStr.substring(flowStr.indexOf('['));
+ }
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-13 15:45:31 UTC (rev 1883)
@@ -23,14 +23,31 @@
//$Id$
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jboss.bpm.model.Expression;
+import org.jboss.bpm.model.Gate;
+import org.jboss.bpm.model.GraphicalElement;
import org.jboss.bpm.model.InclusiveGateway;
+import org.jboss.bpm.model.SequenceFlow;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.SequenceFlow.ConditionType;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.FlowHandler;
+import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
+import org.jboss.bpm.runtime.Attachments.Key;
+import org.mvel.MVEL;
-
-
/**
- * This Decision represents a branching point where Alternatives are based on conditional expressions contained within outgoing Sequence Flow.
- * However, in this case, the True evaluation of one condition expression does not exclude the evaluation of other condition expressions.
- * All Sequence Flow with a True evaluation will be traversed by a Token.
+ * This Decision represents a branching point where Alternatives are based on conditional expressions contained within
+ * outgoing Sequence Flow. However, in this case, the True evaluation of one condition expression does not exclude the
+ * evaluation of other condition expressions. All Sequence Flow with a True evaluation will be traversed by a Token.
*
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
@@ -38,6 +55,9 @@
@SuppressWarnings("serial")
public class InclusiveGatewayImpl extends GatewayImpl implements InclusiveGateway
{
+ // provide logging
+ private static final Log log = LogFactory.getLog(InclusiveGatewayImpl.class);
+
public InclusiveGatewayImpl(String name)
{
super(name);
@@ -48,6 +68,114 @@
return GatewayType.Inclusive;
}
+ @Override
+ public FlowHandler getFlowHandler()
+ {
+ FlowHandler handler = super.getFlowHandler();
+ if (handler == null)
+ {
+ handler = new FlowHandler()
+ {
+ public void execute(TokenExecutor scheduler, Token token)
+ {
+ GraphicalElement sourceRef = token.getFlow().getSourceRef();
+ log.debug("Propagate token comming from: " + sourceRef);
+
+ // Get the applicable gates
+ List<Gate> applicableGates = getApplicableGates(token);
+ log.debug("applicableGates: " + applicableGates);
+
+ // Destroy the incomming token if there are
+ // more than one applicable gates
+ if (applicableGates.size() > 1)
+ scheduler.destroy(token);
+
+ for (Gate aux : applicableGates)
+ {
+ SequenceFlow outFlow = aux.getOutgoingSequenceFlow();
+ if (applicableGates.size() == 1)
+ {
+ scheduler.move(token, outFlow);
+ }
+ else
+ {
+ Token outToken = token.copyToken();
+ scheduler.create(outToken, outFlow);
+ scheduler.start(outToken);
+ }
+ }
+ }
+ };
+ }
+ return handler;
+ }
+
+ // 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<Gate> getApplicableGates(Token token)
+ {
+ List<Gate> applicableGates = new ArrayList<Gate>();
+ for (Gate auxGate : getGates())
+ {
+ SequenceFlow seqFlow = auxGate.getOutgoingSequenceFlow();
+ if (seqFlow.getConditionType() == ConditionType.Expression)
+ {
+ Expression expr = seqFlow.getConditionExpression();
+ if (expr.getExpressionLanguage() == ExpressionLanguage.MVEL)
+ {
+ String mvel = expr.getExpressionBody();
+ ExecutionContext exContext = token.getExecutionContext();
+ Map<String, Object> vars = new HashMap<String, Object>();
+ for (Key key : exContext.getAttachmentKeys())
+ {
+ String name = key.getNamePart();
+ Object value = exContext.getAttachment(name);
+ vars.put(name, value);
+ }
+ Boolean result = (Boolean)MVEL.eval(mvel, vars);
+ if (result == true)
+ {
+ applicableGates.add(auxGate);
+ }
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported expression language: " + expr.getExpressionLanguage());
+ }
+ }
+ }
+
+ // Use to the default gate if there is one
+ if (applicableGates.size() == 0)
+ {
+ for (Gate auxGate : getGates())
+ {
+ SequenceFlow seqFlow = auxGate.getOutgoingSequenceFlow();
+ if (seqFlow.getConditionType() == ConditionType.Default)
+ {
+ applicableGates.add(auxGate);
+ }
+ }
+ }
+
+ // Fallback to the single outgoing gate that is not conditional
+ if (applicableGates.size() == 0 && getGates().size() == 1)
+ {
+ Gate auxGate = getGates().get(0);
+ SequenceFlow seqFlow = auxGate.getOutgoingSequenceFlow();
+ if (seqFlow.getConditionType() == ConditionType.None)
+ {
+ applicableGates.add(auxGate);
+ }
+ }
+
+ if (applicableGates.size() == 0)
+ throw new IllegalStateException("Cannot select applicable gate in: " + this);
+
+ return applicableGates;
+ }
+
public String toString()
{
return "InclusiveGateway[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-13 15:45:31 UTC (rev 1883)
@@ -92,13 +92,13 @@
{
public void execute(TokenExecutor scheduler, Token token)
{
- // In any case the in token is not propagated
+ // In any case, the incomming token is not propagated
scheduler.suspend(token);
- // If the gateway has a single incomming flow the out token is the in token
+ // If the gateway has a single incomming flow the outgoing token is the incomming token
Token outToken = (getInFlows().size() == 1 ? token : null);
- // The out token is the merge of all in tokens
+ // The outgoing token is the merge of all incomming tokens
if (outToken == null)
{
// If there are no more outstanding flows
@@ -115,10 +115,10 @@
}
}
- // Schedule the out token
+ // Schedule the outgoing token
if (outToken != null)
{
- // Start a copy of the out token for every gate
+ // Start a copy of the outgoing token for every gate
for(Gate gate : getGates())
{
SequenceFlow outFlow = gate.getOutgoingSequenceFlow();
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-13 15:07:57 UTC (rev 1882)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-13 15:45:31 UTC (rev 1883)
@@ -172,6 +172,6 @@
public String toString()
{
- return "StartEvent[]";
+ return "StartEvent[" + getName() + "]";
}
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-13 15:07:57 UTC (rev 1882)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveMergeTest.java 2008-08-13 15:45:31 UTC (rev 1883)
@@ -23,6 +23,16 @@
// $Id$
+import java.util.List;
+
+import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -37,6 +47,31 @@
{
public void testGateA() throws Exception
{
- System.out.println("FIXME: InclusiveMergeTest");
+ Process proc = getProcess();
+ proc.startProcess();
+
+ // Send start trigger signals
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B"));
+
+ // Wait for the process to end
+ proc.waitForEnd();
+
+ List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
+ assertEquals(2, endSignals.size());
}
+
+ private Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
+ eventBuilder = procBuilder.addStartEvent("StartB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-13 15:07:57 UTC (rev 1882)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveSplitTest.java 2008-08-13 15:45:31 UTC (rev 1883)
@@ -23,6 +23,16 @@
// $Id$
+import java.util.List;
+
+import org.jboss.bpm.model.GatewayBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Expression.ExpressionLanguage;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.runtime.BasicAttachments;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
@@ -36,6 +46,40 @@
{
public void testGateA() throws Exception
{
- System.out.println("FIXME: InclusiveSplitTest");
+ Process proc = getProcess();
+
+ BasicAttachments att = new BasicAttachments();
+ att.addAttachment("foo", "5");
+ proc.startProcess(att);
+ proc.waitForEnd();
+
+ List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
+ assertEquals(2, endSignals.size());
}
-}
+
+ public void testGateB() throws Exception
+ {
+ Process proc = getProcess();
+
+ BasicAttachments att = new BasicAttachments();
+ att.addAttachment("foo", "15");
+ proc.startProcess(att);
+ proc.waitForEnd();
+
+ List<Signal> endSignals = getSignals(Signal.SignalType.SYSTEM_END_EVENT_EXIT);
+ assertEquals(1, endSignals.size());
+ assertEquals("EndB", endSignals.get(0).getFromRef());
+ }
+
+ private Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
+ GatewayBuilder gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Inclusive);
+ gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
+ gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
+ procBuilder.addEndEvent("EndA").addEndEvent("EndB");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
+}
\ No newline at end of file
17 years, 8 months
JBoss JBPM SVN: r1882 - in jbossbpm/spec/trunk/modules: ri/src/main/java/org/jboss/bpm/model/internal and 4 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-08-13 11:07:57 -0400 (Wed, 13 Aug 2008)
New Revision: 1882
Modified:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram
Log:
ParallelGateway ok
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/ProcessManagerImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -116,7 +116,9 @@
}
// Throw timeout exception if it took too long
- throw new ProcessTimeoutException("Process timeout for: " + procID);
+ ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + procID);
+ log.error(rte);
+ throw rte;
}
private Process getProcessStrict(ObjectName procID)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/client/internal/RunnableToken.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -102,6 +102,7 @@
}
catch(RuntimeException rte)
{
+ log.error("Process error", rte);
target.reset();
throw rte;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InclusiveGatewayImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -23,8 +23,6 @@
//$Id$
-import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.model.Gate;
import org.jboss.bpm.model.InclusiveGateway;
@@ -50,11 +48,6 @@
return GatewayType.Inclusive;
}
- public Gate getDefaultGate()
- {
- throw new NotImplementedException();
- }
-
public String toString()
{
return "InclusiveGateway[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ParallelGatewayImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -31,8 +31,6 @@
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.Gate;
import org.jboss.bpm.model.Gateway;
-import org.jboss.bpm.model.GraphicalElement;
-import org.jboss.bpm.model.NameSupport;
import org.jboss.bpm.model.ParallelGateway;
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.runtime.FlowHandler;
@@ -72,20 +70,15 @@
super.execute(token);
// Multiple incomingFlows must be synchronized
- if (getInFlows().size() > 1)
+ if (outstandingFlows == null)
{
- if (outstandingFlows == null)
- {
- outstandingFlows = new HashSet<ConnectingObject>(inFlows);
- mergeTokens = new HashSet<Token>();
- }
-
- ConnectingObject flow = token.getFlow();
- outstandingFlows.remove(flow);
-
- if (outstandingFlows.size() > 0)
- mergeTokens.add(token);
+ outstandingFlows = new HashSet<ConnectingObject>(inFlows);
+ mergeTokens = new HashSet<Token>();
}
+
+ ConnectingObject flow = token.getFlow();
+ outstandingFlows.remove(flow);
+ mergeTokens.add(token);
}
public FlowHandler getFlowHandler()
@@ -112,22 +105,13 @@
if (outstandingFlows.size() == 0)
{
// Merge the tokens together and submit the merged tokens
- outToken = mergeTokens(token);
+ outToken = getMergedTokens();
}
// There are outstanding flows
else if (outstandingFlows.size() > 0)
{
- Set<String> sourceNames = new HashSet<String>();
- for (ConnectingObject flow : outstandingFlows)
- {
- GraphicalElement sourceRef = flow.getSourceRef();
- if (sourceRef instanceof NameSupport)
- sourceNames.add(((NameSupport)sourceRef).getName());
- else
- sourceNames.add(sourceRef.getID().getCanonicalName());
- }
- log.debug("Waiting for [" + sourceNames + "] in gateway: " + gateway);
+ log.debug("Waiting for " + outstandingFlows + " in gateway: " + gateway);
}
}
@@ -166,12 +150,14 @@
mergeTokens = null;
}
- private Token mergeTokens(Token token)
+ private Token getMergedTokens()
{
TokenImpl mergedToken = new TokenImpl(null);
for (Token auxToken : mergeTokens)
+ {
+ log.debug("mergeToken: " + auxToken);
mergedToken.mergeToken(auxToken);
-
+ }
return mergedToken;
}
Modified: jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/samples/airticket/client/src/main/java/org/jboss/bpm/samples/airticket/client/Application.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -217,16 +217,14 @@
OrderMessage gwtMsg = new OrderMessage();
gwtMsg.creditCard = textCreditCard.getText();
gwtMsg.expire = textExpire.getText();
+ gwtMsg.acceptOffer = checkAccept.isChecked();
+ sendGwtMessage(gwtMsg);
// Note, that this shows how process logic leaks into
// the client code, which is not correct.
// Instead, the process should send a message when request data is required.
- if (gwtMsg.acceptOffer = checkAccept.isChecked())
+ if (checkAccept.isChecked() == false)
{
- sendGwtMessage(gwtMsg);
- }
- else
- {
setVisiblePanel(getRequestPanel());
labelMessage.setText(null);
}
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -37,47 +37,40 @@
public void sendMessage(GwtMessage gwtMsg)
{
+ ProcessManager pm = ProcessManager.locateProcessManager();
MessageManager mm = MessageManager.locateMessageManager();
SignalManager sm = SignalManager.locateSignalManager();
System.out.println(gwtMsg);
- ObjectName procID;
HttpSession httpSession = getThreadLocalRequest().getSession(false);
if (httpSession == null)
{
System.out.println("Create new Session");
httpSession = getThreadLocalRequest().getSession();
- // Create/Start a new process
- AirticketProcessBuilder procBuilder = new AirticketProcessBuilder(listenerID);
- Process proc = procBuilder.buildProcess();
- procID = proc.startProcess();
-
List<Message> messageQueue = new ArrayList<Message>();
AirticketMessageListener msgListener = new AirticketMessageListener(messageQueue);
mm.addMessageListener(msgListener);
- sm.addSignalListener(proc.getName(), new AirticketSignalListener());
+ sm.addSignalListener(AirticketProcessBuilder.PROCESS_NAME, new AirticketSignalListener());
- httpSession.setAttribute("procID", procID);
httpSession.setAttribute("messageQueue", messageQueue);
}
- else
+
+ // Create/Start a new process
+ ObjectName procID = (ObjectName)httpSession.getAttribute("procID");
+ if (procID == null || pm.getProcessByID(procID) == null)
{
- procID = (ObjectName)httpSession.getAttribute("procID");
+ System.out.println("Create new Process");
+ AirticketProcessBuilder procBuilder = new AirticketProcessBuilder(listenerID);
+ Process proc = procBuilder.buildProcess();
+ procID = proc.startProcess();
+ httpSession.setAttribute("procID", procID);
}
-
+
if (gwtMsg instanceof RequestMessage)
{
- // Start a new process
- if (httpSession.isNew() == false)
- {
- ProcessManager pm = ProcessManager.locateProcessManager();
- pm.startProcess(procID, null);
- httpSession.setAttribute("procID", procID);
- }
-
Message msg = getRequestMessage((RequestMessage)gwtMsg);
mm.sendMessage(procID, AirticketProcessBuilder.TASK_RECEIVE_REQUEST, msg);
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelMergeTest.java 2008-08-13 15:07:57 UTC (rev 1882)
@@ -23,20 +23,181 @@
// $Id$
+import org.jboss.bpm.client.SignalListener;
+import org.jboss.bpm.client.SignalManager;
+import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.Gateway.GatewayType;
+import org.jboss.bpm.model.Signal.SignalType;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.runtime.Token;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
- * Parallel gateway that that has multiple incoming sequence flows.
- * Each token arriving from an incoming sequence flow is stored in the gateway until a token has arrived from each incoming sequence flow.
- * The tokens are merged together and leave the gateway as a one.
+ * Parallel gateway that that has multiple incoming sequence flows. Each token arriving from an incoming sequence flow
+ * is stored in the gateway until a token has arrived from each incoming sequence flow. The tokens are merged together
+ * and leave the gateway as a one.
*
* @author thomas.diesler(a)jboss.com
* @since 06-Aug-2008
*/
public class ParallelMergeTest extends DefaultEngineTestCase
{
- public void testGateA() throws Exception
+ public void testParallelMerge() throws Exception
{
- System.out.println("FIXME: ParallelMergeTest");
+ Process proc = getProcess();
+ proc.startProcess();
+
+ // Add a signal listener that sends the other start trigger signal
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ // Wait for the process to end
+ proc.waitForEnd();
+
+ // Verify the result
+ assertEquals("TaskA:TaskB", TaskC.taskValue);
}
+
+ public void testMergeTimeout() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+
+ // Send start trigger signal
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ // Wait for the process to end
+ try
+ {
+ proc.waitForEnd(1000);
+ fail("timeout expected");
+ }
+ catch (RuntimeException rte)
+ {
+ // expected
+ }
+ }
+
+ public void testInvalidToken() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+
+ // Add a signal listener that sends the other start trigger signal
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ Signal startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ try
+ {
+ proc.waitForEnd();
+ fail("Expected: Unexpected token from: SequenceFlow[TaskA->Merge]");
+ }
+ catch (RuntimeException rte)
+ {
+ // expected
+ }
+
+ // Restart the process
+ proc.startProcess();
+
+ // Add a signal listener that sends the other start trigger signal
+ startTrigger = new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "B");
+ signalManager.addSignalListener(getName(), new MergeListener(getName(), startTrigger));
+
+ // Send start trigger signal
+ signalManager.throwSignal(proc.getName(), new Signal(getName(), SignalType.SYSTEM_START_TRIGGER, "A"));
+
+ // Wait for the process to end
+ proc.waitForEnd();
+
+ // Verify the result
+ assertEquals("TaskA:TaskB", TaskC.taskValue);
+ }
+
+ private Process getProcess()
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
+ eventBuilder = procBuilder.addStartEvent("StartB");
+ eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
+ procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
+ procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
+ procBuilder.addEndEvent("End");
+ Process proc = procBuilder.getProcess();
+ return proc;
+ }
+
+ public static class MergeListener implements SignalListener
+ {
+ private String fromRef;
+ private Signal nextSignal;
+
+ public MergeListener(String fromRef, Signal nextSignal)
+ {
+ this.fromRef = fromRef;
+ this.nextSignal = nextSignal;
+ }
+
+ public void catchSignal(Signal signal)
+ {
+ if (signal.getType() == SignalType.SYSTEM_GATEWAY_ENTER)
+ {
+ if (nextSignal != null)
+ {
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.throwSignal(fromRef, nextSignal);
+ nextSignal = null;
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskA implements ExecutionHandler
+ {
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment("taskA", "TaskA");
+ }
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskB implements ExecutionHandler
+ {
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment("taskB", "TaskB");
+ }
+ }
+
+ @SuppressWarnings("serial")
+ public static class TaskC implements ExecutionHandler
+ {
+ public static Object taskValue;
+
+ public void execute(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ taskValue = exContext.getAttachment("taskA") + ":" + exContext.getAttachment("taskB");
+ }
+ }
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn 2008-08-13 15:07:57 UTC (rev 1882)
@@ -2,8 +2,8 @@
<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_AXFyUWOSEd2mS_8SFTXMeQ" iD="_AXFyUGOSEd2mS_8SFTXMeQ">
<pools xmi:type="bpmn:Pool" xmi:id="_AXHAcWOSEd2mS_8SFTXMeQ" iD="_AXHAcGOSEd2mS_8SFTXMeQ" name="Pool">
<vertices xmi:type="bpmn:Activity" xmi:id="_EPuQwWOSEd2mS_8SFTXMeQ" iD="_EPuQwGOSEd2mS_8SFTXMeQ" outgoingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" incomingEdges="_ImmxcWOSEd2mS_8SFTXMeQ _JC-kYWOSEd2mS_8SFTXMeQ" activityType="GatewayParallel"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_FY9wwWOSEd2mS_8SFTXMeQ" iD="_FY9wwGOSEd2mS_8SFTXMeQ" outgoingEdges="_ImmxcWOSEd2mS_8SFTXMeQ" activityType="EventStartSignal"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_FobwIWOSEd2mS_8SFTXMeQ" iD="_FobwIGOSEd2mS_8SFTXMeQ" outgoingEdges="_JC-kYWOSEd2mS_8SFTXMeQ" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_FY9wwWOSEd2mS_8SFTXMeQ" iD="_FY9wwGOSEd2mS_8SFTXMeQ" outgoingEdges="_ImmxcWOSEd2mS_8SFTXMeQ" name="StartA" activityType="EventStartSignal"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_FobwIWOSEd2mS_8SFTXMeQ" iD="_FobwIGOSEd2mS_8SFTXMeQ" outgoingEdges="_JC-kYWOSEd2mS_8SFTXMeQ" name="StartB" activityType="EventStartSignal"/>
<vertices xmi:type="bpmn:Activity" xmi:id="_LFtRIWOSEd2mS_8SFTXMeQ" iD="_LFtRIGOSEd2mS_8SFTXMeQ" incomingEdges="_LxpxIWOSEd2mS_8SFTXMeQ" activityType="EventEndEmpty"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_ImmxcWOSEd2mS_8SFTXMeQ" iD="_ImmxcGOSEd2mS_8SFTXMeQ" source="_FY9wwWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_JC-kYWOSEd2mS_8SFTXMeQ" iD="_JC-kYGOSEd2mS_8SFTXMeQ" source="_FobwIWOSEd2mS_8SFTXMeQ" target="_EPuQwWOSEd2mS_8SFTXMeQ"/>
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram 2008-08-13 13:59:52 UTC (rev 1881)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/gateway/parallel/parallel-merge.bpmn_diagram 2008-08-13 15:07:57 UTC (rev 1882)
@@ -19,7 +19,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_FY--42OSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:LineStyle" xmi:id="_FY--5GOSEd2mS_8SFTXMeQ" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="parallel-merge.bpmn#_FY9wwWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FY--5WOSEd2mS_8SFTXMeQ" x="43" y="23"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FY--5WOSEd2mS_8SFTXMeQ" x="36" y="24" width="50"/>
</children>
<children xmi:type="notation:Node" xmi:id="_Foc-QGOSEd2mS_8SFTXMeQ" type="2001">
<children xmi:type="notation:Node" xmi:id="_FodlUGOSEd2mS_8SFTXMeQ" type="4001"/>
@@ -48,7 +48,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_AXIOk2OSEd2mS_8SFTXMeQ" fillColor="16771304"/>
<styles xmi:type="notation:LineStyle" xmi:id="_AXIOlGOSEd2mS_8SFTXMeQ" lineColor="11119017"/>
<element xmi:type="bpmn:Pool" href="parallel-merge.bpmn#_AXHAcWOSEd2mS_8SFTXMeQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AXI1pWOSEd2mS_8SFTXMeQ" x="16" y="16" width="345" height="200"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AXI1pWOSEd2mS_8SFTXMeQ" x="16" y="16" width="424" height="213"/>
</children>
<styles xmi:type="notation:PageStyle" xmi:id="_AXGZYWOSEd2mS_8SFTXMeQ"/>
<styles xmi:type="notation:GuideStyle" xmi:id="_AXGZYmOSEd2mS_8SFTXMeQ"/>
17 years, 8 months