[jbpm-commits] JBoss JBPM SVN: r1809 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/model and 9 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Aug 2 19:46:18 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-08-02 19:46:18 -0400 (Sat, 02 Aug 2008)
New Revision: 1809
Added:
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/AirticketAPIDescriptorTest.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketSTPDescriptorTest.java
Removed:
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/STPProcessIncludeTest.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/describtion.txt
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/DialectHandler.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/DialectHandlerImpl.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.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/FlowObjectImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.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/TaskImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/.project
jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.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/samples/airticket/server/src/test/resources/samples/airticket/airticket.bpmn
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket.bpmn_diagram
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket.png
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java
Log:
STP descriptor include - ok
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/DialectHandler.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/DialectHandler.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/DialectHandler.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -37,6 +37,8 @@
*/
public interface DialectHandler
{
+ String DEFAULT_NAMESPACE_URI = "urn:bpm.jboss:pdl-0.1";
+
/**
* Get the the supported namespace from this dialect.
*/
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -67,4 +67,16 @@
* When two Gates are required, one of them MAY be the DefaultGate.
*/
List<Gate> getGates();
+
+ /**
+ * Get the optional default gate
+ * @return null if there is none
+ */
+ Gate getDefaultGate();
+
+ /**
+ * Get the gate for the given target name
+ * @return null if there is none
+ */
+ Gate getGateByTargetName(String targetName);
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -21,6 +21,7 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Task.TaskType;
import org.jboss.bpm.runtime.ExecutionHandler;
@@ -43,9 +44,10 @@
ProcessBuilder addProcess(String name);
/**
- * Merge with another {@link Process}
+ * Add all elements from another {@link Process}.
+ * This is typically used by a {@link DialectHandler} when processing an include.
*/
- ProcessBuilder mergeProcess(Process proc);
+ ProcessBuilder addProcessElements(Process proc);
/**
* Get the {@link Process}.
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/DialectHandlerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/DialectHandlerImpl.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/DialectHandlerImpl.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -43,11 +43,9 @@
*/
public class DialectHandlerImpl implements DialectHandler
{
- public static final String NAMESPACE_URI = "urn:bpm.jboss:pdl-0.1";
-
public String getNamespaceURI()
{
- return NAMESPACE_URI;
+ return DEFAULT_NAMESPACE_URI;
}
public Process createProcess(String pXML, boolean isInclude)
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-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -25,6 +25,7 @@
import java.io.IOException;
import java.io.Reader;
+import java.io.StringWriter;
import java.net.MalformedURLException;
import java.net.URL;
@@ -151,8 +152,15 @@
ProcessManager pm = ProcessManager.locateProcessManager();
DialectHandler dh = pm.getDialectHandler(nsURI);
- Process procInclude = dh.createProcess(procURL, true);
- procBuilder.mergeProcess(procInclude);
+ Process procIncl = dh.createProcess(procURL, true);
+
+ // Debug the included process
+ StringWriter strwr = new StringWriter();
+ DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
+ dhapi.marshallProcess(procIncl, strwr);
+ //System.out.println(strwr);
+
+ procBuilder.addProcessElements(procIncl);
}
}
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -55,7 +55,7 @@
Process expProc = procBuilder.getProcess(true);
ProcessManager pm = ProcessManager.locateProcessManager();
- DialectHandler dh = pm.getDialectHandler(DialectHandlerImpl.NAMESPACE_URI);
+ DialectHandler dh = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
StringWriter strwr = new StringWriter();
dh.marshallProcess(expProc, strwr);
@@ -76,7 +76,7 @@
Process expProc = procBuilder.getProcess(true);
ProcessManager pm = ProcessManager.locateProcessManager();
- DialectHandler dh = pm.getDialectHandler(DialectHandlerImpl.NAMESPACE_URI);
+ DialectHandler dh = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
StringWriter strwr = new StringWriter();
dh.marshallProcess(expProc, strwr);
@@ -100,7 +100,7 @@
Process expProc = procBuilder.getProcess(true);
ProcessManager pm = ProcessManager.locateProcessManager();
- DialectHandler dh = pm.getDialectHandler(DialectHandlerImpl.NAMESPACE_URI);
+ DialectHandler dh = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
StringWriter strwr = new StringWriter();
dh.marshallProcess(expProc, strwr);
Modified: jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -168,7 +168,14 @@
else if (activityType == ActivityType.TASK)
{
String name = stpActivity.getLabel();
- builder.addTask(name, TaskType.None);
+
+ TaskType taskType = TaskType.None;
+ if (name.startsWith("Send"))
+ taskType = TaskType.Send;
+ if (name.startsWith("Receive"))
+ taskType = TaskType.Receive;
+
+ builder.addTask(name, taskType);
adaptOutgoingEdges(builder, stpActivity);
}
else if (activityType == ActivityType.GATEWAY_DATA_BASED_EXCLUSIVE)
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-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExclusiveGatewayImpl.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -31,6 +31,7 @@
import org.jboss.bpm.model.Expression;
import org.jboss.bpm.model.Flow;
import org.jboss.bpm.model.Gate;
+import org.jboss.bpm.model.Gateway;
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Expression.ExpressionLanguage;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
@@ -73,6 +74,7 @@
@Override
public FlowHandler getFlowHandler()
{
+ final Gateway gateway = this;
FlowHandler handler = super.getFlowHandler();
if (handler == null && getGates().size() > 1)
{
@@ -127,7 +129,7 @@
}
if (selectedGate == null)
- throw new IllegalStateException("Cannot select applicable gate for: " + token);
+ throw new IllegalStateException("Cannot select applicable gate in: " + gateway);
SequenceFlow outFlow = selectedGate.getOutgoingSequenceFlow();
scheduler.scheduleTuple(outFlow, token);
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -95,17 +95,6 @@
// noting to do
}
- public void merge(FlowObjectImpl foIncl)
- {
- // Merge Handlers
- if (executionHandler == null)
- executionHandler = foIncl.getExecutionHandler();
- if (flowHandler == null)
- flowHandler = foIncl.getFlowHandler();
- if (signalHandler == null)
- signalHandler = foIncl.getSignalHandler();
- }
-
@Override
protected void initialize(Process proc)
{
@@ -126,7 +115,7 @@
{
String auxName = ((NameSupport)aux).getName();
if (name.equals(auxName))
- throw new NameNotUniqueException("NamedFlowObject: " + this);
+ throw new NameNotUniqueException(this.toString());
}
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/GatewayImpl.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -26,7 +26,9 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
@@ -40,6 +42,7 @@
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.SequenceFlow;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.SequenceFlow.ConditionType;
import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.FlowHandler;
import org.jboss.bpm.runtime.FlowScheduler;
@@ -48,8 +51,8 @@
import org.jboss.bpm.runtime.internal.TokenImpl;
/**
- * Gateways are modelling elements that are used to control how Sequence Flow interact as they converge and diverge within a Process. If the flow does not need to be
- * controlled, then a Gateway is not needed.
+ * Gateways are modelling elements that are used to control how Sequence Flow interact as they converge and diverge
+ * within a Process. If the flow does not need to be controlled, then a Gateway is not needed.
*
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
@@ -62,7 +65,9 @@
private String name;
protected List<Flow> inFlows = new ArrayList<Flow>();
- private List<Gate> gates = new ArrayList<Gate>();
+ private Map<String, Gate> gates = new LinkedHashMap<String, Gate>();
+
+ // Sync management
private Set<Flow> outstandingFlows;
private Set<Token> mergeTokens;
@@ -78,14 +83,15 @@
public List<Gate> getGates()
{
- return Collections.unmodifiableList(gates);
+ return Collections.unmodifiableList(new ArrayList<Gate>(gates.values()));
}
public void addGate(Gate gate)
{
- gates.add(gate);
+ String targetName = gate.getOutgoingSequenceFlow().getTargetName();
+ gates.put(targetName, gate);
}
-
+
public List<Flow> getInFlows()
{
return Collections.unmodifiableList(inFlows);
@@ -96,10 +102,31 @@
this.inFlows.add(inFlow);
}
+ public Gate getDefaultGate()
+ {
+ Gate gate = null;
+ for (Gate aux : gates.values())
+ {
+ SequenceFlow seqFlow = aux.getOutgoingSequenceFlow();
+ if (seqFlow.getConditionType() == ConditionType.Default)
+ {
+ gate = aux;
+ break;
+ }
+ }
+ return gate;
+ }
+
+ public Gate getGateByTargetName(String targetName)
+ {
+ Gate gate = gates.get(targetName);
+ return gate;
+ }
+
@Override
public void execute(Token token)
{
- // Multiple incomingFlows must be synchronized
+ // Multiple incomingFlows must be synchronized
if (getInFlows().size() > 1)
{
if (outstandingFlows == null)
@@ -107,14 +134,14 @@
outstandingFlows = new HashSet<Flow>(inFlows);
mergeTokens = new HashSet<Token>();
}
-
+
Flow flow = token.getFlow();
outstandingFlows.remove(flow);
-
+
if (outstandingFlows.size() > 0)
mergeTokens.add(token);
}
-
+
// Call the execution handler with the InputSet
ExecutionHandler handler = getExecutionHandler();
if (handler != null)
@@ -122,7 +149,7 @@
handler.execute(token, null, null);
}
}
-
+
public ExecutionHandler getExecutionHandler()
{
ExecutionHandler handler = super.getExecutionHandler();
@@ -144,7 +171,8 @@
FlowHandler handler = super.getFlowHandler();
if (handler == null && gates.size() == 1)
{
- final SequenceFlow outFlow = gates.get(0).getOutgoingSequenceFlow();
+ Gate onlyGate = gates.values().iterator().next();
+ final SequenceFlow outFlow = onlyGate.getOutgoingSequenceFlow();
handler = new FlowHandler()
{
public void execute(FlowScheduler scheduler, Token token)
@@ -162,7 +190,7 @@
{
// Log the list of outstanding flows
Set<String> sourceNames = new HashSet<String>();
- for(Flow flow : outstandingFlows)
+ for (Flow flow : outstandingFlows)
{
GraphicalElement sourceRef = flow.getSourceRef();
if (sourceRef instanceof NameSupport)
@@ -188,10 +216,10 @@
TokenImpl mergedToken = new TokenImpl(token.getProcess(), null);
for (Token auxToken : mergeTokens)
mergedToken.mergeToken(auxToken);
-
+
return mergedToken;
}
-
+
public SignalHandler getSignalHandler()
{
SignalHandler handler = super.getSignalHandler();
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -24,8 +24,10 @@
//$Id$
import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.Gateway;
import org.jboss.bpm.model.GatewayBuilder;
+import org.jboss.bpm.model.Message;
import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
@@ -63,9 +65,16 @@
return this;
}
- public ProcessBuilder mergeProcess(Process procInclude)
+ public ProcessBuilder addProcessElements(Process addProc)
{
- proc.merge(procInclude);
+ for(Message msg : addProc.getMessages())
+ {
+ proc.addMessage(msg);
+ }
+ for(FlowObject fo : addProc.getFlowObjects())
+ {
+ proc.addFlowObject(fo);
+ }
return this;
}
@@ -125,22 +134,23 @@
public ProcessBuilder addStartEvent()
{
- flowObject = new StartEventImpl();
- addFlowObject();
+ flowObject = addFlowObject(new StartEventImpl());
return this;
}
public ProcessBuilder addEvent(String name)
{
- flowObject = new IntermediateEventImpl(name);
- addFlowObject();
+ flowObject = (FlowObjectImpl)proc.getFlowObjectByName(name);
+ if (flowObject == null)
+ flowObject = addFlowObject(new IntermediateEventImpl(name));
return this;
}
public ProcessBuilder addEndEvent(String name)
{
- flowObject = new EndEventImpl(name);
- addFlowObject();
+ flowObject = (FlowObjectImpl)proc.getFlowObjectByName(name);
+ if (flowObject == null)
+ flowObject = addFlowObject(new EndEventImpl(name));
return this;
}
@@ -151,45 +161,53 @@
public TaskBuilder addTask(String name, TaskType type)
{
- if (type == TaskType.None || type == null)
+ flowObject = (FlowObjectImpl)proc.getFlowObjectByName(name);
+ if (flowObject == null)
{
- flowObject = new NoneTaskImpl(name);
+ if (type == TaskType.None || type == null)
+ {
+ flowObject = new NoneTaskImpl(name);
+ }
+ else if (type == TaskType.Receive)
+ {
+ flowObject = new ReceiveTaskImpl(name);
+ }
+ else if (type == TaskType.Send)
+ {
+ flowObject = new SendTaskImpl(name);
+ }
+ else
+ {
+ throw new NotImplementedException("Task type: " + type);
+ }
+ addFlowObject(flowObject);
}
- else if (type == TaskType.Receive)
- {
- flowObject = new ReceiveTaskImpl(name);
- }
- else if (type == TaskType.Send)
- {
- flowObject = new SendTaskImpl(name);
- }
- else
- {
- throw new NotImplementedException("Task type: " + type);
- }
- addFlowObject();
return new TaskBuilderImpl(proc, flowObject);
}
public GatewayBuilder addGateway(String name, GatewayType type)
{
- if (GatewayType.Exclusive == type)
+ flowObject = (FlowObjectImpl)proc.getFlowObjectByName(name);
+ if (flowObject == null)
{
- flowObject = new ExclusiveGatewayDataBasedImpl(name);
+ if (GatewayType.Exclusive == type)
+ {
+ flowObject = new ExclusiveGatewayDataBasedImpl(name);
+ }
+ else if (GatewayType.Inclusive == type)
+ {
+ flowObject = new InclusiveGatewayImpl(name);
+ }
+ else if (GatewayType.Parallel == type)
+ {
+ flowObject = new ParallelGatewayImpl(name);
+ }
+ else if (GatewayType.Complex == type)
+ {
+ flowObject = new ComplexGatewayImpl(name);
+ }
+ addFlowObject(flowObject);
}
- else if (GatewayType.Inclusive == type)
- {
- flowObject = new InclusiveGatewayImpl(name);
- }
- else if (GatewayType.Parallel == type)
- {
- flowObject = new ParallelGatewayImpl(name);
- }
- else if (GatewayType.Complex == type)
- {
- flowObject = new ComplexGatewayImpl(name);
- }
- addFlowObject();
return new GatewayBuilderImpl(proc, flowObject);
}
@@ -247,11 +265,12 @@
return this;
}
- private void addFlowObject()
+ private FlowObjectImpl addFlowObject(FlowObjectImpl fo)
{
if (proc == null)
throw new IllegalStateException("No process has been added");
- proc.addFlowObject(flowObject);
+ proc.addFlowObject(fo);
+ return fo;
}
}
\ No newline at end of file
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-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -279,9 +279,29 @@
this.status = status;
}
- /**
- * Set the process state
- */
+ public List<Message> getMessages()
+ {
+ return Collections.unmodifiableList(messages);
+ }
+
+ public void addMessage(Message msg)
+ {
+ if (getMessageByName(msg.getName()) != null)
+ throw new InvalidProcessException("Duplicate message: " + msg);
+
+ messages.add(msg);
+ }
+
+ public Message getMessageByName(String msgName)
+ {
+ for (Message msg : messages)
+ {
+ if (msg.getName().equals(msgName))
+ return msg;
+ }
+ return null;
+ }
+
public void initialize()
{
if (status != Status.None)
@@ -312,53 +332,6 @@
status = Status.Ready;
}
- public List<Message> getMessages()
- {
- return Collections.unmodifiableList(messages);
- }
-
- public void addMessage(Message msg)
- {
- if (getMessageByName(msg.getName()) != null)
- throw new InvalidProcessException("Duplicate message: " + msg);
-
- messages.add(msg);
- }
-
- public Message getMessageByName(String msgName)
- {
- for (Message msg : messages)
- {
- if (msg.getName().equals(msgName))
- return msg;
- }
- return null;
- }
-
- public void merge(Process procIncl)
- {
- for(Message msg : procIncl.getMessages())
- {
- addMessage(msg);
- }
- for(FlowObject foIncl : procIncl.getFlowObjects())
- {
- if (foIncl instanceof NameSupport)
- {
- String foName = ((NameSupport)foIncl).getName();
- FlowObjectImpl fo = (FlowObjectImpl)getFlowObjectByName(foName);
- if (fo != null)
- {
- fo.merge((FlowObjectImpl)foIncl);
- }
- else
- {
- addFlowObject(foIncl);
- }
- }
- }
- }
-
public String toString()
{
return "Process[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -77,7 +77,7 @@
public String toString()
{
- return "Task[" + getName() + "]";
+ return "Task[" + getTaskType() + "," + getName() + "]";
}
protected void initializeMessageRef(Process proc, Message msg)
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/.project
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/.project 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/.project 2008-08-02 23:46:18 UTC (rev 1809)
@@ -15,9 +15,15 @@
<arguments>
</arguments>
</buildCommand>
+ <buildCommand>
+ <name>org.eclipse.stp.bpmn.validation.BatchValidationBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.maven.ide.eclipse.maven2Nature</nature>
+ <nature>org.eclipse.stp.bpmn.validation.BatchValidationBuildAbleNature</nature>
</natures>
</projectDescription>
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -57,15 +57,15 @@
procBuilder.addProcess("Airticket");
// Add Start Event
- procBuilder.addStartEvent().addSequenceFlow("ReceiveReqTask");
+ procBuilder.addStartEvent().addSequenceFlow("ReceiveReq");
// Build the ReceiveReqTask
- TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReqTask", TaskType.Receive);
+ TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReq", TaskType.Receive);
taskBuilder.addMessageRef("ReqDataMsg").
- addSequenceFlow("ValidateTask");
+ addSequenceFlow("Validate");
// Build the ValidateTask
- taskBuilder = procBuilder.addTask("ValidateTask");
+ taskBuilder = procBuilder.addTask("Validate");
taskBuilder.addExecutionHandler(ValidationHandler.class).
addInputSet().
addPropertyInput("Name", null).
@@ -75,15 +75,15 @@
addPropertyInput("Seats", null).
addOutputSet().
addPropertyOutput("isReqDataValid", null).
- addSequenceFlow("ValidateGateway");
+ addSequenceFlow("IsValid");
// Build the ValidateGateway
- GatewayBuilder gatewayBuilder = procBuilder.addGateway("ValidateGateway", GatewayType.Exclusive);
- gatewayBuilder.addConditionalGate("CheckAvailabilityTask", ExpressionLanguage.MVEL, "isReqDataValid == true").
- addDefaultGate("SendInvalidTask");
+ GatewayBuilder gatewayBuilder = procBuilder.addGateway("IsValid", GatewayType.Exclusive);
+ gatewayBuilder.addConditionalGate("CheckAvailable", ExpressionLanguage.MVEL, "isReqDataValid == true").
+ addDefaultGate("SendInvalid");
// Build the CheckAvailabilityTask
- taskBuilder = procBuilder.addTask("CheckAvailabilityTask");
+ taskBuilder = procBuilder.addTask("CheckAvailable");
taskBuilder.addExecutionHandler(AvailabilityHandler.class).
addInputSet().
addPropertyInput("From", null).
@@ -93,67 +93,67 @@
addOutputSet().
addPropertyOutput("isAvailable", null).
addPropertyOutput("Price", null).
- addSequenceFlow("AvailabilityGateway");
+ addSequenceFlow("IsAvailable");
// Build the SendInvalidTask
- taskBuilder = procBuilder.addTask("SendInvalidTask", TaskType.Send);
+ taskBuilder = procBuilder.addTask("SendInvalid", TaskType.Send);
taskBuilder.addMessageRef("InvalidDataMsg").
- addSequenceFlow("ReceiveReqTask");
+ addSequenceFlow("ReceiveReq");
// Build the AvailabilityGateway
- gatewayBuilder = procBuilder.addGateway("AvailabilityGateway", GatewayType.Exclusive);
- gatewayBuilder.addConditionalGate("SendOfferTask", ExpressionLanguage.MVEL, "isAvailable == true").
- addDefaultGate("SendNotAvailableTask");
+ gatewayBuilder = procBuilder.addGateway("IsAvailable", GatewayType.Exclusive);
+ gatewayBuilder.addConditionalGate("SendOffer", ExpressionLanguage.MVEL, "isAvailable == true").
+ addDefaultGate("SendNotAvailable");
// Build the SendOfferTask
- taskBuilder = procBuilder.addTask("SendOfferTask", TaskType.Send);
+ taskBuilder = procBuilder.addTask("SendOffer", TaskType.Send);
taskBuilder.addMessageRef("OfferMsg").
- addSequenceFlow("ReceiveOrderTask");
+ addSequenceFlow("ReceiveOrder");
// Build the SendNotAvailableTask
- taskBuilder = procBuilder.addTask("SendNotAvailableTask", TaskType.Send);
+ taskBuilder = procBuilder.addTask("SendNotAvailable", TaskType.Send);
taskBuilder.addMessageRef("NotAvailableMsg").
- addSequenceFlow("ReceiveReqTask");
+ addSequenceFlow("ReceiveReq");
// Build the ReceiveReqTask
- taskBuilder = procBuilder.addTask("ReceiveOrderTask", TaskType.Receive);
+ taskBuilder = procBuilder.addTask("ReceiveOrder", TaskType.Receive);
taskBuilder.addMessageRef("AcceptOfferMsg").
- addSequenceFlow("AcceptOfferGateway");
+ addSequenceFlow("IsAccepted");
// Build the AcceptOfferGateway
- gatewayBuilder = procBuilder.addGateway("AcceptOfferGateway", GatewayType.Exclusive);
- gatewayBuilder.addConditionalGate("ParallelSplitGateway", ExpressionLanguage.MVEL, "isOfferAccepted == true").
- addDefaultGate("ReceiveReqTask");
+ gatewayBuilder = procBuilder.addGateway("IsAccepted", GatewayType.Exclusive);
+ gatewayBuilder.addConditionalGate("Split", ExpressionLanguage.MVEL, "isOfferAccepted == true").
+ addDefaultGate("ReceiveReq");
// Build the AcceptOfferGateway
- gatewayBuilder = procBuilder.addGateway("ParallelSplitGateway", GatewayType.Parallel);
- gatewayBuilder.addGate("CreditCardTask").
- addGate("BookingTask");
+ gatewayBuilder = procBuilder.addGateway("Split", GatewayType.Parallel);
+ gatewayBuilder.addGate("CreditCard").
+ addGate("Booking");
// Build the CreditCardTask
- taskBuilder = procBuilder.addTask("CreditCardTask");
+ taskBuilder = procBuilder.addTask("CreditCard");
taskBuilder.addInputSet().
addPropertyInput("CreditCard", null).
addPropertyInput("Expire", null).
addPropertyInput("Price", null).
- addSequenceFlow("SynchronizedJoinGateway");
+ addSequenceFlow("SyncJoin");
// Build the BookingTask
- taskBuilder = procBuilder.addTask("BookingTask");
+ taskBuilder = procBuilder.addTask("Booking");
taskBuilder.addInputSet().
addPropertyInput("Name", null).
addPropertyInput("From", null).
addPropertyInput("To", null).
addPropertyInput("Date", null).
addPropertyInput("Seats", null).
- addSequenceFlow("SynchronizedJoinGateway");
+ addSequenceFlow("SyncJoin");
// Build the SynchronizedJoinGateway
- gatewayBuilder = procBuilder.addGateway("SynchronizedJoinGateway", GatewayType.Parallel);
- gatewayBuilder.addGate("SendConfirmTask");
+ gatewayBuilder = procBuilder.addGateway("SyncJoin", GatewayType.Parallel);
+ gatewayBuilder.addGate("SendConfirm");
// Build the SendConfirmTask
- taskBuilder = procBuilder.addTask("SendConfirmTask", TaskType.Send);
+ taskBuilder = procBuilder.addTask("SendConfirm", TaskType.Send);
taskBuilder.addMessageRef("ConfirmMsg").
addSequenceFlow("End");
Copied: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java (from rev 1804, jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java)
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AbstractAirticketTest.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -0,0 +1,173 @@
+/*
+ * 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.samples.airticket;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+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;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
+import org.jboss.bpm.model.MessageBuilderFactory;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test the Airticket sample application
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 03-Jul-2008
+ */
+public abstract class AbstractAirticketTest extends DefaultEngineTestCase
+{
+ @Override
+ public ObjectName getMessageListenerID()
+ {
+ return ObjectNameFactory.create("jboss.bpm:client=AirticketTest");
+ }
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+
+ // Add a signal listener
+ SignalListener sl = new SignalListener()
+ {
+ public void catchSignal(Signal signal)
+ {
+ // System.out.println(signal);
+ }
+ };
+ SignalManager engine = SignalManager.locateSignalManager();
+ engine.addSignalListener("Airticket", sl);
+ }
+
+ protected void runProcessInvalidData(Process proc)
+ {
+ MessageManager mm = MessageManager.locateMessageManager();
+ AirticketMessageListener msgListener = new AirticketMessageListener(getMessageListenerID());
+ mm.addMessageListener(msgListener);
+
+ mm.sendMessage(proc.getID(), "ReceiveReq", getInvalidRequestMessage());
+ proc.waitForEnd();
+
+ Message confirmMessage = msgListener.getConfirmMessage();
+ assertNotNull("Expected confirm message", confirmMessage);
+ String price = confirmMessage.getPropertyValue("Price");
+ assertEquals("222", price);
+ }
+
+ protected void runProcessValidData(Process proc)
+ {
+ MessageManager mm = MessageManager.locateMessageManager();
+ AirticketMessageListener msgListener = new AirticketMessageListener(getMessageListenerID());
+ mm.addMessageListener(msgListener);
+
+ mm.sendMessage(proc.getID(), "ReceiveReq", getValidRequestMessage());
+ proc.waitForEnd();
+
+ Message confirmMessage = msgListener.getConfirmMessage();
+ assertNotNull("Expected confirm message", confirmMessage);
+ String price = confirmMessage.getPropertyValue("Price");
+ assertEquals("222", price);
+ }
+
+ private Message getValidRequestMessage()
+ {
+ MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
+ MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
+ Message msg = msgBuilder.newMessage("ReqDataMsg").
+ addProperty("Name", "Kermit").
+ addProperty("From", "MUC").
+ addProperty("To", "NYC").
+ addProperty("Date", "25-Jul-2008").
+ addProperty("Seats", "2").getMessage();
+ return msg;
+ }
+
+ private Message getInvalidRequestMessage()
+ {
+ MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
+ MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
+ Message msg = msgBuilder.newMessage("ReqDataMsg").
+ addToRef(getMessageListenerID()).
+ addProperty("Name", "Kermit").
+ addProperty("From", "MUC").
+ addProperty("To", "NYC").
+ addProperty("Date", "25-Jul-2008").
+ addProperty("Seats", "0"). // Invalid number of seats
+ getMessage();
+ return msg;
+ }
+
+ private Message getAcceptOfferMessage()
+ {
+ MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
+ MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
+ Message msg = msgBuilder.newMessage("AcceptOfferMsg").
+ addProperty("CreditCard", "1234-1234-1234-1234").
+ addProperty("Expire", "25-Jul-2012").
+ addProperty("isOfferAccepted", "true").
+ getMessage();
+ return msg;
+ }
+
+ class AirticketMessageListener implements MessageListener
+ {
+ private ObjectName listenerID;
+ private Message confirmMessage;
+
+ private AirticketMessageListener(ObjectName listenerID)
+ {
+ this.listenerID = listenerID;
+ }
+
+ public Message getConfirmMessage()
+ {
+ return confirmMessage;
+ }
+
+ public void catchMessage(Message msg)
+ {
+ ObjectName procID = msg.getFrom().getProcess().getID();
+ MessageManager mm = MessageManager.locateMessageManager();
+ if (msg.getName().equals("InvalidDataMsg"))
+ mm.sendMessage(procID, "ReceiveReq", getValidRequestMessage());
+ else if (msg.getName().equals("OfferMsg"))
+ mm.sendMessage(procID, "ReceiveOrder", getAcceptOfferMessage());
+ else if (msg.getName().equals("ConfirmMsg"))
+ confirmMessage = msg;
+ }
+
+ public ObjectName getMessageListenerID()
+ {
+ return listenerID;
+ }
+ }
+}
\ No newline at end of file
Added: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketAPIDescriptorTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketAPIDescriptorTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketAPIDescriptorTest.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -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.samples.airticket;
+
+// $Id$
+
+import java.net.URL;
+
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * Test the Airticket sample application
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 03-Jul-2008
+ */
+public class AirticketAPIDescriptorTest extends AbstractAirticketTest
+{
+ public void testValidData() throws Exception
+ {
+ URL expURL = getResourceURL("samples/airticket/airticket-api10.xml");
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ Process proc = pm.createProcess(expURL);
+ proc.startProcess();
+ runProcessValidData(proc);
+ }
+
+ public void testInvalidData() throws Exception
+ {
+ URL expURL = getResourceURL("samples/airticket/airticket-api10.xml");
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ Process proc = pm.createProcess(expURL);
+ proc.startProcess();
+ runProcessInvalidData(proc);
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketAPIDescriptorTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -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.samples.airticket;
+
+// $Id$
+
+import org.jboss.bpm.model.Process;
+
+/**
+ * Test the Airticket sample application
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 03-Jul-2008
+ */
+public class AirticketProcBuilderTest extends AbstractAirticketTest
+{
+ public void testValidData() throws Exception
+ {
+ AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+ Process proc = builder.buildProcess();
+ proc.startProcess();
+ runProcessValidData(proc);
+ }
+
+ public void testInvalidData() throws Exception
+ {
+ AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
+ Process proc = builder.buildProcess();
+ proc.startProcess();
+ runProcessInvalidData(proc);
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketProcBuilderTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketSTPDescriptorTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketSTPDescriptorTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketSTPDescriptorTest.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -0,0 +1,65 @@
+/*
+ * 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.samples.airticket;
+
+// $Id$
+
+import java.io.StringWriter;
+import java.net.URL;
+
+import org.jboss.bpm.client.DialectHandler;
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+
+/**
+ * Test the Airticket sample application
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 03-Jul-2008
+ */
+public class AirticketSTPDescriptorTest extends AbstractAirticketTest
+{
+ public void testValidData() throws Exception
+ {
+ URL expURL = getResourceURL("samples/airticket/airticket-stp-api10.xml");
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ Process proc = pm.createProcess(expURL);
+
+ // Debug the effective process
+ StringWriter strwr = new StringWriter();
+ DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
+ dhapi.marshallProcess(proc, strwr);
+ //System.out.println(strwr);
+
+ proc.startProcess();
+ runProcessValidData(proc);
+ }
+
+ public void testInvalidData() throws Exception
+ {
+ URL expURL = getResourceURL("samples/airticket/airticket-stp-api10.xml");
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ Process proc = pm.createProcess(expURL);
+ proc.startProcess();
+ runProcessInvalidData(proc);
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketSTPDescriptorTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Deleted: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -1,190 +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.samples.airticket;
-
-// $Id$
-
-import java.net.URL;
-
-import javax.management.ObjectName;
-
-import org.jboss.bpm.client.MessageListener;
-import org.jboss.bpm.client.MessageManager;
-import org.jboss.bpm.client.ProcessManager;
-import org.jboss.bpm.client.SignalListener;
-import org.jboss.bpm.client.SignalManager;
-import org.jboss.bpm.model.Message;
-import org.jboss.bpm.model.MessageBuilder;
-import org.jboss.bpm.model.MessageBuilderFactory;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.test.DefaultEngineTestCase;
-
-/**
- * Test the Airticket sample application
- *
- * @author thomas.diesler at jboss.com
- * @since 03-Jul-2008
- */
-public class AirticketTest extends DefaultEngineTestCase
-{
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
-
- // Add a signal listener
- SignalListener sl = new SignalListener()
- {
- public void catchSignal(Signal signal)
- {
- // System.out.println(signal);
- }
- };
- SignalManager engine = SignalManager.locateSignalManager();
- engine.addSignalListener("Airticket", sl);
- }
-
- public void _testProcessStart() throws Exception
- {
- URL jpdlURL = getResourceURL("samples/airticket/airticket.bpmn");
-
- // Create a Process through the ProcessManager
- ProcessManager pm = ProcessManager.locateProcessManager();
- Process proc = pm.createProcess(jpdlURL);
- assertNotNull(proc);
-
- proc.startProcess();
- proc.waitForEnd();
- }
-
- public void testValidRequest() throws Exception
- {
- MessageManager mm = MessageManager.locateMessageManager();
- AirticketMessageListener msgListener = new AirticketMessageListener(getMessageListenerID());
- mm.addMessageListener(msgListener);
-
- AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
- Process proc = builder.buildProcess();
- proc.startProcess();
-
- mm.sendMessage(proc.getID(), "ReceiveReqTask", getValidRequestMessage());
- proc.waitForEnd();
-
- Message confirmMessage = msgListener.getConfirmMessage();
- assertNotNull("Expected confirm message", confirmMessage);
- String price = confirmMessage.getPropertyValue("Price");
- assertEquals("222", price);
- }
-
- public void testInvalidRequest() throws Exception
- {
- MessageManager mm = MessageManager.locateMessageManager();
- AirticketMessageListener msgListener = new AirticketMessageListener(getMessageListenerID());
- mm.addMessageListener(msgListener);
-
- AirticketProcessBuilder builder = new AirticketProcessBuilder(getMessageListenerID());
- Process proc = builder.buildProcess();
- proc.startProcess();
-
- mm.sendMessage(proc.getID(), "ReceiveReqTask", getInvalidRequestMessage());
- proc.waitForEnd();
-
- Message confirmMessage = msgListener.getConfirmMessage();
- assertNotNull("Expected confirm message", confirmMessage);
- String price = confirmMessage.getPropertyValue("Price");
- assertEquals("222", price);
- }
-
- private Message getValidRequestMessage()
- {
- MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
- MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("ReqDataMsg").
- addProperty("Name", "Kermit").
- addProperty("From", "MUC").
- addProperty("To", "NYC").
- addProperty("Date", "25-Jul-2008").
- addProperty("Seats", "2").getMessage();
- return msg;
- }
-
- private Message getInvalidRequestMessage()
- {
- MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
- MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("ReqDataMsg").
- addToRef(getMessageListenerID()).
- addProperty("Name", "Kermit").
- addProperty("From", "MUC").
- addProperty("To", "NYC").
- addProperty("Date", "25-Jul-2008").
- addProperty("Seats", "0"). // Invalid number of seats
- getMessage();
- return msg;
- }
-
- private Message getAcceptOfferMessage()
- {
- MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
- MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("AcceptOfferMsg").
- addProperty("CreditCard", "1234-1234-1234-1234").
- addProperty("Expire", "25-Jul-2012").
- addProperty("isOfferAccepted", "true").
- getMessage();
- return msg;
- }
-
- class AirticketMessageListener implements MessageListener
- {
- private ObjectName listenerID;
- private Message confirmMessage;
-
- private AirticketMessageListener(ObjectName listenerID)
- {
- this.listenerID = listenerID;
- }
-
- public Message getConfirmMessage()
- {
- return confirmMessage;
- }
-
- public void catchMessage(Message msg)
- {
- ObjectName procID = msg.getFrom().getProcess().getID();
- MessageManager mm = MessageManager.locateMessageManager();
- if (msg.getName().equals("InvalidDataMsg"))
- mm.sendMessage(procID, "ReceiveReqTask", getValidRequestMessage());
- else if (msg.getName().equals("OfferMsg"))
- mm.sendMessage(procID, "ReceiveOrderTask", getAcceptOfferMessage());
- else if (msg.getName().equals("ConfirmMsg"))
- confirmMessage = msg;
- }
-
- public ObjectName getMessageListenerID()
- {
- return listenerID;
- }
- }
-}
\ No newline at end of file
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-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -24,11 +24,13 @@
// $Id$
import java.io.ByteArrayInputStream;
-import java.io.FileWriter;
import java.io.StringWriter;
import java.net.URL;
+import javax.management.ObjectName;
+
import org.jboss.bpm.client.DialectHandler;
+import org.jboss.bpm.client.ObjectNameFactory;
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -44,6 +46,12 @@
*/
public class ProcessMarshallerTest extends DefaultEngineTestCase
{
+ @Override
+ public ObjectName getMessageListenerID()
+ {
+ return ObjectNameFactory.create("jboss.bpm:client=AirticketTest");
+ }
+
/**
* Build the process through a ProcessBuilder.
* Marshall it through the DialectHandler.
@@ -68,14 +76,8 @@
Element expEl = DOMUtils.parse(expURL.openStream());
String expStr = DOMWriter.printNode(expEl, true);
- // Write the file for debugging
- if (expStr.equals(wasStr) == false)
- {
- FileWriter fileWriter = new FileWriter("airticket-was-api10.xml");
- fileWriter.write(wasStr);
- fileWriter.close();
- }
-
+ //System.out.println(expStr);
+ //System.out.println(wasStr);
assertEquals(expStr, wasStr);
}
Deleted: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/STPProcessIncludeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/STPProcessIncludeTest.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/STPProcessIncludeTest.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -1,72 +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.samples.airticket;
-
-// $Id$
-
-import java.io.ByteArrayInputStream;
-import java.io.StringWriter;
-import java.net.URL;
-
-import org.jboss.bpm.client.DialectHandler;
-import org.jboss.bpm.client.ProcessManager;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.test.DefaultEngineTestCase;
-import org.jboss.util.xml.DOMUtils;
-import org.jboss.util.xml.DOMWriter;
-import org.w3c.dom.Element;
-
-/**
- * Test the Airticket process marshaller
- *
- * @author thomas.diesler at jboss.com
- * @since 03-Jul-2008
- */
-public class STPProcessIncludeTest extends DefaultEngineTestCase
-{
- /**
- * Build the process through the ProcessManager. Uses an process definition with an include of an STP process.
- * Marshall it through the DialectHandler. Compare the output with expected file content.
- */
- public void testBPMNProcessMerge() throws Exception
- {
- URL bpmnURL = getResourceURL("samples/airticket/airticket-stp-api10.xml");
- ProcessManager pm = ProcessManager.locateProcessManager();
- Process proc = pm.createProcess(bpmnURL);
-
- StringWriter strwr = new StringWriter();
- DialectHandler dh = pm.getDialectHandler("urn:bpm.jboss:pdl-0.1");
- dh.marshallProcess(proc, strwr);
- String procXML = strwr.toString();
-
- Element wasEl = DOMUtils.parse(new ByteArrayInputStream(procXML.getBytes()));
- String wasStr = DOMWriter.printNode(wasEl, true);
-
- URL expURL = getResourceURL("samples/airticket/airticket-api10.xml");
- Element expEl = DOMUtils.parse(expURL.openStream());
- String expStr = DOMWriter.printNode(expEl, true);
-
- // System.out.println(expStr);
- // System.out.println(wasStr);
- assertEquals(expStr, wasStr);
- }
-}
\ No newline at end of file
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-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml 2008-08-02 23:46:18 UTC (rev 1809)
@@ -1,13 +1,13 @@
<ns2:process name='Airticket' xmlns:ns2='urn:bpm.jboss:pdl-0.1'>
<start>
- <seqflow to='ReceiveReqTask'/>
+ <seqflow to='ReceiveReq'/>
</start>
- <task name='ReceiveReqTask' taskType='Receive'>
- <seqflow to='ValidateTask'/>
+ <task name='ReceiveReq' taskType='Receive'>
+ <seqflow to='Validate'/>
<msgref nameRef='ReqDataMsg'/>
</task>
- <task name='ValidateTask' taskType='None'>
- <seqflow to='ValidateGateway'/>
+ <task name='Validate' taskType='None'>
+ <seqflow to='IsValid'/>
<execution-handler class='org.jboss.bpm.samples.airticket.ValidationHandler'/>
<input-set>
<property>
@@ -32,14 +32,14 @@
</property>
</output-set>
</task>
- <exclusive-gateway name='ValidateGateway'>
- <seqflow conditionType='Expression' to='CheckAvailabilityTask'>
+ <exclusive-gateway name='IsValid'>
+ <seqflow conditionType='Expression' to='CheckAvailable'>
<condition lang='MVEL'>isReqDataValid == true</condition>
</seqflow>
- <seqflow conditionType='Default' to='SendInvalidTask'/>
+ <seqflow conditionType='Default' to='SendInvalid'/>
</exclusive-gateway>
- <task name='CheckAvailabilityTask' taskType='None'>
- <seqflow to='AvailabilityGateway'/>
+ <task name='CheckAvailable' taskType='None'>
+ <seqflow to='IsAvailable'/>
<execution-handler class='org.jboss.bpm.samples.airticket.AvailabilityHandler'/>
<input-set>
<property>
@@ -64,40 +64,40 @@
</property>
</output-set>
</task>
- <task name='SendInvalidTask' taskType='Send'>
- <seqflow to='ReceiveReqTask'/>
+ <task name='SendInvalid' taskType='Send'>
+ <seqflow to='ReceiveReq'/>
<msgref nameRef='InvalidDataMsg'/>
</task>
- <exclusive-gateway name='AvailabilityGateway'>
- <seqflow conditionType='Expression' to='SendOfferTask'>
+ <exclusive-gateway name='IsAvailable'>
+ <seqflow conditionType='Expression' to='SendOffer'>
<condition lang='MVEL'>isAvailable == true</condition>
</seqflow>
- <seqflow conditionType='Default' to='SendNotAvailableTask'/>
+ <seqflow conditionType='Default' to='SendNotAvailable'/>
</exclusive-gateway>
- <task name='SendOfferTask' taskType='Send'>
- <seqflow to='ReceiveOrderTask'/>
+ <task name='SendOffer' taskType='Send'>
+ <seqflow to='ReceiveOrder'/>
<msgref nameRef='OfferMsg'/>
</task>
- <task name='SendNotAvailableTask' taskType='Send'>
- <seqflow to='ReceiveReqTask'/>
+ <task name='SendNotAvailable' taskType='Send'>
+ <seqflow to='ReceiveReq'/>
<msgref nameRef='NotAvailableMsg'/>
</task>
- <task name='ReceiveOrderTask' taskType='Receive'>
- <seqflow to='AcceptOfferGateway'/>
+ <task name='ReceiveOrder' taskType='Receive'>
+ <seqflow to='IsAccepted'/>
<msgref nameRef='AcceptOfferMsg'/>
</task>
- <exclusive-gateway name='AcceptOfferGateway'>
- <seqflow conditionType='Expression' to='ParallelSplitGateway'>
+ <exclusive-gateway name='IsAccepted'>
+ <seqflow conditionType='Expression' to='Split'>
<condition lang='MVEL'>isOfferAccepted == true</condition>
</seqflow>
- <seqflow conditionType='Default' to='ReceiveReqTask'/>
+ <seqflow conditionType='Default' to='ReceiveReq'/>
</exclusive-gateway>
- <parallel-gateway name='ParallelSplitGateway'>
- <seqflow to='CreditCardTask'/>
- <seqflow to='BookingTask'/>
+ <parallel-gateway name='Split'>
+ <seqflow to='CreditCard'/>
+ <seqflow to='Booking'/>
</parallel-gateway>
- <task name='CreditCardTask' taskType='None'>
- <seqflow to='SynchronizedJoinGateway'/>
+ <task name='CreditCard' taskType='None'>
+ <seqflow to='SyncJoin'/>
<input-set>
<property>
<name>CreditCard</name>
@@ -110,8 +110,8 @@
</property>
</input-set>
</task>
- <task name='BookingTask' taskType='None'>
- <seqflow to='SynchronizedJoinGateway'/>
+ <task name='Booking' taskType='None'>
+ <seqflow to='SyncJoin'/>
<input-set>
<property>
<name>Name</name>
@@ -130,10 +130,10 @@
</property>
</input-set>
</task>
- <parallel-gateway name='SynchronizedJoinGateway'>
- <seqflow to='SendConfirmTask'/>
+ <parallel-gateway name='SyncJoin'>
+ <seqflow to='SendConfirm'/>
</parallel-gateway>
- <task name='SendConfirmTask' taskType='Send'>
+ <task name='SendConfirm' taskType='Send'>
<seqflow to='End'/>
<msgref nameRef='ConfirmMsg'/>
</task>
@@ -156,7 +156,7 @@
</property>
</message>
<message name='InvalidDataMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
+ <to>jboss.bpm:client=AirticketTest</to>
<property correlation='true'>
<name>Name</name>
</property>
@@ -174,7 +174,7 @@
</property>
</message>
<message name='NotAvailableMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
+ <to>jboss.bpm:client=AirticketTest</to>
<property correlation='true'>
<name>Name</name>
</property>
@@ -192,7 +192,7 @@
</property>
</message>
<message name='OfferMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
+ <to>jboss.bpm:client=AirticketTest</to>
<property correlation='true'>
<name>Name</name>
</property>
@@ -224,7 +224,7 @@
</property>
</message>
<message name='ConfirmMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
+ <to>jboss.bpm:client=AirticketTest</to>
<property correlation='true'>
<name>Name</name>
</property>
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-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-stp-api10.xml 2008-08-02 23:46:18 UTC (rev 1809)
@@ -1,9 +1,14 @@
<ns2:process name='Airticket' xmlns:ns2='urn:bpm.jboss:pdl-0.1'>
<include namespace="http://stp.eclipse.org/bpmn" location="samples/airticket/airticket.bpmn" />
- <task name='ReceiveReqTask' taskType='Receive'>
+ <!-- start>
+ <seqflow to='ReceiveReq' />
+ </start-->
+ <task name='ReceiveReq' taskType='Receive'>
+ <!-- seqflow to='Validate' /-->
<msgref nameRef='ReqDataMsg' />
</task>
- <task name='ValidateTask' taskType='None'>
+ <task name='Validate' taskType='None'>
+ <!-- seqflow to='IsValid' /-->
<execution-handler class='org.jboss.bpm.samples.airticket.ValidationHandler' />
<input-set>
<property>
@@ -28,13 +33,14 @@
</property>
</output-set>
</task>
- <exclusive-gateway name='ValidateGateway'>
- <seqflow conditionType='Expression' to='CheckAvailabilityTask'>
+ <exclusive-gateway name='IsValid'>
+ <seqflow conditionType='Expression' to='CheckAvailable'>
<condition lang='MVEL'>isReqDataValid == true</condition>
</seqflow>
- <seqflow conditionType='Default' to='SendInvalidTask' />
+ <seqflow conditionType='Default' to='SendInvalid' />
</exclusive-gateway>
- <task name='CheckAvailabilityTask' taskType='None'>
+ <task name='CheckAvailable' taskType='None'>
+ <!-- seqflow to='IsAvailable' /-->
<execution-handler class='org.jboss.bpm.samples.airticket.AvailabilityHandler' />
<input-set>
<property>
@@ -59,31 +65,40 @@
</property>
</output-set>
</task>
- <task name='SendInvalidTask' taskType='Send'>
+ <task name='SendInvalid' taskType='Send'>
+ <!-- seqflow to='ReceiveReq' /-->
<msgref nameRef='InvalidDataMsg' />
</task>
- <exclusive-gateway name='AvailabilityGateway'>
- <seqflow conditionType='Expression' to='SendOfferTask'>
+ <exclusive-gateway name='IsAvailable'>
+ <seqflow conditionType='Expression' to='SendOffer'>
<condition lang='MVEL'>isAvailable == true</condition>
</seqflow>
- <seqflow conditionType='Default' to='SendNotAvailableTask' />
+ <seqflow conditionType='Default' to='SendNotAvailable' />
</exclusive-gateway>
- <task name='SendOfferTask' taskType='Send'>
+ <task name='SendOffer' taskType='Send'>
+ <!-- seqflow to='ReceiveOrder' /-->
<msgref nameRef='OfferMsg' />
</task>
- <task name='SendNotAvailableTask' taskType='Send'>
+ <task name='SendNotAvailable' taskType='Send'>
+ <!-- seqflow to='ReceiveReq' /-->
<msgref nameRef='NotAvailableMsg' />
</task>
- <task name='ReceiveOrderTask' taskType='Receive'>
+ <task name='ReceiveOrder' taskType='Receive'>
+ <!-- seqflow to='IsAccepted' /-->
<msgref nameRef='AcceptOfferMsg' />
</task>
- <exclusive-gateway name='AcceptOfferGateway'>
- <seqflow conditionType='Expression' to='ParallelSplitGateway'>
+ <exclusive-gateway name='IsAccepted'>
+ <seqflow conditionType='Expression' to='Split'>
<condition lang='MVEL'>isOfferAccepted == true</condition>
</seqflow>
- <seqflow conditionType='Default' to='ReceiveReqTask' />
+ <seqflow conditionType='Default' to='ReceiveReq' />
</exclusive-gateway>
- <task name='CreditCardTask' taskType='None'>
+ <!-- parallel-gateway name='Split'>
+ <seqflow to='CreditCard' />
+ <seqflow to='Booking' />
+ </parallel-gateway-->
+ <task name='CreditCard' taskType='None'>
+ <!-- seqflow to='SyncJoin' /-->
<input-set>
<property>
<name>CreditCard</name>
@@ -96,7 +111,8 @@
</property>
</input-set>
</task>
- <task name='BookingTask' taskType='None'>
+ <task name='Booking' taskType='None'>
+ <!-- seqflow to='SyncJoin' /-->
<input-set>
<property>
<name>Name</name>
@@ -115,9 +131,14 @@
</property>
</input-set>
</task>
- <task name='SendConfirmTask' taskType='Send'>
+ <!-- parallel-gateway name='SyncJoin'>
+ <seqflow to='SendConfirm' />
+ </parallel-gateway-->
+ <task name='SendConfirm' taskType='Send'>
+ <!-- seqflow to='End' /-->
<msgref nameRef='ConfirmMsg' />
</task>
+ <!-- end name='End' /-->
<message name='ReqDataMsg'>
<property correlation='true'>
<name>Name</name>
@@ -136,7 +157,7 @@
</property>
</message>
<message name='InvalidDataMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
+ <to>jboss.bpm:client=AirticketTest</to>
<property correlation='true'>
<name>Name</name>
</property>
@@ -154,7 +175,7 @@
</property>
</message>
<message name='NotAvailableMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
+ <to>jboss.bpm:client=AirticketTest</to>
<property correlation='true'>
<name>Name</name>
</property>
@@ -172,7 +193,7 @@
</property>
</message>
<message name='OfferMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
+ <to>jboss.bpm:client=AirticketTest</to>
<property correlation='true'>
<name>Name</name>
</property>
@@ -204,7 +225,7 @@
</property>
</message>
<message name='ConfirmMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
+ <to>jboss.bpm:client=AirticketTest</to>
<property correlation='true'>
<name>Name</name>
</property>
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket.bpmn
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket.bpmn 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket.bpmn 2008-08-02 23:46:18 UTC (rev 1809)
@@ -2,23 +2,23 @@
<bpmn:BpmnDiagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:bpmn="http://stp.eclipse.org/bpmn" xmi:id="_iYxIQFhrEd2aHsyOaYt_3g" iD="_iYwhMFhrEd2aHsyOaYt_3g">
<pools xmi:type="bpmn:Pool" xmi:id="_dhOfoVhtEd2aHsyOaYt_3g" iD="_dhOfoFhtEd2aHsyOaYt_3g" name="Pool">
<vertices xmi:type="bpmn:Activity" xmi:id="_huULIVhtEd2aHsyOaYt_3g" iD="_huULIFhtEd2aHsyOaYt_3g" outgoingEdges="_iyzG8VhtEd2aHsyOaYt_3g" activityType="EventStartEmpty"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_lMlo0VhtEd2aHsyOaYt_3g" iD="_lMlo0FhtEd2aHsyOaYt_3g" outgoingEdges="_rsTeQVhtEd2aHsyOaYt_3g" incomingEdges="_efVRMVhuEd2aHsyOaYt_3g _r-90MVhwEd2aHsyOaYt_3g _1UWrsVhvEd2aHsyOaYt_3g _iyzG8VhtEd2aHsyOaYt_3g" name="ReceiveReq" activityType="Task"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_rsQa8VhtEd2aHsyOaYt_3g" iD="_rsQa8FhtEd2aHsyOaYt_3g" outgoingEdges="_zUIyUFhtEd2aHsyOaYt_3g _ApdYMVhvEd2aHsyOaYt_3g" incomingEdges="_rsTeQVhtEd2aHsyOaYt_3g" name=" Validate" activityType="GatewayDataBasedExclusive"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_zUDSwVhtEd2aHsyOaYt_3g" iD="_zUDSwFhtEd2aHsyOaYt_3g" outgoingEdges="_9Q4IQVhtEd2aHsyOaYt_3g" incomingEdges="_zUIyUFhtEd2aHsyOaYt_3g" name="CheckAvail" activityType="Task"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_9Q1sAFhtEd2aHsyOaYt_3g" iD="_9Q1E8FhtEd2aHsyOaYt_3g" outgoingEdges="_BdGREVhuEd2aHsyOaYt_3g _fHP64VhwEd2aHsyOaYt_3g" incomingEdges="_9Q4IQVhtEd2aHsyOaYt_3g" name="Available" activityType="GatewayDataBasedExclusive"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_lMlo0VhtEd2aHsyOaYt_3g" iD="_lMlo0FhtEd2aHsyOaYt_3g" outgoingEdges="_7grf0WDaEd2jINLjV_7TQw" incomingEdges="_efVRMVhuEd2aHsyOaYt_3g _r-90MVhwEd2aHsyOaYt_3g _1UWrsVhvEd2aHsyOaYt_3g _iyzG8VhtEd2aHsyOaYt_3g" name="ReceiveReq" activityType="Task"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_rsQa8VhtEd2aHsyOaYt_3g" iD="_rsQa8FhtEd2aHsyOaYt_3g" outgoingEdges="_zUIyUFhtEd2aHsyOaYt_3g _ApdYMVhvEd2aHsyOaYt_3g" incomingEdges="_8u-e8WDaEd2jINLjV_7TQw" name="IsValid" activityType="GatewayDataBasedExclusive"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_zUDSwVhtEd2aHsyOaYt_3g" iD="_zUDSwFhtEd2aHsyOaYt_3g" outgoingEdges="_9Q4IQVhtEd2aHsyOaYt_3g" incomingEdges="_zUIyUFhtEd2aHsyOaYt_3g" name="CheckAvailable" activityType="Task"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_9Q1sAFhtEd2aHsyOaYt_3g" iD="_9Q1E8FhtEd2aHsyOaYt_3g" outgoingEdges="_BdGREVhuEd2aHsyOaYt_3g _fHP64VhwEd2aHsyOaYt_3g" incomingEdges="_9Q4IQVhtEd2aHsyOaYt_3g" name="IsAvailable" activityType="GatewayDataBasedExclusive"/>
<vertices xmi:type="bpmn:Activity" xmi:id="_BdDNwVhuEd2aHsyOaYt_3g" iD="_BdDNwFhuEd2aHsyOaYt_3g" outgoingEdges="_tT3_YVh1Ed2aHsyOaYt_3g" incomingEdges="_BdGREVhuEd2aHsyOaYt_3g" name="SendOffer" activityType="Task"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_D-IqcVhuEd2aHsyOaYt_3g" iD="_D-IqcFhuEd2aHsyOaYt_3g" outgoingEdges="_lVOK8VhuEd2aHsyOaYt_3g _1UWrsVhvEd2aHsyOaYt_3g" incomingEdges="_waDtMVh1Ed2aHsyOaYt_3g" name="Accepted" activityType="GatewayDataBasedExclusive"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_T7iiUVhuEd2aHsyOaYt_3g" iD="_T7iiUFhuEd2aHsyOaYt_3g" outgoingEdges="_efVRMVhuEd2aHsyOaYt_3g" incomingEdges="_ApdYMVhvEd2aHsyOaYt_3g" name=" SendInvalid" activityType="Task"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_lVLHoVhuEd2aHsyOaYt_3g" iD="_lVLHoFhuEd2aHsyOaYt_3g" outgoingEdges="_VtHYMVhvEd2aHsyOaYt_3g _Ypm-gVhvEd2aHsyOaYt_3g" incomingEdges="_lVOK8VhuEd2aHsyOaYt_3g" activityType="GatewayParallel"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_D-IqcVhuEd2aHsyOaYt_3g" iD="_D-IqcFhuEd2aHsyOaYt_3g" outgoingEdges="_lVOK8VhuEd2aHsyOaYt_3g _1UWrsVhvEd2aHsyOaYt_3g" incomingEdges="_waDtMVh1Ed2aHsyOaYt_3g" name="IsAccepted" activityType="GatewayDataBasedExclusive"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_T7iiUVhuEd2aHsyOaYt_3g" iD="_T7iiUFhuEd2aHsyOaYt_3g" outgoingEdges="_efVRMVhuEd2aHsyOaYt_3g" incomingEdges="_ApdYMVhvEd2aHsyOaYt_3g" name="SendInvalid" activityType="Task"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_lVLHoVhuEd2aHsyOaYt_3g" iD="_lVLHoFhuEd2aHsyOaYt_3g" outgoingEdges="_VtHYMVhvEd2aHsyOaYt_3g _Ypm-gVhvEd2aHsyOaYt_3g" incomingEdges="_lVOK8VhuEd2aHsyOaYt_3g" name="Split" activityType="GatewayParallel"/>
<vertices xmi:type="bpmn:Activity" xmi:id="_VtDt0VhvEd2aHsyOaYt_3g" iD="_VtDt0FhvEd2aHsyOaYt_3g" outgoingEdges="_Fj6DgVhwEd2aHsyOaYt_3g" incomingEdges="_VtHYMVhvEd2aHsyOaYt_3g" name="CreditCard" activityType="Task"/>
<vertices xmi:type="bpmn:Activity" xmi:id="_Ypj7MVhvEd2aHsyOaYt_3g" iD="_Ypj7MFhvEd2aHsyOaYt_3g" outgoingEdges="_GJUdsVhwEd2aHsyOaYt_3g" incomingEdges="_Ypm-gVhvEd2aHsyOaYt_3g" name="Booking" activityType="Task"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_Fj1LAVhwEd2aHsyOaYt_3g" iD="_Fj1LAFhwEd2aHsyOaYt_3g" outgoingEdges="_LXfLsVhwEd2aHsyOaYt_3g" incomingEdges="_Fj6DgVhwEd2aHsyOaYt_3g _GJUdsVhwEd2aHsyOaYt_3g" activityType="GatewayParallel"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_Fj1LAVhwEd2aHsyOaYt_3g" iD="_Fj1LAFhwEd2aHsyOaYt_3g" outgoingEdges="_LXfLsVhwEd2aHsyOaYt_3g" incomingEdges="_Fj6DgVhwEd2aHsyOaYt_3g _GJUdsVhwEd2aHsyOaYt_3g" name="Join" activityType="GatewayParallel"/>
<vertices xmi:type="bpmn:Activity" xmi:id="_LXbhUVhwEd2aHsyOaYt_3g" iD="_LXbhUFhwEd2aHsyOaYt_3g" outgoingEdges="_QQQ4gVhwEd2aHsyOaYt_3g" incomingEdges="_LXfLsVhwEd2aHsyOaYt_3g" name="SendConfirm" activityType="Task"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_QQMAAVhwEd2aHsyOaYt_3g" iD="_QQMAAFhwEd2aHsyOaYt_3g" incomingEdges="_QQQ4gVhwEd2aHsyOaYt_3g" activityType="EventEndEmpty"/>
- <vertices xmi:type="bpmn:Activity" xmi:id="_fHKbUVhwEd2aHsyOaYt_3g" iD="_fHKbUFhwEd2aHsyOaYt_3g" outgoingEdges="_r-90MVhwEd2aHsyOaYt_3g" incomingEdges="_fHP64VhwEd2aHsyOaYt_3g" name=" SendNotAvail" activityType="Task"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_QQMAAVhwEd2aHsyOaYt_3g" iD="_QQMAAFhwEd2aHsyOaYt_3g" incomingEdges="_QQQ4gVhwEd2aHsyOaYt_3g" name="End" activityType="EventEndEmpty"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_fHKbUVhwEd2aHsyOaYt_3g" iD="_fHKbUFhwEd2aHsyOaYt_3g" outgoingEdges="_r-90MVhwEd2aHsyOaYt_3g" incomingEdges="_fHP64VhwEd2aHsyOaYt_3g" name="SendNotAvailable" activityType="Task"/>
<vertices xmi:type="bpmn:Activity" xmi:id="_tTzG4Fh1Ed2aHsyOaYt_3g" iD="_tTyf0Fh1Ed2aHsyOaYt_3g" outgoingEdges="_waDtMVh1Ed2aHsyOaYt_3g" incomingEdges="_tT3_YVh1Ed2aHsyOaYt_3g" name="ReceiveOrder" activityType="Task"/>
+ <vertices xmi:type="bpmn:Activity" xmi:id="_4Ph4IWDaEd2jINLjV_7TQw" iD="_4Ph4IGDaEd2jINLjV_7TQw" outgoingEdges="_8u-e8WDaEd2jINLjV_7TQw" incomingEdges="_7grf0WDaEd2jINLjV_7TQw" name="Validate"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_iyzG8VhtEd2aHsyOaYt_3g" iD="_iyzG8FhtEd2aHsyOaYt_3g" source="_huULIVhtEd2aHsyOaYt_3g" target="_lMlo0VhtEd2aHsyOaYt_3g"/>
- <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_rsTeQVhtEd2aHsyOaYt_3g" iD="_rsTeQFhtEd2aHsyOaYt_3g" source="_lMlo0VhtEd2aHsyOaYt_3g" target="_rsQa8VhtEd2aHsyOaYt_3g"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_zUIyUFhtEd2aHsyOaYt_3g" iD="_zUILQFhtEd2aHsyOaYt_3g" source="_rsQa8VhtEd2aHsyOaYt_3g" target="_zUDSwVhtEd2aHsyOaYt_3g"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_9Q4IQVhtEd2aHsyOaYt_3g" iD="_9Q4IQFhtEd2aHsyOaYt_3g" source="_zUDSwVhtEd2aHsyOaYt_3g" target="_9Q1sAFhtEd2aHsyOaYt_3g"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_BdGREVhuEd2aHsyOaYt_3g" iD="_BdGREFhuEd2aHsyOaYt_3g" source="_9Q1sAFhtEd2aHsyOaYt_3g" target="_BdDNwVhuEd2aHsyOaYt_3g"/>
@@ -36,5 +36,7 @@
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_r-90MVhwEd2aHsyOaYt_3g" iD="_r-90MFhwEd2aHsyOaYt_3g" source="_fHKbUVhwEd2aHsyOaYt_3g" target="_lMlo0VhtEd2aHsyOaYt_3g"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_tT3_YVh1Ed2aHsyOaYt_3g" iD="_tT3_YFh1Ed2aHsyOaYt_3g" source="_BdDNwVhuEd2aHsyOaYt_3g" target="_tTzG4Fh1Ed2aHsyOaYt_3g"/>
<sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_waDtMVh1Ed2aHsyOaYt_3g" iD="_waDtMFh1Ed2aHsyOaYt_3g" source="_tTzG4Fh1Ed2aHsyOaYt_3g" target="_D-IqcVhuEd2aHsyOaYt_3g"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_7grf0WDaEd2jINLjV_7TQw" iD="_7grf0GDaEd2jINLjV_7TQw" source="_lMlo0VhtEd2aHsyOaYt_3g" target="_4Ph4IWDaEd2jINLjV_7TQw"/>
+ <sequenceEdges xmi:type="bpmn:SequenceEdge" xmi:id="_8u-e8WDaEd2jINLjV_7TQw" iD="_8u-e8GDaEd2jINLjV_7TQw" source="_4Ph4IWDaEd2jINLjV_7TQw" target="_rsQa8VhtEd2aHsyOaYt_3g"/>
</pools>
</bpmn:BpmnDiagram>
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket.bpmn_diagram
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket.bpmn_diagram 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket.bpmn_diagram 2008-08-02 23:46:18 UTC (rev 1809)
@@ -13,7 +13,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_huUyM1htEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_huUyNFhtEd2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_huULIVhtEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_huUyNVhtEd2aHsyOaYt_3g" x="24" y="48"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_huUyNVhtEd2aHsyOaYt_3g" x="24" y="36"/>
</children>
<children xmi:type="notation:Node" xmi:id="_lMmP4FhtEd2aHsyOaYt_3g" type="2001">
<children xmi:type="notation:Node" xmi:id="_lMm28FhtEd2aHsyOaYt_3g" type="4001"/>
@@ -22,7 +22,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_lMmP41htEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_lMmP5FhtEd2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_lMlo0VhtEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lMmP5VhtEd2aHsyOaYt_3g" x="96" y="84"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lMmP5VhtEd2aHsyOaYt_3g" x="96" y="60"/>
</children>
<children xmi:type="notation:Node" xmi:id="_rsRCAFhtEd2aHsyOaYt_3g" type="2001">
<children xmi:type="notation:Node" xmi:id="_rsRpEFhtEd2aHsyOaYt_3g" type="4001"/>
@@ -31,7 +31,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_rsRCA1htEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_rsRCBFhtEd2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_rsQa8VhtEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rsRCBVhtEd2aHsyOaYt_3g" x="252" y="72"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rsRCBVhtEd2aHsyOaYt_3g" x="384" y="60"/>
</children>
<children xmi:type="notation:Node" xmi:id="_zUEg4FhtEd2aHsyOaYt_3g" type="2001">
<children xmi:type="notation:Node" xmi:id="_zUEg5lhtEd2aHsyOaYt_3g" type="4001"/>
@@ -40,7 +40,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_zUEg41htEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_zUEg5FhtEd2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_zUDSwVhtEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zUEg5VhtEd2aHsyOaYt_3g" x="324"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zUEg5VhtEd2aHsyOaYt_3g" x="456"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9Q1sAVhtEd2aHsyOaYt_3g" type="2001">
<children xmi:type="notation:Node" xmi:id="_9Q2TEFhtEd2aHsyOaYt_3g" type="4001"/>
@@ -49,7 +49,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_9Q1sBFhtEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_9Q1sBVhtEd2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_9Q1sAFhtEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Q1sBlhtEd2aHsyOaYt_3g" x="468" y="72"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Q1sBlhtEd2aHsyOaYt_3g" x="600" y="72"/>
</children>
<children xmi:type="notation:Node" xmi:id="_BdD00FhuEd2aHsyOaYt_3g" type="2001">
<children xmi:type="notation:Node" xmi:id="_BdD01lhuEd2aHsyOaYt_3g" type="4001"/>
@@ -58,7 +58,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_BdD001huEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_BdD01FhuEd2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_BdDNwVhuEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BdD01VhuEd2aHsyOaYt_3g" x="540"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BdD01VhuEd2aHsyOaYt_3g" x="672"/>
</children>
<children xmi:type="notation:Node" xmi:id="_D-J4kFhuEd2aHsyOaYt_3g" type="2001">
<children xmi:type="notation:Node" xmi:id="_D-KfoFhuEd2aHsyOaYt_3g" type="4001"/>
@@ -67,7 +67,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_D-J4k1huEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_D-J4lFhuEd2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_D-IqcVhuEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D-J4lVhuEd2aHsyOaYt_3g" x="708" y="132"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D-J4lVhuEd2aHsyOaYt_3g" x="840" y="132"/>
</children>
<children xmi:type="notation:Node" xmi:id="_T7jwcFhuEd2aHsyOaYt_3g" type="2001">
<children xmi:type="notation:Node" xmi:id="_T7kXgFhuEd2aHsyOaYt_3g" type="4001"/>
@@ -76,7 +76,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_T7jwc1huEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_T7jwdFhuEd2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_T7iiUVhuEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7jwdVhuEd2aHsyOaYt_3g" x="324" y="120"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7jwdVhuEd2aHsyOaYt_3g" x="456" y="120"/>
</children>
<children xmi:type="notation:Node" xmi:id="_lVLHolhuEd2aHsyOaYt_3g" type="2001">
<children xmi:type="notation:Node" xmi:id="_lVLuslhuEd2aHsyOaYt_3g" type="4001"/>
@@ -139,7 +139,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_fHLpc1hwEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_fHLpdFhwEd2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_fHKbUVhwEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fHLpdVhwEd2aHsyOaYt_3g" x="540" y="120"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fHLpdVhwEd2aHsyOaYt_3g" x="672" y="120"/>
</children>
<children xmi:type="notation:Node" xmi:id="_tTzt8Fh1Ed2aHsyOaYt_3g" type="2001">
<children xmi:type="notation:Node" xmi:id="_tT0VAFh1Ed2aHsyOaYt_3g" type="4001"/>
@@ -148,8 +148,17 @@
<styles xmi:type="notation:FillStyle" xmi:id="_tTzt81h1Ed2aHsyOaYt_3g"/>
<styles xmi:type="notation:LineStyle" xmi:id="_tTzt9Fh1Ed2aHsyOaYt_3g" lineColor="0"/>
<element xmi:type="bpmn:Activity" href="airticket.bpmn#_tTzG4Fh1Ed2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tTzt9Vh1Ed2aHsyOaYt_3g" x="696"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tTzt9Vh1Ed2aHsyOaYt_3g" x="828"/>
</children>
+ <children xmi:type="notation:Node" xmi:id="_4PmwoGDaEd2jINLjV_7TQw" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_4PrpIGDaEd2jINLjV_7TQw" type="4001"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_4PmwoWDaEd2jINLjV_7TQw" fontName="Arial"/>
+ <styles xmi:type="notation:DescriptionStyle" xmi:id="_4PmwomDaEd2jINLjV_7TQw"/>
+ <styles xmi:type="notation:FillStyle" xmi:id="_4Pmwo2DaEd2jINLjV_7TQw"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_4PmwpGDaEd2jINLjV_7TQw" lineColor="0"/>
+ <element xmi:type="bpmn:Activity" href="airticket.bpmn#_4Ph4IWDaEd2jINLjV_7TQw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4PmwpWDaEd2jINLjV_7TQw" x="240" y="60"/>
+ </children>
<styles xmi:type="notation:DrawerStyle" xmi:id="_dhSKAVhtEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_dhSKAlhtEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_dhSKA1htEd2aHsyOaYt_3g"/>
@@ -159,7 +168,7 @@
<styles xmi:type="notation:FillStyle" xmi:id="_dhRi8VhtEd2aHsyOaYt_3g" fillColor="16771304"/>
<styles xmi:type="notation:LineStyle" xmi:id="_dhRi8lhtEd2aHsyOaYt_3g" lineColor="11119017"/>
<element xmi:type="bpmn:Pool" href="airticket.bpmn#_dhOfoVhtEd2aHsyOaYt_3g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dhRi81htEd2aHsyOaYt_3g" x="16" y="24" width="1253" height="565"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dhRi81htEd2aHsyOaYt_3g" x="16" y="24" width="1017" height="565"/>
</children>
<styles xmi:type="notation:PageStyle" xmi:id="_iZDcIVhrEd2aHsyOaYt_3g"/>
<styles xmi:type="notation:GuideStyle" xmi:id="_iZDcIlhrEd2aHsyOaYt_3g"/>
@@ -177,18 +186,6 @@
<element xmi:type="bpmn:SequenceEdge" href="airticket.bpmn#_iyzG8VhtEd2aHsyOaYt_3g"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iy0VE1htEd2aHsyOaYt_3g" points="[0, 0, -30, -133]$[15, 0, -15, -133]$[15, 133, -15, 0]$[30, 133, 0, 0]"/>
</edges>
- <edges xmi:type="notation:Edge" xmi:id="_rsUFUFhtEd2aHsyOaYt_3g" type="3001" source="_lMmP4FhtEd2aHsyOaYt_3g" target="_rsRCAFhtEd2aHsyOaYt_3g">
- <children xmi:type="notation:Node" xmi:id="_rsUsYFhtEd2aHsyOaYt_3g" type="4012">
- <styles xmi:type="notation:FillStyle" xmi:id="_rsUsYVhtEd2aHsyOaYt_3g" fillColor="16776959"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_rsUsYlhtEd2aHsyOaYt_3g" lineColor="16776959"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_rsUsY1htEd2aHsyOaYt_3g" y="-10"/>
- </children>
- <styles xmi:type="notation:RoutingStyle" xmi:id="_rsUFUVhtEd2aHsyOaYt_3g" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_rsUFUlhtEd2aHsyOaYt_3g" fontName="Arial"/>
- <styles xmi:type="notation:LineStyle" xmi:id="_rsUFU1htEd2aHsyOaYt_3g" lineColor="0"/>
- <element xmi:type="bpmn:SequenceEdge" href="airticket.bpmn#_rsTeQVhtEd2aHsyOaYt_3g"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rsUFVFhtEd2aHsyOaYt_3g" points="[-53, -16, 254, 73]$[-305, -89, 2, 0]"/>
- </edges>
<edges xmi:type="notation:Edge" xmi:id="_zUJZYFhtEd2aHsyOaYt_3g" type="3001" source="_rsRCAFhtEd2aHsyOaYt_3g" target="_zUEg4FhtEd2aHsyOaYt_3g">
<children xmi:type="notation:Node" xmi:id="_zUKAcFhtEd2aHsyOaYt_3g" type="4012">
<styles xmi:type="notation:FillStyle" xmi:id="_zUKAcVhtEd2aHsyOaYt_3g" fillColor="16776959"/>
@@ -393,4 +390,28 @@
<element xmi:type="bpmn:SequenceEdge" href="airticket.bpmn#_waDtMVh1Ed2aHsyOaYt_3g"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_waE7VFh1Ed2aHsyOaYt_3g" points="[-8, 29, 8, -100]$[-40, 128, -24, -1]"/>
</edges>
+ <edges xmi:type="notation:Edge" xmi:id="_7gt8EGDaEd2jINLjV_7TQw" type="3001" source="_lMmP4FhtEd2aHsyOaYt_3g" target="_4PmwoGDaEd2jINLjV_7TQw">
+ <children xmi:type="notation:Node" xmi:id="_7gvxQGDaEd2jINLjV_7TQw" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_7gvxQWDaEd2jINLjV_7TQw" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_7gvxQmDaEd2jINLjV_7TQw" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7gvxQ2DaEd2jINLjV_7TQw" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_7gt8EWDaEd2jINLjV_7TQw" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_7gt8EmDaEd2jINLjV_7TQw" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_7gt8E2DaEd2jINLjV_7TQw" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="airticket.bpmn#_7grf0WDaEd2jINLjV_7TQw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7gt8FGDaEd2jINLjV_7TQw" points="[54, -3, -102, -3]$[103, -11, -53, -11]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_8vAUIGDaEd2jINLjV_7TQw" type="3001" source="_4PmwoGDaEd2jINLjV_7TQw" target="_rsRCAFhtEd2aHsyOaYt_3g">
+ <children xmi:type="notation:Node" xmi:id="_8vAUJWDaEd2jINLjV_7TQw" type="4012">
+ <styles xmi:type="notation:FillStyle" xmi:id="_8vA7MGDaEd2jINLjV_7TQw" fillColor="16776959"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_8vA7MWDaEd2jINLjV_7TQw" lineColor="16776959"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8vA7MmDaEd2jINLjV_7TQw" y="-10"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_8vAUIWDaEd2jINLjV_7TQw" routing="Rectilinear" smoothness="Normal" closestDistance="true"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_8vAUImDaEd2jINLjV_7TQw" fontName="Arial"/>
+ <styles xmi:type="notation:LineStyle" xmi:id="_8vAUI2DaEd2jINLjV_7TQw" lineColor="0"/>
+ <element xmi:type="bpmn:SequenceEdge" href="airticket.bpmn#_8u-e8WDaEd2jINLjV_7TQw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8vAUJGDaEd2jINLjV_7TQw" points="[54, -13, -50, 2]$[96, -33, -8, -18]"/>
+ </edges>
</notation:Diagram>
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket.png
===================================================================
(Binary files differ)
Deleted: jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/describtion.txt
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/describtion.txt 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/describtion.txt 2008-08-02 23:46:18 UTC (rev 1809)
@@ -1,19 +0,0 @@
-# $Id$
-#
-# A description/notes for the Airticket sample
-
-* FrontGateServlet receives a request
-* New Session starts the process
-* HomePage Task sends request form
-* ReceiveReq Task requires RequestData
-* FrontGateServlet sends RequestData to ReceiveReq Task
-* Validate ExclusiveGateway branches based on BPMN props
-* CheckAvail Task contacts airline for seat availability
-* Available ExclusiveGateway branches based on BPMN props
-* ReceiveOrder Task requires OrderData
-* Accept ExclusiveGateway branches based on BPMN props
-* Both CreditCard and Booking Task require OrderData
-* Process fails if OrderData requirement not sattisfied
-* Join waits for both Tasks to finish
-* SendConfirm Task sends confirmation
-* Process ends
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java 2008-08-02 17:00:12 UTC (rev 1808)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java 2008-08-02 23:46:18 UTC (rev 1809)
@@ -92,20 +92,4 @@
assertTrue("Unexpected message: " + ex.getMessage(), ex.getMessage().indexOf("end event") > 0);
}
}
-
- public void testNodeNameUniqueness() throws Exception
- {
- try
- {
- // Create a Process through the ProcessBuilder
- ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- builder.addProcess(null).addStartEvent().addSequenceFlow("taskA").addTask("taskA").addSequenceFlow("end").
- addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess(true);
- fail("InvalidProcessException expected");
- }
- catch (InvalidProcessException ex)
- {
- // expected;
- }
- }
}
More information about the jbpm-commits
mailing list