[jbpm-commits] JBoss JBPM SVN: r1802 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/model and 24 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Aug 2 08:51:38 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-08-02 08:51:38 -0400 (Sat, 02 Aug 2008)
New Revision: 1802
Added:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageRef.java
jbossbpm/spec/trunk/modules/dialects/api10/src/test/
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/ProcessMessageTest.java
jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/
jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/jbpm-beans.xml
jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/log4j.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java
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/MessageBuilder.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SendTask.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java
jbossbpm/spec/trunk/modules/dialects/api10/.classpath
jbossbpm/spec/trunk/modules/dialects/api10/pom.xml
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/ProcessMarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessage.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java
jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/resources/jpdl-3.2.xsd
jbossbpm/spec/trunk/modules/dialects/stp/pom.xml
jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java
jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.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/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/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java
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/server/AirticketServiceImpl.java
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/ProcessMarshallerTest.java
jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml
Log:
Add support for msgref
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-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/client/DialectHandler.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -38,6 +38,11 @@
public interface DialectHandler
{
/**
+ * Get the the supported namespace from this dialect.
+ */
+ String getNamespaceURI();
+
+ /**
* Create a {@link Process} from a descriptor.
*/
Process createProcess(String pXML);
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -23,6 +23,7 @@
import javax.management.ObjectName;
+
//$Id$
/**
@@ -36,9 +37,19 @@
/**
* Create a {@link Message} with a given name
*/
- MessageBuilder newMessage(String messageName, ObjectName targetID);
+ MessageBuilder newMessage(String msgName);
/**
+ * Add a message destination
+ */
+ MessageBuilder addToRef(ObjectName toRef);
+
+ /**
+ * Add a message source
+ */
+ MessageBuilder addFromRef(ObjectName fromRef);
+
+ /**
* Add a message property
*/
MessageBuilder addProperty(String name, String value);
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SendTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SendTask.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SendTask.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -21,6 +21,7 @@
*/
package org.jboss.bpm.model;
+
//$Id$
/**
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-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -23,7 +23,6 @@
//$Id$
-import javax.management.ObjectName;
/**
* The TaskBuilder can be used to build a {@link Task} dynamically.
@@ -33,9 +32,9 @@
*/
public interface TaskBuilder extends ActivityBuilder
{
- TaskBuilder addMessageRef(String messageName);
+ MessageBuilder addMessage(String msgName);
+
+ TaskBuilder addMessageRef(String msgName);
- TaskBuilder addMessageRef(String messageName, ObjectName targetID);
-
TaskBuilder addExecutionHandler(Class<?> clazz);
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/dialects/api10/.classpath
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/.classpath 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/api10/.classpath 2008-08-02 12:51:38 UTC (rev 1802)
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" output="target/classes" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
Modified: jbossbpm/spec/trunk/modules/dialects/api10/pom.xml
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/pom.xml 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/api10/pom.xml 2008-08-02 12:51:38 UTC (rev 1802)
@@ -30,14 +30,19 @@
<dependency>
<groupId>org.jboss.bpm</groupId>
<artifactId>bpm-api</artifactId>
- <version>${version}</version>
- <scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
</dependency>
+
+ <!-- Runtime Dependencies -->
<dependency>
+ <groupId>org.jboss.bpm</groupId>
+ <artifactId>bpm-ri</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<scope>runtime</scope>
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-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/DialectHandlerImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -43,6 +43,13 @@
*/
public class DialectHandlerImpl implements DialectHandler
{
+ public static final String NAMESPACE_URI = "urn:bpm.jboss:pdl-0.1";
+
+ public String getNamespaceURI()
+ {
+ return NAMESPACE_URI;
+ }
+
public Process createProcess(String pXML)
{
try
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -44,6 +44,7 @@
import org.jboss.bpm.dialect.api10.model.JAXBInclusiveGateway;
import org.jboss.bpm.dialect.api10.model.JAXBInputSet;
import org.jboss.bpm.dialect.api10.model.JAXBMessage;
+import org.jboss.bpm.dialect.api10.model.JAXBMessageRef;
import org.jboss.bpm.dialect.api10.model.JAXBOutputSet;
import org.jboss.bpm.dialect.api10.model.JAXBParallelGateway;
import org.jboss.bpm.dialect.api10.model.JAXBProcess;
@@ -105,6 +106,12 @@
JAXBProcess jaxbProc = new JAXBProcess();
jaxbProc.setName(proc.getName());
+ for (Message msg : proc.getMessages())
+ {
+ JAXBMessage jaxbMsg = adaptMessage(jaxbProc, msg);
+ jaxbProc.getMessages().add(jaxbMsg);
+ }
+
for (FlowObject fo : proc.getFlowObjects())
{
JAXBFlowObject jaxb;
@@ -250,25 +257,44 @@
if (msgRef != null)
{
String msgName = msgRef.getName();
- if (jaxbProc.getMessageByName(msgName) == null)
+ JAXBMessage jaxbMsg = jaxbProc.getMessageByName(msgName);
+ if (jaxbMsg != 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);
+ JAXBMessageRef jaxbMsgRef = new JAXBMessageRef();
+ jaxbMsgRef.setNameRef(msgName);
+
+ String fromStr = getParticipant(msgRef.getFromRef());
+ if (fromStr != null && fromStr.equals(jaxbMsg.getFromRef()) == false)
+ jaxbMsgRef.setFromRef(fromStr);
+
+ String toStr = getParticipant(msgRef.getToRef());
+ if (toStr != null && toStr.equals(jaxbMsg.getToRef()) == false)
+ jaxbMsgRef.setToRef(toStr);
+
+ jaxb.setMessageRef(jaxbMsgRef);
}
- JAXBMessage jaxbMsg = new JAXBMessage();
- jaxbMsg.setRef(msgName);
- jaxbMsg.setFromRef(getParticipant(msgRef.getFromRef()));
- jaxbMsg.setToRef(getParticipant(msgRef.getToRef()));
- jaxb.setMessageRef(jaxbMsg);
+ else
+ {
+ jaxbMsg = adaptMessage(jaxbProc, msgRef);
+ jaxb.setMessageRef(jaxbMsg);
+ }
}
}
+ private JAXBMessage adaptMessage(JAXBProcess jaxbProc, Message msg)
+ {
+ JAXBMessage jaxbMsg = new JAXBMessage();
+ jaxbMsg.setName(msg.getName());
+ jaxbMsg.setFromRef(getParticipant(msg.getFromRef()));
+ jaxbMsg.setToRef(getParticipant(msg.getToRef()));
+ for (Property prop : msg.getProperties())
+ {
+ JAXBProperty jaxbProp = getJaxbProperty(prop);
+ jaxbMsg.getProperties().add(jaxbProp);
+ }
+ return jaxbMsg;
+ }
+
private String getParticipant(Participant par)
{
String parName = null;
@@ -369,5 +395,3 @@
return jaxb;
}
}
-
-
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-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -30,6 +30,7 @@
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;
@@ -44,12 +45,14 @@
import org.jboss.bpm.dialect.api10.model.JAXBInclusiveGateway;
import org.jboss.bpm.dialect.api10.model.JAXBInputSet;
import org.jboss.bpm.dialect.api10.model.JAXBMessage;
+import org.jboss.bpm.dialect.api10.model.JAXBMessageRef;
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.JAXBSupportingElement;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
import org.jboss.bpm.model.GatewayBuilder;
@@ -84,39 +87,53 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
procBuilder.addProcess(jaxbProc.getName());
+
+ for(JAXBMessage jaxb : jaxbProc.getMessages())
+ {
+ MessageBuilder msgBuilder = procBuilder.addMessage(jaxb.getName());
+ adaptJAXBMessage(msgBuilder, jaxb);
+ }
+
for (JAXBFlowObject jaxb : jaxbProc.getFlowObjects())
{
if (jaxb instanceof JAXBEvent)
{
- adaptJAXBEvent(procBuilder, (JAXBEvent)jaxb);
+ adaptJAXBEvent(procBuilder, jaxbProc, (JAXBEvent)jaxb);
}
else if (jaxb instanceof JAXBTask)
{
- adaptTask(procBuilder, (JAXBTask)jaxb);
+ adaptTask(procBuilder, jaxbProc, (JAXBTask)jaxb);
}
else if (jaxb instanceof JAXBGateway)
{
- adaptJAXBGateway(procBuilder, (JAXBGateway)jaxb);
+ adaptJAXBGateway(procBuilder, jaxbProc, (JAXBGateway)jaxb);
}
else
{
throw new NotImplementedException(jaxb.toString());
}
}
- for(JAXBMessage jaxb : jaxbProc.getMessages())
- {
- MessageBuilder msgBuilder = procBuilder.addMessage(jaxb.getName());
- for (JAXBProperty jaxbProp : jaxb.getProperties())
- {
- msgBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue(), jaxbProp.isCorrelation());
- }
- }
Process proc = procBuilder.getProcess();
return proc;
}
- private void adaptJAXBEvent(ProcessBuilder procBuilder, JAXBEvent jaxb)
+ private void adaptJAXBMessage(MessageBuilder msgBuilder, JAXBMessage jaxbMsg)
{
+ msgBuilder.addFromRef(getObjectName(jaxbMsg.getFromRef()));
+ msgBuilder.addToRef(getObjectName(jaxbMsg.getToRef()));
+ for (JAXBProperty jaxbProp : jaxbMsg.getProperties())
+ {
+ msgBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue(), jaxbProp.isCorrelation());
+ }
+ }
+
+ private ObjectName getObjectName(String toStr)
+ {
+ return (toStr != null ? ObjectNameFactory.create(toStr) : null);
+ }
+
+ private void adaptJAXBEvent(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBEvent jaxb)
+ {
if (jaxb instanceof JAXBStartEvent)
{
procBuilder.addStartEvent();
@@ -137,7 +154,7 @@
procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
}
- private void adaptTask(ProcessBuilder procBuilder, JAXBTask jaxb)
+ private void adaptTask(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBTask jaxb)
{
TaskBuilder taskBuilder = procBuilder.addTask(jaxb.getName(), jaxb.getTaskType());
addOutFlow(taskBuilder, jaxb.getOutFlow());
@@ -153,19 +170,29 @@
for (JAXBProperty jaxbProp : jaxbSet.getProperties())
taskBuilder.addPropertyOutput(jaxbProp.getName(), jaxbProp.getValue());
}
- JAXBMessage jaxbMessage = jaxb.getMessageRef();
- if (jaxbMessage != null)
+ JAXBSupportingElement jaxbSE = jaxb.getMessageRef();
+ if (jaxbSE instanceof JAXBMessage)
{
- String toStr = jaxbMessage.getToRef();
- ObjectName toRef = (toStr != null ? ObjectNameFactory.create(toStr) : null);
- taskBuilder.addMessageRef(jaxbMessage.getRef(), toRef);
+ JAXBMessage jaxbMsg = (JAXBMessage)jaxbSE;
+ MessageBuilder msgBuilder = taskBuilder.addMessage(jaxbMsg.getName());
+ adaptJAXBMessage(msgBuilder, jaxbMsg);
}
+ else if (jaxbSE instanceof JAXBMessageRef)
+ {
+ JAXBMessageRef jaxbMsgRef = (JAXBMessageRef)jaxbSE;
+ String msgName = jaxbMsgRef.getNameRef();
+ JAXBMessage jaxbMsg = jaxbProc.getMessageByName(msgName);
+ if (jaxbMsg == null)
+ throw new InvalidProcessException("Cannot find message with name: " + msgName);
+ MessageBuilder msgBuilder = taskBuilder.addMessage(msgName);
+ adaptJAXBMessage(msgBuilder, jaxbMsg);
+ }
procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler()));
procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
}
- private void adaptJAXBGateway(ProcessBuilder procBuilder, JAXBGateway jaxb)
+ private void adaptJAXBGateway(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBGateway jaxb)
{
GatewayBuilder gwBuilder;
if (jaxb instanceof JAXBExclusiveGateway)
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessage.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessage.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessage.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -38,26 +38,14 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
- at XmlType(name = "Message", propOrder = {"fromRef", "toRef", "properties"})
+ at XmlType(name = "Message", propOrder = { "fromRef", "toRef", "properties"})
public class JAXBMessage extends JAXBSupportingElement
{
- private String ref;
private String name;
private String fromRef;
private String toRef;
private List<JAXBProperty> properties = new ArrayList<JAXBProperty>();
- public String getRef()
- {
- return ref;
- }
-
- @XmlAttribute
- public void setRef(String ref)
- {
- this.ref = ref;
- }
-
public String getName()
{
return name;
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageRef.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageRef.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageRef.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -0,0 +1,76 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * A Message, which is used in the definition of attributes for a @{link StartEvent},
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at XmlType(name = "MessageRef")
+public class JAXBMessageRef extends JAXBSupportingElement
+{
+ private String nameRef;
+ private String fromRef;
+ private String toRef;
+
+ public String getNameRef()
+ {
+ return nameRef;
+ }
+
+ @XmlAttribute
+ public void setNameRef(String ref)
+ {
+ this.nameRef = ref;
+ }
+
+
+ public String getFromRef()
+ {
+ return fromRef;
+ }
+
+ @XmlElement(name = "from")
+ public void setFromRef(String fromRef)
+ {
+ this.fromRef = fromRef;
+ }
+
+ public String getToRef()
+ {
+ return toRef;
+ }
+
+ @XmlElement(name = "to")
+ public void setToRef(String toRef)
+ {
+ this.toRef = toRef;
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageRef.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -49,7 +49,6 @@
public class JAXBTask extends JAXBActivity
{
private TaskType taskType;
- private JAXBMessage messageRef;
private Implementation implementation;
private List<JAXBInputSet> inputSets = new ArrayList<JAXBInputSet>();
private List<JAXBOutputSet> outputSets = new ArrayList<JAXBOutputSet>();
@@ -63,6 +62,11 @@
@XmlElement(name = "msgflow", type = JAXBMessageFlow.class) })
private JAXBFlow outFlow;
+ @XmlElements( {
+ @XmlElement(name = "msgref", type = JAXBMessageRef.class),
+ @XmlElement(name = "message", type = JAXBMessage.class) })
+ private JAXBSupportingElement messageRef;
+
public JAXBFlow getOutFlow()
{
return outFlow;
@@ -95,13 +99,13 @@
this.implementation = implementation;
}
- public JAXBMessage getMessageRef()
+ public JAXBSupportingElement getMessageRef()
{
return messageRef;
}
- @XmlElement(name = "message")
- public void setMessageRef(JAXBMessage messageRef)
+ @XmlTransient
+ public void setMessageRef(JAXBSupportingElement messageRef)
{
this.messageRef = messageRef;
}
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/ProcessMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/ProcessMessageTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/ProcessMessageTest.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -0,0 +1,103 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10;
+
+// $Id$
+
+import java.io.StringWriter;
+
+import org.jboss.bpm.client.DialectHandler;
+import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.ReceiveTask;
+import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.Task.TaskType;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test process messages
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 03-Jul-2008
+ */
+public class ProcessMessageTest extends DefaultEngineTestCase
+{
+ public void testProcessMessage() throws Exception
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("End").addEndEvent("End");
+ procBuilder.addMessage("FooMsg");
+ Process expProc = procBuilder.getProcess();
+
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ DialectHandler dh = pm.getDialectHandler(DialectHandlerImpl.NAMESPACE_URI);
+
+ StringWriter strwr = new StringWriter();
+ dh.marshallProcess(expProc, strwr);
+
+ Process wasProc = dh.createProcess(strwr.toString());
+ assertNotNull(wasProc.getMessageByName("FooMsg"));
+ }
+
+ public void testReceiveTaskWithMessage() throws Exception
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("A");
+ TaskBuilder taskBuilder = procBuilder.addTask("A", TaskType.Receive);
+ taskBuilder.addMessage("FooMsg");
+ procBuilder.addSequenceFlow("End").addEndEvent("End");
+ Process expProc = procBuilder.getProcess();
+
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ DialectHandler dh = pm.getDialectHandler(DialectHandlerImpl.NAMESPACE_URI);
+
+ StringWriter strwr = new StringWriter();
+ dh.marshallProcess(expProc, strwr);
+
+ Process wasProc = dh.createProcess(strwr.toString());
+ ReceiveTask recTask = (ReceiveTask)wasProc.getFlowObjectByName("A");
+ assertEquals("FooMsg", recTask.getMessageRef().getName());
+ }
+
+ public void testReceiveTaskWithMessageRef() throws Exception
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addMessage("FooMsg");
+ procBuilder.addStartEvent().addSequenceFlow("A");
+ TaskBuilder taskBuilder = procBuilder.addTask("A", TaskType.Receive);
+ taskBuilder.addMessageRef("FooMsg");
+ procBuilder.addSequenceFlow("End").addEndEvent("End");
+ Process expProc = procBuilder.getProcess();
+
+ ProcessManager pm = ProcessManager.locateProcessManager();
+ DialectHandler dh = pm.getDialectHandler(DialectHandlerImpl.NAMESPACE_URI);
+
+ StringWriter strwr = new StringWriter();
+ dh.marshallProcess(expProc, strwr);
+
+ Process wasProc = dh.createProcess(strwr.toString());
+ ReceiveTask recTask = (ReceiveTask)wasProc.getFlowObjectByName("A");
+ assertEquals("FooMsg", recTask.getMessageRef().getName());
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/ProcessMessageTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/jbpm-beans.xml
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/jbpm-beans.xml (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/jbpm-beans.xml 2008-08-02 12:51:38 UTC (rev 1802)
@@ -0,0 +1,44 @@
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <!-- The KernelLocator -->
+ <bean name="KernelLocator" class="org.jboss.kernel.plugins.util.KernelLocator"/>
+
+ <!-- The Builder Factories -->
+ <bean name="jBPMProcessBuilderFactory" class="org.jboss.bpm.model.internal.ProcessBuilderFactoryImpl"/>
+ <bean name="jBPMMessageBuilderFactory" class="org.jboss.bpm.model.internal.MessageBuilderFactoryImpl"/>
+ <bean name="jBPMPropertyBuilderFactory" class="org.jboss.bpm.model.internal.PropertyBuilderFactoryImpl"/>
+
+ <!-- The ProcessEngine -->
+ <bean name="jBPMProcessEngine" class="org.jboss.bpm.client.internal.ProcessEngineImpl">
+ <property name="processManager"><inject bean="jBPMProcessManager"/></property>
+ <property name="executionManager"><inject bean="jBPMExecutionManager"/></property>
+ <property name="signalManager"><inject bean="jBPMSignalManager"/></property>
+ <property name="messageManager"><inject bean="jBPMMessageManager"/></property>
+ </bean>
+
+ <!-- The Managers -->
+ <bean name="jBPMExecutionManager" class="org.jboss.bpm.client.internal.ExecutionManagerImpl"/>
+ <bean name="jBPMSignalManager" class="org.jboss.bpm.client.internal.SignalManagerImpl"/>
+ <bean name="jBPMMessageManager" class="org.jboss.bpm.client.internal.MessageManagerImpl"/>
+
+ <!-- The ProcessManager -->
+ <bean name="jBPMProcessManager" class="org.jboss.bpm.client.internal.ProcessManagerImpl">
+ <property name="dialectRegistry"><inject bean="jBPMDialectRegistry"/></property>
+ <property name="dialectHandlers">
+ <map keyClass="java.lang.String" valueClass="org.jboss.bpm.client.DialectHandler">
+ <entry><key>api10</key><value><inject bean="jBPMDialectHandlerAPI10"/></value></entry>
+ </map>
+ </property>
+ </bean>
+ <bean name="jBPMDialectHandlerAPI10" class="org.jboss.bpm.dialect.api10.DialectHandlerImpl"/>
+
+ <!-- The DialectRegistry -->
+ <bean name="jBPMDialectRegistry" class="org.jboss.bpm.client.DialectRegistry">
+ <property name="registry">
+ <map keyClass="java.lang.String" valueClass="java.lang.String">
+ <entry><key>urn:bpm.jboss:pdl-0.1</key><value>api10</value></entry>
+ </map>
+ </property>
+ </bean>
+
+</deployment>
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/jbpm-beans.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/log4j.xml
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/log4j.xml (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/log4j.xml 2008-08-02 12:51:38 UTC (rev 1802)
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+
+ <!-- ================================= -->
+ <!-- Preserve messages in a local file -->
+ <!-- ================================= -->
+
+ <appender name="FILE" class="org.apache.log4j.FileAppender">
+ <param name="File" value="${log4j.output.dir}/test.log"/>
+ <param name="Append" value="false"/>
+ <layout class="org.apache.log4j.PatternLayout">
+ <!-- The default pattern: Date Priority [Category] Message\n -->
+ <param name="ConversionPattern" value="%d %-5p [%c:%L] %m%n"/>
+ </layout>
+ </appender>
+
+ <!-- ============================== -->
+ <!-- Append messages to the console -->
+ <!-- ============================== -->
+
+ <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out" />
+ <param name="Threshold" value="INFO" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d{HH:mm:ss,SSS} [%t] %-5p %C{1} : %m%n" />
+ </layout>
+ </appender>
+
+ <!-- ================ -->
+ <!-- Limit categories -->
+ <!-- ================ -->
+
+ <category name="org.jbpm">
+ <priority value="DEBUG" />
+ </category>
+
+ <category name="org.hibernate">
+ <priority value="INFO" />
+ </category>
+
+ <!-- hide optimistic locking failures -->
+ <category name="org.hibernate.event.def.AbstractFlushingEventListener">
+ <priority value="FATAL" />
+ </category>
+
+ <!-- ======================= -->
+ <!-- Setup the Root category -->
+ <!-- ======================= -->
+
+ <root>
+ <!--appender-ref ref="CONSOLE"/-->
+ <appender-ref ref="FILE"/>
+ </root>
+
+</log4j:configuration>
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/test/resources/log4j.xml
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -45,7 +45,13 @@
*/
public class DialectHandlerImpl implements DialectHandler
{
-
+ public static final String NAMESPACE_URI = "urn:jbpm.org:jpdl-3.2";
+
+ public String getNamespaceURI()
+ {
+ return NAMESPACE_URI;
+ }
+
public Process createProcess(String pXML)
{
try
Modified: jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/resources/jpdl-3.2.xsd
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/resources/jpdl-3.2.xsd 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/jpdl32/src/main/resources/jpdl-3.2.xsd 2008-08-02 12:51:38 UTC (rev 1802)
@@ -1,10 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns="urn:jbpm.org:jpdl-3.2" targetNamespace="urn:jbpm.org:jpdl-3.2" xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified">
-<xs:schema xmlns= "urn:jbpm.org:jpdl-3.2"
- targetNamespace="urn:jbpm.org:jpdl-3.2"
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- elementFormDefault="qualified">
-
<!-- PROCESS-DEFINITION -->
<!-- ################## -->
<xs:element name="process-definition">
@@ -13,8 +10,8 @@
<xs:element ref="description" />
<xs:element ref="swimlane" />
<xs:element ref="start-state" />
- <xs:group ref="node-elements"/>
- <xs:group ref="action-elements" />
+ <xs:group ref="node-elements" />
+ <xs:group ref="action-elements" />
<xs:element ref="event" />
<xs:element ref="exception-handler" />
<xs:element ref="task" />
@@ -28,7 +25,7 @@
<xs:element name="swimlane">
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="1">
- <xs:element ref="assignment"/>
+ <xs:element ref="assignment" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
@@ -40,63 +37,58 @@
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="description" />
- <xs:element ref="task"/>
- <xs:element ref="transition"/>
- <xs:element ref="event"/>
- <xs:element ref="exception-handler"/>
+ <xs:element ref="task" />
+ <xs:element ref="transition" />
+ <xs:element ref="event" />
+ <xs:element ref="exception-handler" />
</xs:choice>
- <xs:attribute name="name" type="xs:string"/>
+ <xs:attribute name="name" type="xs:string" />
</xs:complexType>
</xs:element>
-
<xs:element name="end-state">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="description" />
- <xs:element ref="event"/>
- <xs:element ref="exception-handler"/>
+ <xs:element ref="event" />
+ <xs:element ref="exception-handler" />
</xs:choice>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="end-complete-process" type="booleanType" use="optional" default="false"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="end-complete-process" type="booleanType" use="optional" default="false" />
</xs:complexType>
</xs:element>
-
<xs:element name="decision">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="description" />
<xs:element name="handler" type="delegation" />
- <xs:element ref="event"/>
- <xs:element ref="exception-handler"/>
- <xs:element ref="transition"/>
+ <xs:element ref="event" />
+ <xs:element ref="exception-handler" />
+ <xs:element ref="transition" />
</xs:choice>
- <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="expression" type="xs:string" />
<xs:attribute name="async" type="xs:string" default="false" />
</xs:complexType>
</xs:element>
-
<xs:element name="fork">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="script" />
<xs:group ref="node-content-elements" />
</xs:choice>
- <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="async" type="xs:string" default="false" />
</xs:complexType>
</xs:element>
-
<xs:element name="join">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="node-content-elements" />
</xs:choice>
- <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="async" type="xs:string" default="false" />
</xs:complexType>
</xs:element>
-
<xs:element name="node">
<xs:complexType>
<xs:sequence>
@@ -107,91 +99,85 @@
<xs:group ref="node-content-elements" />
</xs:choice>
</xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="async" type="xs:string" default="false" />
</xs:complexType>
</xs:element>
-
<xs:element name="process-state">
<xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="sub-process">
- <xs:complexType>
- <xs:attribute name="name" type="xs:string"
- use="required" />
- <xs:attribute name="version" type="xs:integer" />
- <xs:attribute name="binding" type="xs:string" />
- </xs:complexType>
- </xs:element>
- <xs:element ref="variable" />
- <xs:group ref="node-content-elements" />
- </xs:choice>
- <xs:attribute name="name" type="xs:string" use="required" />
- <xs:attribute name="async" type="xs:string" default="false" />
- <xs:attribute name="binding" type="bindingType"></xs:attribute>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="sub-process">
+ <xs:complexType>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="version" type="xs:integer" />
+ <xs:attribute name="binding" type="xs:string" />
+ </xs:complexType>
+ </xs:element>
+ <xs:element ref="variable" />
+ <xs:group ref="node-content-elements" />
+ </xs:choice>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="async" type="xs:string" default="false" />
+ <xs:attribute name="binding" type="bindingType"></xs:attribute>
</xs:complexType>
</xs:element>
-
<xs:element name="state">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="node-content-elements"/>
+ <xs:group ref="node-content-elements" />
</xs:choice>
- <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="async" type="xs:string" default="false" />
</xs:complexType>
</xs:element>
-
<xs:element name="super-state">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="node-elements"/>
- <xs:group ref="node-content-elements"/>
+ <xs:group ref="node-elements" />
+ <xs:group ref="node-content-elements" />
</xs:choice>
- <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="async" type="xs:string" default="false" />
</xs:complexType>
</xs:element>
-
<xs:element name="task-node">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="task" />
<xs:group ref="node-content-elements" />
</xs:choice>
- <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="create-tasks" type="booleanType" default="true" />
<xs:attribute name="end-tasks" type="booleanType" default="false" />
<xs:attribute name="signal" default="last">
<xs:simpleType>
<xs:restriction base="xs:string">
- <xs:enumeration value="unsynchronized"/>
- <xs:enumeration value="never"/>
- <xs:enumeration value="first"/>
- <xs:enumeration value="first-wait"/>
- <xs:enumeration value="last"/>
- <xs:enumeration value="last-wait"/>
+ <xs:enumeration value="unsynchronized" />
+ <xs:enumeration value="never" />
+ <xs:enumeration value="first" />
+ <xs:enumeration value="first-wait" />
+ <xs:enumeration value="last" />
+ <xs:enumeration value="last-wait" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="async" type="xs:string" default="false" />
</xs:complexType>
</xs:element>
-
<xs:element name="mail-node">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="subject" />
<xs:element ref="text" />
- <xs:group ref="node-content-elements"/>
+ <xs:group ref="node-content-elements" />
</xs:choice>
- <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="async" type="xs:string" default="false" />
- <xs:attribute name="template" type="xs:string"/>
- <xs:attribute name="actors" type="xs:string"/>
- <xs:attribute name="to" type="xs:string"/>
- <xs:attribute name="subject" type="xs:string"/>
- <xs:attribute name="text" type="xs:string"/>
+ <xs:attribute name="template" type="xs:string" />
+ <xs:attribute name="actors" type="xs:string" />
+ <xs:attribute name="to" type="xs:string" />
+ <xs:attribute name="subject" type="xs:string" />
+ <xs:attribute name="text" type="xs:string" />
</xs:complexType>
</xs:element>
@@ -201,16 +187,16 @@
<xs:element name="transition">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element ref="description" />
- <xs:element name="condition">
- <xs:complexType mixed="true">
- <xs:sequence minOccurs="0" maxOccurs="unbounded">
- <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- <xs:attribute name="expression" type="xs:string" />
- </xs:complexType>
- </xs:element>
- <xs:group ref="action-elements"/>
+ <xs:element ref="description" />
+ <xs:element name="condition">
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="expression" type="xs:string" />
+ </xs:complexType>
+ </xs:element>
+ <xs:group ref="action-elements" />
<xs:element ref="exception-handler" />
</xs:choice>
<xs:attribute name="to" type="xs:string" use="required" />
@@ -234,18 +220,16 @@
<xs:attribute name="async" type="xs:string" />
</xs:complexType>
</xs:element>
-
<xs:element name="cancel-timer">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
-
<xs:element name="create-timer">
<xs:complexType>
- <xs:choice minOccurs="0">
- <xs:element ref="action"/>
- <xs:element ref="script"/>
+ <xs:choice minOccurs="0">
+ <xs:element ref="action" />
+ <xs:element ref="script" />
</xs:choice>
<xs:attribute name="duedate" type="xs:string" use="required" />
<xs:attribute name="name" type="xs:string" />
@@ -253,9 +237,8 @@
<xs:attribute name="transition" type="xs:string" />
</xs:complexType>
</xs:element>
-
<xs:element name="script">
- <xs:complexType mixed="true">
+ <xs:complexType mixed="true">
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
@@ -263,20 +246,19 @@
<xs:attribute name="accept-propagated-events" type="booleanType" default="true" />
</xs:complexType>
</xs:element>
-
<xs:element name="mail">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="subject" />
<xs:element ref="text" />
</xs:choice>
- <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="async" type="xs:string" default="false" />
- <xs:attribute name="template" type="xs:string"/>
- <xs:attribute name="actors" type="xs:string"/>
- <xs:attribute name="to" type="xs:string"/>
- <xs:attribute name="subject" type="xs:string"/>
- <xs:attribute name="text" type="xs:string"/>
+ <xs:attribute name="template" type="xs:string" />
+ <xs:attribute name="actors" type="xs:string" />
+ <xs:attribute name="to" type="xs:string" />
+ <xs:attribute name="subject" type="xs:string" />
+ <xs:attribute name="text" type="xs:string" />
</xs:complexType>
</xs:element>
@@ -285,31 +267,31 @@
<xs:element name="event">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:group ref="action-elements"/>
+ <xs:group ref="action-elements" />
</xs:choice>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:union>
<xs:simpleType>
- <xs:restriction base="xs:string"/>
+ <xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:string">
- <xs:enumeration value="node-enter"/>
- <xs:enumeration value="node-leave"/>
- <xs:enumeration value="process-start"/>
- <xs:enumeration value="process-end"/>
- <xs:enumeration value="task-create"/>
- <xs:enumeration value="task-assign"/>
- <xs:enumeration value="task-start"/>
- <xs:enumeration value="task-end"/>
- <xs:enumeration value="before-signal"/>
- <xs:enumeration value="after-signal"/>
- <xs:enumeration value="superstate-enter"/>
- <xs:enumeration value="superstate-leave"/>
- <xs:enumeration value="timer-create"/>
- <xs:enumeration value="subprocess-created"/>
- <xs:enumeration value="subprocess-end"/>
+ <xs:enumeration value="node-enter" />
+ <xs:enumeration value="node-leave" />
+ <xs:enumeration value="process-start" />
+ <xs:enumeration value="process-end" />
+ <xs:enumeration value="task-create" />
+ <xs:enumeration value="task-assign" />
+ <xs:enumeration value="task-start" />
+ <xs:enumeration value="task-end" />
+ <xs:enumeration value="before-signal" />
+ <xs:enumeration value="after-signal" />
+ <xs:enumeration value="superstate-enter" />
+ <xs:enumeration value="superstate-leave" />
+ <xs:enumeration value="timer-create" />
+ <xs:enumeration value="subprocess-created" />
+ <xs:enumeration value="subprocess-end" />
</xs:restriction>
</xs:simpleType>
</xs:union>
@@ -323,10 +305,10 @@
<xs:element name="exception-handler">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="unbounded">
- <xs:element ref="action"/>
- <xs:element ref="script"/>
+ <xs:element ref="action" />
+ <xs:element ref="script" />
</xs:choice>
- <xs:attribute name="exception-class" type="xs:string"/>
+ <xs:attribute name="exception-class" type="xs:string" />
</xs:complexType>
</xs:element>
@@ -336,10 +318,10 @@
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="description" />
- <xs:element ref="assignment"/>
- <xs:element ref="controller"/>
- <xs:element ref="event"/>
- <xs:element ref="timer"/>
+ <xs:element ref="assignment" />
+ <xs:element ref="controller" />
+ <xs:element ref="event" />
+ <xs:element ref="timer" />
<xs:element name="reminder">
<xs:complexType>
<xs:attribute name="duedate" type="xs:string" use="required" />
@@ -348,18 +330,16 @@
</xs:element>
</xs:choice>
<xs:attribute name="name" type="xs:string" />
- <xs:attribute name="blocking" type="booleanType" default="false"/>
- <xs:attribute name="signalling" type="booleanType" default="true"/>
+ <xs:attribute name="blocking" type="booleanType" default="false" />
+ <xs:attribute name="signalling" type="booleanType" default="true" />
<xs:attribute name="description" type="xs:string" />
<xs:attribute name="duedate" type="xs:string" />
<xs:attribute name="swimlane" type="xs:string" />
<xs:attribute name="priority" type="priorityType" default="normal" />
- <xs:attribute name="notify" type="booleanType" default="false"/>
+ <xs:attribute name="notify" type="booleanType" default="false" />
</xs:complexType>
</xs:element>
-
<xs:element name="controller" type="delegation" />
-
<xs:element name="assignment">
<xs:complexType>
<xs:complexContent>
@@ -385,31 +365,28 @@
<xs:attribute name="transition" type="xs:string" />
</xs:complexType>
</xs:element>
-
<xs:element name="variable">
<xs:complexType>
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
- <xs:attribute name="name" type="xs:string" use="required"/>
- <xs:attribute name="access" type="xs:string" default="read,write"/>
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="access" type="xs:string" default="read,write" />
<xs:attribute name="mapped-name" type="xs:string" />
</xs:complexType>
</xs:element>
<!-- MAIL -->
<!-- #### -->
- <xs:element name="to" type="xs:string"/>
- <xs:element name="recipients" type="xs:string"/>
- <xs:element name="subject" type="xs:string"/>
- <xs:element name="text" type="xs:string"/>
- <xs:element name="template" type="xs:string"/>
+ <xs:element name="to" type="xs:string" />
+ <xs:element name="recipients" type="xs:string" />
+ <xs:element name="subject" type="xs:string" />
+ <xs:element name="text" type="xs:string" />
+ <xs:element name="template" type="xs:string" />
<!-- TYPES AND GROUPS -->
<!-- ################ -->
-
<xs:element name="description" type="xs:string" />
-
<xs:complexType name="delegation" mixed="true">
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
@@ -417,83 +394,76 @@
<xs:attribute name="class" type="xs:string" />
<xs:attribute name="config-type" default="field" type="xs:string" />
</xs:complexType>
-
<xs:simpleType name="configType">
<xs:restriction base="xs:string">
- <xs:enumeration value="field"/>
- <xs:enumeration value="bean"/>
- <xs:enumeration value="constructor"/>
- <xs:enumeration value="configuration-property"/>
+ <xs:enumeration value="field" />
+ <xs:enumeration value="bean" />
+ <xs:enumeration value="constructor" />
+ <xs:enumeration value="configuration-property" />
</xs:restriction>
</xs:simpleType>
-
<xs:simpleType name="booleanType">
<xs:restriction base="xs:string">
- <xs:enumeration value="yes"/>
- <xs:enumeration value="no"/>
- <xs:enumeration value="true"/>
- <xs:enumeration value="false"/>
- <xs:enumeration value="on"/>
- <xs:enumeration value="off"/>
+ <xs:enumeration value="yes" />
+ <xs:enumeration value="no" />
+ <xs:enumeration value="true" />
+ <xs:enumeration value="false" />
+ <xs:enumeration value="on" />
+ <xs:enumeration value="off" />
</xs:restriction>
</xs:simpleType>
-
<xs:simpleType name="priorityType">
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
- <xs:enumeration value="highest"/>
- <xs:enumeration value="high"/>
- <xs:enumeration value="normal"/>
- <xs:enumeration value="low"/>
- <xs:enumeration value="lowest"/>
+ <xs:enumeration value="highest" />
+ <xs:enumeration value="high" />
+ <xs:enumeration value="normal" />
+ <xs:enumeration value="low" />
+ <xs:enumeration value="lowest" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
- <xs:restriction base="xs:int"/>
+ <xs:restriction base="xs:int" />
</xs:simpleType>
</xs:union>
</xs:simpleType>
-
<xs:group name="node-elements">
<xs:choice>
- <xs:element ref="node"/>
- <xs:element ref="state"/>
- <xs:element ref="task-node"/>
- <xs:element ref="super-state"/>
- <xs:element ref="process-state"/>
- <xs:element ref="fork"/>
- <xs:element ref="join"/>
- <xs:element ref="decision"/>
- <xs:element ref="end-state"/>
- <xs:element ref="mail-node"/>
+ <xs:element ref="node" />
+ <xs:element ref="state" />
+ <xs:element ref="task-node" />
+ <xs:element ref="super-state" />
+ <xs:element ref="process-state" />
+ <xs:element ref="fork" />
+ <xs:element ref="join" />
+ <xs:element ref="decision" />
+ <xs:element ref="end-state" />
+ <xs:element ref="mail-node" />
</xs:choice>
</xs:group>
-
<xs:group name="action-elements">
<xs:choice>
- <xs:element ref="action"/>
- <xs:element ref="script"/>
- <xs:element ref="create-timer"/>
- <xs:element ref="cancel-timer"/>
- <xs:element ref="mail"/>
+ <xs:element ref="action" />
+ <xs:element ref="script" />
+ <xs:element ref="create-timer" />
+ <xs:element ref="cancel-timer" />
+ <xs:element ref="mail" />
</xs:choice>
</xs:group>
-
<xs:group name="node-content-elements">
<xs:choice>
<xs:element ref="description" />
- <xs:element ref="event"/>
- <xs:element ref="exception-handler"/>
- <xs:element ref="timer"/>
- <xs:element ref="transition"/>
+ <xs:element ref="event" />
+ <xs:element ref="exception-handler" />
+ <xs:element ref="timer" />
+ <xs:element ref="transition" />
</xs:choice>
</xs:group>
-
<xs:simpleType name="bindingType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="late"></xs:enumeration>
- <xs:enumeration value="early"></xs:enumeration>
- </xs:restriction>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="late"></xs:enumeration>
+ <xs:enumeration value="early"></xs:enumeration>
+ </xs:restriction>
</xs:simpleType>
-</xs:schema>
+</xs:schema>
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/dialects/stp/pom.xml
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/stp/pom.xml 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/stp/pom.xml 2008-08-02 12:51:38 UTC (rev 1802)
@@ -30,7 +30,6 @@
<dependency>
<groupId>org.jboss.bpm</groupId>
<artifactId>bpm-api</artifactId>
- <version>${version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
@@ -41,7 +40,6 @@
<dependency>
<groupId>org.jboss.bpm</groupId>
<artifactId>bpm-ri</artifactId>
- <version>${version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
Modified: jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -43,7 +43,13 @@
*/
public class DialectHandlerImpl implements DialectHandler
{
+ public static final String NAMESPACE_URI = "http://stp.eclipse.org/bpmn";
+ public String getNamespaceURI()
+ {
+ return NAMESPACE_URI;
+ }
+
public Process createProcess(String pXML)
{
try
Modified: jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -45,7 +45,13 @@
*/
public class DialectHandlerImpl implements DialectHandler
{
-
+ public static final String NAMESPACE_URI = "http://www.wfmc.org/2008/XPDL2.1";
+
+ public String getNamespaceURI()
+ {
+ return NAMESPACE_URI;
+ }
+
public Process createProcess(String pXML)
{
try
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -39,12 +39,24 @@
{
private MessageImpl message;
- public MessageBuilder newMessage(String name, ObjectName targetID)
+ public MessageBuilder newMessage(String name)
{
- message = new MessageImpl(name, targetID);
+ message = new MessageImpl(name);
return this;
}
+ public MessageBuilder addToRef(ObjectName toRef)
+ {
+ message.setTargetID(toRef);
+ return this;
+ }
+
+ public MessageBuilder addFromRef(ObjectName fromRef)
+ {
+ message.setSourceID(fromRef);
+ return this;
+ }
+
public MessageBuilder addProperty(String name, String value)
{
Property prop = new PropertyImpl(name, new ExpressionImpl(value));
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-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -52,17 +52,17 @@
private ObjectName targetID;
private List<Property> props = new ArrayList<Property>();
- public MessageImpl(String name, ObjectName targetID)
+ public MessageImpl(String name)
{
- this(name, targetID, null);
+ if (name == null)
+ throw new IllegalArgumentException("Message name cannot be null");
+
+ this.name = name;
}
public MessageImpl(String name, ObjectName targetID, FlowObject sourceFO)
{
- if (name == null)
- throw new IllegalArgumentException("Message name cannot be null");
-
- this.name = name;
+ this(name);
this.targetID = targetID;
this.sourceFO = sourceFO;
}
@@ -72,6 +72,26 @@
return name;
}
+ public ObjectName getSourceID()
+ {
+ return sourceID;
+ }
+
+ public void setSourceID(ObjectName sourceID)
+ {
+ this.sourceID = sourceID;
+ }
+
+ public ObjectName getTargetID()
+ {
+ return targetID;
+ }
+
+ public void setTargetID(ObjectName targetID)
+ {
+ this.targetID = targetID;
+ }
+
public Property getProperty(String name)
{
for (Property prop : props)
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-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessBuilderImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -187,7 +187,7 @@
public MessageBuilder addMessage(String name)
{
- MessageBuilder msgBuilder = new MessageBuilderImpl().newMessage(name, null);
+ MessageBuilder msgBuilder = new MessageBuilderImpl().newMessage(name);
proc.addMessage(msgBuilder.getMessage());
return msgBuilder;
}
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-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -162,12 +162,8 @@
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);
+ initializeMessageRef(proc, messageRef);
+ if (messageRef.getToRef() != null)
+ throw new IllegalArgumentException("Message targetID must be null for: " + this);
}
}
\ 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-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -105,7 +105,8 @@
Entity entityRef = toRef.getEntityRef();
ObjectName targetID = ObjectNameFactory.create(entityRef.getName());
- msgBuilder.newMessage(messageRef.getName(), targetID);
+ msgBuilder.newMessage(messageRef.getName());
+ msgBuilder.addToRef(targetID);
// Copy the properties from the execution context
// to the send message
@@ -134,12 +135,8 @@
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);
+ initializeMessageRef(proc, messageRef);
+ if (messageRef.getToRef() == null)
+ throw new IllegalArgumentException("Message targetID cannot be null for: " + this);
}
}
\ 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-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -25,7 +25,7 @@
import javax.management.ObjectName;
-import org.jboss.bpm.model.Property;
+import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.Task;
import org.jboss.bpm.model.TaskBuilder;
@@ -37,34 +37,49 @@
*/
public class TaskBuilderImpl extends ActivityBuilderImpl implements TaskBuilder
{
- private MessageImpl message;
-
public TaskBuilderImpl(ProcessImpl proc, FlowObjectImpl flowObject)
{
super(proc, flowObject);
}
- public TaskBuilder addMessageRef(String messageName)
+ @Override
+ public MessageBuilder addMessage(String name)
{
- return addMessageRef(messageName, null);
+ MessageBuilder msgBuilder = new MessageBuilderImpl().newMessage(name);
+ if (flowObject instanceof ReceiveTaskImpl)
+ {
+ ReceiveTaskImpl receiveTask = (ReceiveTaskImpl)flowObject;
+ receiveTask.setMessageRef(msgBuilder.getMessage());
+ }
+ else if (flowObject instanceof SendTaskImpl)
+ {
+ SendTaskImpl sendTask = (SendTaskImpl)flowObject;
+ sendTask.setMessageRef(msgBuilder.getMessage());
+ }
+ else
+ {
+ throw new IllegalStateException("Cannot add message to: " + flowObject);
+ }
+ return msgBuilder;
}
- public TaskBuilder addMessageRef(String msgRef, ObjectName targetID)
+ public TaskBuilder addMessageRef(String msgName)
{
- message = new MessageImpl(msgRef, targetID);
+ return addMessageRef(msgName, null, null);
+ }
+
+ public TaskBuilder addMessageRef(String msgName, ObjectName fromID, ObjectName toID)
+ {
+ MessageImpl message = new MessageImpl(msgName);
if (flowObject instanceof ReceiveTaskImpl)
{
- if (targetID != null)
- throw new IllegalArgumentException("Message targetID must be null for ReceiveTask: " + flowObject);
-
ReceiveTaskImpl receiveTask = (ReceiveTaskImpl)flowObject;
receiveTask.setMessageRef(message);
}
else if (flowObject instanceof SendTaskImpl)
{
- if (targetID == null)
- throw new IllegalArgumentException("Message targetID cannot be null for SendTask: " + flowObject);
-
+ message.setSourceID(fromID);
+ message.setTargetID(toID);
SendTaskImpl sendTask = (SendTaskImpl)flowObject;
sendTask.setMessageRef(message);
}
@@ -75,13 +90,6 @@
return this;
}
- public TaskBuilder addMessageProperty(String name, String value, boolean isCorrelation)
- {
- Property prop = new PropertyImpl(name, new ExpressionImpl(value), isCorrelation);
- message.addProperty(prop);
- return this;
- }
-
public TaskBuilder addExecutionHandler(Class<?> clazz)
{
super.addExecutionHandler(clazz);
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-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -21,6 +21,9 @@
*/
package org.jboss.bpm.model.internal;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Property;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.Task;
import org.jboss.bpm.runtime.SignalHandler;
@@ -76,4 +79,21 @@
{
return "Task[" + getName() + "]";
}
+
+ protected void initializeMessageRef(Process proc, Message msg)
+ {
+ String msgName = msg.getName();
+ MessageImpl procMsg = (MessageImpl)proc.getMessageByName(msgName);
+ if (procMsg != null)
+ {
+ MessageImpl msgImpl = (MessageImpl)msg;
+ if (msgImpl.getSourceID() == null && procMsg.getSourceID() != null)
+ msgImpl.setSourceID(procMsg.getSourceID());
+ if (msgImpl.getTargetID() == null && procMsg.getTargetID() != null)
+ msgImpl.setTargetID(procMsg.getTargetID());
+
+ for (Property prop : procMsg.getProperties())
+ ((MessageImpl)msg).addProperty(prop);
+ }
+ }
}
\ No newline at end of file
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-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/AirticketProcessBuilder.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -54,7 +54,10 @@
// Create a Process through the ProcessBuilder
ProcessBuilderFactory procFactory = ProcessBuilderFactory.newInstance();
ProcessBuilder procBuilder = procFactory.newProcessBuilder();
- procBuilder.addProcess("Airticket").addStartEvent().addSequenceFlow("ReceiveReqTask");
+ procBuilder.addProcess("Airticket");
+
+ // Add Start Event
+ procBuilder.addStartEvent().addSequenceFlow("ReceiveReqTask");
// Build the ReceiveReqTask
TaskBuilder taskBuilder = procBuilder.addTask("ReceiveReqTask", TaskType.Receive);
@@ -94,7 +97,7 @@
// Build the SendInvalidTask
taskBuilder = procBuilder.addTask("SendInvalidTask", TaskType.Send);
- taskBuilder.addMessageRef("InvalidDataMsg", listenerID).
+ taskBuilder.addMessageRef("InvalidDataMsg").
addSequenceFlow("ReceiveReqTask");
// Build the AvailabilityGateway
@@ -104,12 +107,12 @@
// Build the SendOfferTask
taskBuilder = procBuilder.addTask("SendOfferTask", TaskType.Send);
- taskBuilder.addMessageRef("OfferMsg", listenerID).
+ taskBuilder.addMessageRef("OfferMsg").
addSequenceFlow("ReceiveOrderTask");
// Build the SendNotAvailableTask
taskBuilder = procBuilder.addTask("SendNotAvailableTask", TaskType.Send);
- taskBuilder.addMessageRef("NotAvailableMsg", listenerID).
+ taskBuilder.addMessageRef("NotAvailableMsg").
addSequenceFlow("ReceiveReqTask");
// Build the ReceiveReqTask
@@ -151,9 +154,12 @@
// Build the SendConfirmTask
taskBuilder = procBuilder.addTask("SendConfirmTask", TaskType.Send);
- taskBuilder.addMessageRef("ConfirmMsg", listenerID).
+ taskBuilder.addMessageRef("ConfirmMsg").
addSequenceFlow("End");
+ // Add the EndEvent
+ procBuilder.addEndEvent("End");
+
// Add ReqDataMsg
procBuilder.addMessage("ReqDataMsg").
addProperty("Name", null, true).
@@ -164,6 +170,7 @@
// Add InvalidDataMsg
procBuilder.addMessage("InvalidDataMsg").
+ addToRef(listenerID).
addProperty("Name", null, true).
addProperty("From", null, true).
addProperty("To", null, true).
@@ -172,6 +179,7 @@
// Add NotAvailableMsg
procBuilder.addMessage("NotAvailableMsg").
+ addToRef(listenerID).
addProperty("Name", null, true).
addProperty("From", null, true).
addProperty("To", null, true).
@@ -180,6 +188,7 @@
// Add OfferMsg
procBuilder.addMessage("OfferMsg").
+ addToRef(listenerID).
addProperty("Name", null, true).
addProperty("From", null, true).
addProperty("To", null, true).
@@ -195,6 +204,7 @@
// Add ConfirmMsg
procBuilder.addMessage("ConfirmMsg").
+ addToRef(listenerID).
addProperty("Name", null, true).
addProperty("From", null, true).
addProperty("To", null, true).
@@ -202,9 +212,7 @@
addProperty("Seats", null, true).
addProperty("Price", null, true);
- // Add the EndEvent
- procBuilder.addEndEvent("End");
-
+ // Get the process
Process proc = procBuilder.getProcess();
return proc;
}
Modified: jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/main/java/org/jboss/bpm/samples/airticket/server/AirticketServiceImpl.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -157,7 +157,7 @@
{
MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("ReqDataMsg", null).
+ Message msg = msgBuilder.newMessage("ReqDataMsg").
addProperty("Name", gwtMsg.name).
addProperty("From", gwtMsg.from).
addProperty("To", gwtMsg.to).
@@ -171,7 +171,7 @@
{
MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("AcceptOfferMsg", null).
+ Message msg = msgBuilder.newMessage("AcceptOfferMsg").
addProperty("CreditCard", gwtMsg.creditCard).
addProperty("Expire", gwtMsg.expire).
addProperty("isOfferAccepted", "" + gwtMsg.acceptOffer).
Modified: 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-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/AirticketTest.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -119,8 +119,12 @@
{
MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("ReqDataMsg", null).addProperty("Name", "Kermit").addProperty("From", "MUC")
- .addProperty("To", "NYC").addProperty("Date", "25-Jul-2008").addProperty("Seats", "2").getMessage();
+ 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;
}
@@ -128,10 +132,14 @@
{
MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("ReqDataMsg", getMessageListenerID()).addProperty("Name", "Kermit")
- .addProperty("From", "MUC").addProperty("To", "NYC").addProperty("Date", "25-Jul-2008").addProperty("Seats",
- "0"). // Invalid number of seats
- getMessage();
+ 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;
}
@@ -139,8 +147,11 @@
{
MessageBuilderFactory msgFactory = MessageBuilderFactory.newInstance();
MessageBuilder msgBuilder = msgFactory.newMessageBuilder();
- Message msg = msgBuilder.newMessage("AcceptOfferMsg", null).addProperty("CreditCard", "1234-1234-1234-1234")
- .addProperty("Expire", "25-Jul-2012").addProperty("isOfferAccepted", "true").getMessage();
+ Message msg = msgBuilder.newMessage("AcceptOfferMsg").
+ addProperty("CreditCard", "1234-1234-1234-1234").
+ addProperty("Expire", "25-Jul-2012").
+ addProperty("isOfferAccepted", "true").
+ getMessage();
return msg;
}
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-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/java/org/jboss/bpm/samples/airticket/ProcessMarshallerTest.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -24,6 +24,7 @@
// $Id$
import java.io.ByteArrayInputStream;
+import java.io.FileWriter;
import java.io.StringWriter;
import java.net.URL;
@@ -62,8 +63,13 @@
Element expEl = DOMUtils.parse(expURL.openStream());
String expStr = DOMWriter.printNode(expEl, true);
- //System.out.println(expStr);
- //System.out.println(wasStr);
+ if (expStr.equals(wasStr) == false)
+ {
+ FileWriter fileWriter = new FileWriter("airticket-was-api10.xml");
+ fileWriter.write(wasStr);
+ fileWriter.close();
+ }
+
assertEquals(expStr, wasStr);
}
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-01 11:40:47 UTC (rev 1801)
+++ jbossbpm/spec/trunk/modules/samples/airticket/server/src/test/resources/samples/airticket/airticket-api10.xml 2008-08-02 12:51:38 UTC (rev 1802)
@@ -1,251 +1,247 @@
<ns2:process name='Airticket' xmlns:ns2='urn:bpm.jboss:pdl-0.1'>
- <start>
- <seqflow to='ReceiveReqTask' />
- </start>
- <task name='ReceiveReqTask' taskType='Receive'>
- <seqflow to='ValidateTask' />
- <message ref='ReqDataMsg' />
- </task>
- <task name='ValidateTask' taskType='None'>
- <seqflow to='ValidateGateway' />
- <execution-handler class='org.jboss.bpm.samples.airticket.ValidationHandler' />
- <input-set>
- <property>
- <name>Name</name>
- </property>
- <property>
- <name>From</name>
- </property>
- <property>
- <name>To</name>
- </property>
- <property>
- <name>Date</name>
- </property>
- <property>
- <name>Seats</name>
- </property>
- </input-set>
- <output-set>
- <property>
- <name>isReqDataValid</name>
- </property>
- </output-set>
- </task>
- <exclusive-gateway name='ValidateGateway'>
- <seqflow conditionType='Expression' to='CheckAvailabilityTask'>
- <condition lang='MVEL'>isReqDataValid == true</condition>
- </seqflow>
- <seqflow conditionType='Default' to='SendInvalidTask' />
- </exclusive-gateway>
- <task name='CheckAvailabilityTask' taskType='None'>
- <seqflow to='AvailabilityGateway' />
- <execution-handler class='org.jboss.bpm.samples.airticket.AvailabilityHandler' />
- <input-set>
- <property>
- <name>From</name>
- </property>
- <property>
- <name>To</name>
- </property>
- <property>
- <name>Date</name>
- </property>
- <property>
- <name>Seats</name>
- </property>
- </input-set>
- <output-set>
- <property>
- <name>isAvailable</name>
- </property>
- <property>
- <name>Price</name>
- </property>
- </output-set>
- </task>
- <task name='SendInvalidTask' taskType='Send'>
- <seqflow to='ReceiveReqTask' />
- <message ref='InvalidDataMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
- </message>
- </task>
- <exclusive-gateway name='AvailabilityGateway'>
- <seqflow conditionType='Expression' to='SendOfferTask'>
- <condition lang='MVEL'>isAvailable == true</condition>
- </seqflow>
- <seqflow conditionType='Default' to='SendNotAvailableTask' />
- </exclusive-gateway>
- <task name='SendOfferTask' taskType='Send'>
- <seqflow to='ReceiveOrderTask' />
- <message ref='OfferMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
- </message>
- </task>
- <task name='SendNotAvailableTask' taskType='Send'>
- <seqflow to='ReceiveReqTask' />
- <message ref='NotAvailableMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
- </message>
- </task>
- <task name='ReceiveOrderTask' taskType='Receive'>
- <seqflow to='AcceptOfferGateway' />
- <message ref='AcceptOfferMsg' />
- </task>
- <exclusive-gateway name='AcceptOfferGateway'>
- <seqflow conditionType='Expression' to='ParallelSplitGateway'>
- <condition lang='MVEL'>isOfferAccepted == true</condition>
- </seqflow>
- <seqflow conditionType='Default' to='ReceiveReqTask' />
- </exclusive-gateway>
- <parallel-gateway name='ParallelSplitGateway'>
- <seqflow to='CreditCardTask' />
- <seqflow to='BookingTask' />
- </parallel-gateway>
- <task name='CreditCardTask' taskType='None'>
- <seqflow to='SynchronizedJoinGateway' />
- <input-set>
- <property>
- <name>CreditCard</name>
- </property>
- <property>
- <name>Expire</name>
- </property>
- <property>
- <name>Price</name>
- </property>
- </input-set>
- </task>
- <task name='BookingTask' taskType='None'>
- <seqflow to='SynchronizedJoinGateway' />
- <input-set>
- <property>
- <name>Name</name>
- </property>
- <property>
- <name>From</name>
- </property>
- <property>
- <name>To</name>
- </property>
- <property>
- <name>Date</name>
- </property>
- <property>
- <name>Seats</name>
- </property>
- </input-set>
- </task>
- <parallel-gateway name='SynchronizedJoinGateway'>
- <seqflow to='SendConfirmTask' />
- </parallel-gateway>
- <task name='SendConfirmTask' taskType='Send'>
- <seqflow to='End' />
- <message ref='ConfirmMsg'>
- <to>jboss.bpm:test=testProcessMarshaller</to>
- </message>
- </task>
- <end name='End' />
- <message name='ReqDataMsg'>
- <property correlation='true'>
- <name>Name</name>
- </property>
- <property correlation='true'>
- <name>From</name>
- </property>
- <property correlation='true'>
- <name>To</name>
- </property>
- <property correlation='true'>
- <name>Date</name>
- </property>
- <property correlation='true'>
- <name>Seats</name>
- </property>
- </message>
- <message name='InvalidDataMsg'>
- <property correlation='true'>
- <name>Name</name>
- </property>
- <property correlation='true'>
- <name>From</name>
- </property>
- <property correlation='true'>
- <name>To</name>
- </property>
- <property correlation='true'>
- <name>Date</name>
- </property>
- <property correlation='true'>
- <name>Seats</name>
- </property>
- </message>
- <message name='OfferMsg'>
- <property correlation='true'>
- <name>Name</name>
- </property>
- <property correlation='true'>
- <name>From</name>
- </property>
- <property correlation='true'>
- <name>To</name>
- </property>
- <property correlation='true'>
- <name>Date</name>
- </property>
- <property correlation='true'>
- <name>Seats</name>
- </property>
- <property correlation='true'>
- <name>Price</name>
- </property>
- </message>
- <message name='NotAvailableMsg'>
- <property correlation='true'>
- <name>Name</name>
- </property>
- <property correlation='true'>
- <name>From</name>
- </property>
- <property correlation='true'>
- <name>To</name>
- </property>
- <property correlation='true'>
- <name>Date</name>
- </property>
- <property correlation='true'>
- <name>Seats</name>
- </property>
- </message>
- <message name='AcceptOfferMsg'>
- <property correlation='true'>
- <name>CreditCard</name>
- </property>
- <property correlation='true'>
- <name>Expire</name>
- </property>
- <property correlation='true'>
- <name>isOfferAccepted</name>
- </property>
- </message>
- <message name='ConfirmMsg'>
- <property correlation='true'>
- <name>Name</name>
- </property>
- <property correlation='true'>
- <name>From</name>
- </property>
- <property correlation='true'>
- <name>To</name>
- </property>
- <property correlation='true'>
- <name>Date</name>
- </property>
- <property correlation='true'>
- <name>Seats</name>
- </property>
- <property correlation='true'>
- <name>Price</name>
- </property>
- </message>
+ <start>
+ <seqflow to='ReceiveReqTask'/>
+ </start>
+ <task name='ReceiveReqTask' taskType='Receive'>
+ <seqflow to='ValidateTask'/>
+ <msgref nameRef='ReqDataMsg'/>
+ </task>
+ <task name='ValidateTask' taskType='None'>
+ <seqflow to='ValidateGateway'/>
+ <execution-handler class='org.jboss.bpm.samples.airticket.ValidationHandler'/>
+ <input-set>
+ <property>
+ <name>Name</name>
+ </property>
+ <property>
+ <name>From</name>
+ </property>
+ <property>
+ <name>To</name>
+ </property>
+ <property>
+ <name>Date</name>
+ </property>
+ <property>
+ <name>Seats</name>
+ </property>
+ </input-set>
+ <output-set>
+ <property>
+ <name>isReqDataValid</name>
+ </property>
+ </output-set>
+ </task>
+ <exclusive-gateway name='ValidateGateway'>
+ <seqflow conditionType='Expression' to='CheckAvailabilityTask'>
+ <condition lang='MVEL'>isReqDataValid == true</condition>
+ </seqflow>
+ <seqflow conditionType='Default' to='SendInvalidTask'/>
+ </exclusive-gateway>
+ <task name='CheckAvailabilityTask' taskType='None'>
+ <seqflow to='AvailabilityGateway'/>
+ <execution-handler class='org.jboss.bpm.samples.airticket.AvailabilityHandler'/>
+ <input-set>
+ <property>
+ <name>From</name>
+ </property>
+ <property>
+ <name>To</name>
+ </property>
+ <property>
+ <name>Date</name>
+ </property>
+ <property>
+ <name>Seats</name>
+ </property>
+ </input-set>
+ <output-set>
+ <property>
+ <name>isAvailable</name>
+ </property>
+ <property>
+ <name>Price</name>
+ </property>
+ </output-set>
+ </task>
+ <task name='SendInvalidTask' taskType='Send'>
+ <seqflow to='ReceiveReqTask'/>
+ <msgref nameRef='InvalidDataMsg'/>
+ </task>
+ <exclusive-gateway name='AvailabilityGateway'>
+ <seqflow conditionType='Expression' to='SendOfferTask'>
+ <condition lang='MVEL'>isAvailable == true</condition>
+ </seqflow>
+ <seqflow conditionType='Default' to='SendNotAvailableTask'/>
+ </exclusive-gateway>
+ <task name='SendOfferTask' taskType='Send'>
+ <seqflow to='ReceiveOrderTask'/>
+ <msgref nameRef='OfferMsg'/>
+ </task>
+ <task name='SendNotAvailableTask' taskType='Send'>
+ <seqflow to='ReceiveReqTask'/>
+ <msgref nameRef='NotAvailableMsg'/>
+ </task>
+ <task name='ReceiveOrderTask' taskType='Receive'>
+ <seqflow to='AcceptOfferGateway'/>
+ <msgref nameRef='AcceptOfferMsg'/>
+ </task>
+ <exclusive-gateway name='AcceptOfferGateway'>
+ <seqflow conditionType='Expression' to='ParallelSplitGateway'>
+ <condition lang='MVEL'>isOfferAccepted == true</condition>
+ </seqflow>
+ <seqflow conditionType='Default' to='ReceiveReqTask'/>
+ </exclusive-gateway>
+ <parallel-gateway name='ParallelSplitGateway'>
+ <seqflow to='CreditCardTask'/>
+ <seqflow to='BookingTask'/>
+ </parallel-gateway>
+ <task name='CreditCardTask' taskType='None'>
+ <seqflow to='SynchronizedJoinGateway'/>
+ <input-set>
+ <property>
+ <name>CreditCard</name>
+ </property>
+ <property>
+ <name>Expire</name>
+ </property>
+ <property>
+ <name>Price</name>
+ </property>
+ </input-set>
+ </task>
+ <task name='BookingTask' taskType='None'>
+ <seqflow to='SynchronizedJoinGateway'/>
+ <input-set>
+ <property>
+ <name>Name</name>
+ </property>
+ <property>
+ <name>From</name>
+ </property>
+ <property>
+ <name>To</name>
+ </property>
+ <property>
+ <name>Date</name>
+ </property>
+ <property>
+ <name>Seats</name>
+ </property>
+ </input-set>
+ </task>
+ <parallel-gateway name='SynchronizedJoinGateway'>
+ <seqflow to='SendConfirmTask'/>
+ </parallel-gateway>
+ <task name='SendConfirmTask' taskType='Send'>
+ <seqflow to='End'/>
+ <msgref nameRef='ConfirmMsg'/>
+ </task>
+ <end name='End'/>
+ <message name='ReqDataMsg'>
+ <property correlation='true'>
+ <name>Name</name>
+ </property>
+ <property correlation='true'>
+ <name>From</name>
+ </property>
+ <property correlation='true'>
+ <name>To</name>
+ </property>
+ <property correlation='true'>
+ <name>Date</name>
+ </property>
+ <property correlation='true'>
+ <name>Seats</name>
+ </property>
+ </message>
+ <message name='InvalidDataMsg'>
+ <to>jboss.bpm:test=testProcessMarshaller</to>
+ <property correlation='true'>
+ <name>Name</name>
+ </property>
+ <property correlation='true'>
+ <name>From</name>
+ </property>
+ <property correlation='true'>
+ <name>To</name>
+ </property>
+ <property correlation='true'>
+ <name>Date</name>
+ </property>
+ <property correlation='true'>
+ <name>Seats</name>
+ </property>
+ </message>
+ <message name='NotAvailableMsg'>
+ <to>jboss.bpm:test=testProcessMarshaller</to>
+ <property correlation='true'>
+ <name>Name</name>
+ </property>
+ <property correlation='true'>
+ <name>From</name>
+ </property>
+ <property correlation='true'>
+ <name>To</name>
+ </property>
+ <property correlation='true'>
+ <name>Date</name>
+ </property>
+ <property correlation='true'>
+ <name>Seats</name>
+ </property>
+ </message>
+ <message name='OfferMsg'>
+ <to>jboss.bpm:test=testProcessMarshaller</to>
+ <property correlation='true'>
+ <name>Name</name>
+ </property>
+ <property correlation='true'>
+ <name>From</name>
+ </property>
+ <property correlation='true'>
+ <name>To</name>
+ </property>
+ <property correlation='true'>
+ <name>Date</name>
+ </property>
+ <property correlation='true'>
+ <name>Seats</name>
+ </property>
+ <property correlation='true'>
+ <name>Price</name>
+ </property>
+ </message>
+ <message name='AcceptOfferMsg'>
+ <property correlation='true'>
+ <name>CreditCard</name>
+ </property>
+ <property correlation='true'>
+ <name>Expire</name>
+ </property>
+ <property correlation='true'>
+ <name>isOfferAccepted</name>
+ </property>
+ </message>
+ <message name='ConfirmMsg'>
+ <to>jboss.bpm:test=testProcessMarshaller</to>
+ <property correlation='true'>
+ <name>Name</name>
+ </property>
+ <property correlation='true'>
+ <name>From</name>
+ </property>
+ <property correlation='true'>
+ <name>To</name>
+ </property>
+ <property correlation='true'>
+ <name>Date</name>
+ </property>
+ <property correlation='true'>
+ <name>Seats</name>
+ </property>
+ <property correlation='true'>
+ <name>Price</name>
+ </property>
+ </message>
</ns2:process>
\ No newline at end of file
Added: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java (rev 0)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java 2008-08-02 12:51:38 UTC (rev 1802)
@@ -0,0 +1,71 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.cts.task;
+
+// $Id$
+
+import org.jboss.bpm.InvalidProcessException;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Task.TaskType;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test process messages
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 03-Jul-2008
+ */
+public class TaskMessageTest extends DefaultEngineTestCase
+{
+ public void testReceiveTaskWithNoMessage() throws Exception
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("A");
+ procBuilder.addTask("A", TaskType.Receive).addSequenceFlow("End").addEndEvent("End");
+ try
+ {
+ procBuilder.getProcess();
+ fail("A Message for the MessageRef attribute MUST be entered");
+ }
+ catch (InvalidProcessException ex)
+ {
+ // expected
+ }
+ }
+
+ public void testSendTaskWithNoMessage() throws Exception
+ {
+ ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ procBuilder.addProcess(getName()).addStartEvent().addSequenceFlow("A");
+ procBuilder.addTask("A", TaskType.Send).addSequenceFlow("End").addEndEvent("End");
+ try
+ {
+ procBuilder.getProcess();
+ fail("A Message for the MessageRef attribute MUST be entered");
+ }
+ catch (InvalidProcessException ex)
+ {
+ // expected
+ }
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/task/TaskMessageTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
More information about the jbpm-commits
mailing list