Author: thomas.diesler(a)jboss.com
Date: 2008-07-31 13:04:15 -0400 (Thu, 31 Jul 2008)
New Revision: 1795
Modified:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSupportingElement.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml
Log:
Marshall handler support
Modified:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
===================================================================
---
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-07-31
16:15:38 UTC (rev 1794)
+++
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-07-31
17:04:15 UTC (rev 1795)
@@ -33,9 +33,12 @@
import org.jboss.bpm.NotImplementedException;
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.JAXBExecutionHandler;
import org.jboss.bpm.dialect.api10.model.JAXBExpression;
import org.jboss.bpm.dialect.api10.model.JAXBFlow;
+import org.jboss.bpm.dialect.api10.model.JAXBFlowHandler;
import org.jboss.bpm.dialect.api10.model.JAXBFlowObject;
import org.jboss.bpm.dialect.api10.model.JAXBGateway;
import org.jboss.bpm.dialect.api10.model.JAXBInclusiveGateway;
@@ -46,6 +49,7 @@
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.JAXBSignalHandler;
import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
@@ -72,6 +76,10 @@
import org.jboss.bpm.model.StartEvent;
import org.jboss.bpm.model.Task;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
+import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.runtime.FlowHandler;
+import org.jboss.bpm.runtime.HandlerSupport;
+import org.jboss.bpm.runtime.SignalHandler;
/**
* A JAXB marshaller for a Process
@@ -123,24 +131,33 @@
private JAXBFlowObject adaptEvent(JAXBProcess jaxbProc, Event event)
{
+ JAXBEvent jaxb;
if (event instanceof StartEvent)
{
StartEvent start = (StartEvent)event;
- JAXBStartEvent jaxb = new JAXBStartEvent();
- jaxb.setOutFlow(getJAXBFlow(start.getOutFlow()));
- return jaxb;
+ JAXBStartEvent jaxbStart = new JAXBStartEvent();
+ jaxbStart.setOutFlow(getJAXBFlow(start.getOutFlow()));
+ jaxb = jaxbStart;
}
else if (event instanceof EndEvent)
{
EndEvent end = (EndEvent)event;
- JAXBEndEvent jaxb = new JAXBEndEvent();
- jaxb.setName(end.getName());
- return jaxb;
+ JAXBEndEvent jaxbEnd = new JAXBEndEvent();
+ jaxbEnd.setName(end.getName());
+ jaxb = jaxbEnd;
}
else
{
throw new NotImplementedException(event.toString());
}
+ if (event instanceof HandlerSupport)
+ {
+ HandlerSupport hs = (HandlerSupport)event;
+ jaxb.setExecutionHandler(getJAXBExecutionHandler(event,
hs.getExecutionHandler()));
+ jaxb.setFlowHandler(getJAXBFlowHandler(event, hs.getFlowHandler()));
+ jaxb.setSignalHandler(getJAXBSignalHandler(event, hs.getSignalHandler()));
+ }
+ return jaxb;
}
private JAXBFlowObject adaptTask(JAXBProcess jaxbProc, Task task)
@@ -149,6 +166,13 @@
jaxb.setTaskType(task.getTaskType());
jaxb.setName(task.getName());
jaxb.setOutFlow(getJAXBFlow(task.getOutFlow()));
+ if (task instanceof HandlerSupport)
+ {
+ HandlerSupport hs = (HandlerSupport)task;
+ jaxb.setExecutionHandler(getJAXBExecutionHandler(task, hs.getExecutionHandler()));
+ jaxb.setFlowHandler(getJAXBFlowHandler(task, hs.getFlowHandler()));
+ jaxb.setSignalHandler(getJAXBSignalHandler(task, hs.getSignalHandler()));
+ }
for (InputSet inSet : task.getInputSets())
{
JAXBInputSet jaxbSet = new JAXBInputSet();
@@ -182,30 +206,6 @@
return jaxb;
}
- private void adaptMessageRef(JAXBProcess jaxbProc, JAXBTask jaxb, Message msgRef)
- {
- if (msgRef != null)
- {
- String msgName = msgRef.getName();
- if (jaxbProc.getMessageByName(msgName) == null)
- {
- JAXBMessage jaxbMsg = new JAXBMessage();
- jaxbMsg.setName(msgName);
- for (Property prop : msgRef.getProperties())
- {
- JAXBProperty jaxbProp = getJaxbProperty(prop);
- jaxbMsg.getProperties().add(jaxbProp);
- }
- jaxbProc.getMessages().add(jaxbMsg);
- }
- JAXBMessage jaxbMsg = new JAXBMessage();
- jaxbMsg.setRef(msgName);
- jaxbMsg.setFromRef(getParticipant(msgRef.getFromRef()));
- jaxbMsg.setToRef(getParticipant(msgRef.getToRef()));
- jaxb.setMessageRef(jaxbMsg);
- }
- }
-
private JAXBFlowObject adaptGateway(JAXBProcess jaxbProc, Gateway gateway)
{
JAXBGateway jaxb;
@@ -230,6 +230,13 @@
throw new NotImplementedException(gateway.toString());
}
jaxb.setName(gateway.getName());
+ if (gateway instanceof HandlerSupport)
+ {
+ HandlerSupport hs = (HandlerSupport)gateway;
+ jaxb.setExecutionHandler(getJAXBExecutionHandler(gateway,
hs.getExecutionHandler()));
+ jaxb.setFlowHandler(getJAXBFlowHandler(gateway, hs.getFlowHandler()));
+ jaxb.setSignalHandler(getJAXBSignalHandler(gateway, hs.getSignalHandler()));
+ }
for (Gate gate : gateway.getGates())
{
SequenceFlow flow = gate.getOutgoingSequenceFlow();
@@ -238,6 +245,30 @@
return jaxb;
}
+ private void adaptMessageRef(JAXBProcess jaxbProc, JAXBTask jaxb, Message msgRef)
+ {
+ if (msgRef != null)
+ {
+ String msgName = msgRef.getName();
+ if (jaxbProc.getMessageByName(msgName) == null)
+ {
+ JAXBMessage jaxbMsg = new JAXBMessage();
+ jaxbMsg.setName(msgName);
+ for (Property prop : msgRef.getProperties())
+ {
+ JAXBProperty jaxbProp = getJaxbProperty(prop);
+ jaxbMsg.getProperties().add(jaxbProp);
+ }
+ jaxbProc.getMessages().add(jaxbMsg);
+ }
+ JAXBMessage jaxbMsg = new JAXBMessage();
+ jaxbMsg.setRef(msgName);
+ jaxbMsg.setFromRef(getParticipant(msgRef.getFromRef()));
+ jaxbMsg.setToRef(getParticipant(msgRef.getToRef()));
+ jaxb.setMessageRef(jaxbMsg);
+ }
+ }
+
private String getParticipant(Participant par)
{
String parName = null;
@@ -295,4 +326,48 @@
jaxb.setBody(expr.getExpressionBody());
return jaxb;
}
+
+ private JAXBExecutionHandler getJAXBExecutionHandler(FlowObject fo, ExecutionHandler
handler)
+ {
+ JAXBExecutionHandler jaxb = null;
+ if (handler != null)
+ {
+ if (fo.getClass().getPackage() != handler.getClass().getPackage())
+ {
+ jaxb = new JAXBExecutionHandler();
+ jaxb.setClassName(handler.getClass().getName());
+ }
+ }
+ return jaxb;
+ }
+
+ private JAXBFlowHandler getJAXBFlowHandler(FlowObject fo, FlowHandler handler)
+ {
+ JAXBFlowHandler jaxb = null;
+ if (handler != null)
+ {
+ if (fo.getClass().getPackage() != handler.getClass().getPackage())
+ {
+ jaxb = new JAXBFlowHandler();
+ jaxb.setClassName(handler.getClass().getName());
+ }
+ }
+ return jaxb;
+ }
+
+ private JAXBSignalHandler getJAXBSignalHandler(FlowObject fo, SignalHandler handler)
+ {
+ JAXBSignalHandler jaxb = null;
+ if (handler != null)
+ {
+ if (fo.getClass().getPackage() != handler.getClass().getPackage())
+ {
+ jaxb = new JAXBSignalHandler();
+ jaxb.setClassName(handler.getClass().getName());
+ }
+ }
+ return jaxb;
+ }
}
+
+
Modified:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSupportingElement.java
===================================================================
---
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSupportingElement.java 2008-07-31
16:15:38 UTC (rev 1794)
+++
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSupportingElement.java 2008-07-31
17:04:15 UTC (rev 1795)
@@ -31,6 +31,6 @@
* @since 08-Jul-2008
*/
@XmlType(name = "SupportingElement")
-public class JAXBSupportingElement
+public class JAXBSupportingElement extends JAXBBPMNElement
{
}
\ No newline at end of file
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
16:15:38 UTC (rev 1794)
+++
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)
@@ -44,7 +44,8 @@
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-@XmlType(name = "Task")
+@XmlType(name = "Task", propOrder = { "outFlow",
"implementation", "executionHandler", "flowHandler",
"signalHandler",
+ "messageRef", "inputSets", "outputSets" })
public class JAXBTask extends JAXBActivity
{
private TaskType taskType;
@@ -52,7 +53,7 @@
private Implementation implementation;
private List<JAXBInputSet> inputSets = new ArrayList<JAXBInputSet>();
private List<JAXBOutputSet> outputSets = new ArrayList<JAXBOutputSet>();
-
+
private JAXBExecutionHandler executionHandler;
private JAXBFlowHandler flowHandler;
private JAXBSignalHandler signalHandler;
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
16:15:38 UTC (rev 1794)
+++
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml 2008-07-31
17:04:15 UTC (rev 1795)
@@ -1,13 +1,14 @@
-<ns2:process name="Airticket"
xmlns:ns2="urn:bpm.jboss:pdl-0.1">
+<ns2:process name='Airticket' xmlns:ns2='urn:bpm.jboss:pdl-0.1'>
<start>
- <sequence to="ReceiveReqTask" />
+ <sequence to='ReceiveReqTask' />
</start>
- <task taskType="Receive" name="ReceiveReqTask">
- <sequence to="ValidateTask" />
- <message ref="ReqDataMsg" />
+ <task name='ReceiveReqTask' taskType='Receive'>
+ <sequence to='ValidateTask' />
+ <message ref='ReqDataMsg' />
</task>
- <task taskType="None" name="ValidateTask">
- <sequence to="ValidateGateway" />
+ <task name='ValidateTask' taskType='None'>
+ <sequence to='ValidateGateway' />
+ <execution-handler
class='org.jboss.bpm.samples.airticket.ValidationHandler' />
<input-set>
<property>
<name>Name</name>
@@ -31,14 +32,15 @@
</property>
</output-set>
</task>
- <exclusive-gateway name="ValidateGateway">
- <sequence conditionType="Expression"
to="CheckAvailabilityTask">
- <condition lang="MVEL">isReqDataValid == true</condition>
+ <exclusive-gateway name='ValidateGateway'>
+ <sequence conditionType='Expression'
to='CheckAvailabilityTask'>
+ <condition lang='MVEL'>isReqDataValid == true</condition>
</sequence>
- <sequence conditionType="Default" to="SendInvalidTask" />
+ <sequence conditionType='Default' to='SendInvalidTask' />
</exclusive-gateway>
- <task taskType="None" name="CheckAvailabilityTask">
- <sequence to="AvailabilityGateway" />
+ <task name='CheckAvailabilityTask' taskType='None'>
+ <sequence to='AvailabilityGateway' />
+ <execution-handler
class='org.jboss.bpm.samples.airticket.AvailabilityHandler' />
<input-set>
<property>
<name>From</name>
@@ -62,46 +64,46 @@
</property>
</output-set>
</task>
- <task taskType="Receive" name="SendInvalidTask">
- <sequence to="ReceiveReqTask" />
- <message ref="InvalidDataMsg">
+ <task name='SendInvalidTask' taskType='Receive'>
+ <sequence to='ReceiveReqTask' />
+ <message ref='InvalidDataMsg'>
<to>jboss.bpm:test=testProcessMarshaller</to>
</message>
</task>
- <exclusive-gateway name="AvailabilityGateway">
- <sequence conditionType="Expression" to="SendOfferTask">
- <condition lang="MVEL">isAvailable == true</condition>
+ <exclusive-gateway name='AvailabilityGateway'>
+ <sequence conditionType='Expression' to='SendOfferTask'>
+ <condition lang='MVEL'>isAvailable == true</condition>
</sequence>
- <sequence conditionType="Default" to="SendNotAvailableTask"
/>
+ <sequence conditionType='Default' to='SendNotAvailableTask' />
</exclusive-gateway>
- <task taskType="Receive" name="SendOfferTask">
- <sequence to="ReceiveOrderTask" />
- <message ref="OfferMsg">
+ <task name='SendOfferTask' taskType='Receive'>
+ <sequence to='ReceiveOrderTask' />
+ <message ref='OfferMsg'>
<to>jboss.bpm:test=testProcessMarshaller</to>
</message>
</task>
- <task taskType="Receive" name="SendNotAvailableTask">
- <sequence to="ReceiveReqTask" />
- <message ref="NotAvailableMsg">
+ <task name='SendNotAvailableTask' taskType='Receive'>
+ <sequence to='ReceiveReqTask' />
+ <message ref='NotAvailableMsg'>
<to>jboss.bpm:test=testProcessMarshaller</to>
</message>
</task>
- <task taskType="Receive" name="ReceiveOrderTask">
- <sequence to="AcceptOfferGateway" />
- <message ref="AcceptOfferMsg" />
+ <task name='ReceiveOrderTask' taskType='Receive'>
+ <sequence to='AcceptOfferGateway' />
+ <message ref='AcceptOfferMsg' />
</task>
- <exclusive-gateway name="AcceptOfferGateway">
- <sequence conditionType="Expression"
to="ParallelSplitGateway">
- <condition lang="MVEL">isOfferAccepted == true</condition>
+ <exclusive-gateway name='AcceptOfferGateway'>
+ <sequence conditionType='Expression'
to='ParallelSplitGateway'>
+ <condition lang='MVEL'>isOfferAccepted == true</condition>
</sequence>
- <sequence conditionType="Default" to="ReceiveReqTask" />
+ <sequence conditionType='Default' to='ReceiveReqTask' />
</exclusive-gateway>
- <parallel-gateway name="ParallelSplitGateway">
- <sequence to="CreditCardTask" />
- <sequence to="BookingTask" />
+ <parallel-gateway name='ParallelSplitGateway'>
+ <sequence to='CreditCardTask' />
+ <sequence to='BookingTask' />
</parallel-gateway>
- <task taskType="None" name="CreditCardTask">
- <sequence to="SynchronizedJoinGateway" />
+ <task name='CreditCardTask' taskType='None'>
+ <sequence to='SynchronizedJoinGateway' />
<input-set>
<property>
<name>CreditCard</name>
@@ -114,8 +116,8 @@
</property>
</input-set>
</task>
- <task taskType="None" name="BookingTask">
- <sequence to="SynchronizedJoinGateway" />
+ <task name='BookingTask' taskType='None'>
+ <sequence to='SynchronizedJoinGateway' />
<input-set>
<property>
<name>Name</name>
@@ -134,115 +136,115 @@
</property>
</input-set>
</task>
- <parallel-gateway name="SynchronizedJoinGateway">
- <sequence to="SendConfirmTask" />
+ <parallel-gateway name='SynchronizedJoinGateway'>
+ <sequence to='SendConfirmTask' />
</parallel-gateway>
- <task taskType="Receive" name="SendConfirmTask">
- <sequence to="End" />
- <message ref="ConfirmMsg">
+ <task name='SendConfirmTask' taskType='Receive'>
+ <sequence to='End' />
+ <message ref='ConfirmMsg'>
<to>jboss.bpm:test=testProcessMarshaller</to>
</message>
</task>
- <end name="End" />
- <message name="ReqDataMsg">
- <property correlation="true">
+ <end name='End' />
+ <message name='ReqDataMsg'>
+ <property correlation='true'>
<name>Name</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>From</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>To</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Date</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Seats</name>
</property>
</message>
- <message name="InvalidDataMsg">
- <property correlation="true">
+ <message name='InvalidDataMsg'>
+ <property correlation='true'>
<name>Name</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>From</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>To</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Date</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Seats</name>
</property>
</message>
- <message name="OfferMsg">
- <property correlation="true">
+ <message name='OfferMsg'>
+ <property correlation='true'>
<name>Name</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>From</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>To</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Date</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Seats</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Price</name>
</property>
</message>
- <message name="NotAvailableMsg">
- <property correlation="true">
+ <message name='NotAvailableMsg'>
+ <property correlation='true'>
<name>Name</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>From</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>To</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Date</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Seats</name>
</property>
</message>
- <message name="AcceptOfferMsg">
- <property correlation="true">
+ <message name='AcceptOfferMsg'>
+ <property correlation='true'>
<name>CreditCard</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Expire</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>isOfferAccepted</name>
</property>
</message>
- <message name="ConfirmMsg">
- <property correlation="true">
+ <message name='ConfirmMsg'>
+ <property correlation='true'>
<name>Name</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>From</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>To</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Date</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Seats</name>
</property>
- <property correlation="true">
+ <property correlation='true'>
<name>Price</name>
</property>
</message>