Author: thomas.diesler(a)jboss.com
Date: 2008-07-31 19:27:17 -0400 (Thu, 31 Jul 2008)
New Revision: 1796
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
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/TaskBuilder.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/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/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSubProcess.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowImpl.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/MessageImpl.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/ReceiveTaskImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java
jbossbpm/spec/trunk/modules/samples/airticket/server/pom.xml
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/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/engine/basic-engine-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/parallelsplit/parallel-split-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence-api10.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/task/basic-task-api10.xml
Log:
Support marshall/unmarshall roundtrip
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java
===================================================================
---
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/MessageManager.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -94,7 +94,7 @@
{
ProcessManager pm = getProcessEngine().getProcessManager();
Process proc = pm.getProcessByID(procID);
- FlowObject target = proc.findFlowObject(targetName);
+ FlowObject target = proc.getFlowObjectByName(targetName);
if (target == null)
throw new IllegalArgumentException("Cannot find message target: " +
targetName);
if (target instanceof MessageListener == false)
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
---
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -27,7 +27,6 @@
import javax.management.ObjectName;
-
import org.jboss.bpm.runtime.Attachments;
/**
@@ -140,12 +139,23 @@
/**
* Find a flow object by name
- *
* @return null if not found
*/
- FlowObject findFlowObject(String name);
+ FlowObject getFlowObjectByName(String name);
/**
+ * Get the list of associated {@link Message} objects.
+ * @return An empty list if there are none
+ */
+ List<Message> getMessages();
+
+ /**
+ * Get an associated {@link Message} by name.
+ * @return null if not found
+ */
+ Message getMessageByName(String msgName);
+
+ /**
* 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/>
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ProcessBuilder.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -43,16 +43,13 @@
ProcessBuilder addProcess(String name);
/**
- * Get the {@link Process}. <p/> This is the final call to the ProcessBuilder
after all elements have been added.
+ * Get the {@link Process}.
+ * <p/>
+ * This is the final call to the ProcessBuilder after all elements have been added.
*/
Process getProcess();
/**
- * Add a {@link SubProcess} with a given name
- */
- ProcessBuilder addSubProcess(String name);
-
- /**
* Add a {@link SequenceFlow} with a given name
*/
ProcessBuilder addSequenceFlow(String targetName);
@@ -70,7 +67,7 @@
/**
* Add an {@link IntermediateEvent} with a given name
*/
- ProcessBuilder addItermediateEvent(String name);
+ ProcessBuilder addEvent(String name);
/**
* Add an {@link EndEvent} with a given name
@@ -93,6 +90,11 @@
GatewayBuilder addGateway(String name, GatewayType type);
/**
+ * Add a @{link Message} with a given name.
+ */
+ MessageBuilder addMessage(String name);
+
+ /**
* Add an {@link ExecutionHandler} with a given Class
*/
ProcessBuilder addExecutionHandler(Class<?> clazz);
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java
===================================================================
---
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -37,7 +37,5 @@
TaskBuilder addMessageRef(String messageName, ObjectName targetID);
- TaskBuilder addMessageProperty(String propName, String propValue, boolean
isCorrelation);
-
TaskBuilder addExecutionHandler(Class<?> clazz);
}
\ No newline at end of file
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -25,174 +25,230 @@
import java.io.Reader;
+import javax.management.ObjectName;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
-import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.client.ObjectNameFactory;
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.JAXBExclusiveGateway;
+import org.jboss.bpm.dialect.api10.model.JAXBExpression;
import org.jboss.bpm.dialect.api10.model.JAXBFlow;
import org.jboss.bpm.dialect.api10.model.JAXBFlowObject;
+import org.jboss.bpm.dialect.api10.model.JAXBGateway;
import org.jboss.bpm.dialect.api10.model.JAXBHandler;
import org.jboss.bpm.dialect.api10.model.JAXBInclusiveGateway;
-import org.jboss.bpm.dialect.api10.model.JAXBIntermediateEvent;
+import org.jboss.bpm.dialect.api10.model.JAXBInputSet;
+import org.jboss.bpm.dialect.api10.model.JAXBMessage;
+import org.jboss.bpm.dialect.api10.model.JAXBOutputSet;
import org.jboss.bpm.dialect.api10.model.JAXBParallelGateway;
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.JAXBStartEvent;
-import org.jboss.bpm.dialect.api10.model.JAXBSubProcess;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
+import org.jboss.bpm.model.GatewayBuilder;
+import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.TaskBuilder;
import org.jboss.bpm.model.Gateway.GatewayType;
-import org.jboss.bpm.model.Task.TaskType;
+import org.jboss.bpm.model.SequenceFlow.ConditionType;
+import org.jboss.bpm.runtime.Handler;
-
/**
- * A JAXB unmarshaller for a Process
+ * A JAXB unmarshaller for a Process
*
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-public class ProcessUnmarshaller
+public class ProcessUnmarshaller
{
- public Process unmarshallProcess(Reader xml) throws JAXBException
+ public Process unmarshallProcess(Reader xml) throws JAXBException
{
JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
- unmarshaller.setProperty("com.sun.xml.bind.ObjectFactory",new
ObjectFactory());
+ unmarshaller.setProperty("com.sun.xml.bind.ObjectFactory", new
ObjectFactory());
JAXBProcess jaxbProc = (JAXBProcess)unmarshaller.unmarshal(xml);
Process proc = adaptProcess(jaxbProc);
return proc;
}
-
+
private Process adaptProcess(JAXBProcess jaxbProc)
{
- ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- builder.addProcess(jaxbProc.getName());
-
- for (JAXBFlowObject jaxbFlowObject : jaxbProc.getFlowObjects())
+ ProcessBuilder procBuilder =
ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(jaxbProc.getName());
+ for (JAXBFlowObject jaxb : jaxbProc.getFlowObjects())
{
- if (jaxbFlowObject instanceof JAXBStartEvent)
+ if (jaxb instanceof JAXBEvent)
{
- adaptStartEvent(builder, (JAXBStartEvent)jaxbFlowObject);
+ adaptJAXBEvent(procBuilder, (JAXBEvent)jaxb);
}
- else if (jaxbFlowObject instanceof JAXBIntermediateEvent)
+ else if (jaxb instanceof JAXBTask)
{
- adaptIntermediateEvent(builder, (JAXBIntermediateEvent)jaxbFlowObject);
+ adaptTask(procBuilder, (JAXBTask)jaxb);
}
- else if (jaxbFlowObject instanceof JAXBEndEvent)
+ else if (jaxb instanceof JAXBGateway)
{
- adaptEndEvent(builder, (JAXBEndEvent)jaxbFlowObject);
+ adaptJAXBGateway(procBuilder, (JAXBGateway)jaxb);
}
- else if (jaxbFlowObject instanceof JAXBSubProcess)
+ else
{
- adaptSubProcess(builder, (JAXBSubProcess)jaxbFlowObject);
+ throw new NotImplementedException(jaxb.toString());
}
- else if (jaxbFlowObject instanceof JAXBTask)
+ }
+ for(JAXBMessage jaxb : jaxbProc.getMessages())
+ {
+ MessageBuilder msgBuilder = procBuilder.addMessage(jaxb.getName());
+ for (JAXBProperty jaxbProp : jaxb.getProperties())
{
- adaptTask(builder, (JAXBTask)jaxbFlowObject);
+ msgBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue(),
jaxbProp.isCorrelation());
}
- else if (jaxbFlowObject instanceof JAXBExclusiveGateway)
- {
- adaptExclusiveGateway(builder, (JAXBExclusiveGateway)jaxbFlowObject);
- }
- else if (jaxbFlowObject instanceof JAXBInclusiveGateway)
- {
- adaptInclusiveGateway(builder, (JAXBInclusiveGateway)jaxbFlowObject);
- }
- else if (jaxbFlowObject instanceof JAXBComplexGateway)
- {
- adaptComplexGateway(builder, (JAXBComplexGateway)jaxbFlowObject);
- }
- else if (jaxbFlowObject instanceof JAXBParallelGateway)
- {
- adaptParallelGateway(builder, (JAXBParallelGateway)jaxbFlowObject);
- }
- else
- {
- throw new InvalidProcessException("Unsupported type: " +
jaxbFlowObject);
- }
}
-
- Process proc = builder.getProcess();
+ Process proc = procBuilder.getProcess();
return proc;
}
- private void adaptExclusiveGateway(ProcessBuilder builder, JAXBExclusiveGateway jaxb)
+ private void adaptJAXBEvent(ProcessBuilder procBuilder, JAXBEvent jaxb)
{
- builder.addGateway(jaxb.getName(), GatewayType.Exclusive);
- for(JAXBFlow flow : jaxb.getOutFlows())
- builder.addSequenceFlow(flow.getTargetName());
+ if (jaxb instanceof JAXBStartEvent)
+ {
+ procBuilder.addStartEvent();
+ JAXBStartEvent jaxbStart = (JAXBStartEvent)jaxb;
+ addOutFlow(procBuilder, jaxbStart.getOutFlow());
+ }
+ else if (jaxb instanceof JAXBEndEvent)
+ {
+ JAXBEndEvent jaxbEnd = (JAXBEndEvent)jaxb;
+ procBuilder.addEndEvent(jaxbEnd.getName());
+ }
+ else
+ {
+ throw new NotImplementedException(jaxb.toString());
+ }
+ procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
+ procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler()));
+ procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
}
- private void adaptInclusiveGateway(ProcessBuilder builder, JAXBInclusiveGateway jaxb)
+ private void adaptTask(ProcessBuilder procBuilder, JAXBTask jaxb)
{
- builder.addGateway(jaxb.getName(), GatewayType.Inclusive);
- for(JAXBFlow flow : jaxb.getOutFlows())
- builder.addSequenceFlow(flow.getTargetName());
+ TaskBuilder taskBuilder = procBuilder.addTask(jaxb.getName(), jaxb.getTaskType());
+ addOutFlow(taskBuilder, jaxb.getOutFlow());
+ for (JAXBInputSet jaxbSet : jaxb.getInputSets())
+ {
+ taskBuilder.addInputSet();
+ for (JAXBProperty jaxbProp : jaxbSet.getProperties())
+ taskBuilder.addPropertyInput(jaxbProp.getName(), jaxbProp.getValue());
+ }
+ for (JAXBOutputSet jaxbSet : jaxb.getOutputSets())
+ {
+ taskBuilder.addOutputSet();
+ for (JAXBProperty jaxbProp : jaxbSet.getProperties())
+ taskBuilder.addPropertyOutput(jaxbProp.getName(), jaxbProp.getValue());
+ }
+ JAXBMessage jaxbMessage = jaxb.getMessageRef();
+ if (jaxbMessage != null)
+ {
+ String toStr = jaxbMessage.getToRef();
+ ObjectName toRef = (toStr != null ? ObjectNameFactory.create(toStr) : null);
+ taskBuilder.addMessageRef(jaxbMessage.getRef(), toRef);
+ }
+ procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
+ procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler()));
+ procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
}
- private void adaptComplexGateway(ProcessBuilder builder, JAXBComplexGateway jaxb)
+ private void adaptJAXBGateway(ProcessBuilder procBuilder, JAXBGateway jaxb)
{
- builder.addGateway(jaxb.getName(), GatewayType.Complex);
- for(JAXBFlow flow : jaxb.getOutFlows())
- builder.addSequenceFlow(flow.getTargetName());
+ GatewayBuilder gwBuilder;
+ if (jaxb instanceof JAXBExclusiveGateway)
+ {
+ gwBuilder = procBuilder.addGateway(jaxb.getName(), GatewayType.Exclusive);
+ }
+ else if (jaxb instanceof JAXBInclusiveGateway)
+ {
+ gwBuilder = procBuilder.addGateway(jaxb.getName(), GatewayType.Inclusive);
+ }
+ else if (jaxb instanceof JAXBComplexGateway)
+ {
+ gwBuilder = procBuilder.addGateway(jaxb.getName(), GatewayType.Complex);
+ }
+ else if (jaxb instanceof JAXBParallelGateway)
+ {
+ gwBuilder = procBuilder.addGateway(jaxb.getName(), GatewayType.Parallel);
+ }
+ else
+ {
+ throw new NotImplementedException(jaxb.toString());
+ }
+ for (JAXBFlow jaxbFlow : jaxb.getOutFlows())
+ {
+ if (jaxbFlow instanceof JAXBSequenceFlow)
+ {
+ JAXBSequenceFlow jaxbSeq = (JAXBSequenceFlow)jaxbFlow;
+ if (jaxbSeq.getConditionType() == ConditionType.Expression)
+ {
+ JAXBExpression jaxbExpr = jaxbSeq.getCondition();
+ gwBuilder.addConditionalGate(jaxbFlow.getTargetName(), jaxbExpr.getLang(),
jaxbExpr.getBody());
+ }
+ else if (jaxbSeq.getConditionType() == ConditionType.Default)
+ {
+ gwBuilder.addDefaultGate(jaxbFlow.getTargetName());
+ }
+ else
+ {
+ gwBuilder.addGate(jaxbFlow.getTargetName());
+ }
+ }
+ else
+ {
+ throw new NotImplementedException(jaxbFlow.toString());
+ }
+ }
+ procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
+ procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler()));
+ procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
}
- private void adaptParallelGateway(ProcessBuilder builder, JAXBParallelGateway jaxb)
+ private void addOutFlow(ProcessBuilder procBuilder, JAXBFlow jaxbFlow)
{
- builder.addGateway(jaxb.getName(), GatewayType.Parallel);
- for(JAXBFlow flow : jaxb.getOutFlows())
- builder.addSequenceFlow(flow.getTargetName());
+ if (jaxbFlow != null)
+ {
+ if (jaxbFlow instanceof JAXBSequenceFlow)
+ {
+ procBuilder.addSequenceFlow(jaxbFlow.getTargetName());
+ }
+ else
+ {
+ throw new NotImplementedException(jaxbFlow.toString());
+ }
+ }
}
- private void adaptTask(ProcessBuilder builder, JAXBTask jaxb)
+ @SuppressWarnings("unchecked")
+ private Class<Handler> loadHandler(JAXBHandler jaxbHandler)
{
- String targetName = jaxb.getOutFlow().getTargetName();
- builder.addTask(jaxb.getName(), TaskType.None).addSequenceFlow(targetName);
-
- JAXBHandler jaxbHandler = jaxb.getExecutionHandler();
+ Class<Handler> handlerClass = null;
if (jaxbHandler != null)
- builder.addExecutionHandler(loadHandler(jaxbHandler.getClassName()));
- }
-
- private void adaptStartEvent(ProcessBuilder builder, JAXBStartEvent jaxb)
- {
- String targetName = jaxb.getOutFlow().getTargetName();
- builder.addStartEvent().addSequenceFlow(targetName);
- }
-
- private void adaptIntermediateEvent(ProcessBuilder builder, JAXBIntermediateEvent
jaxb)
- {
- String targetName = jaxb.getOutFlow().getTargetName();
- builder.addItermediateEvent(jaxb.getName()).addSequenceFlow(targetName);
- }
-
- private void adaptEndEvent(ProcessBuilder builder, JAXBEndEvent jaxb)
- {
- builder.addEndEvent(jaxb.getName());
- }
-
- private void adaptSubProcess(ProcessBuilder builder, JAXBSubProcess jaxb)
- {
- throw new NotImplementedException();
- }
-
- private Class<?> loadHandler(String className)
- {
- try
{
- ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
- return ctxLoader.loadClass(className);
+ String className = jaxbHandler.getClassName();
+ try
+ {
+ ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
+ handlerClass = (Class<Handler>)ctxLoader.loadClass(className);
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new IllegalStateException("Cannot load handler class: " +
className);
+ }
}
- catch (ClassNotFoundException e)
- {
- throw new IllegalStateException("Cannot load handler class: " +
className);
- }
+ return handlerClass;
}
}
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBGateway.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -47,8 +47,8 @@
private JAXBSignalHandler signalHandler;
@XmlElements( {
- @XmlElement(name = "sequence", type = JAXBSequenceFlow.class),
- @XmlElement(name = "message", type = JAXBMessageFlow.class)
+ @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "msgflow", type = JAXBMessageFlow.class)
})
private List<JAXBFlow> outFlows = new ArrayList<JAXBFlow>();
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBIntermediateEvent.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -46,8 +46,8 @@
private String name;
@XmlElements( {
- @XmlElement(name = "sequence", type = JAXBSequenceFlow.class),
- @XmlElement(name = "message", type = JAXBMessageFlow.class)
+ @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "msgflow", type = JAXBMessageFlow.class)
})
private JAXBFlow outFlow;
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBStartEvent.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -39,8 +39,8 @@
public class JAXBStartEvent extends JAXBEvent
{
@XmlElements( {
- @XmlElement(name = "sequence", type = JAXBSequenceFlow.class),
- @XmlElement(name = "message", type = JAXBMessageFlow.class) })
+ @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "msgflow", type = JAXBMessageFlow.class) })
private JAXBFlow outFlow;
public JAXBFlow getOutFlow()
Modified:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSubProcess.java
===================================================================
---
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSubProcess.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSubProcess.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -42,8 +42,8 @@
private JAXBSignalHandler signalHandler;
@XmlElements( {
- @XmlElement(name = "sequence", type = JAXBSequenceFlow.class),
- @XmlElement(name = "message", type = JAXBMessageFlow.class) })
+ @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "msgflow", type = JAXBMessageFlow.class) })
private JAXBFlow outFlow;
public JAXBFlow getOutFlow()
Modified:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
===================================================================
---
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -58,8 +58,9 @@
private JAXBFlowHandler flowHandler;
private JAXBSignalHandler signalHandler;
- @XmlElements( { @XmlElement(name = "sequence", type =
JAXBSequenceFlow.class),
- @XmlElement(name = "message", type = JAXBMessageFlow.class) })
+ @XmlElements( {
+ @XmlElement(name = "seqflow", type = JAXBSequenceFlow.class),
+ @XmlElement(name = "msgflow", type = JAXBMessageFlow.class) })
private JAXBFlow outFlow;
public JAXBFlow getOutFlow()
Modified:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java
===================================================================
---
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowImpl.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -43,6 +43,9 @@
public FlowImpl(String targetName)
{
+ if (targetName == null)
+ throw new IllegalArgumentException("Target name cannot be null");
+
this.targetName = targetName;
}
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -171,7 +171,7 @@
if (flow != null)
{
String name = flow.getTargetName();
- FlowObject target = proc.findFlowObject(name);
+ FlowObject target = proc.getFlowObjectByName(name);
if (target == null)
throw new InvalidProcessException("Cannot find target for out flow: " +
name);
Modified:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java
===================================================================
---
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -54,15 +54,17 @@
public MessageImpl(String name, ObjectName targetID)
{
- this.name = name;
- this.targetID = targetID;
+ this(name, targetID, null);
}
- public MessageImpl(FlowObject sourceFO, String name, ObjectName targetID)
+ public MessageImpl(String name, ObjectName targetID, FlowObject sourceFO)
{
- this.sourceFO = sourceFO;
+ if (name == null)
+ throw new IllegalArgumentException("Message name cannot be null");
+
this.name = name;
this.targetID = targetID;
+ this.sourceFO = sourceFO;
}
public String getName()
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -26,6 +26,7 @@
import org.jboss.bpm.NotImplementedException;
import org.jboss.bpm.model.Gateway;
import org.jboss.bpm.model.GatewayBuilder;
+import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.TaskBuilder;
@@ -71,13 +72,6 @@
return proc;
}
- public ProcessBuilder addSubProcess(String name)
- {
- flowObject = new SubProcessImpl(name);
- addFlowObject();
- return this;
- }
-
public ProcessBuilder addSequenceFlow(String targetName)
{
if (flowObject instanceof SingleOutFlowSetterSupport)
@@ -128,7 +122,7 @@
return this;
}
- public ProcessBuilder addItermediateEvent(String name)
+ public ProcessBuilder addEvent(String name)
{
flowObject = new IntermediateEventImpl(name);
addFlowObject();
@@ -149,7 +143,7 @@
public TaskBuilder addTask(String name, TaskType type)
{
- if (type == TaskType.None)
+ if (type == TaskType.None || type == null)
{
flowObject = new NoneTaskImpl(name);
}
@@ -191,6 +185,13 @@
return new GatewayBuilderImpl(proc, flowObject);
}
+ public MessageBuilder addMessage(String name)
+ {
+ MessageBuilder msgBuilder = new MessageBuilderImpl().newMessage(name, null);
+ proc.addMessage(msgBuilder.getMessage());
+ return msgBuilder;
+ }
+
public ProcessBuilder addExecutionHandler(Class<?> clazz)
{
return addHandler(clazz);
@@ -206,28 +207,35 @@
return addHandler(clazz);
}
- private ProcessBuilder addHandler(Class<?> clazz)
+ private ProcessBuilder addHandler(Class<?> handlerClass)
{
if (flowObject instanceof HandlerSetterSupport == false)
throw new IllegalStateException("Current flow object does not support
handlers: " + flowObject);
- HandlerSetterSupport hs = (HandlerSetterSupport)flowObject;
- try
+ if (handlerClass != null)
{
- Object handler = clazz.newInstance();
- if (handler instanceof ExecutionHandler)
- hs.setExecutionHandler((ExecutionHandler)handler);
- else if (handler instanceof FlowHandler)
- hs.setFlowHandler((FlowHandler)handler);
- else if (handler instanceof SignalHandler)
- hs.setSignalHandler((SignalHandler)handler);
- else
- throw new IllegalArgumentException("Given class is not a supported
handler");
+ HandlerSetterSupport hs = (HandlerSetterSupport)flowObject;
+ try
+ {
+ Object handler = handlerClass.newInstance();
+ if (handler instanceof ExecutionHandler)
+ hs.setExecutionHandler((ExecutionHandler)handler);
+ else if (handler instanceof FlowHandler)
+ hs.setFlowHandler((FlowHandler)handler);
+ else if (handler instanceof SignalHandler)
+ hs.setSignalHandler((SignalHandler)handler);
+ else
+ throw new IllegalArgumentException("Given class is not a supported
handler");
+ }
+ catch (RuntimeException rte)
+ {
+ throw rte;
+ }
+ catch (Exception ex)
+ {
+ throw new IllegalArgumentException("Cannot instanciate handler", ex);
+ }
}
- catch (Exception ex)
- {
- throw new IllegalArgumentException("Cannot instanciate handler", ex);
- }
return this;
}
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -40,6 +40,7 @@
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.FlowObject;
import org.jboss.bpm.model.InputSet;
+import org.jboss.bpm.model.Message;
import org.jboss.bpm.model.NameSupport;
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.Process;
@@ -60,6 +61,8 @@
private String name;
// The list of associated flow objects
private List<FlowObject> flowObjects = new ArrayList<FlowObject>();
+ // The list of associated messages
+ private List<Message> messages = new ArrayList<Message>();
// the status of the process
private Status status = Status.None;
// The possible exception that caused the process to abort
@@ -211,7 +214,7 @@
pm.waitForEnd(getID(), timeout);
}
- public FlowObject findFlowObject(String name)
+ public FlowObject getFlowObjectByName(String name)
{
if (name == null)
throw new IllegalArgumentException("Cannot find flow object with name:
null");
@@ -275,8 +278,32 @@
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 String toString()
{
return "Process[" + getName() + "]";
}
+
}
\ No newline at end of file
Modified:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java
===================================================================
---
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -161,5 +161,13 @@
if (messageRef == null)
throw new InvalidProcessException("A Message for the MessageRef attribute MUST
be entered");
+
+ String msgName = messageRef.getName();
+ Message procMessage = proc.getMessageByName(msgName);
+ if (procMessage == null)
+ throw new InvalidProcessException("Cannot find referenced message: " +
msgName);
+
+ for (Property prop : procMessage.getProperties())
+ ((MessageImpl)messageRef).addProperty(prop);
}
}
\ No newline at end of file
Modified:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java
===================================================================
---
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -63,7 +63,7 @@
@Override
public TaskType getTaskType()
{
- return TaskType.Receive;
+ return TaskType.Send;
}
public Implementation getImplementation()
@@ -133,5 +133,13 @@
if (messageRef == null)
throw new InvalidProcessException("A Message for the MessageRef attribute MUST
be entered");
+
+ String msgName = messageRef.getName();
+ Message procMessage = proc.getMessageByName(msgName);
+ if (procMessage == null)
+ throw new InvalidProcessException("Cannot find referenced message: " +
msgName);
+
+ for (Property prop : procMessage.getProperties())
+ ((MessageImpl)messageRef).addProperty(prop);
}
}
\ No newline at end of file
Modified:
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java
===================================================================
---
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -49,13 +49,13 @@
return addMessageRef(messageName, null);
}
- public TaskBuilder addMessageRef(String messageName, ObjectName targetID)
+ public TaskBuilder addMessageRef(String msgRef, ObjectName targetID)
{
- message = new MessageImpl(messageName, targetID);
+ message = new MessageImpl(msgRef, targetID);
if (flowObject instanceof ReceiveTaskImpl)
{
if (targetID != null)
- throw new IllegalArgumentException("Message targetID must be null for
ReceiveTask");
+ throw new IllegalArgumentException("Message targetID must be null for
ReceiveTask: " + flowObject);
ReceiveTaskImpl receiveTask = (ReceiveTaskImpl)flowObject;
receiveTask.setMessageRef(message);
@@ -63,7 +63,7 @@
else if (flowObject instanceof SendTaskImpl)
{
if (targetID == null)
- throw new IllegalArgumentException("Message targetID cannot be null for
SendTask");
+ throw new IllegalArgumentException("Message targetID cannot be null for
SendTask: " + flowObject);
SendTaskImpl sendTask = (SendTaskImpl)flowObject;
sendTask.setMessageRef(message);
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/pom.xml
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/pom.xml 2008-07-31 17:04:15 UTC
(rev 1795)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/pom.xml 2008-07-31 23:27:17 UTC
(rev 1796)
@@ -37,12 +37,6 @@
<artifactId>bpm-dialect-stp</artifactId>
<scope>runtime</scope>
</dependency>
- <dependency>
- <groupId>org.jboss.ws</groupId>
- <artifactId>jbossws-common</artifactId>
- <version>1.0.6-SNAPSHOT</version>
- <scope>runtime</scope>
- </dependency>
</dependencies>
<!-- Build -->
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -59,11 +59,6 @@
// Build the ReceiveReqTask
TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReqTask",
TaskType.Receive);
taskBuilder.addMessageRef("ReqDataMsg").
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
addSequenceFlow("ValidateTask");
// Build the ValidateTask
@@ -100,11 +95,6 @@
// Build the SendInvalidTask
taskBuilder = procBuilder.addTask("SendInvalidTask", TaskType.Send);
taskBuilder.addMessageRef("InvalidDataMsg", listenerID).
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
addSequenceFlow("ReceiveReqTask");
// Build the AvailabilityGateway
@@ -115,30 +105,16 @@
// Build the SendOfferTask
taskBuilder = procBuilder.addTask("SendOfferTask", TaskType.Send);
taskBuilder.addMessageRef("OfferMsg", listenerID).
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
- addMessageProperty("Price", null, true).
addSequenceFlow("ReceiveOrderTask");
// Build the SendNotAvailableTask
taskBuilder = procBuilder.addTask("SendNotAvailableTask", TaskType.Send);
taskBuilder.addMessageRef("NotAvailableMsg", listenerID).
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
addSequenceFlow("ReceiveReqTask");
// Build the ReceiveReqTask
taskBuilder = procBuilder.addTask("ReceiveOrderTask", TaskType.Receive);
taskBuilder.addMessageRef("AcceptOfferMsg").
- addMessageProperty("CreditCard", null, true).
- addMessageProperty("Expire", null, true).
- addMessageProperty("isOfferAccepted", null, true).
addSequenceFlow("AcceptOfferGateway");
// Build the AcceptOfferGateway
@@ -176,16 +152,60 @@
// Build the SendConfirmTask
taskBuilder = procBuilder.addTask("SendConfirmTask", TaskType.Send);
taskBuilder.addMessageRef("ConfirmMsg", listenerID).
- addMessageProperty("Name", null, true).
- addMessageProperty("From", null, true).
- addMessageProperty("To", null, true).
- addMessageProperty("Date", null, true).
- addMessageProperty("Seats", null, true).
- addMessageProperty("Price", null, true).
addSequenceFlow("End");
+ // Add ReqDataMsg
+ procBuilder.addMessage("ReqDataMsg").
+ addProperty("Name", null, true).
+ addProperty("From", null, true).
+ addProperty("To", null, true).
+ addProperty("Date", null, true).
+ addProperty("Seats", null, true);
+
+ // Add InvalidDataMsg
+ procBuilder.addMessage("InvalidDataMsg").
+ addProperty("Name", null, true).
+ addProperty("From", null, true).
+ addProperty("To", null, true).
+ addProperty("Date", null, true).
+ addProperty("Seats", null, true);
+
+ // Add NotAvailableMsg
+ procBuilder.addMessage("NotAvailableMsg").
+ addProperty("Name", null, true).
+ addProperty("From", null, true).
+ addProperty("To", null, true).
+ addProperty("Date", null, true).
+ addProperty("Seats", null, true);
+
+ // Add OfferMsg
+ procBuilder.addMessage("OfferMsg").
+ addProperty("Name", null, true).
+ addProperty("From", null, true).
+ addProperty("To", null, true).
+ addProperty("Date", null, true).
+ addProperty("Seats", null, true).
+ addProperty("Price", null, true);
+
+ // Add AcceptOfferMsg
+ procBuilder.addMessage("AcceptOfferMsg").
+ addProperty("CreditCard", null, true).
+ addProperty("Expire", null, true).
+ addProperty("isOfferAccepted", null, true);
+
+ // Add ConfirmMsg
+ procBuilder.addMessage("ConfirmMsg").
+ addProperty("Name", null, true).
+ addProperty("From", null, true).
+ addProperty("To", null, true).
+ addProperty("Date", null, true).
+ addProperty("Seats", null, true).
+ addProperty("Price", null, true);
+
// Add the EndEvent
- Process proc = procBuilder.addEndEvent("End").getProcess();
+ procBuilder.addEndEvent("End");
+
+ Process proc = procBuilder.getProcess();
return proc;
}
}
\ 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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -31,8 +31,8 @@
import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.test.DefaultEngineTestCase;
-import org.jboss.wsf.common.DOMUtils;
-import org.jboss.wsf.common.DOMWriter;
+import org.jboss.util.xml.DOMUtils;
+import org.jboss.util.xml.DOMWriter;
import org.w3c.dom.Element;
/**
@@ -56,18 +56,37 @@
String procXML = strwr.toString();
Element wasEl = DOMUtils.parse(new ByteArrayInputStream(procXML.getBytes()));
- strwr = new StringWriter();
- new DOMWriter(strwr).setIgnoreWhitespace(true).print(wasEl);
- String wasStr = strwr.toString();
+ String wasStr = DOMWriter.printNode(wasEl, true);
URL expURL = getResourceURL("samples/airticket/airticket-api10.xml");
Element expEl = DOMUtils.parse(expURL.openStream());
- strwr = new StringWriter();
- new DOMWriter(strwr).setIgnoreWhitespace(true).print(expEl);
- String expStr = strwr.toString();
+ String expStr = DOMWriter.printNode(expEl, true);
//System.out.println(expStr);
//System.out.println(wasStr);
assertEquals(expStr, wasStr);
}
+
+ public void testProcessUnMarshaller() throws Exception
+ {
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ DialectHandler dialect = pm.getDialectHandler("urn:bpm.jboss:pdl-0.1");
+
+ URL expURL = getResourceURL("samples/airticket/airticket-api10.xml");
+ Process proc = dialect.createProcess(expURL);
+
+ StringWriter strwr = new StringWriter();
+ dialect.marshallProcess(proc, strwr);
+ String procXML = strwr.toString();
+
+ Element wasEl = DOMUtils.parse(new ByteArrayInputStream(procXML.getBytes()));
+ String wasStr = DOMWriter.printNode(wasEl, true);
+
+ 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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml 2008-07-31
23:27:17 UTC (rev 1796)
@@ -1,13 +1,13 @@
<ns2:process name='Airticket' xmlns:ns2='urn:bpm.jboss:pdl-0.1'>
<start>
- <sequence to='ReceiveReqTask' />
+ <seqflow to='ReceiveReqTask' />
</start>
<task name='ReceiveReqTask' taskType='Receive'>
- <sequence to='ValidateTask' />
+ <seqflow to='ValidateTask' />
<message ref='ReqDataMsg' />
</task>
<task name='ValidateTask' taskType='None'>
- <sequence to='ValidateGateway' />
+ <seqflow to='ValidateGateway' />
<execution-handler
class='org.jboss.bpm.samples.airticket.ValidationHandler' />
<input-set>
<property>
@@ -33,13 +33,13 @@
</output-set>
</task>
<exclusive-gateway name='ValidateGateway'>
- <sequence conditionType='Expression'
to='CheckAvailabilityTask'>
+ <seqflow conditionType='Expression'
to='CheckAvailabilityTask'>
<condition lang='MVEL'>isReqDataValid == true</condition>
- </sequence>
- <sequence conditionType='Default' to='SendInvalidTask' />
+ </seqflow>
+ <seqflow conditionType='Default' to='SendInvalidTask' />
</exclusive-gateway>
<task name='CheckAvailabilityTask' taskType='None'>
- <sequence to='AvailabilityGateway' />
+ <seqflow to='AvailabilityGateway' />
<execution-handler
class='org.jboss.bpm.samples.airticket.AvailabilityHandler' />
<input-set>
<property>
@@ -64,46 +64,46 @@
</property>
</output-set>
</task>
- <task name='SendInvalidTask' taskType='Receive'>
- <sequence to='ReceiveReqTask' />
+ <task name='SendInvalidTask' taskType='Send'>
+ <seqflow to='ReceiveReqTask' />
<message ref='InvalidDataMsg'>
<to>jboss.bpm:test=testProcessMarshaller</to>
</message>
</task>
<exclusive-gateway name='AvailabilityGateway'>
- <sequence conditionType='Expression' to='SendOfferTask'>
+ <seqflow conditionType='Expression' to='SendOfferTask'>
<condition lang='MVEL'>isAvailable == true</condition>
- </sequence>
- <sequence conditionType='Default' to='SendNotAvailableTask' />
+ </seqflow>
+ <seqflow conditionType='Default' to='SendNotAvailableTask' />
</exclusive-gateway>
- <task name='SendOfferTask' taskType='Receive'>
- <sequence to='ReceiveOrderTask' />
+ <task name='SendOfferTask' taskType='Send'>
+ <seqflow to='ReceiveOrderTask' />
<message ref='OfferMsg'>
<to>jboss.bpm:test=testProcessMarshaller</to>
</message>
</task>
- <task name='SendNotAvailableTask' taskType='Receive'>
- <sequence to='ReceiveReqTask' />
+ <task name='SendNotAvailableTask' taskType='Send'>
+ <seqflow to='ReceiveReqTask' />
<message ref='NotAvailableMsg'>
<to>jboss.bpm:test=testProcessMarshaller</to>
</message>
</task>
<task name='ReceiveOrderTask' taskType='Receive'>
- <sequence to='AcceptOfferGateway' />
+ <seqflow to='AcceptOfferGateway' />
<message ref='AcceptOfferMsg' />
</task>
<exclusive-gateway name='AcceptOfferGateway'>
- <sequence conditionType='Expression'
to='ParallelSplitGateway'>
+ <seqflow conditionType='Expression' to='ParallelSplitGateway'>
<condition lang='MVEL'>isOfferAccepted == true</condition>
- </sequence>
- <sequence conditionType='Default' to='ReceiveReqTask' />
+ </seqflow>
+ <seqflow conditionType='Default' to='ReceiveReqTask' />
</exclusive-gateway>
<parallel-gateway name='ParallelSplitGateway'>
- <sequence to='CreditCardTask' />
- <sequence to='BookingTask' />
+ <seqflow to='CreditCardTask' />
+ <seqflow to='BookingTask' />
</parallel-gateway>
<task name='CreditCardTask' taskType='None'>
- <sequence to='SynchronizedJoinGateway' />
+ <seqflow to='SynchronizedJoinGateway' />
<input-set>
<property>
<name>CreditCard</name>
@@ -117,7 +117,7 @@
</input-set>
</task>
<task name='BookingTask' taskType='None'>
- <sequence to='SynchronizedJoinGateway' />
+ <seqflow to='SynchronizedJoinGateway' />
<input-set>
<property>
<name>Name</name>
@@ -137,10 +137,10 @@
</input-set>
</task>
<parallel-gateway name='SynchronizedJoinGateway'>
- <sequence to='SendConfirmTask' />
+ <seqflow to='SendConfirmTask' />
</parallel-gateway>
- <task name='SendConfirmTask' taskType='Receive'>
- <sequence to='End' />
+ <task name='SendConfirmTask' taskType='Send'>
+ <seqflow to='End' />
<message ref='ConfirmMsg'>
<to>jboss.bpm:test=testProcessMarshaller</to>
</message>
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-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/process/ProcessIntegrityTest.java 2008-07-31
23:27:17 UTC (rev 1796)
@@ -54,7 +54,7 @@
StartEvent start = proc.getStartEvent();
assertNotNull("Start expected", start);
- FlowObject nfo = proc.findFlowObject("taskA");
+ FlowObject nfo = proc.getFlowObjectByName("taskA");
assertNotNull("FlowObject expected", nfo);
assertTrue("Task expected", nfo instanceof Task);
Modified:
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/engine/basic-engine-api10.xml
===================================================================
---
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/engine/basic-engine-api10.xml 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/cts/engine/basic-engine-api10.xml 2008-07-31
23:27:17 UTC (rev 1796)
@@ -1,9 +1,9 @@
<ns2:process name="basic-engine"
xmlns:ns2="urn:bpm.jboss:pdl-0.1">
<start>
- <sequence to="stateA" />
+ <seqflow to="stateA" />
</start>
<task name="stateA">
- <sequence to="end" />
+ <seqflow to="end" />
</task>
<end name="end" />
</ns2:process>
\ No newline at end of file
Modified:
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/parallelsplit/parallel-split-api10.xml
===================================================================
---
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/parallelsplit/parallel-split-api10.xml 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/parallelsplit/parallel-split-api10.xml 2008-07-31
23:27:17 UTC (rev 1796)
@@ -1,10 +1,10 @@
<ns2:process name="testParallelSplit"
xmlns:ns2="urn:bpm.jboss:pdl-0.1">
<start>
- <sequence to="gateway" />
+ <seqflow to="gateway" />
</start>
<parallel-gateway name="gateway">
- <sequence to="endA" />
- <sequence to="endB" />
+ <seqflow to="endA" />
+ <seqflow to="endB" />
</parallel-gateway>
<end name="endA" />
<end name="endB" />
Modified:
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence-api10.xml
===================================================================
---
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence-api10.xml 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/sequence/basic-sequence-api10.xml 2008-07-31
23:27:17 UTC (rev 1796)
@@ -1,9 +1,9 @@
<ns2:process name="testBasicSequence"
xmlns:ns2="urn:bpm.jboss:pdl-0.1">
<start>
- <sequence to="stateA" />
+ <seqflow to="stateA" />
</start>
<task name="stateA">
- <sequence to="end" />
+ <seqflow to="end" />
</task>
<end name="end" />
</ns2:process>
\ No newline at end of file
Modified:
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/task/basic-task-api10.xml
===================================================================
---
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/task/basic-task-api10.xml 2008-07-31
17:04:15 UTC (rev 1795)
+++
jbossbpm/spec/trunk/modules/testsuite/src/test/resources/samples/task/basic-task-api10.xml 2008-07-31
23:27:17 UTC (rev 1796)
@@ -1,9 +1,9 @@
<ns2:process name="testBasicTask"
xmlns:ns2="urn:bpm.jboss:pdl-0.1">
<start>
- <sequence to="stateA" />
+ <seqflow to="stateA" />
</start>
<task name="stateA">
- <sequence to="end" />
+ <seqflow to="end" />
<execution-handler class="org.jboss.bpm.samples.task.TaskA" />
</task>
<end name="end" />