[jbpm-commits] JBoss JBPM SVN: r2450 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/model/builder and 19 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Sep 30 11:07:25 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-09-30 11:07:24 -0400 (Tue, 30 Sep 2008)
New Revision: 2450
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Assignment.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/AssignmentImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/MessageImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ParticipantImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/MessageBuilderImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExpressionEvaluator.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/MessageSender.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/EndEvent.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Message.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/PropertySupport.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/StartEvent.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilder.java
projects/spec/trunk/modules/cts/pom.xml
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityInputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityOutputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityPropertyTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessCatalog.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java
projects/spec/trunk/modules/impl/pom.xml
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/PropertyImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/DelegatingExecutionContext.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
Log:
ProcessPropertyTest - pass
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Assignment.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Assignment.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Assignment.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.api.model;
+
+//$Id$
+
+/**
+ * An Assignment, which is used in the definition of attributes for Process,
+ * Activity, Event, Gateway, and Gate.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public interface Assignment
+{
+ public enum AssignTime
+ {
+ Start, End
+ }
+
+ /**
+ * The target for the Assignment MUST be a Property of the Process or the activity
+ * itself.
+ */
+ Property getTo();
+
+ /**
+ * The Expression MUST be made up of a combination of Values, Properties, and
+ * Attributes, which are separated by operators such as add or multiply. The expression
+ * language is defined in the ExpressionLanguage attribute of the Business Process
+ * Diagram
+ */
+ Expression getFrom();
+
+ /**
+ * An Assignment MAY have a AssignTime setting. If the Object is an activity (Task,
+ * Sub-Process, or Process), then the Assignment MUST have an AssignTime.
+ * A value of Start means that the assignment SHALL occur at the start of the activity.
+ * This can be used to assign the higher-level (global) Properties of the Process to the
+ * (local) Properties of the activity as an input to the activity.
+ * A value of End means that the assignment SHALL occur at the end of the activity.
+ * This can be used to assign the (local) Properties of the activity to the higher-level
+ * (global) Properties of the Process as an output to the activity.
+ */
+ AssignTime getAssignTime();
+}
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Assignment.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/EndEvent.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/EndEvent.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/EndEvent.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -36,15 +36,7 @@
public interface EndEvent extends Event
{
/**
- * Defines the type of end result
- */
- enum ResultType
- {
- None, Message, Error, Compensation, Link, Multiple
- }
-
- /**
* Get the type od end result
*/
- ResultType getResultType();
+ EventDetailType getResultType();
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -42,7 +42,25 @@
};
/**
+ * Defines the type of event detail
+ */
+ enum EventDetailType
+ {
+ None, Message, Error, Compensation, Link, Multiple, Timer, Rule, Signal
+ }
+
+ /**
* Get the type of this event
*/
EventType getEventType();
+
+ /**
+ * Get the associated signal ref
+ */
+ Signal getSignalRef();
+
+ /**
+ * Get the associated message ref
+ */
+ Message getMessageRef();
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Message.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Message.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Message.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -21,8 +21,10 @@
*/
package org.jbpm.api.model;
+import java.io.Serializable;
+
//$Id$
/**
@@ -32,7 +34,7 @@
* @author thomas.diesler at jboss.com
* @since 21-Jul-2008
*/
-public interface Message extends PropertySupport
+public interface Message extends PropertySupport, Serializable
{
/**
* Name is an attribute that is text description of the Message.
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -24,6 +24,7 @@
//$Id$
import java.util.List;
+import java.util.Set;
import javax.management.ObjectName;
@@ -82,6 +83,24 @@
*/
Node getNode(String name);
+ /**
+ * One or more assignment expressions MAY be made for the object. The Assignment SHALL be performed as defined by the
+ * AssignTime attribute.
+ */
+ List<Assignment> getAssignments();
+
+ /**
+ * Get the list of associated {@link Message} objects.
+ * @return An empty list if there are none
+ */
+ Set<Message> getMessages();
+
+ /**
+ * Get an associated {@link Message} by name.
+ * @return null if not found
+ */
+ Message getMessage(String msgName);
+
// Runtime Aspects ====================================================================================================
/**
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/PropertySupport.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/PropertySupport.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/PropertySupport.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -39,7 +39,18 @@
Property getProperty(String name);
/**
- * Get the list of property names
+ * Add a property
*/
- Set<Property> getProperties();
+ void addProperty(Property prop);
+
+ /**
+ * Remove a property
+ */
+ boolean removeProperty(String name);
+
+ /**
+ * Get the set of property names
+ */
+ Set<String> getPropertyNames();
+
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/StartEvent.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/StartEvent.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/StartEvent.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -34,14 +34,6 @@
public interface StartEvent extends Event
{
/**
- * Defines the start trigger type
- */
- enum TriggerType
- {
- None, Message, Timer, Rule, Signal
- }
-
- /**
* Get the outgoing SequenceFlow
*/
SequenceFlow getOutFlow();
@@ -49,5 +41,5 @@
/**
* Get the start trigger type
*/
- TriggerType getTriggerType();
+ EventDetailType getTriggerType();
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilder.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilder.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilder.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -25,9 +25,10 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Assignment.AssignTime;
+import org.jbpm.api.model.Event.EventDetailType;
+import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.Gateway.GatewayType;
-import org.jbpm.api.model.StartEvent.TriggerType;
import org.jbpm.api.model.Task.TaskType;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.FlowHandler;
@@ -65,9 +66,9 @@
EventBuilder addStartEvent(String name);
/**
- * Add a SartEvent with a given name and TriggerType
+ * Add a SartEvent with a given name and ResultType
*/
- EventBuilder addStartEvent(String name, TriggerType triggerType);
+ EventBuilder addStartEvent(String name, EventDetailType ResultType);
/**
* Add an IntermediateEvent with a given name
@@ -82,7 +83,7 @@
/**
* Add an EndEvent with a given name and ResultType
*/
- EventBuilder addEndEvent(String name, ResultType resultType);
+ EventBuilder addEndEvent(String name, EventDetailType resultType);
/**
* Add a Task of {@link TaskType} NONE with a given name
@@ -102,15 +103,29 @@
/**
* Add a {@link Message} with a given name.
*/
- MessageBuilder addMessage(String name);
+ MessageBuilder addProcessMessage(String name);
/**
- * Add a process property
+ * Add a {@link Property} to the process
*/
- ProcessBuilder addProperty(String name, String value);
+ ProcessBuilder addProcessProperty(String name, String value);
+ /**
+ * Add a {@link Property} to the current node
+ */
+ ProcessBuilder addNodeProperty(String name, String value);
/**
+ * Add an Assignment to the Process.
+ */
+ ProcessBuilder addProcessAssignment(AssignTime time, ExpressionLanguage lang, String fromExpr, String toProp);
+
+ /**
+ * Add an Assignment to the current {@link Node}.
+ */
+ ProcessBuilder addNodeAssignment(AssignTime time, ExpressionLanguage lang, String fromExpr, String toProp);
+
+ /**
* Add an {@link ExecutionHandler} with a given Class
*/
<T extends ExecutionHandler> ProcessBuilder addExecutionHandler(Class<T> clazz);
Modified: projects/spec/trunk/modules/cts/pom.xml
===================================================================
--- projects/spec/trunk/modules/cts/pom.xml 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/pom.xml 2008-09-30 15:07:24 UTC (rev 2450)
@@ -82,7 +82,6 @@
<exclude>org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java</exclude>
<exclude>org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java</exclude>
<exclude>org/jbpm/test/cts/processmanager/ProcessManagerTest.java</exclude>
- <exclude>org/jbpm/test/cts/process/ProcessPropertyTest.java</exclude>
<exclude>org/jbpm/test/cts/signalmanager/SignalManagerTest.java</exclude>
<exclude>org/jbpm/test/cts/startevent/StartEventSignalTest.java</exclude>
<exclude>org/jbpm/test/cts/task/ReceiveTaskTest.java</exclude>
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityInputSetTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityInputSetTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityInputSetTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -27,7 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -84,8 +84,8 @@
procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
//TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
//taskBuilder.addInputSet().addPropertyInput("frog").addSequenceFlow("End");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("frog", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityOutputSetTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityOutputSetTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityOutputSetTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -27,7 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -64,8 +64,8 @@
procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
//TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
//taskBuilder.addOutputSet().addPropertyOutput("frog", "kermit").addSequenceFlow("End");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("frog", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityPropertyTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityPropertyTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityPropertyTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -27,7 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -62,10 +62,10 @@
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- taskBuilder.addProperty("foo", "bar").addSequenceFlow("End");
+ taskBuilder.addProcessProperty("foo", "bar").addSequenceFlow("End");
//taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "ActivityProperties_TaskA_foo", "propValue");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("propValue", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -27,7 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -64,8 +64,8 @@
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("EndEventMessage").addStartEvent("Start");
procBuilder.addSequenceFlow("TaskA").addTask("TaskA").addSequenceFlow("End");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("kermit", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -29,10 +29,9 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.StartEvent.TriggerType;
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -166,19 +165,19 @@
public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", TriggerType.Signal);
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
TaskBuilder taskBuilder = procBuilder.addSequenceFlow("TaskA").addTask("TaskA");
//taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValue");
taskBuilder.addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB", TriggerType.Signal);
+ eventBuilder = procBuilder.addStartEvent("StartB", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
taskBuilder = procBuilder.addSequenceFlow("TaskB").addTask("TaskB");
//taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValue");
taskBuilder.addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Exclusive).addSequenceFlow("End");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("taskValue", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -29,9 +29,9 @@
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.StartEvent.TriggerType;
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -77,9 +77,9 @@
public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", TriggerType.Signal);
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
- eventBuilder = procBuilder.addSequenceFlow("Merge").addStartEvent("StartB", TriggerType.Signal);
+ eventBuilder = procBuilder.addSequenceFlow("Merge").addStartEvent("StartB", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
procBuilder.addSequenceFlow("Merge").addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -29,10 +29,9 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.StartEvent.TriggerType;
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -158,19 +157,19 @@
public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", TriggerType.Signal);
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
TaskBuilder taskBuilder = procBuilder.addSequenceFlow("TaskA").addTask("TaskA");
//taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA");
taskBuilder.addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB", TriggerType.Signal);
+ eventBuilder = procBuilder.addStartEvent("StartB", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
taskBuilder = procBuilder.addSequenceFlow("TaskB").addTask("TaskB");
//taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB");
taskBuilder.addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("End");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("taskValueA", null, true).addProperty("taskValueB", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -27,7 +27,9 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Assignment.AssignTime;
+import org.jbpm.api.model.Event.EventDetailType;
+import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -66,10 +68,10 @@
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("ProcessProperties").addStartEvent("Start").addSequenceFlow("TaskA");
- //procBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "ProcessProperties_foo", "propValue");
- procBuilder.addProperty("foo", "bar").addTask("TaskA").addSequenceFlow("End");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addProcessAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "ProcessProperties_foo", "propValue");
+ procBuilder.addProcessProperty("foo", "bar").addTask("TaskA").addSequenceFlow("End");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("propValue", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessCatalog.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessCatalog.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessCatalog.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -44,9 +44,9 @@
public static Process getDefaultProcess()
{
ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
- builder.addProcess("Proc").addProperty("proP1", "valP1").addProperty("proP2", "valP2");
+ builder.addProcess("Proc").addProcessProperty("proP1", "valP1").addProcessProperty("proP2", "valP2");
builder.addStartEvent("Start").addSequenceFlow("Task");
- builder.addTask("Task").addProperty("proT1", "valT1").addProperty("proT2", "valT2");
+ builder.addTask("Task").addNodeProperty("proT1", "valT1").addNodeProperty("proT2", "valT2");
builder.addSequenceFlow("End").addEndEvent("End");
Process proc = builder.getProcess();
return proc;
@@ -57,7 +57,7 @@
TestCase.assertNotNull("Process not null", wasProc);
TestCase.assertEquals("Proc", wasProc.getName());
- TestCase.assertEquals("Two proc props", 2, wasProc.getProperties().size());
+ TestCase.assertEquals("Two proc props", 2, wasProc.getPropertyNames().size());
TestCase.assertEquals("valP1", wasProc.getProperty("proP1").getValue());
TestCase.assertEquals("valP2", wasProc.getProperty("proP2").getValue());
@@ -69,9 +69,9 @@
TestCase.assertNotNull("Task not null", task);
TestCase.assertNotNull("End not null", end);
- TestCase.assertEquals("No start props", 0, start.getProperties().size());
- TestCase.assertEquals("Two task props", 2, task.getProperties().size());
- TestCase.assertEquals("No end props", 0, end.getProperties().size());
+ TestCase.assertEquals("No start props", 0, start.getPropertyNames().size());
+ TestCase.assertEquals("Two task props", 2, task.getPropertyNames().size());
+ TestCase.assertEquals("No end props", 0, end.getPropertyNames().size());
TestCase.assertEquals("valT1", task.getProperty("proT1").getValue());
TestCase.assertEquals("valT2", task.getProperty("proT2").getValue());
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -30,9 +30,8 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.StartEvent.TriggerType;
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -125,13 +124,13 @@
public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess("StartEventSignal").addStartEvent("StartA", TriggerType.Signal);
+ EventBuilder eventBuilder = procBuilder.addProcess("StartEventSignal").addStartEvent("StartA", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
TaskBuilder taskBuilder = procBuilder.addSequenceFlow("TaskA").addTask("TaskA");
//taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValue");
taskBuilder.addSequenceFlow("End");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("taskValue", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -30,7 +30,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.Task.TaskType;
import org.jbpm.api.model.builder.EventBuilder;
@@ -152,13 +152,13 @@
protected Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- MessageBuilder msgBuilder = procBuilder.addProcess("ReceiveTaskTest").addMessage("ReceiveTaskMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcess("ReceiveTaskTest").addProcessMessage("ReceiveTaskMessage");
msgBuilder.addProperty("foo", null, true);
- msgBuilder = procBuilder.addMessage("EndEventMessage");
+ msgBuilder = procBuilder.addProcessMessage("EndEventMessage");
msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA", TaskType.Receive).addMessageRef("ReceiveTaskMessage");
- EventBuilder eventBuilder = procBuilder.addSequenceFlow("End").addEndEvent("End", ResultType.Message);
+ EventBuilder eventBuilder = procBuilder.addSequenceFlow("End").addEndEvent("End", EventDetailType.Message);
eventBuilder.addMessageRef("EndEventMessage");
return procBuilder.getProcess();
}
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -77,7 +77,7 @@
protected Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- MessageBuilder msgBuilder = procBuilder.addProcess("SendTaskTest").addMessage("SendTaskMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcess("SendTaskTest").addProcessMessage("SendTaskMessage");
msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA", TaskType.Send).addMessageRef("SendTaskMessage");
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -57,11 +57,11 @@
protected Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- procBuilder.addProcess("TaskExecutionHandlerTest").addProperty("procProp", "kermit");
+ procBuilder.addProcess("TaskExecutionHandlerTest").addProcessProperty("procProp", "kermit");
//procBuilder.addAssignment(Assignment.AssignTime.Start, Expression.ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_procProp == 'kermit'", "procAssign");
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- taskBuilder.addProperty("taskProp", "piggy").addExecutionHandler(TaskExecutionHandler.class).addSequenceFlow("End");
+ taskBuilder.addProcessProperty("taskProp", "piggy").addExecutionHandler(TaskExecutionHandler.class).addSequenceFlow("End");
//taskBuilder.addAssignment(Assignment.AssignTime.Start, Expression.ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_TaskA_taskProp == 'piggy'", "taskAssign");
procBuilder.addEndEvent("End");
return procBuilder.getProcess();
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -30,8 +30,8 @@
import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.StartEvent.TriggerType;
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -77,9 +77,9 @@
public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", TriggerType.Signal);
+ EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
- eventBuilder = procBuilder.addSequenceFlow("Merge").addStartEvent("StartB", TriggerType.Signal);
+ eventBuilder = procBuilder.addSequenceFlow("Merge").addStartEvent("StartB", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
procBuilder.addSequenceFlow("Merge").addGateway("Merge", Gateway.GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -30,9 +30,8 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.StartEvent.TriggerType;
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -160,19 +159,19 @@
public Process getProcess() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- EventBuilder eventBuilder = procBuilder.addProcess("Synchronization").addStartEvent("StartA", TriggerType.Signal);
+ EventBuilder eventBuilder = procBuilder.addProcess("Synchronization").addStartEvent("StartA", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "A");
TaskBuilder taskBuilder = procBuilder.addSequenceFlow("TaskA").addTask("TaskA");
//taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA");
taskBuilder.addSequenceFlow("Merge");
- eventBuilder = procBuilder.addStartEvent("StartB", TriggerType.Signal);
+ eventBuilder = procBuilder.addStartEvent("StartB", EventDetailType.Signal);
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
taskBuilder = procBuilder.addSequenceFlow("TaskB").addTask("TaskB");
//taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB");
taskBuilder.addSequenceFlow("Merge");
procBuilder.addGateway("Merge", Gateway.GatewayType.Parallel).addSequenceFlow("End");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("taskValueA", null, true).addProperty("taskValueB", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -27,7 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -60,10 +60,10 @@
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("CaseData");
//procBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "CaseData_foo", "propValue");
- procBuilder.addProperty("foo", "bar").addStartEvent("Start").addSequenceFlow("TaskA");
+ procBuilder.addProcessProperty("foo", "bar").addStartEvent("Start").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA").addSequenceFlow("End");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("propValue", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -27,7 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -61,10 +61,10 @@
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("TaskData").addStartEvent("Start").addSequenceFlow("TaskA");
TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- taskBuilder.addProperty("foo", "bar").addSequenceFlow("End");
+ taskBuilder.addProcessProperty("foo", "bar").addSequenceFlow("End");
//taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "TaskData_TaskA_foo", "foo");
- procBuilder.addEndEvent("End", ResultType.Message).addMessageRef("EndMessage");
- MessageBuilder msgBuilder = procBuilder.addMessage("EndMessage");
+ procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
Process proc = procBuilder.getProcess();
return proc;
Modified: projects/spec/trunk/modules/impl/pom.xml
===================================================================
--- projects/spec/trunk/modules/impl/pom.xml 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/pom.xml 2008-09-30 15:07:24 UTC (rev 2450)
@@ -33,6 +33,7 @@
<hibernate.version>3.2.6.ga</hibernate.version>
<hibernate.annotations.version>3.3.1.GA</hibernate.annotations.version>
<hibernate.validator.version>3.0.0.ga</hibernate.validator.version>
+ <mvel.version>1.3.7-java1.5</mvel.version>
</properties>
<!-- DependencyManagement -->
@@ -53,6 +54,11 @@
<artifactId>hibernate-validator</artifactId>
<version>${hibernate.validator.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.mvel</groupId>
+ <artifactId>mvel</artifactId>
+ <version>${mvel.version}</version>
+ </dependency>
</dependencies>
</dependencyManagement>
@@ -75,6 +81,10 @@
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.mvel</groupId>
+ <artifactId>mvel</artifactId>
+ </dependency>
</dependencies>
<!-- Profiles -->
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/AssignmentImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/AssignmentImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/AssignmentImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -0,0 +1,72 @@
+/*
+ * 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.jbpm.ri.model;
+
+//$Id$
+
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.EnumType;
+import javax.persistence.Enumerated;
+
+import org.jbpm.api.model.Assignment;
+import org.jbpm.api.model.Expression;
+import org.jbpm.api.model.Property;
+
+/**
+ * An Assignment, which is used in the definition of attributes for Process, Activities, Events, Gateways, and Gates.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at Entity(name = "Assignment")
+public class AssignmentImpl implements Assignment
+{
+ @Enumerated(EnumType.STRING)
+ private AssignTime assignTime;
+ @Embedded
+ private ExpressionImpl from;
+ @Embedded
+ private PropertyImpl to;
+
+ public AssignmentImpl(AssignTime assignTime, ExpressionImpl from, PropertyImpl to)
+ {
+ this.assignTime = assignTime;
+ this.from = from;
+ this.to = to;
+ }
+
+ public AssignTime getAssignTime()
+ {
+ return assignTime;
+ }
+
+ public Expression getFrom()
+ {
+ return from;
+ }
+
+ public Property getTo()
+ {
+ return to;
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/AssignmentImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -25,8 +25,6 @@
import javax.management.ObjectName;
import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
import javax.persistence.Transient;
import org.jbpm.api.Constants;
@@ -64,9 +62,6 @@
// provide logging
final static Logger log = LoggerFactory.getLogger(EndEventImpl.class);
- @Enumerated(EnumType.STRING)
- private ResultType resultType = ResultType.None;
-
public EndEventImpl(String name)
{
super(name);
@@ -78,14 +73,14 @@
{
}
- public ResultType getResultType()
+ public EventDetailType getResultType()
{
- return resultType;
+ return detailType;
}
- public void setResultType(ResultType resultType)
+ public void setResultType(EventDetailType resultType)
{
- this.resultType = resultType;
+ this.detailType = resultType;
}
@Override
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -27,15 +27,22 @@
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
import org.jbpm.api.Constants;
+import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Event;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.builder.ObjectNameFactory;
+import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.SignalHandler;
import org.jbpm.api.runtime.Token;
import org.jbpm.api.service.SignalService;
+import org.jbpm.ri.runtime.MessageSender;
/**
* An Event is something that “happens” during the course of a business process. <p/> These Events affect the flow of
@@ -47,12 +54,19 @@
@MappedSuperclass
public class EventImpl extends NodeImpl implements Event
{
- // provide serial version UID
private static final long serialVersionUID = 1L;
@Enumerated(EnumType.STRING)
protected EventType eventType;
+ @Enumerated(EnumType.STRING)
+ protected EventDetailType detailType = EventDetailType.None;
+
+ @Transient
+ private MessageImpl messageRef;
+ @Transient
+ private Signal signalRef;
+
public EventImpl(String name)
{
super(name);
@@ -73,12 +87,54 @@
return oname;
}
+ @Override
public EventType getEventType()
{
return eventType;
}
@Override
+ public Message getMessageRef()
+ {
+ return messageRef;
+ }
+
+ public void setMessageRef(MessageImpl messageRef)
+ {
+ this.messageRef = messageRef;
+ }
+
+ @Override
+ public Signal getSignalRef()
+ {
+ return signalRef;
+ }
+
+ public void setSignalRef(Signal signalRef)
+ {
+ this.signalRef = signalRef;
+ }
+
+ @Override
+ protected ExecutionHandler getDefaultExecutionHandler()
+ {
+ final Node thisNode = this;
+ return new ExecutionHandler()
+ {
+ private static final long serialVersionUID = 1L;
+
+ public void execute(Token token)
+ {
+ if (detailType == EventDetailType.Message && getMessageRef() != null)
+ {
+ MessageSender messageSender = new MessageSender(thisNode, getMessageRef());
+ messageSender.sendMessage(token);
+ }
+ }
+ };
+ }
+
+ @Override
protected SignalHandler getDefaultSignalHandler()
{
return new SignalHandler()
@@ -100,4 +156,26 @@
}
};
}
+
+ @Override
+ protected void initialize(Process proc)
+ {
+ super.initialize(proc);
+
+ if (detailType == EventDetailType.Signal && signalRef == null)
+ throw new InvalidProcessException("Event with detail type 'Signal' must have a signalRef");
+ if (detailType != EventDetailType.Signal && signalRef != null)
+ throw new InvalidProcessException("Event with detail type '" + detailType + "' cannot have a signalRef");
+
+ if (detailType == EventDetailType.Message && messageRef == null)
+ throw new InvalidProcessException("Event with detail type 'Message' must have a messageRef");
+ if (detailType != EventDetailType.Message && messageRef != null)
+ throw new InvalidProcessException("Event with detail type '" + detailType + "' cannot have a messageRef");
+
+ if (messageRef != null)
+ {
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.initializeMessageRef(messageRef);
+ }
+ }
}
\ No newline at end of file
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/MessageImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/MessageImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/MessageImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -0,0 +1,140 @@
+/*
+ * 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.jbpm.ri.model;
+
+//$Id$
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.Transient;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Participant;
+import org.jbpm.api.model.Property;
+
+/**
+ * A Message, which is used in the definition of attributes for a @{link StartEvent},
+ *
+ * @{EndEvent, @{IntermediateEvent}, @{Task}, and @{MessageFlow}
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 21-Jul-2008
+ */
+ at Entity(name = "Message")
+public class MessageImpl implements Message
+{
+ private static final long serialVersionUID = 1L;
+
+ @Basic
+ private String name;
+ @Transient
+ private Participant fromRef;
+ @Transient
+ private Participant toRef;
+ @Transient
+ private Set<Property> props = new HashSet<Property>();
+
+ public MessageImpl(String name)
+ {
+ if (name == null)
+ throw new IllegalArgumentException("Message name cannot be null");
+
+ this.name = name;
+ }
+
+ public MessageImpl(String name, Participant targetID, Participant sourceID)
+ {
+ this(name);
+ this.toRef = targetID;
+ this.fromRef = sourceID;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ @Override
+ public Property getProperty(String name)
+ {
+ for (Property prop : props)
+ {
+ if (prop.getName().equals(name))
+ return prop;
+ }
+ return null;
+ }
+
+ @Override
+ public Set<String> getPropertyNames()
+ {
+ Set<String> names = new HashSet<String>();
+ for (Property prop : props)
+ {
+ names.add(prop.getName());
+ }
+ return names;
+ }
+
+ @Override
+ public void addProperty(Property prop)
+ {
+ props.add(prop);
+ }
+
+ @Override
+ public boolean removeProperty(String name)
+ {
+ return props.remove(name);
+ }
+
+ public Participant getFromRef()
+ {
+ return fromRef;
+ }
+
+ public void setFromRef(Participant fromRef)
+ {
+ this.fromRef = fromRef;
+ }
+
+ public Participant getToRef()
+ {
+ return toRef;
+ }
+
+ public void setToRef(Participant toRef)
+ {
+ this.toRef = toRef;
+ }
+
+ public String toString()
+ {
+ StringBuilder str = new StringBuilder("Message[name=" + name + ",props=");
+ str.append(getPropertyNames());
+ str.append("]");
+ return str.toString();
+ }
+}
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/MessageImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -37,10 +37,12 @@
import javax.persistence.InheritanceType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
+import javax.persistence.Transient;
import org.hibernate.annotations.IndexColumn;
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.NameNotUniqueException;
+import org.jbpm.api.model.Assignment;
import org.jbpm.api.model.EndEvent;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
@@ -94,6 +96,9 @@
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = PropertyImpl.class)
protected Set<Property> properties = new HashSet<Property>();
+ @Transient
+ private List<Assignment> assignments = new ArrayList<Assignment>();
+
@Basic
private String execHandler;
private transient ExecutionHandler customExecHandler;
@@ -144,6 +149,7 @@
this.name = name;
}
+ @Override
public Property getProperty(String name)
{
for (Property prop : properties)
@@ -154,16 +160,39 @@
return null;
}
- public Set<Property> getProperties()
+ @Override
+ public Set<String> getPropertyNames()
{
- return Collections.unmodifiableSet(properties);
+ Set<String> names = new HashSet<String>();
+ for (Property prop : properties)
+ {
+ names.add(prop.getName());
+ }
+ return names;
}
+ @Override
+ public boolean removeProperty(String name)
+ {
+ return properties.remove(name);
+ }
+
+ @Override
public void addProperty(Property prop)
{
properties.add(prop);
}
+ public List<Assignment> getAssignments()
+ {
+ return Collections.unmodifiableList(assignments);
+ }
+
+ public void addAssignment(AssignmentImpl assignment)
+ {
+ this.assignments.add(assignment);
+ }
+
public List<SequenceFlow> getInFlows()
{
return inFlows;
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ParticipantImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ParticipantImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ParticipantImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -0,0 +1,71 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.model;
+
+//$Id$
+
+import javax.management.ObjectName;
+import javax.persistence.Basic;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+import org.jbpm.api.model.Participant;
+import org.jbpm.api.model.builder.ObjectNameFactory;
+
+/**
+ * A Participant, which is used in the definition of attributes for a @{link Pool}, @{link Message}, and @{link
+ * WebService}
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 21-Jul-2008
+ */
+ at Entity(name = "Participant")
+public class ParticipantImpl implements Participant
+{
+ @Id @GeneratedValue
+ @SuppressWarnings("unused")
+ private int id;
+
+ @Basic
+ protected String name;
+
+ public ParticipantImpl(ObjectName name)
+ {
+ if (name == null)
+ throw new IllegalArgumentException("Cannot create participant with name: null");
+
+ this.name = name.getCanonicalName();
+ }
+
+ @Override
+ public ObjectName getName()
+ {
+ return ObjectNameFactory.create(name);
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Participant[" + getName() + "]";
+ }
+}
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ParticipantImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -43,7 +43,9 @@
import org.jbpm.api.Constants;
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Assignment;
import org.jbpm.api.model.EndEvent;
+import org.jbpm.api.model.Message;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Property;
@@ -81,6 +83,12 @@
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = PropertyImpl.class)
private Set<Property> properties = new HashSet<Property>();
+ @Transient
+ private Set<Message> messages = new HashSet<Message>();
+
+ @Transient
+ private List<Assignment> assignments = new ArrayList<Assignment>();
+
@Transient
private transient ProcessEngine engine;
@@ -139,6 +147,7 @@
this.status = status;
}
+ @Override
public Property getProperty(String name)
{
for (Property prop : properties)
@@ -149,16 +158,29 @@
return null;
}
- public Set<Property> getProperties()
+ @Override
+ public void addProperty(Property prop)
{
- return Collections.unmodifiableSet(properties);
+ properties.add(prop);
}
- public void addProperty(Property prop)
+ @Override
+ public Set<String> getPropertyNames()
{
- properties.add(prop);
+ Set<String> names = new HashSet<String>();
+ for (Property prop : properties)
+ {
+ names.add(prop.getName());
+ }
+ return names;
}
-
+
+ @Override
+ public boolean removeProperty(String name)
+ {
+ return properties.remove(name);
+ }
+
public void addNode(NodeImpl nodeImpl)
{
if (nodeImpl == null)
@@ -170,7 +192,7 @@
public List<Node> getNodes()
{
- return nodes;
+ return Collections.unmodifiableList(nodes);
}
public Node getNode(String name)
@@ -217,6 +239,42 @@
}
@Override
+ public Set<Message> getMessages()
+ {
+ return Collections.unmodifiableSet(messages);
+ }
+
+ public void addMessage(Message msg)
+ {
+ if (getMessage(msg.getName()) != null)
+ throw new InvalidProcessException("Duplicate message: " + msg);
+
+ messages.add(msg);
+ }
+
+ @Override
+ public Message getMessage(String msgName)
+ {
+ for (Message msg : messages)
+ {
+ if (msg.getName().equals(msgName))
+ return msg;
+ }
+ return null;
+ }
+
+ @Override
+ public List<Assignment> getAssignments()
+ {
+ return Collections.unmodifiableList(assignments);
+ }
+
+ public void addAssignment(AssignmentImpl assignment)
+ {
+ this.assignments.add(assignment);
+ }
+
+ @Override
public void initialize(Process proc)
{
if (status != ProcessStatus.None)
@@ -257,6 +315,25 @@
runtimeException = null;
}
+ protected void initializeMessageRef(MessageImpl msgRef)
+ {
+ String msgName = msgRef.getName();
+ MessageImpl procMsg = (MessageImpl)getMessage(msgName);
+ if (procMsg == null)
+ throw new IllegalStateException("Cannot obtain process message: " + msgName);
+
+ if (msgRef.getFromRef() == null && procMsg.getFromRef() != null)
+ msgRef.setFromRef(procMsg.getFromRef());
+ if (msgRef.getToRef() == null && procMsg.getToRef() != null)
+ msgRef.setToRef(procMsg.getToRef());
+
+ for (String propName : procMsg.getPropertyNames())
+ {
+ Property prop = procMsg.getProperty(propName);
+ msgRef.addProperty(prop);
+ }
+ }
+
// Runtime Aspects ====================================================================================================
public RuntimeException getRuntimeException()
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/PropertyImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/PropertyImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/PropertyImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -54,23 +54,28 @@
@Basic
private boolean isCorrelation;
- public PropertyImpl(String name, String value)
+ public PropertyImpl(String name, Object value)
{
- this.value = value;
this.name = name;
+ initPropertyValue(value);
}
- public PropertyImpl(String name, String value, boolean isCorrelation)
+ public PropertyImpl(String name, Object value, boolean isCorrelation)
{
this.name = name;
- this.value = value;
this.isCorrelation = isCorrelation;
+ initPropertyValue(value);
}
// persistence ctor
protected PropertyImpl()
{
}
+
+ private void initPropertyValue(Object value)
+ {
+ this.value = (value != null ? value.toString() : null);
+ }
public String getName()
{
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -25,8 +25,6 @@
import javax.management.ObjectName;
import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
import javax.persistence.Transient;
import org.jbpm.api.Constants;
@@ -59,9 +57,6 @@
// Provide logging
final static Logger log = LoggerFactory.getLogger(StartEventImpl.class);
- @Enumerated(EnumType.STRING)
- private TriggerType triggerType = TriggerType.None;
-
public StartEventImpl(String name)
{
super(name);
@@ -73,14 +68,14 @@
{
}
- public TriggerType getTriggerType()
+ public EventDetailType getTriggerType()
{
- return triggerType;
+ return detailType;
}
- public void setTriggerType(TriggerType triggerType)
+ public void setTriggerType(EventDetailType detailType)
{
- this.triggerType = triggerType;
+ this.detailType = detailType;
}
@Override
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -23,10 +23,12 @@
//$Id$
-import org.jbpm.api.NotImplementedException;
import org.jbpm.api.model.Event;
+import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.EventBuilder;
+import org.jbpm.ri.model.EventImpl;
+import org.jbpm.ri.model.MessageImpl;
/**
* The EventBuilder can be used to build an {@link Event} dynamically.
@@ -43,11 +45,22 @@
public EventBuilder addMessageRef(String msgName)
{
- throw new NotImplementedException();
+ EventImpl eventImpl = getEvent();
+ eventImpl.setMessageRef(new MessageImpl(msgName));
+ return this;
}
- public EventBuilder addSignalRef(SignalType signalType, String signalMessage)
+ public EventBuilder addSignalRef(SignalType signalType, String message)
{
- throw new NotImplementedException();
+ EventImpl eventImpl = getEvent();
+ eventImpl.setSignalRef(new Signal(node.getKey(), signalType, message));
+ return this;
}
+
+ private EventImpl getEvent()
+ {
+ if (node instanceof Event == false)
+ throw new IllegalStateException("Last added flow object is not an Event: " + node);
+ return (EventImpl)node;
+ }
}
\ No newline at end of file
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/MessageBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/MessageBuilderImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/MessageBuilderImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -0,0 +1,82 @@
+/*
+ * 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.jbpm.ri.model.builder;
+
+//$Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Property;
+import org.jbpm.api.model.builder.MessageBuilder;
+import org.jbpm.ri.model.MessageImpl;
+import org.jbpm.ri.model.ParticipantImpl;
+import org.jbpm.ri.model.PropertyImpl;
+
+
+/**
+ * A MessageBuilder can be used to build a {@link Message} dynamically.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public class MessageBuilderImpl implements MessageBuilder
+{
+ private MessageImpl message;
+
+ public MessageBuilder newMessage(String name)
+ {
+ message = new MessageImpl(name);
+ return this;
+ }
+
+ public MessageBuilder addToRef(ObjectName toRef)
+ {
+ message.setToRef(new ParticipantImpl(toRef));
+ return this;
+ }
+
+ public MessageBuilder addFromRef(ObjectName fromRef)
+ {
+ message.setFromRef(new ParticipantImpl(fromRef));
+ return this;
+ }
+
+ public MessageBuilder addProperty(String name, Object value)
+ {
+ Property prop = new PropertyImpl(name, value);
+ message.addProperty(prop);
+ return this;
+ }
+
+ public MessageBuilder addProperty(String name, Object value, boolean isCorrelation)
+ {
+ Property prop = new PropertyImpl(name, value, isCorrelation);
+ message.addProperty(prop);
+ return this;
+ }
+
+ public Message getMessage()
+ {
+ return message;
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/MessageBuilderImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -26,9 +26,10 @@
import org.jbpm.api.NotImplementedException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
+import org.jbpm.api.model.Assignment.AssignTime;
+import org.jbpm.api.model.Event.EventDetailType;
+import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.Gateway.GatewayType;
-import org.jbpm.api.model.StartEvent.TriggerType;
import org.jbpm.api.model.Task.TaskType;
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.GatewayBuilder;
@@ -38,8 +39,10 @@
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.FlowHandler;
import org.jbpm.api.runtime.SignalHandler;
+import org.jbpm.ri.model.AssignmentImpl;
import org.jbpm.ri.model.EndEventImpl;
import org.jbpm.ri.model.EventImpl;
+import org.jbpm.ri.model.ExpressionImpl;
import org.jbpm.ri.model.NodeImpl;
import org.jbpm.ri.model.ProcessImpl;
import org.jbpm.ri.model.PropertyImpl;
@@ -109,10 +112,10 @@
return new EventBuilderImpl(this);
}
- public EventBuilder addStartEvent(String name, TriggerType triggerType)
+ public EventBuilder addStartEvent(String name, EventDetailType ResultType)
{
StartEventImpl startImpl = new StartEventImpl(name);
- startImpl.setTriggerType(triggerType);
+ startImpl.setTriggerType(ResultType);
addNode(node = startImpl);
return new EventBuilderImpl(this);
}
@@ -129,7 +132,7 @@
return new EventBuilderImpl(this);
}
- public EventBuilder addEndEvent(String name, ResultType resultType)
+ public EventBuilder addEndEvent(String name, EventDetailType resultType)
{
EndEventImpl endImpl = new EndEventImpl(name);
endImpl.setResultType(resultType);
@@ -207,49 +210,81 @@
return new GatewayBuilderImpl(this);
}
+ public ProcessBuilder addProcessAssignment(AssignTime time, ExpressionLanguage lang, String fromExpr, String toProp)
+ {
+ AssignmentImpl assignment = getAssignment(time, lang, fromExpr, toProp);
+ getProcessInternal().addAssignment(assignment);
+ return this;
+ }
+
+ public ProcessBuilder addNodeAssignment(AssignTime time, ExpressionLanguage lang, String fromExpr, String toProp)
+ {
+ AssignmentImpl assignment = getAssignment(time, lang, fromExpr, toProp);
+ getNodeInternal().addAssignment(assignment);
+ return this;
+ }
+
+ private AssignmentImpl getAssignment(AssignTime time, ExpressionLanguage lang, String fromExpr, String toProp)
+ {
+ ExpressionImpl from = new ExpressionImpl(lang, fromExpr);
+ PropertyImpl to = new PropertyImpl(toProp, null);
+ AssignmentImpl assignment = new AssignmentImpl(time, from, to);
+ return assignment;
+ }
+
public <T extends ExecutionHandler> ProcessBuilder addExecutionHandler(Class<T> clazz)
{
- node.setExecutionHandler(clazz);
+ getNodeInternal().setExecutionHandler(clazz);
return this;
}
public <T extends FlowHandler> ProcessBuilder addFlowHandler(Class<T> clazz)
{
- node.setFlowHandler(clazz);
+ getNodeInternal().setFlowHandler(clazz);
return this;
}
public <T extends SignalHandler> ProcessBuilder addSignalHandler(Class<T> clazz)
{
- node.setSignalHandler(clazz);
+ getNodeInternal().setSignalHandler(clazz);
return this;
}
- public MessageBuilder addMessage(String name)
+ public MessageBuilder addProcessMessage(String name)
{
- throw new NotImplementedException();
+ MessageBuilder msgBuilder = new MessageBuilderImpl().newMessage(name);
+ getProcessInternal().addMessage(msgBuilder.getMessage());
+ return msgBuilder;
}
- public ProcessBuilder addProperty(String name, String value)
+ public ProcessBuilder addProcessProperty(String name, String value)
{
PropertyImpl prop = new PropertyImpl(name, value);
- if (node != null)
- {
- node.addProperty(prop);
- }
- else
- {
- proc.addProperty(prop);
- }
+ getProcessInternal().addProperty(prop);
return this;
}
+ public ProcessBuilder addNodeProperty(String name, String value)
+ {
+ PropertyImpl prop = new PropertyImpl(name, value);
+ getNodeInternal().addProperty(prop);
+ return this;
+ }
+
private ProcessBuilder addNode(NodeImpl nodeImpl)
{
getProcessInternal().addNode(nodeImpl);
return this;
}
+ private NodeImpl getNodeInternal()
+ {
+ if (node == null)
+ throw new IllegalStateException("No node available");
+
+ return node;
+ }
+
private ProcessImpl getProcessInternal()
{
if (proc == null)
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/DelegatingExecutionContext.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/DelegatingExecutionContext.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/DelegatingExecutionContext.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -47,14 +47,14 @@
private String procPrefix;
private Process proc;
- DelegatingExecutionContext(Node flowObject, ExecutionContext delegate)
+ DelegatingExecutionContext(Node node, ExecutionContext delegate)
{
- this.node = flowObject;
+ this.node = node;
this.delegate = delegate;
- proc = flowObject.getProcess();
+ proc = node.getProcess();
procPrefix = proc.getName() + ".";
- activityPrefix = procPrefix + flowObject.getName() + ".";
+ activityPrefix = procPrefix + node.getName() + ".";
}
public Object getAttachment(String name)
@@ -97,16 +97,16 @@
Collection<Key> keys = new ArrayList<Key>(delegate.getAttachmentKeys());
// Add activity property keys
- for (Property prop : node.getProperties())
+ for (String propName : node.getPropertyNames())
{
- Key key = new Key(null, activityPrefix + prop.getName());
+ Key key = new Key(null, activityPrefix + propName);
keys.add(key);
}
// Add process property keys
- for (Property prop : proc.getProperties())
+ for (String propName : proc.getPropertyNames())
{
- Key key = new Key(null, procPrefix + prop.getName());
+ Key key = new Key(null, procPrefix + propName);
keys.add(key);
}
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExpressionEvaluator.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExpressionEvaluator.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExpressionEvaluator.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -0,0 +1,76 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jbpm.api.model.Expression;
+import org.jbpm.api.model.Expression.ExpressionLanguage;
+import org.jbpm.api.runtime.ExecutionContext;
+import org.jbpm.api.runtime.Token;
+import org.jbpm.api.runtime.Attachments.Key;
+import org.mvel.MVEL;
+
+/**
+ * Evaluates an expression for a given token
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public class ExpressionEvaluator
+{
+ private Expression expr;
+
+ public ExpressionEvaluator(Expression expr)
+ {
+ this.expr = expr;
+ }
+
+ /**
+ * Evaluate an expression for a given token. <p/> Note that <code>propName.replace(".", "_")</code> applies to
+ * property names for MVEL expressions, because the dot notation has special meaning in MVEL.
+ */
+ public Object evaluateExpression(Token token)
+ {
+ ExpressionLanguage exprLang = expr.getExpressionLanguage();
+ if (exprLang == ExpressionLanguage.MVEL)
+ {
+ String mvel = expr.getExpressionBody();
+ ExecutionContext exContext = token.getExecutionContext();
+ Map<String, Object> vars = new HashMap<String, Object>();
+ for (Key key : exContext.getAttachmentKeys())
+ {
+ String name = key.getNamePart();
+ Object value = exContext.getAttachment(name);
+ vars.put(name.replace(".", "_"), value);
+ }
+ return MVEL.eval(mvel, vars);
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported expression language: " + exprLang);
+ }
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/ExpressionEvaluator.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/MessageSender.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/MessageSender.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/MessageSender.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -0,0 +1,97 @@
+/*
+ * 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.jbpm.ri.runtime;
+
+//$Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.model.Participant;
+import org.jbpm.api.model.builder.MessageBuilder;
+import org.jbpm.api.runtime.ExecutionContext;
+import org.jbpm.api.runtime.Token;
+import org.jbpm.api.service.MessageService;
+import org.jbpm.ri.model.MessageImpl;
+import org.jbpm.ri.model.ParticipantImpl;
+import org.jbpm.ri.model.builder.MessageBuilderImpl;
+
+
+/**
+ * A helper that sends messages
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 16-Aug-2008
+ */
+public class MessageSender
+{
+ private Node fromNode;
+ private Participant fromRef;
+ private Message messageRef;
+
+ public MessageSender(Node fromNode, Message messageRef)
+ {
+ this.fromNode = fromNode;
+ this.messageRef = messageRef;
+ this.fromRef = new ParticipantImpl(fromNode.getProcess().getKey());
+
+ if (messageRef == null)
+ throw new IllegalArgumentException("MessageRef 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();
+ MessageBuilder msgBuilder = new MessageBuilderImpl();
+
+ Participant toRef = messageRef.getToRef();
+ if (toRef == null)
+ throw new IllegalStateException("Cannot obtain target participant");
+
+ ObjectName targetID = toRef.getName();
+ msgBuilder.newMessage(messageRef.getName());
+ msgBuilder.addToRef(targetID);
+
+ // Copy the properties from the execution context
+ // to the send message
+ for (String propName : messageRef.getPropertyNames())
+ {
+ Object value = exContext.getAttachment(propName);
+ if (value == null)
+ throw new IllegalStateException("Cannot obtain property: " + propName);
+
+ msgBuilder.addProperty(propName, value);
+ }
+ MessageImpl msg = (MessageImpl)msgBuilder.getMessage();
+ msg.setFromRef(fromRef);
+
+ ProcessEngine engine = fromNode.getProcess().getProcessEngine();
+ MessageService msgService = engine.getService(MessageService.class);
+ msgService.sendMessage(msg);
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/MessageSender.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -31,8 +31,6 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.SequenceFlow;
@@ -44,6 +42,8 @@
import org.jbpm.api.runtime.TokenExecutor;
import org.jbpm.api.runtime.Token.TokenStatus;
import org.jbpm.ri.model.ProcessImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The {@link FlowHandler} invokes the TokenExecutor to schedule {@link ConnectingObject} objects together with their
@@ -55,7 +55,7 @@
public class TokenExecutorImpl implements TokenExecutor
{
// provide logging
- private static final Log log = LogFactory.getLog(TokenExecutorImpl.class);
+ final static Logger log = LoggerFactory.getLogger(TokenExecutorImpl.class);
private RuntimeProcess rtProc;
private ExecutorService executor = Executors.newCachedThreadPool();
@@ -228,7 +228,7 @@
ExecutionHandler execHandler = getExecutionHandler(node);
FlowHandler flowHandler = getFlowHandler(node);
- // Synchronize execution on the target FlowObject
+ // Synchronize execution on the target Node
synchronized (node)
{
// Create a Token that includes properties from the current Activity
@@ -237,7 +237,7 @@
// Throw the Enter Signal
sigHandler.throwEnterSignal(tokCopy);
- // Execute the target FlowObject
+ // Execute the target Node
execHandler.execute(tokCopy);
// Transfer the token to the FlowHandler
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java 2008-09-30 15:07:24 UTC (rev 2450)
@@ -28,28 +28,36 @@
import javax.management.ObjectName;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jbpm.api.BPMException;
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.ProcessTimeoutException;
import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Assignment;
+import org.jbpm.api.model.Expression;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.StartEvent;
+import org.jbpm.api.model.Assignment.AssignTime;
+import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Process.ProcessStatus;
import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.StartEvent.TriggerType;
import org.jbpm.api.runtime.Attachments;
+import org.jbpm.api.runtime.ExecutionContext;
+import org.jbpm.api.runtime.Token;
import org.jbpm.api.runtime.TokenExecutor;
import org.jbpm.api.service.ExecutionService;
import org.jbpm.api.service.ProcessService;
import org.jbpm.api.service.SignalService;
import org.jbpm.ri.model.ProcessImpl;
import org.jbpm.ri.model.SequenceFlowImpl;
+import org.jbpm.ri.runtime.DelegatingToken;
+import org.jbpm.ri.runtime.ExpressionEvaluator;
+import org.jbpm.ri.runtime.MutableToken;
import org.jbpm.ri.runtime.RuntimeProcess;
import org.jbpm.ri.runtime.RuntimeProcessImpl;
import org.jbpm.ri.runtime.TokenImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* The process manager is the entry point to create, find and otherwise manage processes.
@@ -60,7 +68,7 @@
public class ExecutionServiceImpl extends ExecutionService implements MutableService
{
// provide logging
- private static final Log log = LogFactory.getLog(ExecutionServiceImpl.class);
+ final static Logger log = LoggerFactory.getLogger(ExecutionServiceImpl.class);
// The map of active runtime processes
private Map<ObjectName, RuntimeProcess> runtimeProcesses = new HashMap<ObjectName, RuntimeProcess>();
@@ -138,14 +146,14 @@
}
catch (InterruptedException ex)
{
- log.error(ex);
+ log.error("Process interrupted", ex);
}
}
}
}
// Do the start time assignments
- // startTimeAssignments(proc, initialToken);
+ startTimeAssignments(proc, initialToken);
// Start the initial token
tokenExecutor.start(initialToken);
@@ -169,6 +177,24 @@
procService.registerProcess(proc);
}
+ // Evaluate the Start time assignments
+ private void startTimeAssignments(Process proc, Token token)
+ {
+ DelegatingToken delegatingToken = new DelegatingToken((MutableToken)token);
+ ExecutionContext exContext = token.getExecutionContext();
+ for (Assignment ass : proc.getAssignments())
+ {
+ if (ass.getAssignTime() == AssignTime.Start)
+ {
+ Expression expr = ass.getFrom();
+ ExpressionEvaluator exprEvaluator = new ExpressionEvaluator(expr);
+ Object result = exprEvaluator.evaluateExpression(delegatingToken);
+ String propName = ass.getTo().getName();
+ exContext.addAttachment(propName, result);
+ }
+ }
+ }
+
public ProcessStatus waitForEnd(Process proc)
{
return waitForEndInternal(proc, 0);
@@ -226,13 +252,13 @@
{
RuntimeException rte = new ProcessTimeoutException("Process timeout after " + timeout + "ms for: " + proc.getKey());
procImpl.setRuntimeException(rte);
- log.error(rte);
+ log.error(rte.getMessage());
throw rte;
}
}
catch (InterruptedException ex)
{
- log.warn(ex);
+ log.warn("Process interrupted", ex);
}
finally
{
@@ -261,7 +287,7 @@
StartEvent start = null;
for (StartEvent aux : proc.getNodes(StartEvent.class))
{
- if (aux.getTriggerType() == TriggerType.None)
+ if (aux.getTriggerType() == EventDetailType.None)
{
if (start != null)
throw new InvalidProcessException("Process cannot have multiple start events with no trigger");
@@ -331,7 +357,7 @@
}
catch (InterruptedException ex)
{
- log.error(ex);
+ log.error("Process interrupted", ex);
}
}
More information about the jbpm-commits
mailing list