[jbpm-commits] JBoss JBPM SVN: r1908 - in jbossbpm/spec/trunk/modules: api/src/main/java/org/jboss/bpm/test and 12 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Sat Aug 16 10:50:12 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-08-16 10:50:11 -0400 (Sat, 16 Aug 2008)
New Revision: 1908
Added:
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java
Modified:
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Expression.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.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/MessageEventDetail.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilder.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertySupport.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ReceiveTask.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/ServiceTask.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
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/UserTask.java
jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java
jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventDetailImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/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/OutputSetImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyBuilderImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/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/SignalEventDetailImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java
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/runtime/internal/DelegatingExecutionContext.java
jbossbpm/spec/trunk/modules/testsuite/pom.xml
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeTest.java
jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
Log:
Add EndEvent Message Result
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,10 +21,10 @@
*/
package org.jboss.bpm.model;
-import java.util.Set;
-
//$Id$
+import java.util.List;
+
/**
* As the name implies, the End Event indicates where a Process will end.
*
@@ -45,6 +45,6 @@
* If there is no EventDetail defined, then this is considered a None End Event.
* If there is more than one EventDetail defined, this is considered a Multiple EndEvent.
*/
- Set<EventDetail> getResult();
+ List<EventDetail> getResult();
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventBuilder.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,6 +23,7 @@
//$Id$
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Signal.SignalType;
/**
@@ -34,7 +35,17 @@
public interface EventBuilder extends ProcessBuilder
{
/**
- * Add a signal trigger to the last added {@link Event}
+ * Add an event detail to the last added {@link Event}
*/
- EventBuilder addSignalTrigger(SignalType signalType, String signalMessage);
+ EventBuilder addEventDetail(EventDetailType detailType);
+
+ /**
+ * Add a signal ref to the last added {@link EventDetail}
+ */
+ EventBuilder addSignalRef(SignalType signalType, String signalMessage);
+
+ /**
+ * Add a message ref to the last added {@link EventDetail}
+ */
+ EventBuilder addMessageRef(String msgName);
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/EventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -36,7 +36,7 @@
*/
public enum EventDetailType
{
- Message, Timer, Error, Conditional, Link, Signal, Compensate, Cancel, Terminate
+ Message, Timer, Error, Conditional, Link, Signal, Compensation, Cancel, Terminate
};
/**
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Expression.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Expression.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Expression.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -34,7 +34,7 @@
{
public enum ExpressionLanguage
{
- MVEL, String
+ MVEL, String, Object
}
/**
@@ -44,6 +44,11 @@
String getExpressionBody();
/**
+ * An ExpressionValue MAY be available if the Expression is used as a {@link Property} value.
+ */
+ Object getExpressionValue();
+
+ /**
* A Language MUST be provided to identify the language of the ExpressionBody.
* The value of the ExpressionLanguage should follow the naming conventions for the
* version of the specified language.
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Message.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -35,6 +35,15 @@
public interface Message extends SupportingElement, PropertySupport
{
/**
+ * Specifies the technology that will be used to send or receive the
+ * message.
+ */
+ public enum Implementation
+ {
+ WebService, Other, Unspecified
+ }
+
+ /**
* Name is an attribute that is text description of the Message.
*/
String getName();
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageBuilder.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -52,12 +52,12 @@
/**
* Add a message property
*/
- MessageBuilder addProperty(String name, String value);
+ MessageBuilder addProperty(String name, Object value);
/**
* Add a message property
*/
- MessageBuilder addProperty(String name, String value, boolean isCorrelation);
+ MessageBuilder addProperty(String name, Object value, boolean isCorrelation);
/**
* Get the Message
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageEventDetail.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/MessageEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,15 +32,6 @@
public interface MessageEventDetail extends EventDetail
{
/**
- * Specifies the technology that will be used to send or receive the
- * message.
- */
- enum Implementation
- {
- WebService, Other, Unspecified
- }
-
- /**
* If the EventDetailType is a MessageRef, then the a Message MUST be supplied.
*/
Message getMessageRef();
@@ -49,5 +40,5 @@
* This attribute specifies the technology that will be used to send or receive the
* message. A Web service is the default technology.
*/
- Implementation getImplementation();
+ Message.Implementation getImplementation();
}
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Property.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -36,7 +36,7 @@
*/
public enum PropertyType
{
- String
+ String, Object
}
/**
@@ -51,11 +51,21 @@
PropertyType getPropertyType();
/**
- * Each Property MAY have a Value specified.
+ * Each Property MAY have a value expression specified.
*/
- Expression getValue();
+ Expression getExpression();
/**
+ * Get the body of the expression value.
+ */
+ String getValue();
+
+ /**
+ * Get the body of the expression value.
+ */
+ <T> T getValue(Class<T> T);
+
+ /**
* If the Correlation attribute is set to True, then the Property is marked to be used for
* correlation (e.g., for incoming Messages).
*/
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilder.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilder.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertyBuilder.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -34,5 +34,5 @@
/**
* Create a {@link Property} with a given name and value
*/
- Property newProperty(String name, String value);
+ Property newProperty(String name, Object value);
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertySupport.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertySupport.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/PropertySupport.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -25,7 +25,6 @@
import java.util.List;
-
/**
* Property support
*
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ReceiveTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ReceiveTask.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ReceiveTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.model.Message.Implementation;
+
//$Id$
/**
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/SendTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,7 +21,9 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.model.Message.Implementation;
+
//$Id$
/**
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ServiceTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ServiceTask.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/ServiceTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.model.Message.Implementation;
+
//$Id$
/**
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -26,15 +26,21 @@
//$Id$
/**
- * A Start Event indicates where a particular Process will start.
- * <p/>
- * In terms of Sequence Flow, the Start Event starts the Flow of the Process, and thus, will not have any
- * incoming Sequence Flow. A Start Event can have a Trigger that indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
+ * A Start Event indicates where a particular Process will start. <p/> In terms of Sequence Flow, the Start Event starts
+ * the Flow of the Process, and thus, will not have any incoming Sequence Flow. A Start Event can have a Trigger that
+ * indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
*
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
public interface StartEvent extends Event, SingleOutFlowSupport
{
+ /**
+ * Trigger is an attribute that defines the type of trigger expected for a Start Event. Of the set of
+ * EventDetailTypes, only four (4) can be applied to a Start Event: Message, Timer, Conditional, and Signal. If there
+ * is no EventDetail defined, then this is considered a None Start Event and the Event will not have an internal
+ * marker. If there is more than one EventDetail defined, this is considered a Multiple Start Event
+ * and the Event will have the pentagon internal marker.
+ */
List<EventDetail> getTrigger();
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -37,15 +37,6 @@
public interface Task extends Activity, SingleInFlowSupport, SingleOutFlowSupport
{
/**
- * Specifies the technology that will be used to send or receive the
- * message.
- */
- public enum Implementation
- {
- WebService, Other, Unspecified
- }
-
- /**
* The TaskType
*/
public enum TaskType
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/TaskBuilder.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,8 +32,6 @@
*/
public interface TaskBuilder extends ActivityBuilder
{
- MessageBuilder addMessage(String msgName);
-
TaskBuilder addMessageRef(String msgName);
TaskBuilder addExecutionHandler(Class<?> clazz);
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/UserTask.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/UserTask.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/model/UserTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.model;
+import org.jboss.bpm.model.Message.Implementation;
+
//$Id$
/**
Modified: jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java
===================================================================
--- jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/api/src/main/java/org/jboss/bpm/test/AbstractAPITestCase.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -205,7 +205,9 @@
public ObjectName getMessageListenerID()
{
- return ObjectNameFactory.create(BPMNElement.ID_DOMAIN, "test", getClass() + "." + getName());
+ String className = getClass().getName();
+ className = className.substring(className.lastIndexOf(".") + 1);
+ return ObjectNameFactory.create(BPMNElement.ID_DOMAIN, "msgListener", className);
}
public List<Message> getMessages()
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -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.JAXBMessageEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBMessageRef;
import org.jboss.bpm.dialect.api10.model.JAXBOutputSet;
import org.jboss.bpm.dialect.api10.model.JAXBParallelGateway;
@@ -70,6 +71,7 @@
import org.jboss.bpm.model.InputSet;
import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageEventDetail;
import org.jboss.bpm.model.MessageFlow;
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.ParallelGateway;
@@ -116,7 +118,7 @@
for (Message msg : proc.getMessages())
{
- JAXBMessage jaxbMsg = adaptMessage(jaxbProc, msg);
+ JAXBMessage jaxbMsg = adaptMessage(msg);
jaxbProc.getMessages().add(jaxbMsg);
}
for (Property prop : proc.getProperties())
@@ -151,33 +153,33 @@
private JAXBFlowObject adaptEvent(JAXBProcess jaxbProc, Event event)
{
- JAXBEvent jaxb;
+ JAXBEvent jaxbEvent;
if (event instanceof StartEvent)
{
StartEvent start = (StartEvent)event;
JAXBStartEvent jaxbStart = new JAXBStartEvent();
jaxbStart.setName(start.getName());
jaxbStart.setOutFlow(getJAXBFlow(start.getOutFlow()));
-
+
if (start.getTrigger().size() > 1)
throw new NotImplementedException("JBPM-1660", "StartTrigger Multiple");
-
+
for (EventDetail trigger : start.getTrigger())
{
- EventDetailType type = trigger.getEventDetailType();
- if (type == EventDetailType.Message)
+ EventDetailType detailType = trigger.getEventDetailType();
+ if (detailType == EventDetailType.Message)
{
throw new NotImplementedException("JBPM-1657", "StartTrigger Message");
}
- else if (type == EventDetailType.Timer)
+ else if (detailType == EventDetailType.Timer)
{
throw new NotImplementedException("JBPM-1658", "StartTrigger Timer");
}
- else if (type == EventDetailType.Conditional)
+ else if (detailType == EventDetailType.Conditional)
{
throw new NotImplementedException("JBPM-1659", "StartTrigger Conditional");
}
- else if (type == EventDetailType.Signal)
+ else if (detailType == EventDetailType.Signal)
{
SignalEventDetail signalTrigger = (SignalEventDetail)trigger;
Signal signal = signalTrigger.getSignalRef();
@@ -187,10 +189,10 @@
}
else
{
- throw new IllegalStateException("Unsupported start trigger: " + type);
+ throw new IllegalStateException("Unsupported start trigger: " + detailType);
}
}
- jaxb = jaxbStart;
+ jaxbEvent = jaxbStart;
}
else if (event instanceof IntermediateEvent)
{
@@ -201,7 +203,49 @@
EndEvent end = (EndEvent)event;
JAXBEndEvent jaxbEnd = new JAXBEndEvent();
jaxbEnd.setName(end.getName());
- jaxb = jaxbEnd;
+
+ if (end.getResult().size() > 1)
+ throw new NotImplementedException("JBPM-1683", "EndEvent Multiple Result");
+
+ for (EventDetail result : end.getResult())
+ {
+ EventDetailType detailType = result.getEventDetailType();
+ if (detailType == EventDetailType.Message)
+ {
+ MessageEventDetail msgEventDetail = (MessageEventDetail)result;
+ Message message = msgEventDetail.getMessageRef();
+ JAXBMessageRef jaxbMessageRef = adaptMessageRef(jaxbProc, message);
+ JAXBMessageEventDetail jaxbResult = new JAXBMessageEventDetail();
+ jaxbResult.setMessageRef(jaxbMessageRef);
+ jaxbEnd.getResult().add(jaxbResult);
+ }
+ else if (detailType == EventDetailType.Error)
+ {
+ throw new NotImplementedException("JBPM-1677", "EndEvent Error Result");
+ }
+ else if (detailType == EventDetailType.Cancel)
+ {
+ throw new NotImplementedException("JBPM-1678", "EndEvent Cancel Result");
+ }
+ else if (detailType == EventDetailType.Compensation)
+ {
+ throw new NotImplementedException("JBPM-1679", "EndEvent Compensation Result");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ throw new NotImplementedException("JBPM-1651", "EndEvent Signal Result");
+ }
+ else if (detailType == EventDetailType.Terminate)
+ {
+ throw new NotImplementedException("JBPM-1680", "EndEvent Terminate Result");
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported end event result type: " + detailType);
+ }
+ }
+
+ jaxbEvent = jaxbEnd;
}
else
{
@@ -210,25 +254,25 @@
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()));
+ jaxbEvent.setExecutionHandler(getJAXBExecutionHandler(event, hs.getExecutionHandler()));
+ jaxbEvent.setFlowHandler(getJAXBFlowHandler(event, hs.getFlowHandler()));
+ jaxbEvent.setSignalHandler(getJAXBSignalHandler(event, hs.getSignalHandler()));
}
- return jaxb;
+ return jaxbEvent;
}
private JAXBFlowObject adaptTask(JAXBProcess jaxbProc, Task task)
{
- JAXBTask jaxb = new JAXBTask();
- jaxb.setTaskType(task.getTaskType());
- jaxb.setName(task.getName());
- jaxb.setOutFlow(getJAXBFlow(task.getOutFlow()));
+ JAXBTask jaxbTask = new JAXBTask();
+ jaxbTask.setTaskType(task.getTaskType());
+ jaxbTask.setName(task.getName());
+ jaxbTask.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()));
+ jaxbTask.setExecutionHandler(getJAXBExecutionHandler(task, hs.getExecutionHandler()));
+ jaxbTask.setFlowHandler(getJAXBFlowHandler(task, hs.getFlowHandler()));
+ jaxbTask.setSignalHandler(getJAXBSignalHandler(task, hs.getSignalHandler()));
}
for (InputSet inSet : task.getInputSets())
{
@@ -238,7 +282,7 @@
JAXBProperty jaxbProp = getJaxbProperty(prop);
jaxbSet.getProperties().add(jaxbProp);
}
- jaxb.getInputSets().add(jaxbSet);
+ jaxbTask.getInputSets().add(jaxbSet);
}
for (OutputSet outSet : task.getOutputSets())
{
@@ -248,95 +292,94 @@
JAXBProperty jaxbProp = getJaxbProperty(prop);
jaxbSet.getProperties().add(jaxbProp);
}
- jaxb.getOutputSets().add(jaxbSet);
+ jaxbTask.getOutputSets().add(jaxbSet);
}
for (Property prop : task.getProperties())
{
JAXBProperty jaxbProp = getJaxbProperty(prop);
- jaxb.getProperties().add(jaxbProp);
+ jaxbTask.getProperties().add(jaxbProp);
}
if (task instanceof ReceiveTask)
{
ReceiveTask recTask = (ReceiveTask)task;
- adaptMessageRef(jaxbProc, jaxb, recTask.getMessageRef());
+ Message messageRef = recTask.getMessageRef();
+ if (messageRef != null)
+ {
+ JAXBMessageRef jaxbMessageRef = adaptMessageRef(jaxbProc, messageRef);
+ jaxbTask.setMessageRef(jaxbMessageRef);
+ }
}
else if (task instanceof SendTask)
{
SendTask sendTask = (SendTask)task;
- adaptMessageRef(jaxbProc, jaxb, sendTask.getMessageRef());
+ Message messageRef = sendTask.getMessageRef();
+ if (messageRef != null)
+ {
+ JAXBMessageRef jaxbMessageRef = adaptMessageRef(jaxbProc, messageRef);
+ jaxbTask.setMessageRef(jaxbMessageRef);
+ }
}
- return jaxb;
+ return jaxbTask;
}
private JAXBFlowObject adaptGateway(JAXBProcess jaxbProc, Gateway gateway)
{
- JAXBGateway jaxb;
+ JAXBGateway jaxbGateway;
if (gateway instanceof ExclusiveGateway)
{
- jaxb = new JAXBExclusiveGateway();
+ jaxbGateway = new JAXBExclusiveGateway();
}
else if (gateway instanceof InclusiveGateway)
{
- jaxb = new JAXBInclusiveGateway();
+ jaxbGateway = new JAXBInclusiveGateway();
}
else if (gateway instanceof ParallelGateway)
{
- jaxb = new JAXBParallelGateway();
+ jaxbGateway = new JAXBParallelGateway();
}
else if (gateway instanceof ComplexGateway)
{
- jaxb = new JAXBComplexGateway();
+ jaxbGateway = new JAXBComplexGateway();
}
else
{
throw new IllegalStateException("Unsupported gateway: " + gateway);
}
- jaxb.setName(gateway.getName());
+ jaxbGateway.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()));
+ jaxbGateway.setExecutionHandler(getJAXBExecutionHandler(gateway, hs.getExecutionHandler()));
+ jaxbGateway.setFlowHandler(getJAXBFlowHandler(gateway, hs.getFlowHandler()));
+ jaxbGateway.setSignalHandler(getJAXBSignalHandler(gateway, hs.getSignalHandler()));
}
for (Gate gate : gateway.getGates())
{
SequenceFlow flow = gate.getOutgoingSequenceFlow();
- jaxb.getOutFlows().add(getJAXBFlow(flow));
+ jaxbGateway.getOutFlows().add(getJAXBFlow(flow));
}
- return jaxb;
+ return jaxbGateway;
}
- private void adaptMessageRef(JAXBProcess jaxbProc, JAXBTask jaxb, Message msgRef)
+ private JAXBMessageRef adaptMessageRef(JAXBProcess jaxbProc, Message msgRef)
{
- if (msgRef != null)
- {
- String msgName = msgRef.getName();
- JAXBMessage jaxbMsg = jaxbProc.getMessageByName(msgName);
- if (jaxbMsg != null)
- {
- JAXBMessageRef jaxbMsgRef = new JAXBMessageRef();
- jaxbMsgRef.setNameRef(msgName);
+ String msgName = msgRef.getName();
+ JAXBMessage jaxbMsg = jaxbProc.getMessageByName(msgName);
+ JAXBMessageRef jaxbMsgRef = new JAXBMessageRef();
+ jaxbMsgRef.setNameRef(msgName);
- String fromStr = getParticipant(msgRef.getFromRef());
- if (fromStr != null && fromStr.equals(jaxbMsg.getFromRef()) == false)
- jaxbMsgRef.setFromRef(fromStr);
+ 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);
+ String toStr = getParticipant(msgRef.getToRef());
+ if (toStr != null && toStr.equals(jaxbMsg.getToRef()) == false)
+ jaxbMsgRef.setToRef(toStr);
- jaxb.setMessageRef(jaxbMsgRef);
- }
- else
- {
- jaxbMsg = adaptMessage(jaxbProc, msgRef);
- jaxb.setMessageRef(jaxbMsg);
- }
- }
+ return jaxbMsgRef;
}
- private JAXBMessage adaptMessage(JAXBProcess jaxbProc, Message msg)
+ private JAXBMessage adaptMessage(Message msg)
{
JAXBMessage jaxbMsg = new JAXBMessage();
jaxbMsg.setName(msg.getName());
@@ -398,7 +441,7 @@
{
JAXBProperty jaxbProp = new JAXBProperty();
jaxbProp.setName(prop.getName());
- jaxbProp.setValue(prop.getValue().getExpressionBody());
+ jaxbProp.setValue(prop.getValue());
if (prop.isCorrelation())
jaxbProp.setCorrelation(prop.isCorrelation());
return jaxbProp;
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -39,9 +39,12 @@
import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.client.ObjectNameFactory;
import org.jboss.bpm.client.ProcessManager;
+import org.jboss.bpm.dialect.api10.model.JAXBCancelEventDetail;
+import org.jboss.bpm.dialect.api10.model.JAXBCompensationEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBComplexGateway;
import org.jboss.bpm.dialect.api10.model.JAXBConditionalEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBEndEvent;
+import org.jboss.bpm.dialect.api10.model.JAXBErrorEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBEvent;
import org.jboss.bpm.dialect.api10.model.JAXBEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBExclusiveGateway;
@@ -66,8 +69,8 @@
import org.jboss.bpm.dialect.api10.model.JAXBSignal;
import org.jboss.bpm.dialect.api10.model.JAXBSignalEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
-import org.jboss.bpm.dialect.api10.model.JAXBSupportingElement;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
+import org.jboss.bpm.dialect.api10.model.JAXBTerminateEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBTimerEventDetail;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
import org.jboss.bpm.model.EventBuilder;
@@ -77,6 +80,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.SequenceFlow.ConditionType;
import org.jboss.bpm.runtime.Handler;
@@ -103,12 +107,12 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
procBuilder.addProcess(jaxbProc.getName());
-
+
// Process Includes
processIncludes(procBuilder, jaxbProc);
-
+
// Process Messages
- for(JAXBMessage jaxb : jaxbProc.getMessages())
+ for (JAXBMessage jaxb : jaxbProc.getMessages())
{
MessageBuilder msgBuilder = procBuilder.addMessage(jaxb.getName());
adaptJAXBMessage(msgBuilder, jaxb);
@@ -117,7 +121,7 @@
{
procBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue());
}
-
+
// Process FlowObjects
for (JAXBFlowObject jaxb : jaxbProc.getFlowObjects())
{
@@ -138,19 +142,19 @@
throw new IllegalStateException("Unsupported flow object: " + jaxb);
}
}
-
+
Process proc = (isInclude ? procBuilder.getProcessForInclude() : procBuilder.getProcess());
return proc;
}
private void processIncludes(ProcessBuilder procBuilder, JAXBProcess jaxbProc) throws IOException
{
- for(JAXBInclude incl : jaxbProc.getIncludes())
+ for (JAXBInclude incl : jaxbProc.getIncludes())
{
String nsURI = incl.getNamespace();
String location = incl.getLocation();
-
- URL procURL;
+
+ URL procURL;
try
{
procURL = new URL(location);
@@ -162,17 +166,17 @@
}
if (procURL == null)
throw new InvalidProcessException("Cannot find process include: " + location);
-
+
ProcessManager pm = ProcessManager.locateProcessManager();
DialectHandler dh = pm.getDialectHandler(nsURI);
Process procIncl = dh.createProcess(procURL, true);
-
+
// Debug the included process
StringWriter strwr = new StringWriter();
DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
dhapi.marshallProcess(procIncl, strwr);
- //System.out.println(strwr);
-
+ // System.out.println(strwr);
+
procBuilder.addProcessElements(procIncl);
}
}
@@ -199,11 +203,12 @@
{
JAXBStartEvent jaxbStart = (JAXBStartEvent)jaxb;
EventBuilder eventBuilder = procBuilder.addStartEvent(jaxbStart.getName());
-
+ addOutFlow(procBuilder, jaxbStart.getOutFlow());
+
if (jaxbStart.getTrigger().size() > 1)
throw new NotImplementedException("JBPM-1660", "StartTrigger Multiple");
-
- for(JAXBEventDetail jaxbTrigger : jaxbStart.getTrigger())
+
+ for (JAXBEventDetail jaxbTrigger : jaxbStart.getTrigger())
{
if (jaxbTrigger instanceof JAXBMessageEventDetail)
{
@@ -221,14 +226,14 @@
{
JAXBSignalEventDetail jaxbSignalTrigger = (JAXBSignalEventDetail)jaxbTrigger;
JAXBSignal jaxbSignal = jaxbSignalTrigger.getSignal();
- eventBuilder.addSignalTrigger(jaxbSignal.getType(), jaxbSignal.getMessage());
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(jaxbSignal.getType(),
+ jaxbSignal.getMessage());
}
else
{
throw new IllegalStateException("Unsupported start trigger: " + jaxbTrigger);
}
}
- addOutFlow(procBuilder, jaxbStart.getOutFlow());
}
else if (jaxb instanceof JAXBIntermediateEvent)
{
@@ -237,7 +242,45 @@
else if (jaxb instanceof JAXBEndEvent)
{
JAXBEndEvent jaxbEnd = (JAXBEndEvent)jaxb;
- procBuilder.addEndEvent(jaxbEnd.getName());
+ EventBuilder eventBuilder = procBuilder.addEndEvent(jaxbEnd.getName());
+
+ if (jaxbEnd.getResult().size() > 1)
+ throw new NotImplementedException("JBPM-1683", "EndEvent Multiple Result");
+
+ for (JAXBEventDetail jaxbResult : jaxbEnd.getResult())
+ {
+ if (jaxbResult instanceof JAXBMessageEventDetail)
+ {
+ JAXBMessageEventDetail jaxbMessageResult = (JAXBMessageEventDetail)jaxbResult;
+ eventBuilder.addEventDetail(EventDetailType.Message);
+ JAXBMessageRef jaxbMsg = jaxbMessageResult.getMessageRef();
+ eventBuilder.addMessageRef(jaxbMsg.getNameRef());
+ }
+ else if (jaxbResult instanceof JAXBErrorEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1677", "EndEvent Error Result");
+ }
+ else if (jaxbResult instanceof JAXBCancelEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1678", "EndEvent Cancel Result");
+ }
+ else if (jaxbResult instanceof JAXBCompensationEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1679", "EndEvent Compensation Result");
+ }
+ else if (jaxbResult instanceof JAXBSignalEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1651", "EndEvent Signal Result");
+ }
+ else if (jaxbResult instanceof JAXBTerminateEventDetail)
+ {
+ throw new NotImplementedException("JBPM-1680", "EndEvent Terminate Result");
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported end event result type: " + jaxbResult);
+ }
+ }
}
else
{
@@ -248,42 +291,40 @@
procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
}
- private void adaptTask(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBTask jaxb)
+ private void adaptTask(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBTask jaxbTask)
{
- TaskBuilder taskBuilder = procBuilder.addTask(jaxb.getName(), jaxb.getTaskType());
- addOutFlow(taskBuilder, jaxb.getOutFlow());
- for (JAXBInputSet jaxbSet : jaxb.getInputSets())
+ TaskBuilder taskBuilder = procBuilder.addTask(jaxbTask.getName(), jaxbTask.getTaskType());
+ addOutFlow(taskBuilder, jaxbTask.getOutFlow());
+
+ for (JAXBInputSet jaxbSet : jaxbTask.getInputSets())
{
taskBuilder.addInputSet();
for (JAXBProperty jaxbProp : jaxbSet.getProperties())
taskBuilder.addPropertyInput(jaxbProp.getName(), jaxbProp.getValue());
}
- for (JAXBOutputSet jaxbSet : jaxb.getOutputSets())
+
+ for (JAXBOutputSet jaxbSet : jaxbTask.getOutputSets())
{
taskBuilder.addOutputSet();
for (JAXBProperty jaxbProp : jaxbSet.getProperties())
taskBuilder.addPropertyOutput(jaxbProp.getName(), jaxbProp.getValue());
}
- for (JAXBProperty jaxbProp : jaxb.getProperties())
+
+ for (JAXBProperty jaxbProp : jaxbTask.getProperties())
{
taskBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue());
}
- JAXBSupportingElement jaxbSE = jaxb.getMessageRef();
- if (jaxbSE instanceof JAXBMessage)
+
+ JAXBMessageRef jaxbMsgRef = jaxbTask.getMessageRef();
+ if (jaxbMsgRef != null)
{
- 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();
taskBuilder.addMessageRef(msgName);
}
- procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
- procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler()));
- procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
+
+ procBuilder.addExecutionHandler(loadHandler(jaxbTask.getExecutionHandler()));
+ procBuilder.addFlowHandler(loadHandler(jaxbTask.getFlowHandler()));
+ procBuilder.addSignalHandler(loadHandler(jaxbTask.getSignalHandler()));
}
private void adaptJAXBGateway(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBGateway jaxb)
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The cancel event detail
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at XmlType(name = "CancelEventDetail")
+public class JAXBCancelEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCancelEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The compensation event detail
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at XmlType(name = "CompensationEventDetail")
+public class JAXBCompensationEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBCompensationEventDetail.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/JAXBEndEvent.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBEndEvent.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,7 +21,13 @@
*/
package org.jboss.bpm.dialect.api10.model;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
// $Id$
@@ -39,6 +45,11 @@
public class JAXBEndEvent extends JAXBEvent
{
private String name;
+
+ @XmlElements( {
+ @XmlElement(name = "message-result", type = JAXBMessageEventDetail.class)
+ })
+ private List<JAXBEventDetail> result = new ArrayList<JAXBEventDetail>();
public String getName()
{
@@ -50,4 +61,15 @@
{
this.name = name;
}
+
+ public List<JAXBEventDetail> getResult()
+ {
+ return result;
+ }
+
+ @XmlTransient
+ public void setResult(List<JAXBEventDetail> result)
+ {
+ this.result = result;
+ }
}
\ No newline at end of file
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The error event detail
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at XmlType(name = "ErrorEventDetail")
+public class JAXBErrorEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBErrorEventDetail.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/JAXBMessageEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBMessageEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,6 +23,7 @@
//$Id$
+import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
/**
@@ -34,4 +35,17 @@
@XmlType(name = "MessageEventDetail")
public class JAXBMessageEventDetail extends JAXBEventDetail
{
+ private JAXBMessageRef messageRef;
+
+ public JAXBMessageRef getMessageRef()
+ {
+ return messageRef;
+ }
+
+ @XmlElement
+ public void setMessageRef(JAXBMessageRef messageRef)
+ {
+ this.messageRef = messageRef;
+ }
+
}
\ 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-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -30,7 +30,8 @@
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
-import org.jboss.bpm.model.Task.Implementation;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.Message.Implementation;
import org.jboss.bpm.model.Task.TaskType;
//$Id$
@@ -62,10 +63,7 @@
@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;
+ private JAXBMessageRef messageRef;
public JAXBFlow getOutFlow()
{
@@ -89,23 +87,23 @@
this.taskType = taskType;
}
- public Implementation getImplementation()
+ public Message.Implementation getImplementation()
{
return implementation;
}
- public void setImplementation(Implementation implementation)
+ public void setImplementation(Message.Implementation implementation)
{
this.implementation = implementation;
}
- public JAXBSupportingElement getMessageRef()
+ public JAXBMessageRef getMessageRef()
{
return messageRef;
}
- @XmlTransient
- public void setMessageRef(JAXBSupportingElement messageRef)
+ @XmlElement(name = "msgref")
+ public void setMessageRef(JAXBMessageRef messageRef)
{
this.messageRef = messageRef;
}
Added: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java (rev 0)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,37 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.dialect.api10.model;
+
+//$Id$
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * The terminate event detail
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at XmlType(name = "TerminateEventDetail")
+public class JAXBTerminateEventDetail extends JAXBEventDetail
+{
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTerminateEventDetail.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/dialects/api10/src/test/java/org/jboss/bpm/dialect/api10/message/ProcessMessageTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -48,7 +48,7 @@
public void testProcessMessage() throws Exception
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("End").addEndEvent("End");
+ procBuilder.addProcess("ProcessMessageTest").addStartEvent("Start").addSequenceFlow("End").addEndEvent("End");
MessageBuilder msgBuilder = procBuilder.addMessage("FooMsg");
msgBuilder.addProperty("foo", "bar");
Process expProc = procBuilder.getProcess();
@@ -64,29 +64,6 @@
assertEquals("bar", msg.getPropertyValue("foo"));
}
- public void testReceiveTaskWithMessage() throws Exception
- {
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("A");
- TaskBuilder taskBuilder = procBuilder.addTask("A", TaskType.Receive);
- MessageBuilder msgBuilder = taskBuilder.addMessage("FooMsg");
- msgBuilder.addProperty("foo", "bar");
- procBuilder.addSequenceFlow("End").addEndEvent("End");
- Process expProc = procBuilder.getProcess();
-
- ProcessManager pm = ProcessManager.locateProcessManager();
- DialectHandler dh = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
-
- StringWriter strwr = new StringWriter();
- dh.marshallProcess(expProc, strwr);
-
- Process wasProc = dh.createProcess(strwr.toString(), false);
- ReceiveTask recTask = (ReceiveTask)wasProc.getFlowObject("A");
- Message msg = recTask.getMessageRef();
- assertEquals("FooMsg", msg.getName());
- assertEquals("bar", msg.getPropertyValue("foo"));
- }
-
public void testReceiveTaskWithMessageRef() throws Exception
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -81,7 +81,7 @@
public ActivityBuilder addProperty(String name, String value)
{
- Property prop = new PropertyImpl(name, new ExpressionImpl(value));
+ Property prop = new PropertyImpl(name, new ExpressionImpl(ExpressionLanguage.String, value));
getActivity().addProperty(prop);
return this;
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ActivityImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -30,18 +30,17 @@
import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.NotImplementedException;
import org.jboss.bpm.model.Activity;
-import org.jboss.bpm.model.Expression;
import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.Expression;
import org.jboss.bpm.model.InputSet;
import org.jboss.bpm.model.OutputSet;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Property;
import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.MutablePropertySupport;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.internal.TokenImpl;
/**
@@ -131,7 +130,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
@@ -180,7 +179,7 @@
TokenImpl tokenImpl = (TokenImpl)token;
tokenImpl.setOutputSet(getActiveOutputSet());
tokenImpl.setInputSet(getActiveInputSet(token));
- executeHandler(token);
+ callExecutionHandler(token);
processOutputSet(token);
postProcessInputSet(token);
}
@@ -210,7 +209,7 @@
for (Property prop : auxSet.getProperties())
{
String name = prop.getName();
- String value = (String)exContext.getAttachment(name);
+ Object value = exContext.getAttachment(name);
inputSet.addProperty(new PropertyImpl(name, new ExpressionImpl(value)));
}
break;
@@ -253,19 +252,6 @@
}
/**
- * Execute external business logic
- */
- protected void executeHandler(Token token)
- {
- // Call the execution handler with the InputSet
- ExecutionHandler handler = getExecutionHandler();
- if (handler != null)
- {
- handler.execute(token);
- }
- }
-
- /**
* Transfer data from outputSet to Token
*/
protected void processOutputSet(Token token)
@@ -281,7 +267,7 @@
throw new IllegalStateException("Cannot find outputSet property '" + prop.getName() + "' in Activity: " + getName());
String name = outProp.getName();
- String value = outProp.getValue().getExpressionBody();
+ String value = outProp.getValue();
exContext.addAttachment(name, value);
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EndEventImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,7 +23,9 @@
//$Id$
-import java.util.Set;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -31,11 +33,14 @@
import org.jboss.bpm.model.ConnectingObject;
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.EventDetail;
+import org.jboss.bpm.model.MessageEventDetail;
+import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.TokenExecutor;
import org.jboss.bpm.runtime.SignalHandler;
import org.jboss.bpm.runtime.Token;
+import org.jboss.bpm.runtime.TokenExecutor;
/**
* As the name implies, the End Event indicates where a Process will end.
@@ -52,7 +57,7 @@
// provide logging
private static final Log log = LogFactory.getLog(EndEventImpl.class);
- private Set<EventDetail> result;
+ private List<EventDetail> resultSet = new ArrayList<EventDetail>();
private ConnectingObject inFlow;
public EndEventImpl(String name)
@@ -73,11 +78,32 @@
this.inFlow = inFlow;
}
- public Set<EventDetail> getResult()
+ public void addResult(EventDetail result)
{
- return result;
+ resultSet.add(result);
}
+ public List<EventDetail> getResult()
+ {
+ return Collections.unmodifiableList(resultSet);
+ }
+
+ @Override
+ protected void callExecutionHandler(Token token)
+ {
+ super.callExecutionHandler(token);
+
+ for (EventDetail eventDetail : getResult())
+ {
+ if (eventDetail.getEventDetailType() == EventDetailType.Message)
+ {
+ MessageEventDetail msgEventDetail = (MessageEventDetail)eventDetail;
+ MessageSender messageSender = new MessageSender(this, msgEventDetail.getMessageRef());
+ messageSender.sendMessage(token);
+ }
+ }
+ }
+
public FlowHandler getFlowHandler()
{
FlowHandler handler = super.getFlowHandler();
@@ -119,6 +145,19 @@
return handler;
}
+ @Override
+ protected void initialize(Process proc)
+ {
+ super.initialize(proc);
+
+ // Initialize Results
+ for (EventDetail result : getResult())
+ {
+ EventDetailImpl resultImpl = (EventDetailImpl)result;
+ resultImpl.initialize(this);
+ }
+ }
+
public String toString()
{
return "EndEvent[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -27,9 +27,11 @@
import org.jboss.bpm.model.EndEvent;
import org.jboss.bpm.model.Event;
import org.jboss.bpm.model.EventBuilder;
+import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.model.StartEvent;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Signal.SignalType;
/**
@@ -40,35 +42,191 @@
*/
public class EventBuilderImpl extends ProcessBuilderImpl implements EventBuilder
{
+ private EventDetail eventDetail;
+
public EventBuilderImpl(ProcessImpl proc, FlowObjectImpl flowObject)
{
super(proc, flowObject);
}
- public EventBuilder addSignalTrigger(SignalType signalType, String message)
+ public EventBuilder addEventDetail(EventDetailType detailType)
{
- EventImpl event = getEvent();
- if (event instanceof StartEvent)
+ if (detailType == EventDetailType.Message)
{
- StartEventImpl start = (StartEventImpl)event;
- Signal signal = new Signal(event.getName(), signalType, message);
- start.addTrigger(new SignalEventDetailImpl(signal));
+ eventDetail = new MessageEventDetailImpl();
+ addEventDetail(getEvent(), eventDetail);
}
- else if (event instanceof IntermediateEvent)
+ else if (detailType == EventDetailType.Timer)
{
- throw new NotImplementedException("JBPM-1650", "IntermediateEvent SignalTrigger");
+ throw new NotImplementedException("JBPM-1663", "EventDetail Timer");
}
- else if (event instanceof EndEvent)
+ else if (detailType == EventDetailType.Error)
{
- throw new NotImplementedException("JBPM-1651", "EndEvent SignalTrigger");
+ throw new NotImplementedException("JBPM-1664", "EventDetail Error");
}
+ else if (detailType == EventDetailType.Cancel)
+ {
+ throw new NotImplementedException("JBPM-1665", "EventDetail Cancel");
+ }
+ else if (detailType == EventDetailType.Compensation)
+ {
+ throw new NotImplementedException("JBPM-1666", "EventDetail Compensation");
+ }
+ else if (detailType == EventDetailType.Conditional)
+ {
+ throw new NotImplementedException("JBPM-1667", "EventDetail Conditional");
+ }
+ else if (detailType == EventDetailType.Link)
+ {
+ throw new NotImplementedException("JBPM-1668", "EventDetail Link");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ eventDetail = new SignalEventDetailImpl();
+ addEventDetail(getEvent(), eventDetail);
+ }
+ return this;
+ }
+
+ public EventBuilder addSignalRef(SignalType signalType, String message)
+ {
+ if (eventDetail instanceof SignalEventDetailImpl)
+ {
+ SignalEventDetailImpl signalEventDetail = (SignalEventDetailImpl)eventDetail;
+ signalEventDetail.setSignalRef(new Signal(flowObject.getName(), signalType, message));
+ }
else
{
- throw new IllegalStateException("Trigger on: " + event);
+ throw new IllegalStateException("Cannot add signal to: " + eventDetail);
}
return this;
}
+ public EventBuilder addMessageRef(String msgName)
+ {
+ MessageImpl message = new MessageImpl(msgName);
+ if (eventDetail instanceof MessageEventDetailImpl)
+ {
+ MessageEventDetailImpl msgEventDetail = (MessageEventDetailImpl)eventDetail;
+ msgEventDetail.setMessageRef(message);
+ }
+ else
+ {
+ throw new IllegalStateException("Cannot add message to: " + eventDetail);
+ }
+ return this;
+ }
+
+ private void addEventDetail(EventImpl event, EventDetail trigger)
+ {
+ EventDetailType detailType = trigger.getEventDetailType();
+ if (event instanceof StartEvent)
+ {
+ StartEventImpl start = (StartEventImpl)event;
+ if (start.getTrigger().size() > 0)
+ throw new NotImplementedException("JBPM-1660", "StartEvent Multiple Trigger");
+
+ if (detailType == EventDetailType.Message)
+ {
+ throw new NotImplementedException("JBPM-1657", "StartEvent Message Trigger");
+ }
+ else if (detailType == EventDetailType.Timer)
+ {
+ throw new NotImplementedException("JBPM-1658", "StartEvent Timer Trigger");
+ }
+ else if (detailType == EventDetailType.Conditional)
+ {
+ throw new NotImplementedException("JBPM-1659", "StartEvent Conditional Trigger");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ start.addTrigger(eventDetail);
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported start event trigger type: " + detailType);
+ }
+ }
+ else if (event instanceof IntermediateEvent)
+ {
+ IntermediateEventImpl intermediate = (IntermediateEventImpl)event;
+ if (intermediate.getTrigger().size() > 0)
+ throw new NotImplementedException("JBPM-1682", "IntermediateEvent Multiple Trigger");
+
+ if (detailType == EventDetailType.Message)
+ {
+ throw new NotImplementedException("JBPM-1669", "IntermediateEvent Message Trigger");
+ }
+ else if (detailType == EventDetailType.Timer)
+ {
+ throw new NotImplementedException("JBPM-1670", "IntermediateEvent Timer Trigger");
+ }
+ else if (detailType == EventDetailType.Error)
+ {
+ throw new NotImplementedException("JBPM-1671", "IntermediateEvent Error Trigger");
+ }
+ else if (detailType == EventDetailType.Cancel)
+ {
+ throw new NotImplementedException("JBPM-1672", "IntermediateEvent Cancel Trigger");
+ }
+ else if (detailType == EventDetailType.Compensation)
+ {
+ throw new NotImplementedException("JBPM-1673", "IntermediateEvent Compensation Trigger");
+ }
+ else if (detailType == EventDetailType.Conditional)
+ {
+ throw new NotImplementedException("JBPM-1674", "IntermediateEvent Conditional Trigger");
+ }
+ else if (detailType == EventDetailType.Link)
+ {
+ throw new NotImplementedException("JBPM-1675", "IntermediateEvent Link Trigger");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ throw new NotImplementedException("JBPM-1650", "IntermediateEvent Signal Trigger");
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported intermediate event trigger type: " + detailType);
+ }
+ }
+ else if (event instanceof EndEvent)
+ {
+ EndEventImpl end = (EndEventImpl)event;
+ if (end.getResult().size() > 0)
+ throw new NotImplementedException("JBPM-1683", "EndEvent Multiple Result");
+
+ if (detailType == EventDetailType.Message)
+ {
+ end.addResult(eventDetail);
+ }
+ else if (detailType == EventDetailType.Error)
+ {
+ throw new NotImplementedException("JBPM-1677", "EndEvent Error Result");
+ }
+ else if (detailType == EventDetailType.Cancel)
+ {
+ throw new NotImplementedException("JBPM-1678", "EndEvent Cancel Result");
+ }
+ else if (detailType == EventDetailType.Compensation)
+ {
+ throw new NotImplementedException("JBPM-1679", "EndEvent Compensation Result");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ throw new NotImplementedException("JBPM-1651", "EndEvent Signal Result");
+ }
+ else if (detailType == EventDetailType.Terminate)
+ {
+ throw new NotImplementedException("JBPM-1680", "EndEvent Terminate Result");
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported end event trigger type: " + detailType);
+ }
+ }
+ }
+
private EventImpl getEvent()
{
if (flowObject instanceof Event == false)
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventDetailImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventDetailImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/EventDetailImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,6 +23,7 @@
//$Id$
+import org.jboss.bpm.model.Event;
import org.jboss.bpm.model.EventDetail;
/**
@@ -34,4 +35,8 @@
@SuppressWarnings("serial")
public abstract class EventDetailImpl extends SupportingElementImpl implements EventDetail
{
+ protected void initialize(Event event)
+ {
+ // nothing to do
+ }
}
\ No newline at end of file
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ExpressionImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -35,27 +35,34 @@
@SuppressWarnings("serial")
public class ExpressionImpl extends SupportingElementImpl implements Expression
{
- private String body;
- private ExpressionLanguage lang = ExpressionLanguage.String;
+ private Object body;
+ private ExpressionLanguage lang;
- public ExpressionImpl(String body)
+ public ExpressionImpl(Object body)
{
this.body = body;
+ this.lang = (body instanceof String ? ExpressionLanguage.String : ExpressionLanguage.Object);
}
- public ExpressionImpl(ExpressionLanguage lang, String body)
+ public ExpressionImpl(ExpressionLanguage lang, Object body)
{
this.body = body;
this.lang = lang;
}
+
+ public ExpressionLanguage getExpressionLanguage()
+ {
+ return lang;
+ }
+
public String getExpressionBody()
{
- return body;
+ return (String)body;
}
- public ExpressionLanguage getExpressionLanguage()
+ public Object getExpressionValue()
{
- return lang;
+ return body;
}
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/FlowObjectImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -107,8 +107,21 @@
public void execute(Token token)
{
- // noting to do
+ callExecutionHandler(token);
}
+
+ /**
+ * Execute external business logic
+ */
+ protected void callExecutionHandler(Token token)
+ {
+ // Call the execution handler if there is one
+ ExecutionHandler handler = getExecutionHandler();
+ if (handler != null)
+ {
+ handler.execute(token);
+ }
+ }
public void reset()
{
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/InputSetImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -64,7 +64,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/IntermediateEventImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,8 +23,13 @@
//$Id$
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.ConnectingObject;
+import org.jboss.bpm.model.EventDetail;
import org.jboss.bpm.model.IntermediateEvent;
import org.jboss.bpm.model.Signal;
import org.jboss.bpm.runtime.FlowHandler;
@@ -45,6 +50,7 @@
{
private ConnectingObject inFlow;
private ConnectingObject outFlow;
+ private List<EventDetail> triggers = new ArrayList<EventDetail>();
public IntermediateEventImpl(String name)
{
@@ -71,6 +77,16 @@
this.outFlow = flow;
}
+ public List<EventDetail> getTrigger()
+ {
+ return Collections.unmodifiableList(triggers);
+ }
+
+ public void addTrigger(EventDetail eventDetail)
+ {
+ triggers.add(eventDetail);
+ }
+
public FlowHandler getFlowHandler()
{
FlowHandler handler = super.getFlowHandler();
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -57,14 +57,14 @@
return this;
}
- public MessageBuilder addProperty(String name, String value)
+ public MessageBuilder addProperty(String name, Object value)
{
Property prop = new PropertyImpl(name, new ExpressionImpl(value));
message.addProperty(prop);
return this;
}
- public MessageBuilder addProperty(String name, String value, boolean isCorrelation)
+ public MessageBuilder addProperty(String name, Object value, boolean isCorrelation)
{
Property prop = new PropertyImpl(name, new ExpressionImpl(value), isCorrelation);
message.addProperty(prop);
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,69 @@
+/*
+ * 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.model.internal;
+
+//$Id$
+
+import org.jboss.bpm.model.Event;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageEventDetail;
+
+/**
+ * The message event detail
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at SuppressWarnings("serial")
+public class MessageEventDetailImpl extends EventDetailImpl implements MessageEventDetail
+{
+ private Message messageRef;
+
+ public EventDetailType getEventDetailType()
+ {
+ return EventDetailType.Message;
+ }
+
+ public Message.Implementation getImplementation()
+ {
+ return Message.Implementation.Unspecified;
+ }
+
+ public Message getMessageRef()
+ {
+ return messageRef;
+ }
+
+ public void setMessageRef(Message message)
+ {
+ this.messageRef = message;
+ }
+
+ @Override
+ protected void initialize(Event event)
+ {
+ super.initialize(event);
+
+ ProcessImpl procImpl = (ProcessImpl)event.getProcess();
+ procImpl.initializeMessageRef(messageRef);
+ }
+}
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageEventDetailImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -105,7 +105,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
Added: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java (rev 0)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -0,0 +1,98 @@
+/*
+ * 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.model.internal;
+
+//$Id$
+
+import javax.management.ObjectName;
+
+import org.jboss.bpm.client.MessageManager;
+import org.jboss.bpm.client.ObjectNameFactory;
+import org.jboss.bpm.model.Entity;
+import org.jboss.bpm.model.FlowObject;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
+import org.jboss.bpm.model.MessageBuilderFactory;
+import org.jboss.bpm.model.Participant;
+import org.jboss.bpm.model.Property;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * A helper that sends messages
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 16-Aug-2008
+ */
+class MessageSender
+{
+ private FlowObject fromRef;
+ private Message messageRef;
+
+ public MessageSender(FlowObject fromRef, Message messageRef)
+ {
+ this.fromRef = fromRef;
+ this.messageRef = messageRef;
+
+ if (messageRef == null)
+ throw new IllegalArgumentException("MessageRef cannot be null");
+ if (fromRef == null)
+ throw new IllegalArgumentException("FromRef cannot be null");
+ }
+
+ /**
+ * Extract message content from the token and send the message
+ * to it's recipient.
+ */
+ public void sendMessage(Token token)
+ {
+ ExecutionContext exContext = token.getExecutionContext();
+ MessageBuilderFactory factory = MessageBuilderFactory.newInstance();
+ MessageBuilder msgBuilder = factory.newMessageBuilder();
+
+ Participant toRef = messageRef.getToRef();
+ if (toRef == null || toRef.getEntityRef() == null)
+ throw new IllegalStateException("Cannot obtain target participant");
+
+ Entity entityRef = toRef.getEntityRef();
+ ObjectName targetID = ObjectNameFactory.create(entityRef.getName());
+ msgBuilder.newMessage(messageRef.getName());
+ msgBuilder.addToRef(targetID);
+
+ // Copy the properties from the execution context
+ // to the send message
+ for (Property auxProp : messageRef.getProperties())
+ {
+ String key = auxProp.getName();
+ Object value = exContext.getAttachment(key);
+ if (value == null)
+ throw new IllegalStateException("Cannot obtain property: " + key);
+
+ msgBuilder.addProperty(key, value);
+ }
+ MessageImpl msg = (MessageImpl)msgBuilder.getMessage();
+ msg.setFrom(fromRef);
+
+ MessageManager mm = MessageManager.locateMessageManager();
+ mm.sendMessage(targetID, msg);
+ }
+}
\ No newline at end of file
Property changes on: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/MessageSender.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/OutputSetImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -64,7 +64,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ProcessImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -64,7 +64,7 @@
{
// provide logging
private static final Log log = LogFactory.getLog(ProcessImpl.class);
-
+
// The required process name
private String name;
// The list of associated flow objects
@@ -128,7 +128,7 @@
public String getPropertyValue(String name)
{
Property prop = getProperty(name);
- return prop != null ? prop.getValue().getExpressionBody() : null;
+ return prop != null ? prop.getValue() : null;
}
public List<Property> getProperties()
@@ -196,7 +196,7 @@
throw new InvalidProcessException("Cannot create a copy of: " + this, ex);
}
}
-
+
public ObjectName startProcess()
{
return startProcess(null);
@@ -205,20 +205,20 @@
public ObjectName startProcess(Attachments att)
{
ProcessManager pm = ProcessManager.locateProcessManager();
-
+
if (status == ProcessStatus.Aborted || status == ProcessStatus.Completed)
resetProcess();
-
+
if (status != ProcessStatus.Ready)
throw new IllegalStateException("Cannot start process in state: " + status);
-
+
// Register the process if needed
if (pm.getProcessByID(getID()) == null)
{
ProcessManagerImpl pmImpl = (ProcessManagerImpl)pm;
pmImpl.registerProcess(this);
}
-
+
pm.startProcess(getID(), att);
return getID();
}
@@ -244,11 +244,11 @@
{
waitForEndInternal(timeout);
}
-
+
/**
* Wait for the Process to end. All Tokens that are generated at the Start Event for that Process must eventually
- * arrive at an End Event. The Process will be in a running state until all Tokens are consumed. If the process
- * was aborted this method throws the causing RuntimeException if avaialable.
+ * arrive at an End Event. The Process will be in a running state until all Tokens are consumed. If the process was
+ * aborted this method throws the causing RuntimeException if avaialable.
*/
private void waitForEndInternal(long timeout)
{
@@ -267,24 +267,25 @@
{
if (runtimeException != null)
throw new BPMException("Process aborted", runtimeException);
-
+
break;
}
-
+
// Join the executor thread
executorThread.join(timeout);
now = System.currentTimeMillis();
}
-
+
// Throw timeout exception if it took too long
if (status != ProcessStatus.Cancelled && status != ProcessStatus.Completed && status != ProcessStatus.Aborted)
{
- ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + getID());
+ ProcessTimeoutException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: "
+ + getID());
log.error(rte);
-
+
log.error("Interrupt executor thread");
executorThread.interrupt();
-
+
throw rte;
}
}
@@ -342,7 +343,7 @@
{
this.status = status;
}
-
+
public Thread getExecutorThread()
{
return executorThread;
@@ -362,10 +363,10 @@
{
if (getMessage(msg.getName()) != null)
throw new InvalidProcessException("Duplicate message: " + msg);
-
+
messages.add(msg);
}
-
+
public Message getMessage(String msgName)
{
for (Message msg : messages)
@@ -375,12 +376,12 @@
}
return null;
}
-
+
public void initialize()
{
if (status != ProcessStatus.None)
throw new IllegalStateException("Cannot initialize process in state: " + status);
-
+
// Initialize the Element
super.initialize(this);
@@ -407,6 +408,23 @@
status = ProcessStatus.Ready;
}
+ protected void initializeMessageRef(Message msgRef)
+ {
+ String msgName = msgRef.getName();
+ MessageImpl procMsg = (MessageImpl)getMessage(msgName);
+ if (procMsg == null)
+ throw new IllegalStateException("Cannot obtain process message: " + msgName);
+
+ MessageImpl msgImpl = (MessageImpl)msgRef;
+ 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)msgRef).addProperty(prop);
+ }
+
public String toString()
{
return "Process[" + getName() + "]";
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyBuilderImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyBuilderImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -34,7 +34,7 @@
*/
public class PropertyBuilderImpl implements PropertyBuilder
{
- public Property newProperty(String name, String value)
+ public Property newProperty(String name, Object value)
{
return new PropertyImpl(name, new ExpressionImpl(value));
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/PropertyImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -67,7 +67,7 @@
return PropertyType.String;
}
- public Expression getValue()
+ public Expression getExpression()
{
return expression;
}
@@ -86,4 +86,15 @@
{
this.isCorrelation = isCorrelation;
}
+
+ public String getValue()
+ {
+ return (expression != null ? expression.getExpressionBody() : null);
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T getValue(Class<T> T)
+ {
+ return (T)(expression != null ? expression.getExpressionValue() : null);
+ }
}
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/ReceiveTaskImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -34,6 +34,7 @@
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Property;
import org.jboss.bpm.model.ReceiveTask;
+import org.jboss.bpm.model.Message.Implementation;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.Token;
@@ -69,7 +70,7 @@
return TaskType.Receive;
}
- public Implementation getImplementation()
+ public Message.Implementation getImplementation()
{
return implementation;
}
@@ -155,8 +156,7 @@
if (messageRef == null)
throw new InvalidProcessException("A Message for the MessageRef attribute MUST be entered");
- initializeMessageRef(proc, messageRef);
- if (messageRef.getToRef() != null)
- throw new IllegalArgumentException("Message targetID must be null for: " + this);
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.initializeMessageRef(messageRef);
}
}
\ 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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SendTaskImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -21,25 +21,16 @@
*/
package org.jboss.bpm.model.internal;
-import javax.management.ObjectName;
+//$Id$
+
import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.client.MessageManager;
-import org.jboss.bpm.client.ObjectNameFactory;
-import org.jboss.bpm.model.Entity;
import org.jboss.bpm.model.Message;
-import org.jboss.bpm.model.MessageBuilder;
-import org.jboss.bpm.model.MessageBuilderFactory;
-import org.jboss.bpm.model.Participant;
import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.Property;
import org.jboss.bpm.model.SendTask;
-import org.jboss.bpm.runtime.ExecutionContext;
-import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jboss.bpm.model.Message.Implementation;
import org.jboss.bpm.runtime.Token;
-//$Id$
-
/**
* Task that corresponds to the TaskType.None
*
@@ -64,7 +55,7 @@
return TaskType.Send;
}
- public Implementation getImplementation()
+ public Message.Implementation getImplementation()
{
return implementation;
}
@@ -79,52 +70,15 @@
this.messageRef = message;
}
- /**
- * Execute external business logic
- */
- protected void executeHandler(Token token)
+ @Override
+ protected void callExecutionHandler(Token token)
{
- // Call the execution handler with the InputSet
- ExecutionHandler handler = getExecutionHandler();
- if (handler != null)
- {
- handler.execute(token);
- }
- // Assume the the single IORule actually mapps the data
- else
- {
- ExecutionContext exContext = token.getExecutionContext();
- MessageBuilderFactory factory = MessageBuilderFactory.newInstance();
- MessageBuilder msgBuilder = factory.newMessageBuilder();
-
- Participant toRef = messageRef.getToRef();
- if (toRef == null || toRef.getEntityRef() == null)
- throw new IllegalStateException("Cannot obtain target participant");
-
- Entity entityRef = toRef.getEntityRef();
- ObjectName targetID = ObjectNameFactory.create(entityRef.getName());
- msgBuilder.newMessage(messageRef.getName());
- msgBuilder.addToRef(targetID);
-
- // Copy the properties from the execution context
- // to the send message
- for (Property auxProp : messageRef.getProperties())
- {
- String key = auxProp.getName();
- String value = (String)exContext.getAttachment(key);
- if (value == null)
- throw new IllegalStateException("Cannot obtain property: " + key);
-
- msgBuilder.addProperty(key, value);
- }
- MessageImpl msg = (MessageImpl)msgBuilder.getMessage();
- msg.setFrom(this);
-
- MessageManager mm = MessageManager.locateMessageManager();
- mm.sendMessage(targetID, msg);
- }
+ super.callExecutionHandler(token);
+
+ MessageSender messageSender = new MessageSender(this, messageRef);
+ messageSender.sendMessage(token);
}
-
+
@Override
protected void initialize(Process proc)
{
@@ -132,8 +86,10 @@
if (messageRef == null)
throw new InvalidProcessException("A Message for the MessageRef attribute MUST be entered");
+
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.initializeMessageRef(messageRef);
- initializeMessageRef(proc, messageRef);
if (messageRef.getToRef() == null)
throw new IllegalArgumentException("Message targetID cannot be null for: " + this);
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/SignalEventDetailImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -33,15 +33,10 @@
* @since 08-Jul-2008
*/
@SuppressWarnings("serial")
-public class SignalEventDetailImpl extends SupportingElementImpl implements SignalEventDetail
+public class SignalEventDetailImpl extends EventDetailImpl implements SignalEventDetail
{
- private Signal signal;
+ private Signal signalRef;
- public SignalEventDetailImpl(Signal signal)
- {
- this.signal = signal;
- }
-
public EventDetailType getEventDetailType()
{
return EventDetailType.Signal;
@@ -49,6 +44,11 @@
public Signal getSignalRef()
{
- return signal;
+ return signalRef;
}
+
+ public void setSignalRef(Signal signalRef)
+ {
+ this.signalRef = signalRef;
+ }
}
Modified: jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/StartEventImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -62,7 +62,6 @@
private ConnectingObject outFlow;
private List<EventDetail> triggers = new ArrayList<EventDetail>();
- private Signal startSignal;
public StartEventImpl(String name)
{
@@ -77,12 +76,6 @@
public void addTrigger(EventDetail eventDetail)
{
triggers.add(eventDetail);
-
- if (eventDetail instanceof SignalEventDetail)
- {
- SignalEventDetail signalDetail = (SignalEventDetail)eventDetail;
- startSignal = signalDetail.getSignalRef();
- }
}
public ConnectingObject getOutFlow()
@@ -140,41 +133,49 @@
{
super.initialize(proc);
- // Setup the start signal handler
- if (startSignal != null)
+ for (EventDetail eventDetail : getTrigger())
{
- final StartEvent start = this;
- SignalListener listener = new SignalListener()
+ EventDetailImpl eventDetailImpl = (EventDetailImpl)eventDetail;
+ eventDetailImpl.initialize(this);
+
+ // Register the start signal listener
+ if (eventDetail instanceof SignalEventDetail)
{
- public void catchSignal(Signal signal)
+ SignalEventDetail signalEventDetail = (SignalEventDetail)eventDetail;
+ final Signal startSignal = signalEventDetail.getSignalRef();
+ final StartEvent start = this;
+ SignalListener listener = new SignalListener()
{
- if (startSignal.getSignalType() == signal.getSignalType() && startSignal.getMessage().equals(signal.getMessage()))
+ public void catchSignal(Signal signal)
{
- log.debug("catchSignal: " + signal);
- if (proc.getProcessStatus() == ProcessStatus.Active)
+ if (startSignal.getSignalType() == signal.getSignalType() && startSignal.getMessage().equals(signal.getMessage()))
{
- log.debug("Start process from signal: " + signal);
- ExecutionManager exManager = ExecutionManager.locateExecutionManager();
- RuntimeProcess rtProc = exManager.getRuntimeProcess(start.getProcess().getID());
- TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
- TokenImpl token = new TokenImpl(null);
- tokenExecutor.create(token, getOutFlow());
- tokenExecutor.start(token);
+ log.debug("catchSignal: " + signal);
+ if (proc.getProcessStatus() == ProcessStatus.Active)
+ {
+ log.debug("Start process from signal: " + signal);
+ ExecutionManager exManager = ExecutionManager.locateExecutionManager();
+ RuntimeProcess rtProc = exManager.getRuntimeProcess(start.getProcess().getID());
+ TokenExecutor tokenExecutor = rtProc.getTokenExecutor();
+ TokenImpl token = new TokenImpl(null);
+ tokenExecutor.create(token, getOutFlow());
+ tokenExecutor.start(token);
+ }
+ else
+ {
+ log.debug("Ignore start signal for process: " + proc);
+ }
}
- else
- {
- log.debug("Ignore start signal for process: " + proc);
- }
}
- }
-
- public String toString()
- {
- return start + "." + startSignal;
- }
- };
- SignalManager signalManager = SignalManager.locateSignalManager();
- signalManager.addSignalListener(getProcess().getName(), listener);
+
+ public String toString()
+ {
+ return start + "." + startSignal;
+ }
+ };
+ SignalManager signalManager = SignalManager.locateSignalManager();
+ signalManager.addSignalListener(getProcess().getName(), listener);
+ }
}
}
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskBuilderImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -23,9 +23,6 @@
//$Id$
-import javax.management.ObjectName;
-
-import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.Task;
import org.jboss.bpm.model.TaskBuilder;
@@ -42,34 +39,8 @@
super(proc, flowObject);
}
- @Override
- public MessageBuilder addMessage(String name)
- {
- 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 msgName)
{
- return addMessageRef(msgName, null, null);
- }
-
- public TaskBuilder addMessageRef(String msgName, ObjectName fromID, ObjectName toID)
- {
MessageImpl message = new MessageImpl(msgName);
if (flowObject instanceof ReceiveTaskImpl)
{
@@ -78,8 +49,6 @@
}
else if (flowObject instanceof SendTaskImpl)
{
- message.setSourceID(fromID);
- message.setTargetID(toID);
SendTaskImpl sendTask = (SendTaskImpl)flowObject;
sendTask.setMessageRef(message);
}
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-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/model/internal/TaskImpl.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -22,9 +22,6 @@
package org.jboss.bpm.model.internal;
import org.jboss.bpm.client.SignalManager;
-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;
@@ -83,21 +80,4 @@
{
return "Task[" + getTaskType() + "," + getName() + "]";
}
-
- protected void initializeMessageRef(Process proc, Message msg)
- {
- String msgName = msg.getName();
- MessageImpl procMsg = (MessageImpl)proc.getMessage(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/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java
===================================================================
--- jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/ri/src/main/java/org/jboss/bpm/runtime/internal/DelegatingExecutionContext.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -81,7 +81,7 @@
Property prop = activity.getProperty(key);
if (prop != null)
{
- value = prop.getValue().getExpressionBody();
+ value = prop.getValue();
}
}
@@ -92,7 +92,7 @@
Property prop = proc.getProperty(key);
if (prop != null)
{
- value = prop.getValue().getExpressionBody();
+ value = prop.getValue();
}
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/pom.xml
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/pom.xml 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/pom.xml 2008-08-16 14:50:11 UTC (rev 1908)
@@ -132,6 +132,13 @@
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
+ <excludes>
+ <exclude>org/jboss/bpm/cts/**/*MarshallerTest.java</exclude>
+ <exclude>org/jboss/bpm/cts/**/*APITest.java</exclude>
+ <exclude>org/jboss/bpm/cts/**/*STPTest.java</exclude>
+ <!-- http://jira.codehaus.org/browse/SUREFIRE-515 -->
+ <exclude>org/jboss/bpm/cts/**/*Task?.java</exclude>
+ </excludes>
<includes>
<include>org/jboss/bpm/cts/**</include>
</includes>
@@ -152,6 +159,13 @@
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
+ <excludes>
+ <exclude>org/jboss/bpm/pattern/**/*MarshallerTest.java</exclude>
+ <exclude>org/jboss/bpm/pattern/**/*APITest.java</exclude>
+ <exclude>org/jboss/bpm/pattern/**/*STPTest.java</exclude>
+ <!-- http://jira.codehaus.org/browse/SUREFIRE-515 -->
+ <exclude>org/jboss/bpm/pattern/**/*Task?.java</exclude>
+ </excludes>
<includes>
<include>org/jboss/bpm/pattern/**</include>
</includes>
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyMarshallerTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -43,7 +43,7 @@
// Marshall the process to a string
String procXML = marshallProcess(proc);
-
+
// Recreate the process from the marshalled process
ProcessManager procManager = ProcessManager.locateProcessManager();
proc = procManager.createProcess(procXML);
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/activity/ActivityPropertyTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -26,10 +26,14 @@
import java.io.IOException;
import java.util.Collection;
-import org.jboss.bpm.model.ActivityBuilder;
+import org.jboss.bpm.model.Message;
+import org.jboss.bpm.model.MessageBuilder;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.model.Property;
+import org.jboss.bpm.model.TaskBuilder;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.ExecutionHandler;
import org.jboss.bpm.runtime.Token;
@@ -48,16 +52,21 @@
*/
public class ActivityPropertyTest extends DefaultEngineTestCase
{
- public void testActivityProperties() throws Exception
+ @SuppressWarnings("unchecked")
+ public void testActivityPropertyRead() throws Exception
{
Process proc = getProcess();
proc.startProcess();
proc.waitForEnd();
- assertEquals("bar", TaskA.attValue);
+ Message endMessage = getMessages().get(0);
+ assertNotNull("EndMessage expected", endMessage);
+ assertEquals("bar", endMessage.getPropertyValue("foo"));
- assertEquals(1, TaskA.attKeys.size());
- Key key = TaskA.attKeys.iterator().next();
+ Property prop = endMessage.getProperty("attKeys");
+ Collection<Key> attKeys = prop.getValue(Collection.class);
+ assertEquals(1, attKeys.size());
+ Key key = attKeys.iterator().next();
assertEquals("ActivityProperties.TaskA.foo", key.getNamePart());
}
@@ -65,9 +74,11 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
- ActivityBuilder activityBuilder = procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class);
- activityBuilder.addProperty("foo", "bar");
- procBuilder.addSequenceFlow("End").addEndEvent("End");
+ MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ msgBuilder.addToRef(getMessageListenerID()).addProperty("foo", null, true).addProperty("attKeys", null, true);
+ TaskBuilder taskBuilder = procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class);
+ taskBuilder.addProperty("foo", "bar").addSequenceFlow("End");
+ procBuilder.addEndEvent("End").addEventDetail(EventDetailType.Message).addMessageRef("EndMessage");
Process proc = procBuilder.getProcess();
return proc;
}
@@ -75,13 +86,13 @@
@SuppressWarnings("serial")
public static class TaskA implements ExecutionHandler
{
- static Object attValue;
- static Collection<Key> attKeys;
public void execute(Token token)
{
ExecutionContext exContext = token.getExecutionContext();
- attValue = exContext.getAttachment("ActivityProperties.TaskA.foo");
- attKeys = exContext.getAttachmentKeys();
+ Object attValue = exContext.getAttachment("ActivityProperties.TaskA.foo");
+ Collection<Key> attKeys = exContext.getAttachmentKeys();
+ exContext.addAttachment("foo", attValue);
+ exContext.addAttachment("attKeys", attKeys);
}
}
}
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,6 +32,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
@@ -133,10 +134,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("TaskC");
procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -33,6 +33,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -71,9 +72,9 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
Process proc = procBuilder.getProcess();
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,6 +32,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
@@ -134,10 +135,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/simplemerge/SimpleMergeTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -33,6 +33,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.test.DefaultEngineTestCase;
@@ -71,10 +72,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("Merge");
- procBuilder.addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
+ eventBuilder = procBuilder.addSequenceFlow("Merge").addStartEvent("StartB");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
+ procBuilder.addSequenceFlow("Merge").addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
Process proc = procBuilder.getProcess();
return proc;
Modified: jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java
===================================================================
--- jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java 2008-08-16 09:20:28 UTC (rev 1907)
+++ jbossbpm/spec/trunk/modules/testsuite/src/test/java/org/jboss/bpm/pattern/control/synchronization/SynchronizationTest.java 2008-08-16 14:50:11 UTC (rev 1908)
@@ -32,6 +32,7 @@
import org.jboss.bpm.model.ProcessBuilder;
import org.jboss.bpm.model.ProcessBuilderFactory;
import org.jboss.bpm.model.Signal;
+import org.jboss.bpm.model.EventDetail.EventDetailType;
import org.jboss.bpm.model.Gateway.GatewayType;
import org.jboss.bpm.model.Signal.SignalType;
import org.jboss.bpm.runtime.ExecutionContext;
@@ -134,10 +135,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA").addExecutionHandler(TaskA.class).addSequenceFlow("Merge");
eventBuilder = procBuilder.addStartEvent("StartB");
- eventBuilder.addSignalTrigger(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
+ eventBuilder.addEventDetail(EventDetailType.Signal).addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B").addSequenceFlow("TaskB");
procBuilder.addTask("TaskB").addExecutionHandler(TaskB.class).addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("TaskC");
procBuilder.addTask("TaskC").addExecutionHandler(TaskC.class).addSequenceFlow("End");
More information about the jbpm-commits
mailing list