JBoss JBPM SVN: r2455 - in projects/spec/trunk/modules: cts and 3 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-30 17:15:37 -0400 (Tue, 30 Sep 2008)
New Revision: 2455
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/ExecutionHandler.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/FlowHandler.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/SignalHandler.java
projects/spec/trunk/modules/cts/pom.xml
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java
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/StartEventImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.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/model/builder/TaskBuilderImpl.java
Log:
SendTaskTest - pass
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -0,0 +1,49 @@
+/*
+ * 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.runtime;
+
+import org.jbpm.api.model.Node;
+
+/**
+ * A handler that is associated with a node
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 30-Sep-2008
+ */
+public abstract class BasicNodeHandler implements NodeHandler
+{
+ private static final long serialVersionUID = 1L;
+
+ private Node node;
+
+ @Override
+ public Node getNode()
+ {
+ return node;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ this.node = node;
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/BasicNodeHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/ExecutionHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/ExecutionHandler.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/ExecutionHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -21,10 +21,9 @@
*/
package org.jbpm.api.runtime;
-import java.io.Serializable;
-
//$Id$
+import org.jbpm.api.model.Node;
/**
* The ProcessEngine invokes the ExecutionHandler on a
@@ -33,7 +32,7 @@
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-public interface ExecutionHandler extends Serializable
+public interface ExecutionHandler extends NodeHandler
{
/**
* Execute the associated business logic.
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/FlowHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/FlowHandler.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/FlowHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -23,8 +23,6 @@
// $Id$
-import java.io.Serializable;
-
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Node;
@@ -35,7 +33,7 @@
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-public interface FlowHandler extends Serializable
+public interface FlowHandler extends NodeHandler
{
/**
* Execute the FlowHandler.
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -0,0 +1,47 @@
+/*
+ * 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.runtime;
+
+import java.io.Serializable;
+
+//$Id$
+
+import org.jbpm.api.model.Node;
+
+/**
+ * A handler that is associated with a node
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 30-Sep-2008
+ */
+public interface NodeHandler extends Serializable
+{
+ /**
+ * Get the associated node.
+ */
+ Node getNode();
+
+ /**
+ * Set the associated node.
+ */
+ void setNode(Node node);
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/NodeHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/SignalHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/SignalHandler.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/runtime/SignalHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -23,8 +23,6 @@
// $Id$
-import java.io.Serializable;
-
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Signal;
@@ -36,7 +34,7 @@
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-public interface SignalHandler extends Serializable
+public interface SignalHandler extends NodeHandler
{
/**
* Get signal for enter
Modified: projects/spec/trunk/modules/cts/pom.xml
===================================================================
--- projects/spec/trunk/modules/cts/pom.xml 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/cts/pom.xml 2008-09-30 21:15:37 UTC (rev 2455)
@@ -79,8 +79,6 @@
<exclude>org/jbpm/test/cts/node/NodeInputSetTest.java</exclude>
<exclude>org/jbpm/test/cts/node/NodeOutputSetTest.java</exclude>
<exclude>org/jbpm/test/cts/task/ReceiveTaskTest.java</exclude>
- <exclude>org/jbpm/test/cts/task/SendTaskTest.java</exclude>
- <exclude>org/jbpm/test/cts/task/TaskExecutionHandlerTest.java</exclude>
<exclude>org/jbpm/test/pattern/control/exclusivechoice/ExclusiveChoiceTest.java</exclude>
<exclude>org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java</exclude>
<exclude>org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java</exclude>
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 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -25,10 +25,13 @@
import java.io.IOException;
+import org.jbpm.api.model.Assignment;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.api.runtime.BasicNodeHandler;
import org.jbpm.api.runtime.ExecutionContext;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.Token;
@@ -58,17 +61,17 @@
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("TaskExecutionHandlerTest").addProcessProperty("procProp", "kermit");
- //procBuilder.addAssignment(Assignment.AssignTime.Start, Expression.ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_procProp == 'kermit'", "procAssign");
+ procBuilder.addProcessAssignment(Assignment.AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_procProp == 'kermit'", "procAssign");
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- taskBuilder.addProcessProperty("taskProp", "piggy").addExecutionHandler(TaskExecutionHandler.class).addSequenceFlow("End");
- //taskBuilder.addAssignment(Assignment.AssignTime.Start, Expression.ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_TaskA_taskProp == 'piggy'", "taskAssign");
+ taskBuilder.addNodeProperty("taskProp", "piggy").addExecutionHandler(TaskExecutionHandler.class).addSequenceFlow("End");
+ taskBuilder.addNodeAssignment(Assignment.AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_TaskA_taskProp == 'piggy'", "taskAssign");
procBuilder.addEndEvent("End");
return procBuilder.getProcess();
}
@SuppressWarnings("serial")
- public static class TaskExecutionHandler implements ExecutionHandler
+ public static class TaskExecutionHandler extends BasicNodeHandler implements ExecutionHandler
{
static String procProp;
static String taskProp;
@@ -82,6 +85,7 @@
* - Activity properties
* - The result of start time activity assignments
*/
+ @Override
public void execute(Token token)
{
ExecutionContext exContext = token.getExecutionContext();
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 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -31,6 +31,7 @@
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.EndEvent;
+import org.jbpm.api.model.Node;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.builder.ObjectNameFactory;
@@ -110,6 +111,7 @@
@Override
protected SignalHandler getDefaultSignalHandler()
{
+ final Node thisNode = this;
return new SignalHandler()
{
private static final long serialVersionUID = 1L;
@@ -132,12 +134,24 @@
EndSignalCallback callback = exContext.removeAttachment(EndSignalCallback.class);
callback.destroyToken(token);
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
@Override
protected FlowHandler getDefaultFlowHandler()
{
+ final Node thisNode = this;
return new FlowHandler()
{
private static final long serialVersionUID = 1L;
@@ -148,6 +162,17 @@
ExecutionContext exContext = token.getExecutionContext();
exContext.addAttachment(EndSignalCallback.class, new EndSignalCallback(tokenExecutor));
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
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 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -131,12 +131,24 @@
messageSender.sendMessage(token);
}
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
@Override
protected SignalHandler getDefaultSignalHandler()
{
+ final Node thisNode = this;
return new SignalHandler()
{
private static final long serialVersionUID = 1L;
@@ -154,6 +166,17 @@
Signal signal = new Signal(getKey(), Signal.SignalType.SYSTEM_EVENT_EXIT);
sigService.throwSignal(signal);
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
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 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -51,6 +51,7 @@
import org.jbpm.api.model.StartEvent;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.FlowHandler;
+import org.jbpm.api.runtime.NodeHandler;
import org.jbpm.api.runtime.SignalHandler;
import org.jbpm.api.runtime.Token;
import org.jbpm.api.runtime.TokenExecutor;
@@ -231,6 +232,7 @@
protected ExecutionHandler getDefaultExecutionHandler()
{
+ final Node thisNode = this;
return new ExecutionHandler()
{
private static final long serialVersionUID = 1L;
@@ -239,6 +241,17 @@
{
// nothing to do
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
@@ -285,11 +298,22 @@
throw new IllegalStateException("Cannot use default flow handler on " + thisNode + " with: " + getOutFlows());
}
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
@SuppressWarnings("unchecked")
- private <T> T loadHandlerInstance(Class<T> clazz, String className)
+ private <T extends NodeHandler> T loadHandlerInstance(Class<T> clazz, String className)
{
T handler = null;
if (className != null)
@@ -298,6 +322,7 @@
{
ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
handler = (T)ctxLoader.loadClass(className).newInstance();
+ handler.setNode(this);
}
catch (Exception ex)
{
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -0,0 +1,56 @@
+/*
+ * 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 org.jbpm.api.model.Message;
+import org.jbpm.api.runtime.BasicNodeHandler;
+import org.jbpm.api.runtime.ExecutionHandler;
+import org.jbpm.api.runtime.Token;
+import org.jbpm.ri.runtime.MessageSender;
+
+/**
+ * An ExecutionHandler that sends a Message
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 30-Sep-2008
+ */
+public class SendTaskExecutionHandler extends BasicNodeHandler implements ExecutionHandler
+{
+ private static final long serialVersionUID = 1L;
+
+ public SendTaskExecutionHandler(TaskImpl taskImpl)
+ {
+ setNode(taskImpl);
+ }
+
+ @Override
+ public void execute(Token token)
+ {
+ TaskImpl taskImpl = (TaskImpl)getNode();
+ Message messageRef = taskImpl.getMessageRef();
+ MessageSender messageSender = new MessageSender(taskImpl, messageRef);
+ messageSender.sendMessage(token);
+ }
+
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskExecutionHandler.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
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 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -31,6 +31,7 @@
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.client.SignalListener;
+import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
@@ -112,6 +113,7 @@
@Override
protected SignalHandler getDefaultSignalHandler()
{
+ final Node thisNode = this;
return new SignalHandler()
{
private static final long serialVersionUID = 1L;
@@ -130,6 +132,17 @@
Signal signal = new Signal(getKey(), Signal.SignalType.SYSTEM_START_EVENT_EXIT);
sigService.throwSignal(signal);
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -32,10 +32,14 @@
import org.jbpm.api.Constants;
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.model.Process;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Task;
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;
@@ -60,9 +64,13 @@
@Enumerated(EnumType.STRING)
private TaskType taskType = TaskType.None;
- public TaskImpl(String name)
+ @Transient
+ private MessageImpl messageRef;
+
+ public TaskImpl(String name, TaskType taskType)
{
super(name);
+ this.taskType = taskType;
}
// Persistence ctor
@@ -113,9 +121,39 @@
outFlows.add(outFlow);
}
+ public Message getMessageRef()
+ {
+ return messageRef;
+ }
+
+ public void setMessageRef(MessageImpl message)
+ {
+ this.messageRef = message;
+ }
+
@Override
+ protected ExecutionHandler getDefaultExecutionHandler()
+ {
+ ExecutionHandler execHandler;
+ if (taskType == TaskType.Send)
+ {
+ execHandler = new SendTaskExecutionHandler(this);
+ }
+ else if (taskType == TaskType.Receive)
+ {
+ execHandler = super.getDefaultExecutionHandler();
+ }
+ else
+ {
+ execHandler = super.getDefaultExecutionHandler();
+ }
+ return execHandler;
+ }
+
+ @Override
protected SignalHandler getDefaultSignalHandler()
{
+ final Node thisNode = this;
return new SignalHandler()
{
private static final long serialVersionUID = 1L;
@@ -133,9 +171,40 @@
Signal signal = new Signal(getKey(), Signal.SignalType.SYSTEM_TASK_EXIT);
sigService.throwSignal(signal);
}
+
+ @Override
+ public Node getNode()
+ {
+ return thisNode;
+ }
+
+ @Override
+ public void setNode(Node node)
+ {
+ }
};
}
+ @Override
+ protected void create(Process proc)
+ {
+ super.create(proc);
+
+ if ((taskType == TaskType.Send || taskType == TaskType.Receive) && messageRef == null)
+ throw new InvalidProcessException("A message for the message ref attribute MUST be entered");
+ if (messageRef != null && taskType != TaskType.Send && taskType != TaskType.Receive)
+ throw new InvalidProcessException("A task with a message ref must be of type 'Send' or 'Receive'");
+
+ if (messageRef != null)
+ {
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.initializeMessageRef(messageRef);
+
+ if (messageRef.getToRef() == null)
+ throw new IllegalArgumentException("Message target cannot be null for: " + this);
+ }
+ }
+
public String toString()
{
return "Task[" + getTaskType() + "," + getName() + "]";
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 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -59,7 +59,7 @@
private EventImpl getEvent()
{
- if (node instanceof Event == false)
+ if (node instanceof EventImpl == false)
throw new IllegalStateException("Last added flow object is not an Event: " + node);
return (EventImpl)node;
}
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 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -150,7 +150,7 @@
{
if (type == TaskType.None || type == null)
{
- node = new TaskImpl(name);
+ node = new TaskImpl(name, TaskType.None);
}
else if (type == TaskType.Service)
{
@@ -158,11 +158,11 @@
}
else if (type == TaskType.Receive)
{
- throw new NotImplementedException();
+ node = new TaskImpl(name, TaskType.Receive);
}
else if (type == TaskType.Send)
{
- throw new NotImplementedException();
+ node = new TaskImpl(name, TaskType.Send);
}
else if (type == TaskType.User)
{
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java 2008-09-30 20:18:43 UTC (rev 2454)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java 2008-09-30 21:15:37 UTC (rev 2455)
@@ -23,9 +23,10 @@
//$Id$
-import org.jbpm.api.NotImplementedException;
import org.jbpm.api.model.Task;
import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.ri.model.MessageImpl;
+import org.jbpm.ri.model.TaskImpl;
/**
* The TaskBuilder can be used to dynamically build {@link Task}.
@@ -42,7 +43,15 @@
public TaskBuilder addMessageRef(String msgName)
{
- throw new NotImplementedException();
+ TaskImpl taskImpl = getTask();
+ taskImpl.setMessageRef(new MessageImpl(msgName));
+ return this;
}
+ private TaskImpl getTask()
+ {
+ if (node instanceof TaskImpl == false)
+ throw new IllegalStateException("Last added node is not an Task: " + node);
+ return (TaskImpl)node;
+ }
}
\ No newline at end of file
15 years, 7 months
JBoss JBPM SVN: r2454 - jbpm3/trunk/hudson/hudson-home/jobs.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-30 16:18:43 -0400 (Tue, 30 Sep 2008)
New Revision: 2454
Added:
jbpm3/trunk/hudson/hudson-home/jobs/jBPM3-Matrix/
Removed:
jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix/
Log:
Rename to jBPM3-Matrix
Copied: jbpm3/trunk/hudson/hudson-home/jobs/jBPM3-Matrix (from rev 2453, jbpm3/trunk/hudson/hudson-home/jobs/jBPM-Matrix)
15 years, 7 months
JBoss JBPM SVN: r2453 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/test and 12 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-30 16:13:45 -0400 (Tue, 30 Sep 2008)
New Revision: 2453
Added:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/signal/SignalMultithreadTest.java
Removed:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/processmanager/ProcessManagerTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/signalmanager/SignalManagerTest.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java
projects/spec/trunk/modules/cts/pom.xml
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/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/src/main/java/org/jbpm/ri/model/AbstractElementImpl.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/StartEventImpl.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/service/ExecutionServiceImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
Log:
More tests pass
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java 2008-09-30 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -79,28 +79,29 @@
if (proc == null)
throw new IllegalStateException("Cannot obtain process from: " + dep);
- registerProcess(proc);
- return proc.getKey();
+ ObjectName procID = registerProcess(proc);
+ return procID;
}
/**
* Register a Process.
*/
- public void registerProcess(Process proc)
+ public ObjectName registerProcess(Process proc)
{
log.debug("registerProcess: " + proc);
// Save the process through the PersistenceService
PersistenceService dbService = getProcessEngine().getService(PersistenceService.class);
- dbService.saveProcess(proc);
+ ObjectName procID = dbService.saveProcess(proc);
- registeredProcs.put(proc.getKey(), proc);
+ registeredProcs.put(procID, proc);
+ return procID;
}
/**
* Unregister a Process.
*/
- public void unregisterProcess(Process proc)
+ public boolean unregisterProcess(Process proc)
{
log.debug("unregisterProcess: " + proc);
@@ -108,7 +109,7 @@
PersistenceService dbService = getProcessEngine().getService(PersistenceService.class);
dbService.deleteProcess(proc);
- registeredProcs.remove(proc.getKey());
+ return registeredProcs.remove(proc.getKey()) != null;
}
/**
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java 2008-09-30 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -67,7 +67,9 @@
private MessageListener messageListener;
// The messages caught by this test case
private List<Message> messages = new ArrayList<Message>();
-
+ // The last fatal tear down error
+ private static String fatalTearDownError;
+
protected ProcessEngine getProcessEngine()
{
return ProcessEngine.getProcessEngine();
@@ -81,6 +83,10 @@
ProcessEngine engine = getProcessEngine();
+ // Stop the test run if there are fatal tear down errors
+ if (fatalTearDownError != null)
+ System.exit(1);
+
// Setup the SignalListener
clearAllSignalListeners();
SignalService sigService = engine.getService(SignalService.class);
@@ -95,7 +101,7 @@
MessageService msgService = engine.getService(MessageService.class);
msgService.addMessageListener(getMessageListener());
}
-
+
@Override
protected void tearDown() throws Exception
{
@@ -114,27 +120,27 @@
Set<Process> procs = procManager.getProcesses();
if (procs.size() > 0)
{
- String logMsg = "Registered processes on tear down of " + getName() + ": " + procs;
- System.out.println(logMsg);
- System.exit(1);
+ fatalTearDownError = "Registered processes on tear down of " + getName() + ": " + procs;
+ System.out.println(fatalTearDownError);
+ log.error(fatalTearDownError);
}
// Check that there are no registered signal listeners left
Set<SignalListener> sigListeners = sigService.getSignalListeners();
if (sigListeners.size() > 0)
{
- String logMsg = "Registered signal listeners on tear down of " + getName() + ": " + sigListeners;
- System.out.println(logMsg);
- System.exit(1);
+ fatalTearDownError = "Registered signal listeners on tear down of " + getName() + ": " + sigListeners;
+ System.out.println(fatalTearDownError);
+ log.error(fatalTearDownError);
}
// Check that there are no registered message listeners left
Set<MessageListener> msgListeners = msgService.getMessageListeners();
if (msgListeners.size() > 0)
{
- String logMsg = "Registered message listeners on tear down of " + getName() + ": " + msgListeners;
- System.out.println(logMsg);
- System.exit(1);
+ fatalTearDownError = "Registered message listeners on tear down of " + getName() + ": " + msgListeners;
+ System.out.println(fatalTearDownError);
+ log.error(fatalTearDownError);
}
super.tearDown();
Modified: projects/spec/trunk/modules/cts/pom.xml
===================================================================
--- projects/spec/trunk/modules/cts/pom.xml 2008-09-30 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/cts/pom.xml 2008-09-30 20:13:45 UTC (rev 2453)
@@ -70,7 +70,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
- <exclude>org/jbpm/test/cts/executioncontext/ExecutionContextTest.java</exclude>
<exclude>org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java</exclude>
<exclude>org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java</exclude>
<exclude>org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java</exclude>
@@ -79,9 +78,6 @@
<exclude>org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java</exclude>
<exclude>org/jbpm/test/cts/node/NodeInputSetTest.java</exclude>
<exclude>org/jbpm/test/cts/node/NodeOutputSetTest.java</exclude>
- <exclude>org/jbpm/test/cts/processmanager/ProcessManagerTest.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>
<exclude>org/jbpm/test/cts/task/SendTaskTest.java</exclude>
<exclude>org/jbpm/test/cts/task/TaskExecutionHandlerTest.java</exclude>
@@ -90,8 +86,6 @@
<exclude>org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java</exclude>
<exclude>org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java</exclude>
<exclude>org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java</exclude>
- <exclude>org/jbpm/test/pattern/data/casedata/CaseDataTest.java</exclude>
- <exclude>org/jbpm/test/pattern/data/taskdata/TaskDataTest.java</exclude>
</excludes>
</configuration>
</plugin>
Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/processmanager/ProcessManagerTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/processmanager/ProcessManagerTest.java 2008-09-30 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/processmanager/ProcessManagerTest.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -1,90 +0,0 @@
-/*
- * 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.test.cts.processmanager;
-
-// $Id$
-
-import javax.management.ObjectName;
-
-import org.jbpm.api.client.SignalListener;
-import org.jbpm.api.model.Process;
-import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.service.ProcessService;
-import org.jbpm.api.service.SignalService;
-import org.jbpm.api.test.CTSTestCase;
-
-/**
- * Test the ProcessService
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public class ProcessManagerTest extends CTSTestCase
-{
- public void testStartProcess() throws Exception
- {
- final Process proc = getProcess();
- final ObjectName procID = proc.getKey();
-
- final ProcessService procService = ProcessService.locateProcessService();
- assertNull("A process created through the builder is not registered automatically", procService.getProcessByKey(procID));
-
- SignalListener sigListener = new SignalListener()
- {
- public boolean acceptSignal(Signal signal)
- {
- return signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER;
- }
-
- public void catchSignal(Signal signal)
- {
- assertNotNull(procService.getProcessByKey(procID));
- }
- };
- SignalService sigManager = SignalService.locateSignalService();
- sigManager.addSignalListener(sigListener);
-
- try
- {
- // Start the process, which automatically adds it to the registery
- assertEquals(procID, proc.startProcess());
- proc.waitForEnd();
- }
- finally
- {
- sigManager.removeSignalListener(sigListener);
- }
-
- assertNull("A terminated process is removed from the registry", procService.getProcessByKey(procID));
- }
-
- private Process getProcess()
- {
- ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
- builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("taskA");
- Process proc = builder.addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
- return proc;
- }
-}
Added: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -0,0 +1,86 @@
+/*
+ * 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.test.cts.service.process;
+
+// $Id$
+
+import org.jbpm.api.client.SignalListener;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.Signal;
+import org.jbpm.api.model.Signal.SignalType;
+import org.jbpm.api.model.builder.ProcessBuilder;
+import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.service.ProcessService;
+import org.jbpm.api.service.SignalService;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * Test the ProcessService
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ProcessServiceTest extends CTSTestCase
+{
+ public void testStartProcess() throws Exception
+ {
+ final Process proc = getProcess();
+ final ProcessService procService = ProcessService.locateProcessService();
+ assertNull("Process not registered automatically", procService.getProcessByKey(proc.getKey()));
+
+ SignalListener sigListener = new SignalListener()
+ {
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.SYSTEM_TASK_ENTER;
+ }
+
+ public void catchSignal(Signal signal)
+ {
+ assertNotNull(procService.getProcessByKey(proc.getKey()));
+ }
+ };
+ SignalService sigManager = SignalService.locateSignalService();
+ sigManager.addSignalListener(sigListener);
+
+ try
+ {
+ // Start the process, which automatically adds it to the registery
+ proc.startProcess();
+ proc.waitForEnd();
+ }
+ finally
+ {
+ sigManager.removeSignalListener(sigListener);
+ }
+
+ assertNull("Process is removed", procService.getProcessByKey(proc.getKey()));
+ }
+
+ private Process getProcess()
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("taskA");
+ Process proc = builder.addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
+ return proc;
+ }
+}
Property changes on: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/signal/SignalMultithreadTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/signal/SignalMultithreadTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/signal/SignalMultithreadTest.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -0,0 +1,149 @@
+/*
+ * 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.test.cts.service.signal;
+
+// $Id$
+
+import org.jbpm.api.client.SignalListener;
+import org.jbpm.api.model.Signal;
+import org.jbpm.api.model.Signal.SignalType;
+import org.jbpm.api.service.SignalService;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * Test the ProcessManager
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class SignalMultithreadTest extends CTSTestCase
+{
+ final SignalService sigService = SignalService.locateSignalService();
+ final Signal sigA = new Signal(getTestID(), SignalType.USER_SIGNAL, "A");
+ final Signal sigB = new Signal(getTestID(), SignalType.USER_SIGNAL, "B");
+
+ private Signal gotA;
+ private Signal gotB;
+
+ public void testReentrantSingleThread() throws Exception
+ {
+ SignalListener sigListener = new SignalListener()
+ {
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.USER_SIGNAL;
+ }
+
+ public void catchSignal(Signal signal)
+ {
+ String sigMsg = signal.getMessage();
+ if ("A".equals(sigMsg))
+ {
+ gotA = signal;
+ sigService.throwSignal(sigB);
+ }
+ if ("B".equals(sigMsg))
+ {
+ gotB = signal;
+ }
+ }
+ };
+ sigService.addSignalListener(sigListener);
+ sigService.throwSignal(sigA);
+ sigService.removeSignalListener(sigListener);
+
+ assertEquals(sigA, gotA);
+ assertEquals(sigB, gotB);
+ }
+
+ public void testReentrantMultipleThread() throws Exception
+ {
+ SignalListener sigListener = new SignalListener()
+ {
+ public boolean acceptSignal(Signal signal)
+ {
+ return signal.getSignalType() == SignalType.USER_SIGNAL;
+ }
+
+ public void catchSignal(Signal signal)
+ {
+ String sigMsg = signal.getMessage();
+ if ("A".equals(sigMsg))
+ {
+ gotA = signal;
+ sendThreadSignal(sigB);
+ }
+ if ("B".equals(sigMsg))
+ {
+ gotB = signal;
+ }
+ }
+ };
+ sigService.addSignalListener(sigListener);
+ sendThreadSignal(sigA);
+ sigService.removeSignalListener(sigListener);
+
+ assertEquals(sigA, gotA);
+ assertEquals(sigB, gotB);
+ }
+
+ private void sendThreadSignal(Signal sig)
+ {
+ SignalRunner sigRunner = new SignalRunner(sig);
+ Thread thread = new Thread(sigRunner);
+ thread.start();
+ try
+ {
+ while (sigRunner.hasStarted() == false)
+ {
+ Thread.sleep(10);
+ }
+ thread.join();
+ }
+ catch (InterruptedException ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ class SignalRunner implements Runnable
+ {
+ private Signal threadSig;
+ private boolean hasStarted;
+
+ public SignalRunner(Signal sig)
+ {
+ this.threadSig = sig;
+ }
+
+ public boolean hasStarted()
+ {
+ return hasStarted;
+ }
+
+ public void run()
+ {
+ hasStarted = true;
+ sigService.throwSignal(threadSig);
+ }
+ }
+}
Property changes on: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/signal/SignalMultithreadTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/signalmanager/SignalManagerTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/signalmanager/SignalManagerTest.java 2008-09-30 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/signalmanager/SignalManagerTest.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -1,149 +0,0 @@
-/*
- * 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.test.cts.signalmanager;
-
-// $Id$
-
-import org.jbpm.api.client.SignalListener;
-import org.jbpm.api.model.Signal;
-import org.jbpm.api.model.Signal.SignalType;
-import org.jbpm.api.service.SignalService;
-import org.jbpm.api.test.CTSTestCase;
-
-/**
- * Test the ProcessManager
- *
- * @author thomas.diesler(a)jboss.com
- * @since 08-Jul-2008
- */
-public class SignalManagerTest extends CTSTestCase
-{
- final SignalService sigManager = SignalService.locateSignalService();
- final Signal sigA = new Signal(getTestID(), SignalType.USER_SIGNAL, "A");
- final Signal sigB = new Signal(getTestID(), SignalType.USER_SIGNAL, "B");
-
- private Signal gotA;
- private Signal gotB;
-
- public void testReentrantSingleThread() throws Exception
- {
- SignalListener sigListener = new SignalListener()
- {
- public boolean acceptSignal(Signal signal)
- {
- return signal.getSignalType() == SignalType.USER_SIGNAL;
- }
-
- public void catchSignal(Signal signal)
- {
- String sigMsg = signal.getMessage();
- if ("A".equals(sigMsg))
- {
- gotA = signal;
- sigManager.throwSignal(sigB);
- }
- if ("B".equals(sigMsg))
- {
- gotB = signal;
- }
- }
- };
- sigManager.addSignalListener(sigListener);
- sigManager.throwSignal(sigA);
- sigManager.removeSignalListener(sigListener);
-
- assertEquals(sigA, gotA);
- assertEquals(sigB, gotB);
- }
-
- public void testReentrantMultipleThread() throws Exception
- {
- SignalListener sigListener = new SignalListener()
- {
- public boolean acceptSignal(Signal signal)
- {
- return signal.getSignalType() == SignalType.USER_SIGNAL;
- }
-
- public void catchSignal(Signal signal)
- {
- String sigMsg = signal.getMessage();
- if ("A".equals(sigMsg))
- {
- gotA = signal;
- sendThreadSignal(sigB);
- }
- if ("B".equals(sigMsg))
- {
- gotB = signal;
- }
- }
- };
- sigManager.addSignalListener(sigListener);
- sendThreadSignal(sigA);
- sigManager.removeSignalListener(sigListener);
-
- assertEquals(sigA, gotA);
- assertEquals(sigB, gotB);
- }
-
- private void sendThreadSignal(Signal sig)
- {
- SignalRunner sigRunner = new SignalRunner(sig);
- Thread thread = new Thread(sigRunner);
- thread.start();
- try
- {
- while (sigRunner.hasStarted() == false)
- {
- Thread.sleep(10);
- }
- thread.join();
- }
- catch (InterruptedException ex)
- {
- ex.printStackTrace();
- }
- }
-
- class SignalRunner implements Runnable
- {
- private Signal threadSig;
- private boolean hasStarted;
-
- public SignalRunner(Signal sig)
- {
- this.threadSig = sig;
- }
-
- public boolean hasStarted()
- {
- return hasStarted;
- }
-
- public void run()
- {
- hasStarted = true;
- sigManager.throwSignal(threadSig);
- }
- }
-}
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 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -30,7 +30,9 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Signal;
+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.Signal.SignalType;
import org.jbpm.api.model.builder.EventBuilder;
import org.jbpm.api.model.builder.MessageBuilder;
@@ -77,18 +79,20 @@
// Wait for the process to end
proc.waitForEnd();
- // Start the process and send start trigger signal
- proc.startProcess();
- sigService.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
+ try
+ {
+ proc.startProcess();
+ fail("Cannot start process in state: Completed");
+ }
+ catch (IllegalStateException ex)
+ {
+ // expected
+ }
- // Wait for the process to end
- proc.waitForEnd();
-
// Verify the result
List<Message> messages = getMessages();
- assertEquals(2, messages.size());
+ assertEquals(1, messages.size());
assertEquals("TaskA", messages.get(0).getProperty("taskValue").getValue());
- assertEquals("TaskA", messages.get(1).getProperty("taskValue").getValue());
}
public void testRestartBeforeEnd() throws Exception
@@ -104,6 +108,8 @@
{
// Start the process and send start trigger signal
proc.startProcess();
+
+ // This signal should be ignored
sigManager.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
// Wait for the process to end
@@ -116,9 +122,8 @@
// Verify the result
List<Message> messages = getMessages();
- assertEquals(2, messages.size());
+ assertEquals(1, messages.size());
assertEquals("TaskA", messages.get(0).getProperty("taskValue").getValue());
- assertEquals("TaskA", messages.get(1).getProperty("taskValue").getValue());
}
public Process getProcess() throws IOException
@@ -127,7 +132,7 @@
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.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValue");
taskBuilder.addSequenceFlow("End");
procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
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 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -27,7 +27,9 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+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;
@@ -59,7 +61,7 @@
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("CaseData");
- //procBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "CaseData_foo", "propValue");
+ procBuilder.addProcessAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "CaseData_foo", "propValue");
procBuilder.addProcessProperty("foo", "bar").addStartEvent("Start").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA").addSequenceFlow("End");
procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
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 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -27,7 +27,9 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+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;
@@ -61,8 +63,8 @@
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("TaskData").addStartEvent("Start").addSequenceFlow("TaskA");
TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- taskBuilder.addProcessProperty("foo", "bar").addSequenceFlow("End");
- //taskBuilder.addAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "TaskData_TaskA_foo", "foo");
+ taskBuilder.addNodeProperty("foo", "bar").addSequenceFlow("End");
+ taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "TaskData_TaskA_foo", "foo");
procBuilder.addEndEvent("End", EventDetailType.Message).addMessageRef("EndMessage");
MessageBuilder msgBuilder = procBuilder.addProcessMessage("EndMessage");
msgBuilder.addToRef(getTestID()).addProperty("foo", null, true);
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/AbstractElementImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/AbstractElementImpl.java 2008-09-30 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/AbstractElementImpl.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -43,9 +43,9 @@
private static final long serialVersionUID = 1L;
@Id @GeneratedValue
- private Integer id;
+ protected Integer id;
- public Integer getId()
+ protected Integer getId()
{
return id;
}
@@ -58,8 +58,32 @@
/**
* Called when the process is created
*/
- protected void initialize(Process proc)
+ protected void create(Process proc)
{
// nothing to do
}
+
+ /**
+ * Called when the process is registered
+ */
+ protected void register(Process proc)
+ {
+ // nothing to do
+ }
+
+ /**
+ * Called when the process is unregistered
+ */
+ protected void unregister(Process proc)
+ {
+ // nothing to do
+ }
+
+ /**
+ * Called when the process is destroyed
+ */
+ protected void destroy(Process proc)
+ {
+ // nothing to do
+ }
}
\ No newline at end of file
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 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -158,9 +158,9 @@
}
@Override
- protected void initialize(Process proc)
+ protected void create(Process proc)
{
- super.initialize(proc);
+ super.create(proc);
if (detailType == EventDetailType.Signal && signalRef == null)
throw new InvalidProcessException("Event with detail type 'Signal' must have a signalRef");
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 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -308,9 +308,9 @@
}
@Override
- protected void initialize(Process proc)
+ protected void create(Process proc)
{
- super.initialize(proc);
+ super.create(proc);
// Set the associated process
this.process = proc;
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 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -275,13 +275,13 @@
}
@Override
- public void initialize(Process proc)
+ public void create(Process proc)
{
if (status != ProcessStatus.None)
throw new IllegalStateException("Cannot initialize process in state: " + status);
// Initialize the Element
- super.initialize(this);
+ super.create(this);
// Check required name
if (name == null)
@@ -297,24 +297,45 @@
for (Node node : getNodes())
{
NodeImpl nodeImpl = (NodeImpl)node;
- nodeImpl.initialize(this);
+ nodeImpl.create(this);
}
status = ProcessStatus.Ready;
}
- public void resetProcess()
+ @Override
+ public void register(Process proc)
{
- log.debug("Reset process: " + this);
- for (Node node : getNodes())
+ super.register(proc);
+ for (Node node : nodes)
{
NodeImpl nodeImpl = (NodeImpl)node;
- nodeImpl.reset();
+ nodeImpl.register(this);
}
- status = ProcessStatus.Ready;
- runtimeException = null;
}
+ @Override
+ public void unregister(Process proc)
+ {
+ for (Node node : nodes)
+ {
+ NodeImpl nodeImpl = (NodeImpl)node;
+ nodeImpl.unregister(this);
+ }
+ super.unregister(proc);
+ }
+
+ @Override
+ public void destroy(Process proc)
+ {
+ for (Node node : nodes)
+ {
+ NodeImpl nodeImpl = (NodeImpl)node;
+ nodeImpl.destroy(this);
+ }
+ super.destroy(proc);
+ }
+
protected void initializeMessageRef(MessageImpl msgRef)
{
String msgName = msgRef.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 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -30,12 +30,17 @@
import org.jbpm.api.Constants;
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.client.SignalListener;
+import org.jbpm.api.model.Process;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.StartEvent;
+import org.jbpm.api.model.Process.ProcessStatus;
+import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.ObjectNameFactory;
import org.jbpm.api.runtime.SignalHandler;
import org.jbpm.api.runtime.Token;
+import org.jbpm.api.service.ExecutionService;
import org.jbpm.api.service.SignalService;
import org.jbpm.ri.model.builder.SingleOutFlowSupport;
import org.slf4j.Logger;
@@ -57,6 +62,9 @@
// Provide logging
final static Logger log = LoggerFactory.getLogger(StartEventImpl.class);
+ // The start signal listener
+ private transient SignalListener startListener;
+
public StartEventImpl(String name)
{
super(name);
@@ -107,9 +115,10 @@
return new SignalHandler()
{
private static final long serialVersionUID = 1L;
-
+
ProcessEngine engine = getProcess().getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
+
public void throwEnterSignal(Token token)
{
Signal signal = new Signal(getKey(), Signal.SignalType.SYSTEM_START_EVENT_ENTER);
@@ -123,7 +132,79 @@
}
};
}
-
+
+ @Override
+ protected void register(final Process proc)
+ {
+ super.register(proc);
+
+ final ProcessEngine engine = proc.getProcessEngine();
+
+ if (getTriggerType() == EventDetailType.Signal)
+ {
+ // Register the start signal listener
+ if (startListener == null)
+ {
+ final Signal startSignal = getSignalRef();
+ final StartEvent start = this;
+ startListener = new SignalListener()
+ {
+ public boolean acceptSignal(Signal signal)
+ {
+ SignalType expType = startSignal.getSignalType();
+ String expMsg = startSignal.getMessage();
+
+ String sigMsg = signal.getMessage();
+ SignalType sigType = signal.getSignalType();
+
+ boolean accept = (expType == sigType);
+ if (accept && expMsg != null)
+ accept = accept && expMsg.equals(sigMsg);
+
+ return accept;
+ }
+
+ public void catchSignal(Signal signal)
+ {
+ log.debug("catchSignal: " + signal);
+ ProcessStatus procStatus = proc.getProcessStatus();
+ if (procStatus == ProcessStatus.Ready)
+ {
+ log.debug("Start process from signal: " + signal);
+ ExecutionService execService = engine.getService(ExecutionService.class);
+ execService.startProcess(start, null);
+ }
+ else
+ {
+ log.debug("Ignore start signal for process: " + proc);
+ }
+ }
+
+ public String toString()
+ {
+ return start + "." + startSignal;
+ }
+ };
+ SignalService sigService = engine.getService(SignalService.class);
+ sigService.addSignalListener(startListener);
+ }
+ }
+ }
+
+ @Override
+ protected void unregister(final Process proc)
+ {
+ // Unregister the start signal listener
+ if (startListener != null)
+ {
+ ProcessEngine engine = proc.getProcessEngine();
+ SignalService sigService = engine.getService(SignalService.class);
+ sigService.removeSignalListener(startListener);
+ startListener = null;
+ }
+ super.unregister(proc);
+ }
+
public String toString()
{
return "StartEvent[" + getName() + "]";
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 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -83,7 +83,7 @@
public Process getProcess()
{
ProcessImpl procImpl = getProcessInternal();
- procImpl.initialize(procImpl);
+ procImpl.create(procImpl);
return procImpl;
}
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 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -162,12 +162,8 @@
private void startProcessPrepare(Process proc)
{
// Reset the process if already terminated
- ProcessImpl procImpl = (ProcessImpl)proc;
- if (isProcessTerminated(proc))
- procImpl.resetProcess();
-
ProcessStatus procStatus = proc.getProcessStatus();
- if (procStatus != ProcessStatus.Ready && procStatus != ProcessStatus.Active)
+ if (procStatus != ProcessStatus.Ready)
throw new IllegalStateException("Cannot start process in state: " + procStatus);
// Register the process if needed
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java 2008-09-30 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -82,7 +82,7 @@
Transaction tx = session.beginTransaction();
try
{
- session.saveOrUpdate(proc);
+ session.save(proc);
tx.commit();
}
finally
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java 2008-09-30 18:45:02 UTC (rev 2452)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java 2008-09-30 20:13:45 UTC (rev 2453)
@@ -23,8 +23,12 @@
// $Id$
+import javax.management.ObjectName;
+
import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Process;
import org.jbpm.api.service.ProcessService;
+import org.jbpm.ri.model.ProcessImpl;
/**
* The ProcessService is the entry point to create, find and otherwise manage processes.
@@ -39,4 +43,23 @@
{
super.setProcessEngine(engine);
}
+
+ @Override
+ public ObjectName registerProcess(Process proc)
+ {
+ ObjectName procID = super.registerProcess(proc);
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.register(proc);
+ return procID;
+ }
+
+ @Override
+ public boolean unregisterProcess(Process proc)
+ {
+ boolean success = super.unregisterProcess(proc);
+ ProcessImpl procImpl = (ProcessImpl)proc;
+ procImpl.unregister(proc);
+ procImpl.destroy(proc);
+ return success;
+ }
}
\ No newline at end of file
15 years, 7 months
JBoss JBPM SVN: r2452 - in projects/spec/trunk/modules/cts: src/test/java/org/jbpm/test/cts/node and 1 other directory.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-30 14:45:02 -0400 (Tue, 30 Sep 2008)
New Revision: 2452
Added:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java
Removed:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java
Modified:
projects/spec/trunk/modules/cts/pom.xml
Log:
EndEventMessageTest - pass
Modified: projects/spec/trunk/modules/cts/pom.xml
===================================================================
--- projects/spec/trunk/modules/cts/pom.xml 2008-09-30 18:43:01 UTC (rev 2451)
+++ projects/spec/trunk/modules/cts/pom.xml 2008-09-30 18:45:02 UTC (rev 2452)
@@ -70,7 +70,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
- <exclude>org/jbpm/test/cts/endevent/EndEventMessageTest.java</exclude>
<exclude>org/jbpm/test/cts/executioncontext/ExecutionContextTest.java</exclude>
<exclude>org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java</exclude>
<exclude>org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java</exclude>
@@ -78,8 +77,8 @@
<exclude>org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java</exclude>
<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/node/ActivityInputSetTest.java</exclude>
- <exclude>org/jbpm/test/cts/node/ActivityOutputSetTest.java</exclude>
+ <exclude>org/jbpm/test/cts/node/NodeInputSetTest.java</exclude>
+ <exclude>org/jbpm/test/cts/node/NodeOutputSetTest.java</exclude>
<exclude>org/jbpm/test/cts/processmanager/ProcessManagerTest.java</exclude>
<exclude>org/jbpm/test/cts/signalmanager/SignalManagerTest.java</exclude>
<exclude>org/jbpm/test/cts/startevent/StartEventSignalTest.java</exclude>
Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java 2008-09-30 18:43:01 UTC (rev 2451)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java 2008-09-30 18:45:02 UTC (rev 2452)
@@ -1,93 +0,0 @@
-/*
- * 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.test.cts.node;
-
-// $Id$
-
-import java.io.IOException;
-
-import org.jbpm.api.model.Message;
-import org.jbpm.api.model.Process;
-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;
-import org.jbpm.api.runtime.BasicAttachments;
-import org.jbpm.api.test.CTSTestCase;
-
-/**
- * InputSets define the data requirements for input to the activity. Zero or more InputSets MAY be defined. Each
- * InputSet is sufficient to allow the activity to be performed (if it has first been instantiated by the appropriate
- * signal arriving from an incoming Sequence Flow).
- *
- * https://jira.jboss.org/jira/browse/JBPM-1702
- *
- * @author thomas.diesler(a)jboss.com
- * @since 15-Aug-2008
- */
-public class ActivityInputSetTest extends CTSTestCase
-{
- public void testValidProps() throws Exception
- {
- Process proc = getProcess();
-
- BasicAttachments att = new BasicAttachments();
- att.addAttachment("frog", "kermit");
- proc.startProcess(att);
- proc.waitForEnd();
-
- Message endMessage = getMessages().get(0);
- assertNotNull("EndMessage expected", endMessage);
- assertEquals("kermit", endMessage.getProperty("frog").getValue());
- }
-
- public void testInvalidProps() throws Exception
- {
- Process proc = getProcess();
-
- BasicAttachments att = new BasicAttachments();
- att.addAttachment("pig", "piggy");
- proc.startProcess(att);
-
- try
- {
- proc.waitForEnd();
- }
- catch (RuntimeException ex)
- {
- // expected
- }
- }
-
- protected Process getProcess() throws IOException
- {
- ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
- //TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- //taskBuilder.addInputSet().addPropertyInput("frog").addSequenceFlow("End");
- 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;
- }
-}
Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java 2008-09-30 18:43:01 UTC (rev 2451)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java 2008-09-30 18:45:02 UTC (rev 2452)
@@ -1,73 +0,0 @@
-/*
- * 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.test.cts.node;
-
-// $Id$
-
-import java.io.IOException;
-
-import org.jbpm.api.model.Message;
-import org.jbpm.api.model.Process;
-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;
-import org.jbpm.api.test.CTSTestCase;
-
-/**
- * OutputSets define the data requirements for output from the activity. Zero or more OutputSets MAY be defined. At the
- * completion of the activity, only one of the OutputSets may be produced. It is up to the implementation of the
- * activity to determine which set will be produced. However, the IORules MAY indicate a relationship between an
- * OutputSet and an InputSet that started the activity.
- *
- * https://jira.jboss.org/jira/browse/JBPM-1703
- *
- * @author thomas.diesler(a)jboss.com
- * @since 15-Aug-2008
- */
-public class ActivityOutputSetTest extends CTSTestCase
-{
- public void testValidProps() throws Exception
- {
- Process proc = getProcess();
-
- proc.startProcess();
- proc.waitForEnd();
-
- Message endMessage = getMessages().get(0);
- assertNotNull("EndMessage expected", endMessage);
- assertEquals("kermit", endMessage.getProperty("frog").getValue());
- }
-
- protected Process getProcess() throws IOException
- {
- ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
- //TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- //taskBuilder.addOutputSet().addPropertyOutput("frog", "kermit").addSequenceFlow("End");
- 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;
- }
-}
Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java 2008-09-30 18:43:01 UTC (rev 2451)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java 2008-09-30 18:45:02 UTC (rev 2452)
@@ -1,75 +0,0 @@
-/*
- * 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.test.cts.node;
-
-// $Id$
-
-import java.io.IOException;
-
-import org.jbpm.api.model.Message;
-import org.jbpm.api.model.Process;
-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;
-import org.jbpm.api.model.builder.TaskBuilder;
-import org.jbpm.api.test.CTSTestCase;
-
-/**
- * Modeler-defined Properties MAY be added to an activity. These Properties are "local" to the activity. These
- * Properties are only for use within the processing of the activity. The fully delineated name of these properties is
- * "<process name>.<activity name>.<property name>" (e.g., "Add Customer.Review Credit.Status").
- *
- * https://jira.jboss.org/jira/browse/JBPM-1621
- *
- * @author thomas.diesler(a)jboss.com
- * @since 15-Aug-2008
- */
-public class ActivityPropertyTest extends CTSTestCase
-{
- public void testActivityPropertyRead() throws Exception
- {
- Process proc = getProcess();
- proc.startProcess();
- proc.waitForEnd();
-
- Message endMessage = getMessages().get(0);
- assertNotNull("EndMessage expected", endMessage);
- assertEquals("bar", endMessage.getProperty("propValue").getValue());
- }
-
- protected Process getProcess() throws IOException
- {
- ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
- TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- taskBuilder.addNodeProperty("foo", "bar").addSequenceFlow("End");
- taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "ActivityProperties_TaskA_foo", "propValue");
- 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;
- }
-}
Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java (from rev 2451, projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java)
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java 2008-09-30 18:45:02 UTC (rev 2452)
@@ -0,0 +1,93 @@
+/*
+ * 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.test.cts.node;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Process;
+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;
+import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * InputSets define the data requirements for input to the activity. Zero or more InputSets MAY be defined. Each
+ * InputSet is sufficient to allow the activity to be performed (if it has first been instantiated by the appropriate
+ * signal arriving from an incoming Sequence Flow).
+ *
+ * https://jira.jboss.org/jira/browse/JBPM-1702
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class NodeInputSetTest extends CTSTestCase
+{
+ public void testValidProps() throws Exception
+ {
+ Process proc = getProcess();
+
+ BasicAttachments att = new BasicAttachments();
+ att.addAttachment("frog", "kermit");
+ proc.startProcess(att);
+ proc.waitForEnd();
+
+ Message endMessage = getMessages().get(0);
+ assertNotNull("EndMessage expected", endMessage);
+ assertEquals("kermit", endMessage.getProperty("frog").getValue());
+ }
+
+ public void testInvalidProps() throws Exception
+ {
+ Process proc = getProcess();
+
+ BasicAttachments att = new BasicAttachments();
+ att.addAttachment("pig", "piggy");
+ proc.startProcess(att);
+
+ try
+ {
+ proc.waitForEnd();
+ }
+ catch (RuntimeException ex)
+ {
+ // expected
+ }
+ }
+
+ protected Process getProcess() throws IOException
+ {
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
+ //TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+ //taskBuilder.addInputSet().addPropertyInput("frog").addSequenceFlow("End");
+ 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;
+ }
+}
Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java (from rev 2451, projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java)
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java 2008-09-30 18:45:02 UTC (rev 2452)
@@ -0,0 +1,73 @@
+/*
+ * 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.test.cts.node;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Process;
+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;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * OutputSets define the data requirements for output from the activity. Zero or more OutputSets MAY be defined. At the
+ * completion of the activity, only one of the OutputSets may be produced. It is up to the implementation of the
+ * activity to determine which set will be produced. However, the IORules MAY indicate a relationship between an
+ * OutputSet and an InputSet that started the activity.
+ *
+ * https://jira.jboss.org/jira/browse/JBPM-1703
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class NodeOutputSetTest extends CTSTestCase
+{
+ public void testValidProps() throws Exception
+ {
+ Process proc = getProcess();
+
+ proc.startProcess();
+ proc.waitForEnd();
+
+ Message endMessage = getMessages().get(0);
+ assertNotNull("EndMessage expected", endMessage);
+ assertEquals("kermit", endMessage.getProperty("frog").getValue());
+ }
+
+ protected Process getProcess() throws IOException
+ {
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
+ //TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+ //taskBuilder.addOutputSet().addPropertyOutput("frog", "kermit").addSequenceFlow("End");
+ 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;
+ }
+}
Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java (from rev 2451, projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java)
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java 2008-09-30 18:45:02 UTC (rev 2452)
@@ -0,0 +1,75 @@
+/*
+ * 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.test.cts.node;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Process;
+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;
+import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * Modeler-defined Properties MAY be added to an activity. These Properties are "local" to the activity. These
+ * Properties are only for use within the processing of the activity. The fully delineated name of these properties is
+ * "<process name>.<activity name>.<property name>" (e.g., "Add Customer.Review Credit.Status").
+ *
+ * https://jira.jboss.org/jira/browse/JBPM-1621
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class NodePropertyTest extends CTSTestCase
+{
+ public void testActivityPropertyRead() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+ proc.waitForEnd();
+
+ Message endMessage = getMessages().get(0);
+ assertNotNull("EndMessage expected", endMessage);
+ assertEquals("bar", endMessage.getProperty("propValue").getValue());
+ }
+
+ protected Process getProcess() throws IOException
+ {
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
+ TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+ taskBuilder.addNodeProperty("foo", "bar").addSequenceFlow("End");
+ taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "ActivityProperties_TaskA_foo", "propValue");
+ 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;
+ }
+}
15 years, 7 months
JBoss JBPM SVN: r2451 - in projects/spec/trunk/modules: cts and 3 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-30 14:43:01 -0400 (Tue, 30 Sep 2008)
New Revision: 2451
Added:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java
Removed:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java
projects/spec/trunk/modules/cts/pom.xml
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java
Log:
NodePropertyTest - pass
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java 2008-09-30 15:07:24 UTC (rev 2450)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java 2008-09-30 18:43:01 UTC (rev 2451)
@@ -23,6 +23,8 @@
//$Id$
+import java.util.List;
+
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.FlowHandler;
import org.jbpm.api.runtime.SignalHandler;
@@ -41,6 +43,12 @@
/** Get the unique name. */
String getName();
+ /**
+ * 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 associated ExecutionHandler */
ExecutionHandler getExecutionHandler(boolean defaultHandler);
Modified: projects/spec/trunk/modules/cts/pom.xml
===================================================================
--- projects/spec/trunk/modules/cts/pom.xml 2008-09-30 15:07:24 UTC (rev 2450)
+++ projects/spec/trunk/modules/cts/pom.xml 2008-09-30 18:43:01 UTC (rev 2451)
@@ -70,9 +70,6 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
- <exclude>org/jbpm/test/cts/activity/ActivityInputSetTest.java</exclude>
- <exclude>org/jbpm/test/cts/activity/ActivityOutputSetTest.java</exclude>
- <exclude>org/jbpm/test/cts/activity/ActivityPropertyTest.java</exclude>
<exclude>org/jbpm/test/cts/endevent/EndEventMessageTest.java</exclude>
<exclude>org/jbpm/test/cts/executioncontext/ExecutionContextTest.java</exclude>
<exclude>org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java</exclude>
@@ -81,6 +78,8 @@
<exclude>org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java</exclude>
<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/node/ActivityInputSetTest.java</exclude>
+ <exclude>org/jbpm/test/cts/node/ActivityOutputSetTest.java</exclude>
<exclude>org/jbpm/test/cts/processmanager/ProcessManagerTest.java</exclude>
<exclude>org/jbpm/test/cts/signalmanager/SignalManagerTest.java</exclude>
<exclude>org/jbpm/test/cts/startevent/StartEventSignalTest.java</exclude>
Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node (from rev 2445, projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity)
Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityInputSetTest.java 2008-09-30 08:24:31 UTC (rev 2445)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java 2008-09-30 18:43:01 UTC (rev 2451)
@@ -1,93 +0,0 @@
-/*
- * 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.test.cts.activity;
-
-// $Id$
-
-import java.io.IOException;
-
-import org.jbpm.api.model.Message;
-import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
-import org.jbpm.api.model.builder.MessageBuilder;
-import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.runtime.BasicAttachments;
-import org.jbpm.api.test.CTSTestCase;
-
-/**
- * InputSets define the data requirements for input to the activity. Zero or more InputSets MAY be defined. Each
- * InputSet is sufficient to allow the activity to be performed (if it has first been instantiated by the appropriate
- * signal arriving from an incoming Sequence Flow).
- *
- * https://jira.jboss.org/jira/browse/JBPM-1702
- *
- * @author thomas.diesler(a)jboss.com
- * @since 15-Aug-2008
- */
-public class ActivityInputSetTest extends CTSTestCase
-{
- public void testValidProps() throws Exception
- {
- Process proc = getProcess();
-
- BasicAttachments att = new BasicAttachments();
- att.addAttachment("frog", "kermit");
- proc.startProcess(att);
- proc.waitForEnd();
-
- Message endMessage = getMessages().get(0);
- assertNotNull("EndMessage expected", endMessage);
- assertEquals("kermit", endMessage.getProperty("frog").getValue());
- }
-
- public void testInvalidProps() throws Exception
- {
- Process proc = getProcess();
-
- BasicAttachments att = new BasicAttachments();
- att.addAttachment("pig", "piggy");
- proc.startProcess(att);
-
- try
- {
- proc.waitForEnd();
- }
- catch (RuntimeException ex)
- {
- // expected
- }
- }
-
- protected Process getProcess() throws IOException
- {
- ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- 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");
- msgBuilder.addToRef(getTestID()).addProperty("frog", null, true);
- Process proc = procBuilder.getProcess();
- return proc;
- }
-}
Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java (from rev 2450, 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/node/ActivityInputSetTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityInputSetTest.java 2008-09-30 18:43:01 UTC (rev 2451)
@@ -0,0 +1,93 @@
+/*
+ * 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.test.cts.node;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Process;
+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;
+import org.jbpm.api.runtime.BasicAttachments;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * InputSets define the data requirements for input to the activity. Zero or more InputSets MAY be defined. Each
+ * InputSet is sufficient to allow the activity to be performed (if it has first been instantiated by the appropriate
+ * signal arriving from an incoming Sequence Flow).
+ *
+ * https://jira.jboss.org/jira/browse/JBPM-1702
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class ActivityInputSetTest extends CTSTestCase
+{
+ public void testValidProps() throws Exception
+ {
+ Process proc = getProcess();
+
+ BasicAttachments att = new BasicAttachments();
+ att.addAttachment("frog", "kermit");
+ proc.startProcess(att);
+ proc.waitForEnd();
+
+ Message endMessage = getMessages().get(0);
+ assertNotNull("EndMessage expected", endMessage);
+ assertEquals("kermit", endMessage.getProperty("frog").getValue());
+ }
+
+ public void testInvalidProps() throws Exception
+ {
+ Process proc = getProcess();
+
+ BasicAttachments att = new BasicAttachments();
+ att.addAttachment("pig", "piggy");
+ proc.startProcess(att);
+
+ try
+ {
+ proc.waitForEnd();
+ }
+ catch (RuntimeException ex)
+ {
+ // expected
+ }
+ }
+
+ protected Process getProcess() throws IOException
+ {
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
+ //TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+ //taskBuilder.addInputSet().addPropertyInput("frog").addSequenceFlow("End");
+ 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;
+ }
+}
Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityOutputSetTest.java 2008-09-30 08:24:31 UTC (rev 2445)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java 2008-09-30 18:43:01 UTC (rev 2451)
@@ -1,73 +0,0 @@
-/*
- * 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.test.cts.activity;
-
-// $Id$
-
-import java.io.IOException;
-
-import org.jbpm.api.model.Message;
-import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
-import org.jbpm.api.model.builder.MessageBuilder;
-import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.test.CTSTestCase;
-
-/**
- * OutputSets define the data requirements for output from the activity. Zero or more OutputSets MAY be defined. At the
- * completion of the activity, only one of the OutputSets may be produced. It is up to the implementation of the
- * activity to determine which set will be produced. However, the IORules MAY indicate a relationship between an
- * OutputSet and an InputSet that started the activity.
- *
- * https://jira.jboss.org/jira/browse/JBPM-1703
- *
- * @author thomas.diesler(a)jboss.com
- * @since 15-Aug-2008
- */
-public class ActivityOutputSetTest extends CTSTestCase
-{
- public void testValidProps() throws Exception
- {
- Process proc = getProcess();
-
- proc.startProcess();
- proc.waitForEnd();
-
- Message endMessage = getMessages().get(0);
- assertNotNull("EndMessage expected", endMessage);
- assertEquals("kermit", endMessage.getProperty("frog").getValue());
- }
-
- protected Process getProcess() throws IOException
- {
- ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- 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");
- msgBuilder.addToRef(getTestID()).addProperty("frog", null, true);
- Process proc = procBuilder.getProcess();
- return proc;
- }
-}
Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java (from rev 2450, 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/node/ActivityOutputSetTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityOutputSetTest.java 2008-09-30 18:43:01 UTC (rev 2451)
@@ -0,0 +1,73 @@
+/*
+ * 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.test.cts.node;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Process;
+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;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * OutputSets define the data requirements for output from the activity. Zero or more OutputSets MAY be defined. At the
+ * completion of the activity, only one of the OutputSets may be produced. It is up to the implementation of the
+ * activity to determine which set will be produced. However, the IORules MAY indicate a relationship between an
+ * OutputSet and an InputSet that started the activity.
+ *
+ * https://jira.jboss.org/jira/browse/JBPM-1703
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class ActivityOutputSetTest extends CTSTestCase
+{
+ public void testValidProps() throws Exception
+ {
+ Process proc = getProcess();
+
+ proc.startProcess();
+ proc.waitForEnd();
+
+ Message endMessage = getMessages().get(0);
+ assertNotNull("EndMessage expected", endMessage);
+ assertEquals("kermit", endMessage.getProperty("frog").getValue());
+ }
+
+ protected Process getProcess() throws IOException
+ {
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
+ //TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+ //taskBuilder.addOutputSet().addPropertyOutput("frog", "kermit").addSequenceFlow("End");
+ 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;
+ }
+}
Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/activity/ActivityPropertyTest.java 2008-09-30 08:24:31 UTC (rev 2445)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java 2008-09-30 18:43:01 UTC (rev 2451)
@@ -1,73 +0,0 @@
-/*
- * 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.test.cts.activity;
-
-// $Id$
-
-import java.io.IOException;
-
-import org.jbpm.api.model.Message;
-import org.jbpm.api.model.Process;
-import org.jbpm.api.model.EndEvent.ResultType;
-import org.jbpm.api.model.builder.MessageBuilder;
-import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.model.builder.TaskBuilder;
-import org.jbpm.api.test.CTSTestCase;
-
-/**
- * Modeler-defined Properties MAY be added to an activity. These Properties are "local" to the activity. These
- * Properties are only for use within the processing of the activity. The fully delineated name of these properties is
- * "<process name>.<activity name>.<property name>" (e.g., "Add Customer.Review Credit.Status").
- *
- * https://jira.jboss.org/jira/browse/JBPM-1621
- *
- * @author thomas.diesler(a)jboss.com
- * @since 15-Aug-2008
- */
-public class ActivityPropertyTest extends CTSTestCase
-{
- public void testActivityPropertyRead() throws Exception
- {
- Process proc = getProcess();
- proc.startProcess();
- proc.waitForEnd();
-
- Message endMessage = getMessages().get(0);
- assertNotNull("EndMessage expected", endMessage);
- assertEquals("bar", endMessage.getProperty("propValue").getValue());
- }
-
- protected Process getProcess() throws IOException
- {
- ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
- TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
- taskBuilder.addProperty("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");
- msgBuilder.addToRef(getTestID()).addProperty("propValue", null, true);
- Process proc = procBuilder.getProcess();
- return proc;
- }
-}
Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java (from rev 2450, 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/node/ActivityPropertyTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/ActivityPropertyTest.java 2008-09-30 18:43:01 UTC (rev 2451)
@@ -0,0 +1,75 @@
+/*
+ * 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.test.cts.node;
+
+// $Id$
+
+import java.io.IOException;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Process;
+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;
+import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * Modeler-defined Properties MAY be added to an activity. These Properties are "local" to the activity. These
+ * Properties are only for use within the processing of the activity. The fully delineated name of these properties is
+ * "<process name>.<activity name>.<property name>" (e.g., "Add Customer.Review Credit.Status").
+ *
+ * https://jira.jboss.org/jira/browse/JBPM-1621
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 15-Aug-2008
+ */
+public class ActivityPropertyTest extends CTSTestCase
+{
+ public void testActivityPropertyRead() throws Exception
+ {
+ Process proc = getProcess();
+ proc.startProcess();
+ proc.waitForEnd();
+
+ Message endMessage = getMessages().get(0);
+ assertNotNull("EndMessage expected", endMessage);
+ assertEquals("bar", endMessage.getProperty("propValue").getValue());
+ }
+
+ protected Process getProcess() throws IOException
+ {
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
+ TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
+ taskBuilder.addNodeProperty("foo", "bar").addSequenceFlow("End");
+ taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "ActivityProperties_TaskA_foo", "propValue");
+ 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/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 15:07:24 UTC (rev 2450)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java 2008-09-30 18:43:01 UTC (rev 2451)
@@ -31,10 +31,14 @@
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import org.jbpm.api.model.Assignment;
+import org.jbpm.api.model.Expression;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.SequenceFlow;
+import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Process.ProcessStatus;
+import org.jbpm.api.runtime.ExecutionContext;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.FlowHandler;
import org.jbpm.api.runtime.SignalHandler;
@@ -237,9 +241,15 @@
// Throw the Enter Signal
sigHandler.throwEnterSignal(tokCopy);
+ // Process the start time assignments
+ startTimeAssignments(node, tokCopy);
+
// Execute the target Node
execHandler.execute(tokCopy);
+ // Process the end time assignments
+ endTimeAssignments(node, tokCopy);
+
// Transfer the token to the FlowHandler
flowHandler.execute(tokenExecutor, tokCopy);
@@ -291,6 +301,34 @@
}
}
+ private void startTimeAssignments(Node node, Token token)
+ {
+ for (Assignment ass : node.getAssignments())
+ {
+ if (ass.getAssignTime() == AssignTime.Start)
+ anyTimeAssignment(ass, token);
+ }
+ }
+
+ private void endTimeAssignments(Node node, Token token)
+ {
+ for (Assignment ass : node.getAssignments())
+ {
+ if (ass.getAssignTime() == AssignTime.End)
+ anyTimeAssignment(ass, token);
+ }
+ }
+
+ private void anyTimeAssignment(Assignment ass, Token token)
+ {
+ Expression expr = ass.getFrom();
+ ExpressionEvaluator exprEvaluator = new ExpressionEvaluator(expr);
+ Object result = exprEvaluator.evaluateExpression(token);
+ String propName = ass.getTo().getName();
+ ExecutionContext exContext = token.getExecutionContext();
+ exContext.addAttachment(propName, result);
+ }
+
private SignalHandler getSignalHandler(Node target)
{
SignalHandler customHandler = target.getSignalHandler(false);
15 years, 7 months
JBoss JBPM SVN: r2450 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/model/builder and 19 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)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(a)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(a)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(a)jboss.com
+ * @since 08-Jul-2008
+ */
+@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(a)jboss.com
+ * @since 21-Jul-2008
+ */
+@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(a)jboss.com
+ * @since 21-Jul-2008
+ */
+@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(a)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(a)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(a)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);
}
}
15 years, 7 months
JBoss JBPM SVN: r2449 - in projects/spec/trunk/modules: cts/src/test/java/org/jbpm/test/cts/service/persistence and 3 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-30 07:01:11 -0400 (Tue, 30 Sep 2008)
New Revision: 2449
Added:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessCatalog.java
Removed:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/TestProcessBuilder.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/persistence/PersistenceServiceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java
Log:
persistent properties - ok
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java 2008-09-30 10:39:06 UTC (rev 2448)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java 2008-09-30 11:01:11 UTC (rev 2449)
@@ -79,11 +79,6 @@
if (proc == null)
throw new IllegalStateException("Cannot obtain process from: " + dep);
- // Save the process if the PersistenceService is registered
- PersistenceService dbService = engine.getService(PersistenceService.class);
- if (dbService != null)
- dbService.saveProcess(proc);
-
registerProcess(proc);
return proc.getKey();
}
@@ -94,6 +89,11 @@
public void registerProcess(Process proc)
{
log.debug("registerProcess: " + proc);
+
+ // Save the process through the PersistenceService
+ PersistenceService dbService = getProcessEngine().getService(PersistenceService.class);
+ dbService.saveProcess(proc);
+
registeredProcs.put(proc.getKey(), proc);
}
@@ -103,6 +103,11 @@
public void unregisterProcess(Process proc)
{
log.debug("unregisterProcess: " + proc);
+
+ // Delete the process through the PersistenceService
+ PersistenceService dbService = getProcessEngine().getService(PersistenceService.class);
+ dbService.deleteProcess(proc);
+
registeredProcs.remove(proc.getKey());
}
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/persistence/PersistenceServiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/persistence/PersistenceServiceTest.java 2008-09-30 10:39:06 UTC (rev 2448)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/persistence/PersistenceServiceTest.java 2008-09-30 11:01:11 UTC (rev 2449)
@@ -29,7 +29,7 @@
import org.jbpm.api.model.Process;
import org.jbpm.api.service.PersistenceService;
import org.jbpm.api.test.CTSTestCase;
-import org.jbpm.test.cts.service.processbuilder.TestProcessBuilder;
+import org.jbpm.test.cts.service.processbuilder.ProcessCatalog;
/**
* Test the PersistenceService
@@ -47,13 +47,13 @@
PersistenceService service = PersistenceService.locatePersistenceService();
// Save the process
- Process proc = TestProcessBuilder.getTrivalProcess();
+ Process proc = ProcessCatalog.getDefaultProcess();
service.saveProcess(proc);
// Load the process
ObjectName procID = proc.getKey();
Process procLoad = service.loadProcess(procID);
- TestProcessBuilder.validateTrivialProcess(procLoad);
+ ProcessCatalog.validateDefaultProcess(procLoad);
// Delete the process
service.deleteProcess(proc);
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java 2008-09-30 10:39:06 UTC (rev 2448)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java 2008-09-30 11:01:11 UTC (rev 2449)
@@ -39,8 +39,8 @@
{
public void testBasicProcess() throws Exception
{
- Process proc = TestProcessBuilder.getTrivalProcess();
- TestProcessBuilder.validateTrivialProcess(proc);
+ Process proc = ProcessCatalog.getDefaultProcess();
+ ProcessCatalog.validateDefaultProcess(proc);
}
public void testNoProcessName() throws Exception
Added: 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 (rev 0)
+++ 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)
@@ -0,0 +1,99 @@
+/*
+ * 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.test.cts.service.processbuilder;
+
+// $Id$
+
+import junit.framework.TestCase;
+
+import org.jbpm.api.model.EndEvent;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.SequenceFlow;
+import org.jbpm.api.model.StartEvent;
+import org.jbpm.api.model.Task;
+import org.jbpm.api.model.builder.ProcessBuilder;
+import org.jbpm.api.model.builder.ProcessBuilderService;
+
+/**
+ * A catalog of CTS test processes
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 24-Sep-2008
+ */
+public abstract class ProcessCatalog
+{
+ public static Process getDefaultProcess()
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess("Proc").addProperty("proP1", "valP1").addProperty("proP2", "valP2");
+ builder.addStartEvent("Start").addSequenceFlow("Task");
+ builder.addTask("Task").addProperty("proT1", "valT1").addProperty("proT2", "valT2");
+ builder.addSequenceFlow("End").addEndEvent("End");
+ Process proc = builder.getProcess();
+ return proc;
+ }
+
+ public static void validateDefaultProcess(Process wasProc)
+ {
+ TestCase.assertNotNull("Process not null", wasProc);
+ TestCase.assertEquals("Proc", wasProc.getName());
+
+ TestCase.assertEquals("Two proc props", 2, wasProc.getProperties().size());
+ TestCase.assertEquals("valP1", wasProc.getProperty("proP1").getValue());
+ TestCase.assertEquals("valP2", wasProc.getProperty("proP2").getValue());
+
+ StartEvent start = (StartEvent)wasProc.getNode("Start");
+ Task task = (Task)wasProc.getNode("Task");
+ EndEvent end = (EndEvent)wasProc.getNode("End");
+
+ TestCase.assertNotNull("Start not null", start);
+ 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("valT1", task.getProperty("proT1").getValue());
+ TestCase.assertEquals("valT2", task.getProperty("proT2").getValue());
+
+ TestCase.assertSame(wasProc, start.getProcess());
+ TestCase.assertSame(wasProc, task.getProcess());
+ TestCase.assertSame(wasProc, end.getProcess());
+
+ TestCase.assertSame(start, wasProc.getNode(StartEvent.class, "Start"));
+ TestCase.assertSame(task, wasProc.getNode(Task.class, "Task"));
+ TestCase.assertSame(end, wasProc.getNode(EndEvent.class, "End"));
+
+ SequenceFlow startFlow = start.getOutFlow();
+ TestCase.assertNotNull("Start flow not null", startFlow);
+ TestCase.assertEquals("Task", startFlow.getTargetName());
+ TestCase.assertSame(start, startFlow.getSourceRef());
+ TestCase.assertSame(task, startFlow.getTargetRef());
+
+ SequenceFlow taskFlow = task.getOutFlow();
+ TestCase.assertNotNull("Task flow not null", taskFlow);
+ TestCase.assertEquals("End", taskFlow.getTargetName());
+ TestCase.assertSame(task, taskFlow.getSourceRef());
+ TestCase.assertSame(end, taskFlow.getTargetRef());
+ }
+}
Property changes on: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessCatalog.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Deleted: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/TestProcessBuilder.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/TestProcessBuilder.java 2008-09-30 10:39:06 UTC (rev 2448)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/TestProcessBuilder.java 2008-09-30 11:01:11 UTC (rev 2449)
@@ -1,86 +0,0 @@
-/*
- * 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.test.cts.service.processbuilder;
-
-// $Id$
-
-import junit.framework.TestCase;
-
-import org.jbpm.api.model.EndEvent;
-import org.jbpm.api.model.Process;
-import org.jbpm.api.model.SequenceFlow;
-import org.jbpm.api.model.StartEvent;
-import org.jbpm.api.model.Task;
-import org.jbpm.api.model.builder.ProcessBuilder;
-import org.jbpm.api.model.builder.ProcessBuilderService;
-
-/**
- * A catalog of CTS test processes
- *
- * @author thomas.diesler(a)jboss.com
- * @since 24-Sep-2008
- */
-public abstract class TestProcessBuilder
-{
- public static Process getTrivalProcess()
- {
- ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
- builder.addProcess("Proc").addStartEvent("Start").addSequenceFlow("Task");
- builder.addTask("Task").addSequenceFlow("End").addEndEvent("End");
- Process proc = builder.getProcess();
- return proc;
- }
-
- public static void validateTrivialProcess(Process wasProc)
- {
- TestCase.assertNotNull("Process not null", wasProc);
- TestCase.assertEquals("Proc", wasProc.getName());
-
- StartEvent start = (StartEvent)wasProc.getNode("Start");
- Task task = (Task)wasProc.getNode("Task");
- EndEvent end = (EndEvent)wasProc.getNode("End");
-
- TestCase.assertNotNull("Start not null", start);
- TestCase.assertNotNull("Task not null", task);
- TestCase.assertNotNull("End not null", end);
-
- TestCase.assertSame(wasProc, start.getProcess());
- TestCase.assertSame(wasProc, task.getProcess());
- TestCase.assertSame(wasProc, end.getProcess());
-
- TestCase.assertSame(start, wasProc.getNode(StartEvent.class, "Start"));
- TestCase.assertSame(task, wasProc.getNode(Task.class, "Task"));
- TestCase.assertSame(end, wasProc.getNode(EndEvent.class, "End"));
-
- SequenceFlow startFlow = start.getOutFlow();
- TestCase.assertNotNull("Start flow not null", startFlow);
- TestCase.assertEquals("Task", startFlow.getTargetName());
- TestCase.assertSame(start, startFlow.getSourceRef());
- TestCase.assertSame(task, startFlow.getTargetRef());
-
- SequenceFlow taskFlow = task.getOutFlow();
- TestCase.assertNotNull("Task flow not null", taskFlow);
- TestCase.assertEquals("End", taskFlow.getTargetName());
- TestCase.assertSame(task, taskFlow.getSourceRef());
- TestCase.assertSame(end, taskFlow.getTargetRef());
- }
-}
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java 2008-09-30 10:39:06 UTC (rev 2448)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java 2008-09-30 11:01:11 UTC (rev 2449)
@@ -31,7 +31,6 @@
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
-import org.jbpm.api.service.ProcessService;
import org.jbpm.api.test.CTSTestCase;
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 10:39:06 UTC (rev 2448)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-09-30 11:01:11 UTC (rev 2449)
@@ -37,7 +37,6 @@
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;
@@ -92,9 +91,8 @@
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, mappedBy = "sourceRef", targetEntity = SequenceFlowImpl.class)
protected List<SequenceFlow> outFlows = new ArrayList<SequenceFlow>();
- @Transient
- // @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = PropertyImpl.class)
- private Set<Property> properties = new HashSet<Property>();
+ @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = PropertyImpl.class)
+ protected Set<Property> properties = new HashSet<Property>();
@Basic
private String execHandler;
15 years, 7 months
JBoss JBPM SVN: r2448 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/model and 9 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-30 06:39:06 -0400 (Tue, 30 Sep 2008)
New Revision: 2448
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Deployment.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/builder/MessageBuilderService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ExecutionService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/PersistenceService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/Service.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/SignalService.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/client/ProcessEngineImpl.java
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/ProcessImpl.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/TaskImpl.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/GatewayBuilderImpl.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/model/builder/TaskBuilderImpl.java
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/MessageServiceImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/SignalServiceImpl.java
Log:
Improve engine scoping
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Deployment.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Deployment.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Deployment.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -82,11 +82,10 @@
this.process = process;
}
- public Process getProcess()
+ public Process getProcess(ProcessEngine engine)
{
if (process == null)
{
- ProcessEngine engine = ProcessEngine.getProcessEngine();
DialectHandlerService dhService = engine.getService(DialectHandlerService.class);
if (dhService == null)
throw new IllegalStateException("DialectHandlerService not registered");
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 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -27,6 +27,7 @@
import javax.management.ObjectName;
+import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.runtime.Attachments;
/**
@@ -46,6 +47,11 @@
}
/**
+ * Get the associated ProcessEngine
+ */
+ ProcessEngine getProcessEngine();
+
+ /**
* Get the unique name.
*/
String getName();
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/MessageBuilderService.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -25,7 +25,7 @@
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Message;
-import org.jbpm.api.service.Service;
+import org.jbpm.api.service.AbstractService;
/**
* The MessageBuilder can be used to build a {@link Message} dynamically.
@@ -33,7 +33,7 @@
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-public abstract class MessageBuilderService implements Service
+public abstract class MessageBuilderService extends AbstractService
{
/**
* Locate the default MessageBuilder
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilderService.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -25,7 +25,7 @@
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
-import org.jbpm.api.service.Service;
+import org.jbpm.api.service.AbstractService;
/**
* The ProcessBuilder can be used to build a {@link Process} dynamically.
@@ -33,7 +33,7 @@
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-public abstract class ProcessBuilderService implements Service
+public abstract class ProcessBuilderService extends AbstractService
{
/**
* Locate the default ProcessBuilder
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -0,0 +1,48 @@
+/*
+ * 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.service;
+
+// $Id$
+
+import org.jbpm.api.client.ProcessEngine;
+
+/**
+ * An abstract Service that gives access to the ProcessEngine
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 18-Jun-2008
+ */
+public class AbstractService implements Service
+{
+ private ProcessEngine engine;
+
+ public ProcessEngine getProcessEngine()
+ {
+ return engine;
+ }
+
+ // Do not expose through the API
+ protected void setProcessEngine(ProcessEngine engine)
+ {
+ this.engine = engine;
+ }
+}
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/AbstractService.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ExecutionService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ExecutionService.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ExecutionService.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -37,7 +37,7 @@
* @author thomas.diesler(a)jboss.com
* @since 18-Jun-2008
*/
-public abstract class ExecutionService implements Service
+public abstract class ExecutionService extends AbstractService
{
private ExecutorService procExecutor = Executors.newCachedThreadPool();
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageService.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageService.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -51,7 +51,7 @@
* @author thomas.diesler(a)jboss.com
* @since 18-Jun-2008
*/
-public abstract class MessageService implements Service
+public abstract class MessageService extends AbstractService
{
// Provide logging
final Logger log = LoggerFactory.getLogger(MessageService.class);
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/PersistenceService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/PersistenceService.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/PersistenceService.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -34,7 +34,7 @@
* @author thomas.diesler(a)jboss.com
* @since 17-Sep-2008
*/
-public abstract class PersistenceService implements Service
+public abstract class PersistenceService extends AbstractService
{
/**
* Locate the default PersistenceService
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -44,7 +44,7 @@
* @author thomas.diesler(a)jboss.com
* @since 25-Sep-2008
*/
-public abstract class ProcessService implements Service
+public abstract class ProcessService extends AbstractService
{
// Provide logging
final static Logger log = LoggerFactory.getLogger(ProcessService.class);
@@ -71,13 +71,15 @@
*/
public ObjectName deploy(Deployment dep)
{
+ // Get the associated engine
+ ProcessEngine engine = getProcessEngine();
+
// Get the process from the deployment
- Process proc = dep.getProcess();
+ Process proc = dep.getProcess(engine);
if (proc == null)
throw new IllegalStateException("Cannot obtain process from: " + dep);
// Save the process if the PersistenceService is registered
- ProcessEngine engine = ProcessEngine.getProcessEngine();
PersistenceService dbService = engine.getService(PersistenceService.class);
if (dbService != null)
dbService.saveProcess(proc);
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/Service.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/Service.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/Service.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -21,7 +21,9 @@
*/
package org.jbpm.api.service;
+import org.jbpm.api.client.ProcessEngine;
+
//$Id$
/**
@@ -32,4 +34,8 @@
*/
public interface Service
{
+ /**
+ * Get the associated ProcessEngine
+ */
+ ProcessEngine getProcessEngine();
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/SignalService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/SignalService.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/SignalService.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -40,7 +40,7 @@
* @author thomas.diesler(a)jboss.com
* @since 18-Jun-2008
*/
-public abstract class SignalService implements Service
+public abstract class SignalService extends AbstractService
{
// provide logging
final static Logger log = LoggerFactory.getLogger(SignalService.class);
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -68,15 +68,21 @@
// The messages caught by this test case
private List<Message> messages = new ArrayList<Message>();
+ protected ProcessEngine getProcessEngine()
+ {
+ return ProcessEngine.getProcessEngine();
+ }
+
@Override
protected void setUp() throws Exception
{
log.debug("### START " + getLongName());
super.setUp();
+ ProcessEngine engine = getProcessEngine();
+
// Setup the SignalListener
clearAllSignalListeners();
- ProcessEngine engine = ProcessEngine.getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
sigService.addSignalListener(getSignalListener());
synchronized (signals)
@@ -86,30 +92,31 @@
// Setup the MessageListener
clearAllMessageListeners();
- MessageService msgService = MessageService.locateMessageService();
+ MessageService msgService = engine.getService(MessageService.class);
msgService.addMessageListener(getMessageListener());
}
@Override
protected void tearDown() throws Exception
{
+ ProcessEngine engine = getProcessEngine();
+
// Tear down the SignalListener
- ProcessEngine engine = ProcessEngine.getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
sigService.removeSignalListener(getSignalListener());
// Tear down the MessageListener
- MessageService msgService = MessageService.locateMessageService();
+ MessageService msgService = engine.getService(MessageService.class);
msgService.removeMessageListener(getTestID());
// Check that there are no registered processes left
- ProcessService procManager = ProcessService.locateProcessService();
+ ProcessService procManager = engine.getService(ProcessService.class);
Set<Process> procs = procManager.getProcesses();
if (procs.size() > 0)
{
String logMsg = "Registered processes on tear down of " + getName() + ": " + procs;
System.out.println(logMsg);
- log.warn(logMsg);
+ System.exit(1);
}
// Check that there are no registered signal listeners left
@@ -118,7 +125,7 @@
{
String logMsg = "Registered signal listeners on tear down of " + getName() + ": " + sigListeners;
System.out.println(logMsg);
- log.warn(logMsg);
+ System.exit(1);
}
// Check that there are no registered message listeners left
@@ -127,7 +134,7 @@
{
String logMsg = "Registered message listeners on tear down of " + getName() + ": " + msgListeners;
System.out.println(logMsg);
- log.warn(logMsg);
+ System.exit(1);
}
super.tearDown();
@@ -196,18 +203,17 @@
private void clearAllSignalListeners()
{
- ProcessEngine engine = ProcessEngine.getProcessEngine();
- SignalService sigService = engine.getService(SignalService.class);
+ SignalService sigService = getProcessEngine().getService(SignalService.class);
Set<SignalListener> sigListeners = sigService.getSignalListeners();
for (SignalListener sigListener : sigListeners)
{
sigService.removeSignalListener(sigListener);
}
}
-
+
private void clearAllMessageListeners()
{
- MessageService msgService = MessageService.locateMessageService();
+ MessageService msgService = getProcessEngine().getService(MessageService.class);
Set<MessageListener> msgListeners = msgService.getMessageListeners();
for (MessageListener msgListener : msgListeners)
{
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/ProcessBuilderTest.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -45,11 +45,11 @@
public void testNoProcessName() throws Exception
{
- ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
- builder.addProcess(null).addStartEvent("Start").addSequenceFlow("Task");
- builder.addTask("Task").addSequenceFlow("End").addEndEvent("End");
try
{
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess(null).addStartEvent("Start").addSequenceFlow("Task");
+ builder.addTask("Task").addSequenceFlow("End").addEndEvent("End");
builder.getProcess();
fail("Process name required");
}
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -45,12 +45,9 @@
{
public void testSequence() throws Exception
{
- // Start the Process
Process proc = getProcess();
- ProcessService procService = ProcessService.locateProcessService();
- procService.registerProcess(proc);
-
+ // Start the Process
proc.startProcess();
proc.waitForEnd();
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/client/ProcessEngineImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/client/ProcessEngineImpl.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/client/ProcessEngineImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -27,6 +27,7 @@
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.service.Service;
+import org.jbpm.ri.service.MutableService;
/**
* A process engine with public access
@@ -39,5 +40,15 @@
public void setServices(Set<Service> services)
{
this.services = services;
+
+ // Set this engine on every mutable service
+ for (Service service : services)
+ {
+ if (service instanceof MutableService)
+ {
+ MutableService mutService = (MutableService)service;
+ mutService.setProcessEngine(this);
+ }
+ }
}
}
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 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -119,7 +119,7 @@
{
private static final long serialVersionUID = 1L;
- ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessEngine engine = getProcess().getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
public void throwEnterSignal(Token token)
{
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 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -85,7 +85,7 @@
{
private static final long serialVersionUID = 1L;
- ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessEngine engine = getProcess().getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
public void throwEnterSignal(Token token)
{
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 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -82,10 +82,19 @@
private Set<Property> properties = new HashSet<Property>();
@Transient
+ private transient ProcessEngine engine;
+
+ @Transient
private transient RuntimeException runtimeException;
- public ProcessImpl(String name)
+ public ProcessImpl(ProcessEngine engine, String name)
{
+ if (engine == null)
+ throw new InvalidProcessException("Process engine cannot be null");
+ if (name == null)
+ throw new InvalidProcessException("Process name cannot be null");
+
+ this.engine = engine;
this.name = name;
}
@@ -94,6 +103,12 @@
{
}
+ @Transient
+ public ProcessEngine getProcessEngine()
+ {
+ return engine;
+ }
+
@Override
@Transient
public ObjectName getKey()
@@ -267,7 +282,7 @@
private ObjectName startProcessInternal(Attachments att)
{
- ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessEngine engine = getProcessEngine();
ExecutionService exService = engine.getService(ExecutionService.class);
exService.startProcess(this, att);
return getKey();
@@ -290,7 +305,7 @@
*/
private ProcessStatus waitForEndInternal(long timeout)
{
- ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessEngine engine = getProcessEngine();
ExecutionService exService = engine.getService(ExecutionService.class);
return exService.waitForEnd(this, timeout);
}
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 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -113,7 +113,7 @@
{
private static final long serialVersionUID = 1L;
- ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessEngine engine = getProcess().getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
public void throwEnterSignal(Token token)
{
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -120,7 +120,7 @@
{
private static final long serialVersionUID = 1L;
- ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessEngine engine = getProcess().getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
public void throwEnterSignal(Token token)
{
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 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/EventBuilderImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -27,8 +27,6 @@
import org.jbpm.api.model.Event;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.EventBuilder;
-import org.jbpm.ri.model.NodeImpl;
-import org.jbpm.ri.model.ProcessImpl;
/**
* The EventBuilder can be used to build an {@link Event} dynamically.
@@ -38,9 +36,9 @@
*/
public class EventBuilderImpl extends ProcessBuilderImpl implements EventBuilder
{
- public EventBuilderImpl(ProcessImpl proc, NodeImpl node)
+ public EventBuilderImpl(ProcessBuilderImpl procBuilder)
{
- super(proc, node);
+ super(procBuilder);
}
public EventBuilder addMessageRef(String msgName)
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/GatewayBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/GatewayBuilderImpl.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/GatewayBuilderImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -24,10 +24,9 @@
//$Id$
import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.GatewayBuilder;
-import org.jbpm.ri.model.NodeImpl;
-import org.jbpm.ri.model.ProcessImpl;
/**
* The GatewayBuilder can be used to build a {@link Gateway} dynamically.
@@ -37,9 +36,9 @@
*/
public class GatewayBuilderImpl extends ProcessBuilderImpl implements GatewayBuilder
{
- public GatewayBuilderImpl(ProcessImpl proc, NodeImpl node)
+ public GatewayBuilderImpl(ProcessBuilderImpl procBuilder)
{
- super(proc, node);
+ super(procBuilder);
}
public GatewayBuilder addConditionalGate(String targetName, ExpressionLanguage exprLang, String exprBody)
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 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -24,6 +24,7 @@
//$Id$
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.Gateway.GatewayType;
@@ -54,22 +55,25 @@
*/
public class ProcessBuilderImpl implements ProcessBuilder
{
+ protected ProcessEngine engine;
protected ProcessImpl proc;
protected NodeImpl node;
- public ProcessBuilderImpl()
+ public ProcessBuilderImpl(ProcessEngine engine)
{
+ this.engine = engine;
}
- protected ProcessBuilderImpl(ProcessImpl proc, NodeImpl node)
+ protected ProcessBuilderImpl(ProcessBuilderImpl procBuilder)
{
- this.proc = proc;
- this.node = node;
+ this.engine = procBuilder.engine;
+ this.proc = procBuilder.proc;
+ this.node = procBuilder.node;
}
public ProcessBuilder addProcess(String procName)
{
- proc = new ProcessImpl(procName);
+ proc = new ProcessImpl(engine, procName);
return this;
}
@@ -102,7 +106,7 @@
public EventBuilder addStartEvent(String name)
{
addNode(node = new StartEventImpl(name));
- return new EventBuilderImpl(proc, node);
+ return new EventBuilderImpl(this);
}
public EventBuilder addStartEvent(String name, TriggerType triggerType)
@@ -110,19 +114,19 @@
StartEventImpl startImpl = new StartEventImpl(name);
startImpl.setTriggerType(triggerType);
addNode(node = startImpl);
- return new EventBuilderImpl(proc, node);
+ return new EventBuilderImpl(this);
}
public EventBuilder addEvent(String name)
{
addNode(node = new EventImpl(name));
- return new EventBuilderImpl(proc, node);
+ return new EventBuilderImpl(this);
}
public EventBuilder addEndEvent(String name)
{
addNode(node = new EndEventImpl(name));
- return new EventBuilderImpl(proc, node);
+ return new EventBuilderImpl(this);
}
public EventBuilder addEndEvent(String name, ResultType resultType)
@@ -130,13 +134,13 @@
EndEventImpl endImpl = new EndEventImpl(name);
endImpl.setResultType(resultType);
addNode(node = endImpl);
- return new EventBuilderImpl(proc, node);
+ return new EventBuilderImpl(this);
}
public TaskBuilder addTask(String name)
{
addTask(name, TaskType.None);
- return new TaskBuilderImpl(proc, node);
+ return new TaskBuilderImpl(this);
}
public TaskBuilder addTask(String name, TaskType type)
@@ -178,7 +182,7 @@
throw new IllegalStateException("Task type: " + type);
}
addNode(node);
- return new TaskBuilderImpl(proc, node);
+ return new TaskBuilderImpl(this);
}
public GatewayBuilder addGateway(String name, GatewayType type)
@@ -200,7 +204,7 @@
throw new NotImplementedException();
}
addNode(node);
- return new GatewayBuilderImpl(proc, node);
+ return new GatewayBuilderImpl(this);
}
public <T extends ExecutionHandler> ProcessBuilder addExecutionHandler(Class<T> clazz)
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/TaskBuilderImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -24,9 +24,8 @@
//$Id$
import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.Task;
import org.jbpm.api.model.builder.TaskBuilder;
-import org.jbpm.ri.model.NodeImpl;
-import org.jbpm.ri.model.ProcessImpl;
/**
* The TaskBuilder can be used to dynamically build {@link Task}.
@@ -36,9 +35,9 @@
*/
public class TaskBuilderImpl extends ProcessBuilderImpl implements TaskBuilder
{
- public TaskBuilderImpl(ProcessImpl proc, NodeImpl node)
+ public TaskBuilderImpl(ProcessBuilderImpl procBuilder)
{
- super(proc, node);
+ super(procBuilder);
}
public TaskBuilder addMessageRef(String msgName)
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 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -57,7 +57,7 @@
* @author thomas.diesler(a)jboss.com
* @since 18-Jun-2008
*/
-public class ExecutionServiceImpl extends ExecutionService
+public class ExecutionServiceImpl extends ExecutionService implements MutableService
{
// provide logging
private static final Log log = LogFactory.getLog(ExecutionServiceImpl.class);
@@ -66,6 +66,12 @@
private Map<ObjectName, RuntimeProcess> runtimeProcesses = new HashMap<ObjectName, RuntimeProcess>();
@Override
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ super.setProcessEngine(engine);
+ }
+
+ @Override
public void startProcess(Process proc, Attachments att)
{
// Prepare the process for start
@@ -157,7 +163,7 @@
throw new IllegalStateException("Cannot start process in state: " + procStatus);
// Register the process if needed
- ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessEngine engine = getProcessEngine();
ProcessService procService = engine.getService(ProcessService.class);
if (procService.getProcessByKey(proc.getKey()) == null)
procService.registerProcess(proc);
@@ -233,7 +239,7 @@
// Unregister the process if not done already
// this could happen when the Process never received a start signal
// and then we get here because of a ProcessTimeoutException
- ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessEngine engine = getProcessEngine();
ProcessService procService = engine.getService(ProcessService.class);
if (procService.getProcessByKey(proc.getKey()) != null)
procService.unregisterProcess(proc);
@@ -298,7 +304,7 @@
ProcessImpl procImpl = (ProcessImpl)rtProc.getProcess();
Process proc = rtProc.getProcess();
- ProcessEngine engine = ProcessEngine.getProcessEngine();
+ ProcessEngine engine = getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
ObjectName procID = proc.getKey();
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MessageServiceImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -24,6 +24,7 @@
// $Id$
import org.jbpm.api.client.MessageListener;
+import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Message;
import org.jbpm.api.service.MessageService;
@@ -36,6 +37,11 @@
* @author thomas.diesler(a)jboss.com
* @since 17-Sep-2008
*/
-public class MessageServiceImpl extends MessageService
+public class MessageServiceImpl extends MessageService implements MutableService
{
+ @Override
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ super.setProcessEngine(engine);
+ }
}
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -0,0 +1,38 @@
+/*
+ * 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.service;
+
+// $Id$
+
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.service.Service;
+
+/**
+ * A mutable service
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 18-Jun-2008
+ */
+public interface MutableService extends Service
+{
+ void setProcessEngine(ProcessEngine engine);
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/MutableService.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -36,6 +36,7 @@
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.classic.Session;
import org.jbpm.api.ProcessNotFoundException;
+import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
import org.jbpm.api.service.PersistenceService;
import org.jbpm.api.service.Service;
@@ -49,7 +50,7 @@
* @author thomas.diesler(a)jboss.com
* @since 17-Sep-2008
*/
-public class PersistenceServiceImpl extends PersistenceService
+public class PersistenceServiceImpl extends PersistenceService implements MutableService
{
// Provide logging
final Logger log = LoggerFactory.getLogger(PersistenceServiceImpl.class);
@@ -58,6 +59,12 @@
private SessionFactory sessionFactory;
private Set<String> annotatedClasses = new HashSet<String>();
+ @Override
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ super.setProcessEngine(engine);
+ }
+
public void setHibernateConfig(String hibernateConfig)
{
this.hibernateConfig = hibernateConfig;
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessBuilderServiceImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -23,6 +23,7 @@
// $Id$
+import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -34,11 +35,17 @@
* @author thomas.diesler(a)jboss.com
* @since 18-Jun-2008
*/
-public class ProcessBuilderServiceImpl extends ProcessBuilderService
+public class ProcessBuilderServiceImpl extends ProcessBuilderService implements MutableService
{
@Override
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ super.setProcessEngine(engine);
+ }
+
+ @Override
public ProcessBuilder getProcessBuilder()
{
- return new ProcessBuilderImpl();
+ return new ProcessBuilderImpl(getProcessEngine());
}
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -23,6 +23,7 @@
// $Id$
+import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.service.ProcessService;
/**
@@ -31,6 +32,11 @@
* @author thomas.diesler(a)jboss.com
* @since 18-Jun-2008
*/
-public class ProcessServiceImpl extends ProcessService
+public class ProcessServiceImpl extends ProcessService implements MutableService
{
+ @Override
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ super.setProcessEngine(engine);
+ }
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/SignalServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/SignalServiceImpl.java 2008-09-30 09:14:19 UTC (rev 2447)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/SignalServiceImpl.java 2008-09-30 10:39:06 UTC (rev 2448)
@@ -23,6 +23,7 @@
// $Id$
+import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.service.SignalService;
/**
@@ -31,6 +32,11 @@
* @author thomas.diesler(a)jboss.com
* @since 17-Sep-2008
*/
-public class SignalServiceImpl extends SignalService
+public class SignalServiceImpl extends SignalService implements MutableService
{
+ @Override
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ super.setProcessEngine(engine);
+ }
}
15 years, 7 months
JBoss JBPM SVN: r2447 - jbpm3/trunk/modules/core/src/main/resources.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-09-30 05:14:19 -0400 (Tue, 30 Sep 2008)
New Revision: 2447
Modified:
jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.mysql.xml
jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.postgresql.xml
Log:
Restore db connection to localhost
Modified: jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.mysql.xml
===================================================================
--- jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.mysql.xml 2008-09-30 08:31:42 UTC (rev 2446)
+++ jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.mysql.xml 2008-09-30 09:14:19 UTC (rev 2447)
@@ -4,8 +4,8 @@
<!-- JDBC connection properties (begin) -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="hibernate.connection.url">jdbc:mysql://dev02.qa.atl.jboss.com:3306/jbpm</property>
- <property name="hibernate.connection.username">jbpm</property>
- <property name="hibernate.connection.password">jbpm</property>
+ <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpmtest</property>
+ <property name="hibernate.connection.username">jbpmtest</property>
+ <property name="hibernate.connection.password"></property>
<property name="hibernate.query.substitutions">true 1, false 0</property>
<!-- JDBC connection properties (end) -->
Modified: jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.postgresql.xml
===================================================================
--- jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.postgresql.xml 2008-09-30 08:31:42 UTC (rev 2446)
+++ jbpm3/trunk/modules/core/src/main/resources/hibernate.properties.postgresql.xml 2008-09-30 09:14:19 UTC (rev 2447)
@@ -4,7 +4,7 @@
<!-- JDBC connection properties (begin) -->
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
- <property name="hibernate.connection.url">jdbc:postgresql://dev01.qa.atl.jboss.com:5432/jbpm</property>
- <property name="hibernate.connection.username">jbpm</property>
- <property name="hibernate.connection.password">jbpm</property>
+ <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/jbpmtest</property>
+ <property name="hibernate.connection.username">jbpmtest</property>
+ <property name="hibernate.connection.password"></property>
<!-- JDBC connection properties (end) -->
15 years, 7 months
JBoss JBPM SVN: r2446 - in jbpm3/trunk/modules/core/src: test/java/org/jbpm/graph/exe and 1 other directory.
by do-not-reply@jboss.org
Author: tom.baeyens(a)jboss.com
Date: 2008-09-30 04:31:42 -0400 (Tue, 30 Sep 2008)
New Revision: 2446
Modified:
jbpm3/trunk/modules/core/src/main/java/org/jbpm/AbstractJbpmTestCase.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/graph/exe/ProcessInstanceDbTest.java
Log:
cleanup ProcessInstanceDbTest: JBPM-1734
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/AbstractJbpmTestCase.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/AbstractJbpmTestCase.java 2008-09-30 08:24:31 UTC (rev 2445)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/AbstractJbpmTestCase.java 2008-09-30 08:31:42 UTC (rev 2446)
@@ -21,6 +21,7 @@
*/
package org.jbpm;
+import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
@@ -50,4 +51,18 @@
{
return getClass().getName() + "." + getName();
}
+
+ protected void runTest() throws Throwable {
+ try {
+ super.runTest();
+ } catch (AssertionFailedError e) {
+ log.error("");
+ log.error("ASSERTION FAILURE: "+e.getMessage());
+ log.error("");
+ throw e;
+ } catch (Throwable t) {
+ t.printStackTrace();
+ throw t;
+ }
+ }
}
Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/graph/exe/ProcessInstanceDbTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/graph/exe/ProcessInstanceDbTest.java 2008-09-30 08:24:31 UTC (rev 2445)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/graph/exe/ProcessInstanceDbTest.java 2008-09-30 08:31:42 UTC (rev 2446)
@@ -91,23 +91,19 @@
public void testProcessInstanceSuperProcessToken()
{
- if (true)
- {
- System.out.println("FIXME [JBPM-1734]: Cleanup ProcessInstanceDbTest");
- return;
- }
+ ProcessDefinition superProcessDefinition = new ProcessDefinition("super");
+ jbpmContext.deployProcessDefinition(superProcessDefinition);
- ProcessDefinition processDefinition = new ProcessDefinition("super");
- jbpmContext.deployProcessDefinition(processDefinition);
+ ProcessDefinition subProcessDefinition = new ProcessDefinition("sub");
+ jbpmContext.deployProcessDefinition(subProcessDefinition);
+
+ ProcessInstance superProcessInstance = new ProcessInstance(superProcessDefinition);
+ ProcessInstance processInstance = new ProcessInstance(subProcessDefinition);
try
{
-
- ProcessInstance superProcessInstance = new ProcessInstance(processDefinition);
Token superProcessToken = superProcessInstance.getRootToken();
- jbpmContext.deployProcessDefinition(processDefinition);
jbpmContext.save(superProcessInstance);
- ProcessInstance processInstance = new ProcessInstance();
processInstance.setSuperProcessToken(superProcessToken);
processInstance = saveAndReload(processInstance);
@@ -116,24 +112,23 @@
assertNotNull(superProcessToken);
superProcessInstance = superProcessToken.getProcessInstance();
assertNotNull(superProcessInstance);
- ProcessDefinition processDefinitionTwo = superProcessInstance.getProcessDefinition();
- assertEquals("super", processDefinitionTwo.getName());
+
+ ProcessDefinition processDefinition = superProcessInstance.getProcessDefinition();
+ assertEquals("super", processDefinition.getName());
}
finally
{
- jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
+ jbpmContext.getGraphSession().deleteProcessDefinition(subProcessDefinition.getId());
+ jbpmContext.getGraphSession().deleteProcessDefinition(superProcessDefinition.getId());
}
}
public void testProcessInstanceModuleInstances()
{
- if (true)
- {
- System.out.println("FIXME [JBPM-1734]: Cleanup ProcessInstanceDbTest");
- return;
- }
+ ProcessDefinition processDefinition = new ProcessDefinition("modinst");
+ jbpmContext.deployProcessDefinition(processDefinition);
- ProcessInstance processInstance = new ProcessInstance();
+ ProcessInstance processInstance = new ProcessInstance(processDefinition);
processInstance.addInstance(new ContextInstance());
processInstance.addInstance(new TaskMgmtInstance());
@@ -147,19 +142,16 @@
}
finally
{
- jbpmContext.getGraphSession().deleteProcessInstance(processInstance.getId());
+ jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
}
}
public void testProcessInstanceRuntimeActions()
{
- if (true)
- {
- System.out.println("FIXME [JBPM-1734]: Cleanup ProcessInstanceDbTest");
- return;
- }
-
- ProcessInstance processInstance = new ProcessInstance();
+ ProcessDefinition processDefinition = new ProcessDefinition("modinst");
+ jbpmContext.deployProcessDefinition(processDefinition);
+
+ ProcessInstance processInstance = new ProcessInstance(processDefinition);
processInstance.addRuntimeAction(new RuntimeAction());
processInstance.addRuntimeAction(new RuntimeAction());
processInstance.addRuntimeAction(new RuntimeAction());
@@ -173,7 +165,7 @@
}
finally
{
- jbpmContext.getGraphSession().deleteProcessInstance(processInstance.getId());
+ jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
}
}
}
15 years, 7 months