[jbpm-commits] JBoss JBPM SVN: r2468 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/client and 30 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Oct 2 16:44:53 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-10-02 16:44:53 -0400 (Thu, 02 Oct 2008)
New Revision: 2468
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessDefinition.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessStructure.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessBuilderTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessCatalog.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StructureDelegateImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessDefinitionServiceImpl.java
Removed:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/processbuilder/
Modified:
projects/spec/trunk/modules/api/.classpath
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/AbstractElement.java
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/Process.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/api/src/main/java/org/jbpm/api/service/DialectHandler.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/test/CTSTestCase.java
projects/spec/trunk/modules/cts/.classpath
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/exclusive/ExclusiveGatewaySplitTest.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/inclusive/InclusiveGatewaySplitTest.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/gateway/parallel/ParallelGatewaySplitTest.java
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
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/persistence/PersistenceServiceTest.java
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/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/exclusivechoice/ExclusiveChoiceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java
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/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/.classpath
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/ComplexGatewayImpl.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/ExclusiveGatewayImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/GatewayImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.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/ParallelGatewayImpl.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/ReceiveTaskImpl.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskImpl.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/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/MessageSender.java
projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RuntimeProcessImpl.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
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
projects/spec/trunk/modules/impl/src/main/resources/jbpm-cfg-beans.xml
Log:
Add notion of ProcessDefinition
Modified: projects/spec/trunk/modules/api/.classpath
===================================================================
--- projects/spec/trunk/modules/api/.classpath 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/.classpath 2008-10-02 20:44:53 UTC (rev 2468)
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/client/Deployment.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -32,12 +32,12 @@
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.service.DialectHandler;
import org.jbpm.api.service.DialectHandlerService;
import org.jbpm.api.service.ProcessService;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
/**
* A deployment, containing all information to create a process that will be deployed to the {@link ProcessService}
@@ -51,7 +51,7 @@
private static final long serialVersionUID = 1L;
private String procXML;
- private Process process;
+ private ProcessDefinition process;
public Deployment(String procXML)
{
@@ -77,12 +77,12 @@
procXML = strBuilder.toString();
}
- public Deployment(Process process)
+ public Deployment(ProcessDefinition procDef)
{
- this.process = process;
+ this.process = procDef;
}
- public Process getProcess(ProcessEngine engine)
+ public ProcessDefinition getProcessDefinition(ProcessEngine engine)
{
if (process == null)
{
@@ -95,7 +95,7 @@
if (dialectHandler == null)
throw new IllegalStateException("Cannot obtain DialectHandler for: " + nsURI);
- process = dialectHandler.createProcess(procXML);
+ process = dialectHandler.createProcessDefinition(procXML);
}
return process;
}
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/AbstractElement.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/AbstractElement.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/AbstractElement.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,8 @@
import javax.management.ObjectName;
+import org.jbpm.api.client.ProcessEngine;
+
/**
* The parrent of all Elements
*
@@ -39,4 +41,9 @@
* Get the ID of this element
*/
ObjectName getKey();
+
+ /**
+ * Get the associated ProcessEngine
+ */
+ ProcessEngine getProcessEngine();
}
\ No newline at end of file
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Node.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -37,10 +37,19 @@
*/
public interface Node extends AbstractElement, PropertySupport
{
- /** Get the associated Process */
+ /**
+ * Get the associated process definition
+ */
+ ProcessDefinition getProcessDefinition();
+
+ /**
+ * Get the associated process
+ */
Process getProcess();
- /** Get the unique name. */
+ /**
+ * Get the unique name.
+ */
String getName();
/**
@@ -49,12 +58,18 @@
*/
List<Assignment> getAssignments();
- /** Get the associated ExecutionHandler */
+ /**
+ * Get the associated ExecutionHandler
+ */
ExecutionHandler getExecutionHandler(boolean defaultHandler);
- /** Get the associated SignalHandler */
+ /**
+ * Get the associated SignalHandler
+ */
SignalHandler getSignalHandler(boolean defaultHandler);
- /** Get the associated FlowHandler */
+ /**
+ * Get the associated FlowHandler
+ */
FlowHandler getFlowHandler(boolean defaultHandler);
}
\ No newline at end of file
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Process.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -23,12 +23,8 @@
//$Id$
-import java.util.List;
-import java.util.Set;
-
import javax.management.ObjectName;
-import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.runtime.Attachments;
/**
@@ -37,7 +33,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface Process extends AbstractElement, PropertySupport
+public interface Process extends ProcessStructure
{
/**
* Defines the status a {@link Process} can be in
@@ -48,62 +44,16 @@
}
/**
- * Get the associated ProcessEngine
+ * Get the associated ProcessDefinition
*/
- ProcessEngine getProcessEngine();
+ ProcessDefinition getProcessDefinition();
/**
- * Get the unique name.
- */
- String getName();
-
- /**
* Get the process state
*/
ProcessStatus getProcessStatus();
-
- /**
- * Get the list of nodes
- */
- List<Node> getNodes();
/**
- * Get a list of nodes of a given type.
- */
- <T extends Node> List<T> getNodes(Class<T> clazz);
-
- /**
- * Get a node of a given type and name
- */
- <T extends Node> T getNode(Class<T> clazz, String name);
-
- /**
- * Get a node by name.
- * @return null if not found
- */
- 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 ====================================================================================================
-
- /**
* Start the process
*/
ObjectName startProcess();
@@ -114,18 +64,16 @@
ObjectName startProcess(Attachments att);
/**
- * All Tokens that are generated at the Start Event for that Process must eventually arrive at an End Event.
- * The Process will be in a running state until all Tokens are consumed.
- * <p/>
- * This method until the process ends without timeout.
+ * All Tokens that are generated at the Start Event for that Process must eventually arrive at an End Event. The
+ * Process will be in a running state until all Tokens are consumed. <p/> This method until the process ends without
+ * timeout.
*/
ProcessStatus waitForEnd();
-
+
/**
- * All Tokens that are generated at the Start Event for that Process must eventually arrive at an End Event.
- * The Process will be in a running state until all Tokens are consumed.
- * <p/>
- * This method until the process ends with a given timeout.
+ * All Tokens that are generated at the Start Event for that Process must eventually arrive at an End Event. The
+ * Process will be in a running state until all Tokens are consumed. <p/> This method until the process ends with a
+ * given timeout.
*/
ProcessStatus waitForEnd(long timeout);
}
\ No newline at end of file
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessDefinition.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessDefinition.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessDefinition.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -0,0 +1,39 @@
+/*
+ * 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$
+
+/**
+ * A ProcessDefinition defines the structure of an activity performed within a company or organization.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public interface ProcessDefinition extends ProcessStructure
+{
+ /**
+ * Create a new instance of this process definition
+ */
+ Process newInstance();
+
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessDefinition.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessStructure.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessStructure.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessStructure.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -0,0 +1,83 @@
+/*
+ * 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$
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * A ProcessStructure defines the structure of a Process
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public interface ProcessStructure extends AbstractElement, PropertySupport
+{
+ /**
+ * Get the unique name.
+ */
+ String getName();
+
+ /**
+ * Get the list of nodes
+ */
+ List<Node> getNodes();
+
+ /**
+ * Get a list of nodes of a given type.
+ */
+ <T extends Node> List<T> getNodes(Class<T> clazz);
+
+ /**
+ * Get a node of a given type and name
+ */
+ <T extends Node> T getNode(Class<T> clazz, String name);
+
+ /**
+ * Get a node by name.
+ *
+ * @return null if not found
+ */
+ 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);
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ProcessStructure.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/StartEvent.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -28,6 +28,9 @@
* the Flow of the Process, and thus, will not have any incoming Sequence Flow. A Start Event can have a Trigger that
* indicates how the Process starts: Message, Timer, Rule, Link, or Multiple.
*
+ * There MAY be multiple Start Events for a given Process level. Each Start Event is an independent event.
+ * That is, a Process Instance SHALL be generated when the Start Event is triggered.
+ *
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/builder/ProcessBuilder.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -26,6 +26,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Property;
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Event.EventDetailType;
@@ -50,12 +51,11 @@
ProcessBuilder addProcess(String name);
/**
- * Get the {@link Process}.
+ * Get the {@link ProcessDefinition}.
* <p/>
* This is the final call to the ProcessBuilder after all elements have been added.
- * The {@link Process} is initialized and put in state READY
*/
- Process getProcess();
+ ProcessDefinition getProcessDefinition();
/**
* Add a SequenceFlow with a given name
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/DialectHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/DialectHandler.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/DialectHandler.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -28,6 +28,7 @@
import java.net.URI;
import java.net.URL;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
/**
* The DialectHandler converts a supported dialect to the Process model.
@@ -48,13 +49,13 @@
* Create a {@link Process} from a descriptor.
* @param isInclude TODO
*/
- Process createProcess(String pXML);
+ ProcessDefinition createProcessDefinition(String pXML);
/**
* Create a {@link Process} from a descriptor URL.
* @param isInclude TODO
*/
- Process createProcess(URL pURL) throws IOException;
+ ProcessDefinition createProcessDefinition(URL pURL) throws IOException;
/**
* Marshall the process to the given writer
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ExecutionService.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -68,7 +68,7 @@
* @param start The StartEvent that triggers the process
* @param att The Attachments in the ExecutionContext
*/
- public abstract void startProcess(StartEvent start, Attachments att);
+ public abstract void startProcess(Process proc, StartEvent start, Attachments att);
/**
* All Tokens that are generated at the Start Event for that Process must eventually arrive at an End Event. The
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/MessageService.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -36,8 +36,8 @@
import org.jbpm.api.model.Event;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Node;
+import org.jbpm.api.model.Participant;
import org.jbpm.api.model.Process;
-import org.jbpm.api.model.Participant;
import org.jbpm.api.model.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -134,7 +134,7 @@
public void sendMessage(ObjectName procID, String targetName, Message msg)
{
ProcessService procService = ProcessService.locateProcessService();
- Process proc = procService.getProcessByKey(procID);
+ Process proc = procService.getProcess(procID);
if (proc == null)
throw new IllegalStateException("Cannot obtain registered process: " + procID);
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/PersistenceService.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -26,6 +26,7 @@
import javax.management.ObjectName;
import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Process;
/**
@@ -46,6 +47,21 @@
}
/**
+ * Save the ProcessDefinition to persistent storage
+ */
+ public abstract ObjectName saveProcessDefinition(ProcessDefinition procDef);
+
+ /**
+ * Load the ProcessDefinition from persistent storage
+ */
+ public abstract ProcessDefinition loadProcessDefinition(ObjectName procDefID);
+
+ /**
+ * Delete the ProcessDefinition from persistent storage
+ */
+ public abstract void deleteProcessDefinition(ProcessDefinition procDef);
+
+ /**
* Save the Process to persistent storage
*/
public abstract ObjectName saveProcess(Process proc);
@@ -53,11 +69,10 @@
/**
* Load the Process from persistent storage
*/
- public abstract Process loadProcess(ObjectName key);
+ public abstract Process loadProcess(ObjectName procID);
/**
* Delete the Process from persistent storage
*/
public abstract void deleteProcess(Process proc);
-
}
\ No newline at end of file
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -0,0 +1,162 @@
+/*
+ * 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 java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.client.Deployment;
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.ProcessDefinition;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The ProcessDefinitionService is the entry point to create, find and otherwise manage process definitions.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 25-Sep-2008
+ */
+public abstract class ProcessDefinitionService extends AbstractService
+{
+ // Provide logging
+ final static Logger log = LoggerFactory.getLogger(ProcessDefinitionService.class);
+
+ // The set of registered ProcessDefinitions
+ private Map<ObjectName, ProcessDefinition> procDefs = new HashMap<ObjectName, ProcessDefinition>();
+
+ // Hide public constructor
+ protected ProcessDefinitionService()
+ {
+ }
+
+ /**
+ * Locate the default ProcessDefinitionService
+ */
+ public static ProcessDefinitionService locateProcessDefinitionService()
+ {
+ ProcessEngine engine = ProcessEngine.getProcessEngine();
+ return engine.getService(ProcessDefinitionService.class);
+ }
+
+ /**
+ * Deploy a new ProcessDefinition to the ProcessDefinition service.
+ */
+ public ObjectName deploy(Deployment dep)
+ {
+ // Get the associated engine
+ ProcessEngine engine = getProcessEngine();
+
+ // Get the ProcessDefinition from the deployment
+ ProcessDefinition procDef = dep.getProcessDefinition(engine);
+ if (procDef == null)
+ throw new IllegalStateException("Cannot obtain ProcessDefinition from: " + dep);
+
+ ObjectName procDefID = registerProcessDefinition(procDef);
+ return procDefID;
+ }
+
+ /**
+ * Register a ProcessDefinition.
+ */
+ public ObjectName registerProcessDefinition(ProcessDefinition procDef)
+ {
+ if (getProcessDefinitionByName(procDef.getName()) != null)
+ throw new IllegalStateException("Process definition already registered: " + procDef);
+
+ log.debug("registerProcessDefinition: " + procDef);
+
+ // Save the ProcessDefinition through the PersistenceService
+ PersistenceService dbService = getProcessEngine().getService(PersistenceService.class);
+ ObjectName procDefID = dbService.saveProcessDefinition(procDef);
+
+ procDefs.put(procDefID, procDef);
+ return procDefID;
+ }
+
+ /**
+ * Unregister a ProcessDefinition.
+ */
+ public boolean unregisterProcessDefinition(ObjectName procDefID)
+ {
+ boolean removed = false;
+ ProcessDefinition procDef = procDefs.get(procDefID);
+ if (procDef != null)
+ {
+ log.debug("unregisterProcessDefinition: " + procDef);
+
+ ProcessEngine engine = getProcessEngine();
+
+ // Unregister the associated process instances
+ ProcessService procService = engine.getService(ProcessService.class);
+ for (ObjectName procID : procService.getProcesses(procDef.getName(), null))
+ procService.unregisterProcess(procID);
+
+ // Delete the ProcessDefinition through the PersistenceService
+ PersistenceService dbService = engine.getService(PersistenceService.class);
+ dbService.deleteProcessDefinition(procDef);
+
+ procDefs.remove(procDefID);
+ removed = true;
+ }
+ return removed;
+ }
+
+ /**
+ * Get a ProcessDefinition for a given id
+ */
+ public ProcessDefinition getProcessDefinition(ObjectName procDefID)
+ {
+ return procDefs.get(procDefID);
+ }
+
+ /**
+ * Get a ProcessDefinition for a given name
+ */
+ public ProcessDefinition getProcessDefinitionByName(String name)
+ {
+ ProcessDefinition procDef = null;
+ for (ProcessDefinition auxDef : procDefs.values())
+ {
+ if (auxDef.getName().equals(name))
+ {
+ procDef = auxDef;
+ break;
+ }
+ }
+ return procDef;
+ }
+
+ /**
+ * Get the set of registered ProcessDefinition names
+ */
+ public Set<ObjectName> getProcessDefinitions()
+ {
+ return Collections.unmodifiableSet(procDefs.keySet());
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -31,7 +31,6 @@
import javax.management.ObjectName;
-import org.jbpm.api.client.Deployment;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Process.ProcessStatus;
@@ -66,23 +65,6 @@
return engine.getService(ProcessService.class);
}
- /**
- * Deploy a new process to the process service.
- */
- public ObjectName deploy(Deployment dep)
- {
- // Get the associated engine
- ProcessEngine engine = getProcessEngine();
-
- // Get the process from the deployment
- Process proc = dep.getProcess(engine);
- if (proc == null)
- throw new IllegalStateException("Cannot obtain process from: " + dep);
-
- ObjectName procID = registerProcess(proc);
- return procID;
- }
-
/**
* Register a Process.
*/
@@ -101,10 +83,11 @@
/**
* Unregister a Process.
*/
- public boolean unregisterProcess(Process proc)
+ public boolean unregisterProcess(ObjectName procID)
{
boolean removed = false;
- if (registeredProcs.containsKey(proc.getKey()))
+ Process proc = registeredProcs.get(procID);
+ if (proc != null)
{
log.debug("unregisterProcess: " + proc);
@@ -112,27 +95,16 @@
PersistenceService dbService = getProcessEngine().getService(PersistenceService.class);
dbService.deleteProcess(proc);
- registeredProcs.remove(proc.getKey());
+ registeredProcs.remove(procID);
removed = true;
}
return removed;
}
/**
- * Unregister a set of Processes by name.
- */
- public void unregisterProcess(String procName)
- {
- log.debug("unregisterProcess: " + procName);
-
- for (Process proc : getProcesses(procName, null))
- unregisterProcess(proc);
- }
-
- /**
* Get a Process for a given id
*/
- public Process getProcessByKey(ObjectName procID)
+ public Process getProcess(ObjectName procID)
{
Process proc = registeredProcs.get(procID);
return proc;
@@ -141,10 +113,9 @@
/**
* Get the set of registered Processes
*/
- public Set<Process> getProcesses()
+ public Set<ObjectName> getProcesses()
{
- Set<Process> procSet = new HashSet<Process>(registeredProcs.values());
- return Collections.unmodifiableSet(procSet);
+ return Collections.unmodifiableSet(registeredProcs.keySet());
}
/**
@@ -154,15 +125,15 @@
* @param status The optional process status
* @return An empty set if the process cannot be found
*/
- public Set<Process> getProcesses(String name, ProcessStatus status)
+ public Set<ObjectName> getProcesses(String name, ProcessStatus status)
{
- Set<Process> procSet = new HashSet<Process>();
- for (Process aux : registeredProcs.values())
+ Set<ObjectName> procSet = new HashSet<ObjectName>();
+ for (Process auxProc : registeredProcs.values())
{
- if (aux.getName().equals(name))
+ if (auxProc.getName().equals(name))
{
- if (status == null || aux.getProcessStatus() == status)
- procSet.add(aux);
+ if (status == null || auxProc.getProcessStatus() == status)
+ procSet.add(auxProc.getKey());
}
}
return procSet;
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestCase.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -38,11 +38,11 @@
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Message;
-import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.builder.ObjectNameFactory;
import org.jbpm.api.service.MessageService;
-import org.jbpm.api.service.ProcessService;
+import org.jbpm.api.service.ProcessDefinitionService;
import org.jbpm.api.service.SignalService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -67,12 +67,20 @@
private MessageListener messageListener;
// The messages caught by this test case
private List<Message> messages = new ArrayList<Message>();
+ // Unregister this process definition on tearDown
+ private ProcessDefinition procDef;
protected ProcessEngine getProcessEngine()
{
return ProcessEngine.getProcessEngine();
}
+ protected ProcessDefinition unregisterOnTearDown(ProcessDefinition procDef)
+ {
+ this.procDef = procDef;
+ return procDef;
+ }
+
@Override
protected void setUp() throws Exception
{
@@ -109,9 +117,16 @@
MessageService msgService = engine.getService(MessageService.class);
msgService.removeMessageListener(getTestID());
+ // Auto unregister
+ ProcessDefinitionService procDefService = ProcessDefinitionService.locateProcessDefinitionService();
+ if (procDef != null)
+ {
+ procDefService.unregisterProcessDefinition(procDef.getKey());
+ procDef = null;
+ }
+
// Check that there are no registered processes left
- ProcessService procManager = engine.getService(ProcessService.class);
- Set<Process> procs = procManager.getProcesses();
+ Set<ObjectName> procs = procDefService.getProcessDefinitions();
if (procs.size() > 0)
{
String logMsg = "Registered processes on tear down of " + getName() + ": " + procs;
Modified: projects/spec/trunk/modules/cts/.classpath
===================================================================
--- projects/spec/trunk/modules/cts/.classpath 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/.classpath 2008-10-02 20:44:53 UTC (rev 2468)
@@ -2,7 +2,7 @@
<classpath>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/endevent/EndEventMessageTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -44,7 +45,8 @@
{
public void testStart() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Start the process
BasicAttachments att = new BasicAttachments();
@@ -59,7 +61,7 @@
assertEquals("the frog", endMessage.getProperty("kermit").getValue());
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("EndEventMessage").addStartEvent("Start");
@@ -67,7 +69,6 @@
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;
+ return procBuilder.getProcessDefinition();
}
}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewayMergeTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -28,6 +28,7 @@
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Event.EventDetailType;
@@ -54,7 +55,8 @@
{
public void testGateA() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
SignalService sigManager = SignalService.locateSignalService();
@@ -83,7 +85,8 @@
public void testGateB() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
SignalService sigManager = SignalService.locateSignalService();
@@ -112,7 +115,8 @@
public void testInvalidToken() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
SignalService sigManager = SignalService.locateSignalService();
@@ -164,7 +168,7 @@
assertEquals("TaskA", endMessage.getProperty("taskValue").getValue());
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", EventDetailType.Signal);
@@ -181,8 +185,7 @@
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;
+ return procBuilder.getProcessDefinition();
}
class MergeListener implements SignalListener
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/exclusive/ExclusiveGatewaySplitTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import java.util.List;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.Gateway.GatewayType;
@@ -47,7 +48,8 @@
{
public void testGateA() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "5");
@@ -61,7 +63,8 @@
public void testGateB() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "15");
@@ -75,7 +78,8 @@
public void testInvalidGate() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "10");
@@ -91,7 +95,7 @@
}
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
@@ -99,7 +103,6 @@
gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo > 10");
procBuilder.addEndEvent("EndA").addEndEvent("EndB");
- Process proc = procBuilder.getProcess();
- return proc;
+ return procBuilder.getProcessDefinition();
}
}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewayMergeTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -28,6 +28,7 @@
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Gateway.GatewayType;
@@ -49,7 +50,8 @@
{
public void testGateA() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
SignalService sigService = SignalService.locateSignalService();
@@ -74,7 +76,7 @@
assertEquals(2, endSignals.size());
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", EventDetailType.Signal);
@@ -83,8 +85,7 @@
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
procBuilder.addSequenceFlow("Merge").addGateway("Merge", GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
- Process proc = procBuilder.getProcess();
- return proc;
+ return procBuilder.getProcessDefinition();
}
class MergeListener implements SignalListener
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/inclusive/InclusiveGatewaySplitTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import java.util.List;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.Gateway.GatewayType;
@@ -47,7 +48,8 @@
{
public void testGateA() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "5");
@@ -60,7 +62,8 @@
public void testGateB() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "15");
@@ -72,7 +75,7 @@
assertEquals("EndB", endSignals.get(0).getFromRef().getKeyProperty("name"));
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("InclusiveGatewaySplitTest").addStartEvent("Start").addSequenceFlow("Split");
@@ -80,7 +83,6 @@
gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
procBuilder.addEndEvent("EndA").addEndEvent("EndB");
- Process proc = procBuilder.getProcess();
- return proc;
+ return procBuilder.getProcessDefinition();
}
}
\ No newline at end of file
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewayMergeTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -28,8 +28,11 @@
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
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.Gateway.GatewayType;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.EventBuilder;
@@ -52,7 +55,8 @@
{
public void testParallelMerge() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
SignalService sigManager = SignalService.locateSignalService();
@@ -81,7 +85,8 @@
public void testMergeTimeout() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Start the process and send start trigger signal
proc.startProcess();
@@ -102,7 +107,8 @@
public void testInvalidToken() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
SignalService sigManager = SignalService.locateSignalService();
@@ -154,25 +160,24 @@
assertEquals("TaskB", endMessage.getProperty("taskValueB").getValue());
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
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.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA");
taskBuilder.addSequenceFlow("Merge");
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.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB");
taskBuilder.addSequenceFlow("Merge");
procBuilder.addGateway("Merge", GatewayType.Parallel).addSequenceFlow("End");
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;
+ return procBuilder.getProcessDefinition();
}
public static class MergeListener implements SignalListener
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/gateway/parallel/ParallelGatewaySplitTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -29,6 +29,7 @@
import javax.management.ObjectName;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Gateway.GatewayType;
import org.jbpm.api.model.Signal.SignalType;
@@ -47,7 +48,9 @@
{
public void testParallelSplit() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
+
proc.startProcess();
proc.waitForEnd();
@@ -61,12 +64,11 @@
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndB"));
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("ParallelGatewaySplit").addStartEvent("Start").addSequenceFlow("Split");
procBuilder.addGateway("Split", GatewayType.Parallel).addSequenceFlow("EndA").addSequenceFlow("EndB");
- Process proc = procBuilder.addEndEvent("EndA").addEndEvent("EndB").getProcess();
- return proc;
+ return procBuilder.addEndEvent("EndA").addEndEvent("EndB").getProcessDefinition();
}
}
Modified: 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/NodeInputSetTest.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeInputSetTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -48,7 +49,8 @@
{
public void testValidProps() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("frog", "kermit");
@@ -62,7 +64,8 @@
public void testInvalidProps() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("pig", "piggy");
@@ -78,7 +81,7 @@
}
}
- protected Process getProcess() throws IOException
+ protected ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
@@ -87,7 +90,6 @@
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;
+ return procBuilder.getProcessDefinition();
}
}
Modified: 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/NodeOutputSetTest.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodeOutputSetTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -48,7 +49,8 @@
{
public void testValidProps() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
proc.startProcess();
proc.waitForEnd();
@@ -58,7 +60,7 @@
assertEquals("kermit", endMessage.getProperty("frog").getValue());
}
- protected Process getProcess() throws IOException
+ protected ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("ActivityInputSet").addStartEvent("Start").addSequenceFlow("TaskA");
@@ -67,7 +69,6 @@
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;
+ return procBuilder.getProcessDefinition();
}
}
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/node/NodePropertyTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Expression.ExpressionLanguage;
@@ -50,7 +51,9 @@
{
public void testActivityPropertyRead() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
+
proc.startProcess();
proc.waitForEnd();
@@ -59,7 +62,7 @@
assertEquals("bar", endMessage.getProperty("propValue").getValue());
}
- protected Process getProcess() throws IOException
+ protected ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("ActivityProperties").addStartEvent("Start").addSequenceFlow("TaskA");
@@ -69,7 +72,6 @@
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;
+ return procBuilder.getProcessDefinition();
}
}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/process/ProcessPropertyTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Expression.ExpressionLanguage;
@@ -55,7 +56,9 @@
*/
public void testProcessProperties() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
+
proc.startProcess();
proc.waitForEnd();
@@ -64,7 +67,7 @@
assertEquals("bar", endMessage.getProperty("propValue").getValue());
}
- protected Process getProcess() throws IOException
+ protected ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("ProcessProperties").addStartEvent("Start").addSequenceFlow("TaskA");
@@ -73,7 +76,6 @@
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;
+ return procBuilder.getProcessDefinition();
}
}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/persistence/PersistenceServiceTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -26,10 +26,14 @@
import javax.management.ObjectName;
import org.jbpm.api.ProcessNotFoundException;
+import org.jbpm.api.model.EndEvent;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.StartEvent;
+import org.jbpm.api.model.Task;
import org.jbpm.api.service.PersistenceService;
import org.jbpm.api.test.CTSTestCase;
-import org.jbpm.test.cts.service.processbuilder.ProcessCatalog;
+import org.jbpm.test.cts.service.process.ProcessCatalog;
/**
* Test the PersistenceService
@@ -40,21 +44,68 @@
public class PersistenceServiceTest extends CTSTestCase
{
/**
- * Test save, load, delete of a trivial process
+ * Test save, load, delete of a trivial ProcessDefinition
*/
- public void testSaveLoadDelete() throws Exception
+ public void testProcessDefinition() throws Exception
{
PersistenceService service = PersistenceService.locatePersistenceService();
- // Save the process
- Process proc = ProcessCatalog.getDefaultProcess();
+ // Save the ProcessDefinition
+ ProcessDefinition procDef = ProcessCatalog.getDefaultProcess();
+ service.saveProcessDefinition(procDef);
+
+ // Load the ProcessDefinition
+ ObjectName procDefID = procDef.getKey();
+ ProcessDefinition loadDef = service.loadProcessDefinition(procDefID);
+ ProcessCatalog.validateDefaultProcess(loadDef);
+
+ StartEvent start = loadDef.getNode(StartEvent.class, "Start");
+ Task task = loadDef.getNode(Task.class, "Task");
+ EndEvent end = loadDef.getNode(EndEvent.class, "End");
+
+ assertSame(loadDef, start.getProcessDefinition());
+ assertSame(loadDef, task.getProcessDefinition());
+ assertSame(loadDef, end.getProcessDefinition());
+
+ // Delete the ProcessDefinition
+ service.deleteProcessDefinition(procDef);
+ try
+ {
+ service.loadProcessDefinition(procDefID);
+ fail("ProcessNotFoundException expected");
+ }
+ catch (ProcessNotFoundException ex)
+ {
+ // expected
+ }
+ }
+
+ /**
+ * Test save, load, delete of a trivial Process
+ */
+ public void testProcess() throws Exception
+ {
+ PersistenceService service = PersistenceService.locatePersistenceService();
+
+ ProcessDefinition procDef = unregisterOnTearDown(ProcessCatalog.getDefaultProcess());
+ Process proc = procDef.newInstance();
+
+ // Save the Process
service.saveProcess(proc);
// Load the process
ObjectName procID = proc.getKey();
- Process procLoad = service.loadProcess(procID);
- ProcessCatalog.validateDefaultProcess(procLoad);
+ Process loadProc = service.loadProcess(procID);
+ ProcessCatalog.validateDefaultProcess(loadProc);
+ StartEvent start = loadProc.getNode(StartEvent.class, "Start");
+ Task task = loadProc.getNode(Task.class, "Task");
+ EndEvent end = loadProc.getNode(EndEvent.class, "End");
+
+ assertSame(loadProc, start.getProcess());
+ assertSame(loadProc, task.getProcess());
+ assertSame(loadProc, end.getProcess());
+
// Delete the process
service.deleteProcess(proc);
try
Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessBuilderTest.java (from rev 2450, 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/process/ProcessBuilderTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessBuilderTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -0,0 +1,172 @@
+/*
+ * 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.InvalidProcessException;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.builder.ProcessBuilder;
+import org.jbpm.api.model.builder.ProcessBuilderService;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * Test the ProcessBuilder
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 24-Sep-2008
+ */
+public class ProcessBuilderTest extends CTSTestCase
+{
+ public void testBasicProcess() throws Exception
+ {
+ ProcessDefinition procDef = ProcessCatalog.getDefaultProcess();
+ ProcessCatalog.validateDefaultProcess(procDef);
+ }
+
+ public void testNoProcessName() throws Exception
+ {
+ try
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess(null).addStartEvent("Start").addSequenceFlow("Task");
+ builder.addTask("Task").addSequenceFlow("End").addEndEvent("End");
+ builder.getProcessDefinition();
+ fail("Process name required");
+ }
+ catch (InvalidProcessException e)
+ {
+ // expected
+ }
+ }
+
+ public void testNoStartName() throws Exception
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess("Proc").addStartEvent(null).addSequenceFlow("Task");
+ builder.addTask("Task").addSequenceFlow("End").addEndEvent("End");
+ try
+ {
+ builder.getProcessDefinition();
+ fail("StartEvent name required");
+ }
+ catch (InvalidProcessException e)
+ {
+ // expected
+ }
+ }
+
+ public void testNoTaskName() throws Exception
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess("Proc").addStartEvent("Start").addSequenceFlow("Task");
+ builder.addTask(null).addSequenceFlow("End").addEndEvent("End");
+ try
+ {
+ builder.getProcessDefinition();
+ fail("Task name required");
+ }
+ catch (InvalidProcessException e)
+ {
+ // expected
+ }
+ }
+
+ public void testNoEndName() throws Exception
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess("Proc").addStartEvent("Start").addSequenceFlow("Task");
+ builder.addTask("Task").addSequenceFlow("End").addEndEvent(null);
+ try
+ {
+ builder.getProcessDefinition();
+ fail("EndEvent name required");
+ }
+ catch (InvalidProcessException e)
+ {
+ // expected
+ }
+ }
+
+ public void testNoStartEvent() throws Exception
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess("Proc").addTask("Task").addSequenceFlow("End").addEndEvent("End");
+ try
+ {
+ builder.getProcessDefinition();
+ fail("StartEvent required");
+ }
+ catch (InvalidProcessException e)
+ {
+ // expected
+ }
+ }
+
+ public void testNoEndEvent() throws Exception
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess("Proc").addStartEvent("Start").addSequenceFlow("Task");
+ builder.addTask("Task");
+ try
+ {
+ builder.getProcessDefinition();
+ fail("EndEvent required");
+ }
+ catch (InvalidProcessException e)
+ {
+ // expected
+ }
+ }
+
+ public void testUnreachableNode() throws Exception
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess("Proc").addStartEvent("Start").addSequenceFlow("Task1");
+ builder.addTask("Task1").addSequenceFlow("End").addTask("Task2").addSequenceFlow("End").addEndEvent("End");
+ try
+ {
+ builder.getProcessDefinition();
+ fail("Unreachable node Task2");
+ }
+ catch (InvalidProcessException e)
+ {
+ // expected
+ }
+ }
+
+ public void testDeadEndNode() throws Exception
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess("Proc").addStartEvent("Start").addSequenceFlow("Task");
+ builder.addTask("Task").addEndEvent("End");
+ try
+ {
+ builder.getProcessDefinition();
+ fail("Dead end Task");
+ }
+ catch (InvalidProcessException e)
+ {
+ // expected
+ }
+ }
+}
Copied: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessCatalog.java (from rev 2450, 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/process/ProcessCatalog.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessCatalog.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -0,0 +1,91 @@
+/*
+ * 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 junit.framework.TestCase;
+
+import org.jbpm.api.model.EndEvent;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.ProcessStructure;
+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 at jboss.com
+ * @since 24-Sep-2008
+ */
+public abstract class ProcessCatalog
+{
+ public static ProcessDefinition getDefaultProcess()
+ {
+ ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
+ builder.addProcess("Proc").addProcessProperty("proP1", "valP1").addProcessProperty("proP2", "valP2");
+ builder.addStartEvent("Start").addSequenceFlow("Task");
+ builder.addTask("Task").addNodeProperty("proT1", "valT1").addNodeProperty("proT2", "valT2");
+ builder.addSequenceFlow("End").addEndEvent("End");
+ return builder.getProcessDefinition();
+ }
+
+ public static void validateDefaultProcess(ProcessStructure procStruct)
+ {
+ TestCase.assertNotNull("Process not null", procStruct);
+ TestCase.assertEquals("Proc", procStruct.getName());
+
+ TestCase.assertEquals("Two proc props", 2, procStruct.getPropertyNames().size());
+ TestCase.assertEquals("valP1", procStruct.getProperty("proP1").getValue());
+ TestCase.assertEquals("valP2", procStruct.getProperty("proP2").getValue());
+
+ StartEvent start = (StartEvent)procStruct.getNode("Start");
+ Task task = (Task)procStruct.getNode("Task");
+ EndEvent end = (EndEvent)procStruct.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.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());
+
+ 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());
+ }
+}
Added: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -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.test.cts.service.process;
+
+// $Id$
+
+import java.util.Set;
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.service.ProcessDefinitionService;
+import org.jbpm.api.service.ProcessService;
+import org.jbpm.api.test.CTSTestCase;
+
+/**
+ * Test the ProcessDefinition
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 24-Sep-2008
+ */
+public class ProcessDefinitionTest extends CTSTestCase
+{
+ public void testBasicProcess() throws Exception
+ {
+ ProcessDefinition procDef = ProcessCatalog.getDefaultProcess();
+ ProcessCatalog.validateDefaultProcess(procDef);
+
+ ProcessEngine engine = procDef.getProcessEngine();
+ assertNotNull("Process engine not null", engine);
+
+ ProcessDefinitionService procDefService = engine.getService(ProcessDefinitionService.class);
+ ProcessService procService = engine.getService(ProcessService.class);
+
+ Set<ObjectName> procDefs = procDefService.getProcessDefinitions();
+ assertEquals("ProcessDefinition not automatically registered", 0, procDefs.size());
+
+ try
+ {
+ Process proc = procDef.newInstance();
+ assertNotNull("Process not null", proc);
+
+ assertNotNull("Process registered", procService.getProcess(proc.getKey()));
+ assertNotNull("ProcessDefinition registered", procDefService.getProcessDefinition(procDef.getKey()));
+ }
+ finally
+ {
+ procDefService.unregisterProcessDefinition(procDef.getKey());
+ }
+ }
+}
Property changes on: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: 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 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessServiceTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -25,6 +25,7 @@
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -43,9 +44,10 @@
{
public void testStartProcess() throws Exception
{
- final Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ final Process proc = procDef.newInstance();
final ProcessService procService = ProcessService.locateProcessService();
- assertNull("Process not registered automatically", procService.getProcessByKey(proc.getKey()));
+ assertNull("Process not registered automatically", procService.getProcess(proc.getKey()));
SignalListener sigListener = new SignalListener()
{
@@ -56,7 +58,7 @@
public void catchSignal(Signal signal)
{
- assertNotNull(procService.getProcessByKey(proc.getKey()));
+ assertNotNull(procService.getProcess(proc.getKey()));
}
};
SignalService sigManager = SignalService.locateSignalService();
@@ -73,14 +75,13 @@
sigManager.removeSignalListener(sigListener);
}
- assertNull("Process is removed", procService.getProcessByKey(proc.getKey()));
+ assertNull("Process is removed", procService.getProcess(proc.getKey()));
}
- private Process getProcess()
+ private ProcessDefinition getProcessDefinition()
{
ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
builder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("taskA");
- Process proc = builder.addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcess();
- return proc;
+ return builder.addTask("taskA").addSequenceFlow("end").addEndEvent("end").getProcessDefinition();
}
}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/startevent/StartEventSignalTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -29,6 +29,7 @@
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Event.EventDetailType;
@@ -52,10 +53,12 @@
{
public void testStart() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
- // Start the process and send start trigger signal
proc.startProcess();
+
+ // Send start trigger signal
SignalService sigService = SignalService.locateSignalService();
sigService.throwSignal(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
@@ -69,7 +72,8 @@
public void testRestart() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Start the process and send start trigger signal
proc.startProcess();
@@ -97,7 +101,8 @@
public void testRestartBeforeEnd() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
TaskListener sigListener = new TaskListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A"));
@@ -126,7 +131,7 @@
assertEquals("TaskA", messages.get(0).getProperty("taskValue").getValue());
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess("StartEventSignal").addStartEvent("StartA", EventDetailType.Signal);
@@ -137,8 +142,7 @@
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;
+ return procBuilder.getProcessDefinition();
}
public static class TaskListener implements SignalListener
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/ReceiveTaskTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -31,6 +31,7 @@
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Signal.SignalType;
@@ -41,6 +42,7 @@
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
import org.jbpm.api.service.MessageService;
+import org.jbpm.api.service.ProcessDefinitionService;
import org.jbpm.api.service.ProcessService;
import org.jbpm.api.service.SignalService;
import org.jbpm.api.test.CTSTestCase;
@@ -60,7 +62,7 @@
procBuilder.addTask("TaskA", TaskType.Receive).addSequenceFlow("End").addEndEvent("End");
try
{
- procBuilder.getProcess();
+ procBuilder.getProcessDefinition();
fail("A Message for the MessageRef attribute MUST be entered");
}
catch (InvalidProcessException ex)
@@ -71,7 +73,8 @@
public void testUnregisteredProcess() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
MessageService msgManager = MessageService.locateMessageService();
try
@@ -87,9 +90,12 @@
public void testSuspendedMessage() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinitionService procDefService = ProcessDefinitionService.locateProcessDefinitionService();
ProcessService procService = ProcessService.locateProcessService();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
+
ObjectName procID = procService.registerProcess(proc);
try
{
@@ -102,7 +108,7 @@
}
finally
{
- procService.unregisterProcess(proc);
+ procDefService.unregisterProcessDefinition(procDef.getKey());
}
Message endMsg = getMessages().get(0);
@@ -112,7 +118,8 @@
public void testSuspendedToken() throws Exception
{
- final Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ final Process proc = procDef.newInstance();
SignalListener sigListener = new SignalListener()
{
private boolean sendMessage = true;
@@ -158,7 +165,7 @@
return msg;
}
- protected Process getProcess() throws IOException
+ protected ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("ReceiveTaskTest");
@@ -168,6 +175,6 @@
procBuilder.addTask("TaskA", TaskType.Receive).addMessageRef("ReceiveTaskMessage");
EventBuilder eventBuilder = procBuilder.addSequenceFlow("End").addEndEvent("End", EventDetailType.Message);
eventBuilder.addMessageRef("EndEventMessage");
- return procBuilder.getProcess();
+ return procBuilder.getProcessDefinition();
}
}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/SendTaskTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -29,6 +29,7 @@
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Task.TaskType;
import org.jbpm.api.model.builder.MessageBuilder;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -46,7 +47,8 @@
{
public void testSendTask() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "bar");
@@ -65,7 +67,7 @@
procBuilder.addTask("TaskA", TaskType.Send).addSequenceFlow("End").addEndEvent("End");
try
{
- procBuilder.getProcess();
+ procBuilder.getProcessDefinition();
fail("A Message for the MessageRef attribute MUST be entered");
}
catch (InvalidProcessException ex)
@@ -74,7 +76,7 @@
}
}
- protected Process getProcess() throws IOException
+ protected ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
MessageBuilder msgBuilder = procBuilder.addProcess("SendTaskTest").addProcessMessage("SendTaskMessage");
@@ -82,7 +84,6 @@
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
procBuilder.addTask("TaskA", TaskType.Send).addMessageRef("SendTaskMessage");
procBuilder.addSequenceFlow("End").addEndEvent("End");
- Process proc = procBuilder.getProcess();
- return proc;
+ return procBuilder.getProcessDefinition();
}
}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/task/TaskExecutionHandlerTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -25,8 +25,9 @@
import java.io.IOException;
-import org.jbpm.api.model.Assignment;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.model.builder.ProcessBuilderService;
@@ -47,7 +48,9 @@
{
public void testExecutionHandler() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
+
proc.startProcess();
proc.waitForEnd();
@@ -57,17 +60,17 @@
assertEquals(Boolean.TRUE, TaskExecutionHandler.taskAssign);
}
- protected Process getProcess() throws IOException
+ protected ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("TaskExecutionHandlerTest").addProcessProperty("procProp", "kermit");
- procBuilder.addProcessAssignment(Assignment.AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_procProp == 'kermit'", "procAssign");
+ procBuilder.addProcessAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_procProp == 'kermit'", "procAssign");
procBuilder.addStartEvent("Start").addSequenceFlow("TaskA");
TaskBuilder taskBuilder = procBuilder.addTask("TaskA");
taskBuilder.addNodeProperty("taskProp", "piggy").addExecutionHandler(TaskExecutionHandler.class).addSequenceFlow("End");
- taskBuilder.addNodeAssignment(Assignment.AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_TaskA_taskProp == 'piggy'", "taskAssign");
+ taskBuilder.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "TaskExecutionHandlerTest_TaskA_taskProp == 'piggy'", "taskAssign");
procBuilder.addEndEvent("End");
- return procBuilder.getProcess();
+ return procBuilder.getProcessDefinition();
}
@SuppressWarnings("serial")
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/exclusivechoice/ExclusiveChoiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/exclusivechoice/ExclusiveChoiceTest.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/exclusivechoice/ExclusiveChoiceTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -28,6 +28,7 @@
import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.GatewayBuilder;
@@ -47,7 +48,8 @@
{
public void testGateA() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "5");
@@ -61,7 +63,8 @@
public void testGateB() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "15");
@@ -75,7 +78,8 @@
public void testInvalidGate() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "10");
@@ -91,7 +95,7 @@
}
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split");
@@ -99,7 +103,6 @@
gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo > 10");
procBuilder.addEndEvent("EndA").addEndEvent("EndB");
- Process proc = procBuilder.getProcess();
- return proc;
+ return procBuilder.getProcessDefinition();
}
}
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/multichoice/MultiChoiceTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -28,6 +28,7 @@
import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.builder.GatewayBuilder;
@@ -47,7 +48,8 @@
{
public void testGateA() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "5");
@@ -60,7 +62,8 @@
public void testGateB() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
BasicAttachments att = new BasicAttachments();
att.addAttachment("foo", "15");
@@ -72,7 +75,7 @@
assertEquals("EndB", endSignals.get(0).getFromRef().getKeyProperty("name"));
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("MultiChoiceTest").addStartEvent("Start").addSequenceFlow("Split");
@@ -80,7 +83,6 @@
gatewayBuilder.addConditionalGate("EndA", ExpressionLanguage.MVEL, "foo < 10");
gatewayBuilder.addConditionalGate("EndB", ExpressionLanguage.MVEL, "foo < 20");
procBuilder.addEndEvent("EndA").addEndEvent("EndB");
- Process proc = procBuilder.getProcess();
- return proc;
+ return procBuilder.getProcessDefinition();
}
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/parallelsplit/ParallelSplitTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -30,6 +30,7 @@
import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Signal.SignalType;
import org.jbpm.api.model.builder.ProcessBuilder;
@@ -47,7 +48,9 @@
{
public void testParallelSplit() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
+
proc.startProcess();
proc.waitForEnd();
@@ -61,11 +64,11 @@
assertTrue("Unexpected from refs: " + fromRefs, fromRefs.contains("EndB"));
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
- Process proc = procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split").addGateway("Split", Gateway.GatewayType.Parallel).
- addSequenceFlow("EndA").addSequenceFlow("EndB").addEndEvent("EndA").addEndEvent("EndB").getProcess();
- return proc;
+ procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Split").addGateway("Split", Gateway.GatewayType.Parallel).
+ addSequenceFlow("EndA").addSequenceFlow("EndB").addEndEvent("EndA").addEndEvent("EndB");
+ return procBuilder.getProcessDefinition();
}
}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequenceTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,13 +27,13 @@
import java.util.List;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
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.test.CTSTestCase;
-
/**
* Test the basic execution sequence
*
@@ -44,8 +44,10 @@
{
public void testSequence() throws Exception
{
- Process proc = getProcess();
-
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+
+ Process proc = procDef.newInstance();
+
// Start the Process
proc.startProcess();
proc.waitForEnd();
@@ -62,12 +64,11 @@
assertEquals(SignalType.SYSTEM_PROCESS_EXIT, signals.get(7).getSignalType());
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder builder = ProcessBuilderService.locateProcessBuilder();
builder.addProcess("Proc").addStartEvent("Start").addSequenceFlow("Task");
builder.addTask("Task").addSequenceFlow("End").addEndEvent("End");
- Process proc = builder.getProcess();
- return proc;
+ return builder.getProcessDefinition();
}
}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/simplemerge/SimpleMergeTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -29,6 +29,7 @@
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Signal.SignalType;
@@ -49,10 +50,11 @@
{
public void testSimpleMerge() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
- MergeListener sigListener = new MergeListener(proc.getName(), new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
+ MergeListener sigListener = new MergeListener(procDef.getName(), new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
SignalService sigManager = SignalService.locateSignalService();
sigManager.addSignalListener(sigListener);
@@ -74,7 +76,7 @@
assertEquals(2, endSignals.size());
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
EventBuilder eventBuilder = procBuilder.addProcess(getName()).addStartEvent("StartA", EventDetailType.Signal);
@@ -83,8 +85,7 @@
eventBuilder.addSignalRef(SignalType.SYSTEM_START_TRIGGER, "B");
procBuilder.addSequenceFlow("Merge").addGateway("Merge", Gateway.GatewayType.Inclusive).addSequenceFlow("End");
procBuilder.addEndEvent("End");
- Process proc = procBuilder.getProcess();
- return proc;
+ return procBuilder.getProcessDefinition();
}
class MergeListener implements SignalListener
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/synchronization/SynchronizationTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -29,8 +29,11 @@
import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
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;
@@ -52,7 +55,8 @@
{
public void testParallelMerge() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
MergeListener sigListener = new MergeListener(new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "B"));
@@ -81,7 +85,8 @@
public void testMergeTimeout() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Start the process and send start trigger signal
proc.startProcess();
@@ -102,7 +107,8 @@
public void testInvalidToken() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
// Add a signal listener that sends the other start trigger signal
Signal startTrigger = new Signal(getTestID(), SignalType.SYSTEM_START_TRIGGER, "A");
@@ -156,25 +162,24 @@
assertEquals("TaskB", endMessage.getProperty("taskValueB").getValue());
}
- public Process getProcess() throws IOException
+ public ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
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.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskA'", "taskValueA");
taskBuilder.addSequenceFlow("Merge");
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.addNodeAssignment(AssignTime.Start, ExpressionLanguage.MVEL, "'TaskB'", "taskValueB");
taskBuilder.addSequenceFlow("Merge");
procBuilder.addGateway("Merge", Gateway.GatewayType.Parallel).addSequenceFlow("End");
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;
+ return procBuilder.getProcessDefinition();
}
public static class MergeListener implements SignalListener
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/casedata/CaseDataTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Expression.ExpressionLanguage;
@@ -48,7 +49,9 @@
{
public void testCaseProperties() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
+
proc.startProcess();
proc.waitForEnd();
@@ -57,7 +60,7 @@
assertEquals("bar", endMessage.getProperty("propValue").getValue());
}
- protected Process getProcess() throws IOException
+ protected ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("CaseData");
@@ -67,7 +70,6 @@
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;
+ return procBuilder.getProcessDefinition();
}
}
\ No newline at end of file
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/data/taskdata/TaskDataTest.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Expression.ExpressionLanguage;
@@ -49,7 +50,9 @@
{
public void testTaskDataRead() throws Exception
{
- Process proc = getProcess();
+ ProcessDefinition procDef = unregisterOnTearDown(getProcessDefinition());
+ Process proc = procDef.newInstance();
+
proc.startProcess();
proc.waitForEnd();
@@ -58,7 +61,7 @@
assertEquals("bar", endMessage.getProperty("foo").getValue());
}
- protected Process getProcess() throws IOException
+ protected ProcessDefinition getProcessDefinition() throws IOException
{
ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess("TaskData").addStartEvent("Start").addSequenceFlow("TaskA");
@@ -68,7 +71,6 @@
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;
+ return procBuilder.getProcessDefinition();
}
}
Modified: projects/spec/trunk/modules/impl/.classpath
===================================================================
--- projects/spec/trunk/modules/impl/.classpath 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/.classpath 2008-10-02 20:44:53 UTC (rev 2468)
@@ -4,7 +4,7 @@
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/AbstractElementImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -24,12 +24,15 @@
//$Id$
import javax.management.ObjectName;
+import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+import org.jbpm.api.InvalidProcessException;
+import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.AbstractElement;
-import org.jbpm.api.model.Process;
/**
* The parrent of all Elements
@@ -45,45 +48,36 @@
@Id @GeneratedValue
protected Integer id;
- protected Integer getId()
+ @Column
+ private String engineName;
+
+ protected AbstractElementImpl(ProcessEngine engine)
{
- return id;
+ if (engine == null)
+ throw new InvalidProcessException("Process engine cannot be null");
+
+ this.engineName = engine.getName();
}
- /**
- * Get the key for this element
- */
- public abstract ObjectName getKey();
-
- /**
- * Called when the process is created
- */
- protected void create(Process proc)
+ // Persistence ctor
+ protected AbstractElementImpl()
{
- // nothing to do
}
- /**
- * Called when the process is registered
- */
- protected void register(Process proc)
+ protected Integer getId()
{
- // nothing to do
+ return id;
}
/**
- * Called when the process is unregistered
+ * Get the key for this element
*/
- protected void unregister(Process proc)
- {
- // nothing to do
- }
+ public abstract ObjectName getKey();
- /**
- * Called when the process is destroyed
- */
- protected void destroy(Process proc)
+ @Override
+ @Transient
+ public ProcessEngine getProcessEngine()
{
- // nothing to do
+ return ProcessEngine.getProcessEngine(engineName);
}
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ComplexGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ComplexGatewayImpl.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ComplexGatewayImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -27,6 +27,7 @@
import org.jbpm.api.NotImplementedException;
import org.jbpm.api.model.Expression;
+import org.jbpm.api.model.ProcessStructure;
/**
* A Complex Gateway handles situations that are not easily handled through the other types of Gateways. Complex
@@ -41,9 +42,9 @@
{
private static final long serialVersionUID = 1L;
- public ComplexGatewayImpl(String name)
+ public ComplexGatewayImpl(ProcessStructure procStruct, String name)
{
- super(name, GatewayType.Complex);
+ super(procStruct, name, GatewayType.Complex);
}
public GatewayType getGatewayType()
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EndEventImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -32,6 +32,7 @@
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.EndEvent;
import org.jbpm.api.model.Node;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.builder.ObjectNameFactory;
@@ -63,9 +64,9 @@
// provide logging
final static Logger log = LoggerFactory.getLogger(EndEventImpl.class);
- public EndEventImpl(String name)
+ public EndEventImpl(ProcessStructure procStruct, String name)
{
- super(name);
+ super(procStruct, name);
this.eventType = EventType.End;
}
@@ -116,7 +117,7 @@
{
private static final long serialVersionUID = 1L;
- ProcessEngine engine = getProcess().getProcessEngine();
+ ProcessEngine engine = getProcessDefinition().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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/EventImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -35,7 +35,7 @@
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.ProcessStructure;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.builder.ObjectNameFactory;
import org.jbpm.api.runtime.ExecutionHandler;
@@ -67,9 +67,9 @@
@Transient
private Signal signalRef;
- public EventImpl(String name)
+ public EventImpl(ProcessStructure procStruct, String name)
{
- super(name);
+ super(procStruct, name);
this.eventType = EventType.Intermediate;
}
@@ -153,7 +153,7 @@
{
private static final long serialVersionUID = 1L;
- ProcessEngine engine = getProcess().getProcessEngine();
+ ProcessEngine engine = getProcessDefinition().getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
public void throwEnterSignal(Token token)
{
@@ -181,9 +181,9 @@
}
@Override
- protected void create(Process proc)
+ protected void initialize(ProcessStructure procStruct)
{
- super.create(proc);
+ super.initialize(procStruct);
if (detailType == EventDetailType.Signal && signalRef == null)
throw new InvalidProcessException("Event with detail type 'Signal' must have a signalRef");
@@ -197,8 +197,8 @@
if (messageRef != null)
{
- ProcessImpl procImpl = (ProcessImpl)proc;
- procImpl.initializeMessageRef(messageRef);
+ ProcessStructureImpl procStructImpl = (ProcessStructureImpl)procStruct;
+ procStructImpl.initializeMessageRef(messageRef);
}
}
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -31,6 +31,7 @@
import org.jbpm.api.model.Expression;
import org.jbpm.api.model.Node;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.SequenceFlow.ConditionType;
import org.jbpm.api.runtime.ExecutionHandler;
@@ -60,9 +61,9 @@
@Transient
private Set<SequenceFlow> outstandingFlows;
- public ExclusiveGatewayImpl(String name)
+ public ExclusiveGatewayImpl(ProcessStructure procStruct, String name)
{
- super(name, GatewayType.Exclusive);
+ super(procStruct, name, GatewayType.Exclusive);
}
@Override
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/GatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/GatewayImpl.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/GatewayImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -37,6 +37,7 @@
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Gateway;
import org.jbpm.api.model.Node;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.SequenceFlow.ConditionType;
@@ -72,9 +73,9 @@
@Transient
protected List<Token> receivedTokens;
- public GatewayImpl(String name, GatewayType gatewayType)
+ public GatewayImpl(ProcessStructure procStruct, String name, GatewayType gatewayType)
{
- super(name);
+ super(procStruct, name);
this.gatewayType = gatewayType;
}
@@ -199,7 +200,7 @@
{
private static final long serialVersionUID = 1L;
- ProcessEngine engine = getProcess().getProcessEngine();
+ ProcessEngine engine = getProcessDefinition().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/InclusiveGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -33,6 +33,7 @@
import org.jbpm.api.model.Expression;
import org.jbpm.api.model.Expression.ExpressionLanguage;
import org.jbpm.api.model.Node;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.SequenceFlow.ConditionType;
import org.jbpm.api.runtime.ExecutionContext;
@@ -60,9 +61,9 @@
// provide logging
final static Logger log = LoggerFactory.getLogger(InclusiveGatewayImpl.class);
- public InclusiveGatewayImpl(String name)
+ public InclusiveGatewayImpl(ProcessStructure procStruct, String name)
{
- super(name, GatewayType.Inclusive);
+ super(procStruct, name, GatewayType.Inclusive);
}
@Override
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -46,6 +46,8 @@
import org.jbpm.api.model.EndEvent;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.model.Property;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.StartEvent;
@@ -80,8 +82,8 @@
@Basic
private String name;
- @ManyToOne(targetEntity = ProcessImpl.class)
- private Process process;
+ @ManyToOne(targetEntity = ProcessStructureImpl.class)
+ private ProcessStructure procStruct;
@Basic
private int nodeIndex;
@@ -115,8 +117,15 @@
private transient FlowHandler customFlowHandler;
private transient FlowHandler defaultFlowHandler;
- public NodeImpl(String name)
+ @ManyToOne(targetEntity = ProcessDefinitionImpl.class)
+ private ProcessDefinition procDef;
+
+ @ManyToOne(targetEntity = ProcessImpl.class)
+ private Process proc;
+
+ public NodeImpl(ProcessStructure procStruct, String name)
{
+ this.procStruct = procStruct;
this.name = name;
}
@@ -125,11 +134,28 @@
{
}
+ @Override
+ public ProcessDefinition getProcessDefinition()
+ {
+ return procDef;
+ }
+
+ void setProcessDefinition(ProcessDefinition procDef)
+ {
+ this.procDef = procDef;
+ }
+
+ @Override
public Process getProcess()
{
- return process;
+ return proc;
}
+ void setProcess(Process process)
+ {
+ this.proc = process;
+ }
+
public int getNodeIndex()
{
return nodeIndex;
@@ -332,20 +358,14 @@
return handler;
}
- @Override
- protected void create(Process proc)
+ protected void initialize(ProcessStructure procStruct)
{
- super.create(proc);
-
- // Set the associated process
- this.process = proc;
-
// Check required name
if (name == null)
throw new InvalidProcessException("Name is required for: " + this);
// Check name uniqueness
- for (Node aux : proc.getNodes())
+ for (Node aux : procStruct.getNodes())
{
String auxName = aux.getName();
if (aux != this && name.equals(auxName))
@@ -358,7 +378,7 @@
{
SingleOutFlowSupport sof = (SingleOutFlowSupport)this;
outFlow = sof.getOutFlow();
- initFlow(proc, (SequenceFlowImpl)outFlow);
+ initFlow((SequenceFlowImpl)outFlow);
}
else if (this instanceof MultipleOutFlowSupport)
{
@@ -366,7 +386,7 @@
for (SequenceFlow flow : mof.getOutFlows())
{
outFlow = flow;
- initFlow(proc, (SequenceFlowImpl)outFlow);
+ initFlow((SequenceFlowImpl)outFlow);
}
}
@@ -392,12 +412,17 @@
throw new InvalidProcessException("Dead end node: " + this);
}
- private void initFlow(Process proc, SequenceFlowImpl flow)
+ protected void instantiate(Process proc)
{
+ // noting to do
+ }
+
+ private void initFlow(SequenceFlowImpl flow)
+ {
if (flow != null)
{
String name = flow.getTargetName();
- Node target = proc.getNode(name);
+ Node target = procStruct.getNode(name);
if (target == null)
throw new InvalidProcessException("Cannot find target for out flow: " + name);
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -32,6 +32,7 @@
import javax.persistence.Transient;
import org.jbpm.api.model.Node;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.FlowHandler;
@@ -62,9 +63,9 @@
@Transient
private Set<Token> mergeTokens;
- public ParallelGatewayImpl(String name)
+ public ParallelGatewayImpl(ProcessStructure procStruct, String name)
{
- super(name, GatewayType.Parallel);
+ super(procStruct, name, GatewayType.Parallel);
}
@Override
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -0,0 +1,112 @@
+/*
+ * 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.Entity;
+import javax.persistence.Transient;
+
+import org.jbpm.api.Constants;
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.ProcessStructure;
+import org.jbpm.api.model.Property;
+import org.jbpm.api.model.builder.ObjectNameFactory;
+import org.jbpm.api.service.ProcessDefinitionService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A process definition
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at Entity(name = "ProcessDefinition")
+public class ProcessDefinitionImpl extends StructureDelegateImpl implements ProcessDefinition
+{
+ private static final long serialVersionUID = 1L;
+
+ // provide logging
+ final static Logger log = LoggerFactory.getLogger(ProcessDefinitionImpl.class);
+
+ public ProcessDefinitionImpl(ProcessEngine engine, ProcessStructure procStruct)
+ {
+ super(engine, procStruct);
+ for (Node node : procStruct.getNodes())
+ {
+ NodeImpl nodeImpl = (NodeImpl)node;
+ nodeImpl.setProcessDefinition(this);
+ }
+ }
+
+ // Persistence ctor
+ protected ProcessDefinitionImpl()
+ {
+ }
+
+ @Override
+ public Process newInstance()
+ {
+ // Register the process definition if needed
+ ProcessDefinitionService procDefService = getProcessEngine().getService(ProcessDefinitionService.class);
+ if (procDefService.getProcessDefinitionByName(getName()) == null)
+ procDefService.registerProcessDefinition(this);
+
+ ProcessStructureImpl procStructImpl = (ProcessStructureImpl)procStruct;
+ ProcessStructure newProcStruct = procStructImpl.newInstance();
+ ProcessImpl procImpl = new ProcessImpl(getProcessEngine(), this, newProcStruct);
+
+ return procImpl;
+ }
+
+ @Override
+ @Transient
+ public ObjectName getKey()
+ {
+ StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
+ str.append("type=ProcessDefinition,name=" + getName() + ",id=" + getId());
+ ObjectName oname = ObjectNameFactory.create(str.toString());
+ return oname;
+ }
+
+ @Override
+ public void addProperty(Property prop)
+ {
+ throw new IllegalStateException("Cannot add a property to a process definition");
+ }
+
+ @Override
+ public boolean removeProperty(String name)
+ {
+ throw new IllegalStateException("Cannot add remove a property to a process definition");
+ }
+
+ public String toString()
+ {
+ return "ProcessDefinition[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -23,33 +23,19 @@
//$Id$
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
import javax.management.ObjectName;
-import javax.persistence.Basic;
-import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.OneToMany;
+import javax.persistence.ManyToOne;
import javax.persistence.Transient;
-import org.hibernate.annotations.IndexColumn;
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;
-import org.jbpm.api.model.StartEvent;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.model.builder.ObjectNameFactory;
import org.jbpm.api.runtime.Attachments;
import org.jbpm.api.service.ExecutionService;
@@ -63,47 +49,34 @@
* @since 08-Jul-2008
*/
@Entity(name = "Process")
-public class ProcessImpl extends AbstractElementImpl implements Process
+public class ProcessImpl extends StructureDelegateImpl implements Process
{
private static final long serialVersionUID = 1L;
// provide logging
final static Logger log = LoggerFactory.getLogger(ProcessImpl.class);
- @Basic
- private String name;
-
@Enumerated(EnumType.STRING)
private ProcessStatus status = ProcessStatus.None;
- @IndexColumn(name = "nodeIndex")
- @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "process", targetEntity = NodeImpl.class)
- private List<Node> nodes = new ArrayList<Node>();
+ @ManyToOne(targetEntity = ProcessDefinitionImpl.class)
+ private ProcessDefinition procDef;
- @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;
-
- @Transient
private transient RuntimeException runtimeException;
- public ProcessImpl(ProcessEngine engine, String name)
+ public ProcessImpl(ProcessEngine engine, ProcessDefinition procDef, ProcessStructure procStruct)
{
- if (engine == null)
- throw new InvalidProcessException("Process engine cannot be null");
- if (name == null)
- throw new InvalidProcessException("Process name cannot be null");
+ super(engine, procStruct);
- this.engine = engine;
- this.name = name;
+ this.procDef = procDef;
+
+ for (Node node : procStruct.getNodes())
+ {
+ NodeImpl nodeImpl = (NodeImpl)node;
+ nodeImpl.setProcessDefinition(procDef);
+ nodeImpl.setProcess(this);
+ }
}
// Persistence ctor
@@ -111,12 +84,6 @@
{
}
- @Transient
- public ProcessEngine getProcessEngine()
- {
- return engine;
- }
-
@Override
@Transient
public ObjectName getKey()
@@ -127,16 +94,12 @@
return oname;
}
- public String getName()
+ @Override
+ public ProcessDefinition getProcessDefinition()
{
- return name;
+ return procDef;
}
- public void setName(String name)
- {
- this.name = name;
- }
-
public ProcessStatus getProcessStatus()
{
return status;
@@ -147,216 +110,6 @@
this.status = status;
}
- @Override
- public Property getProperty(String name)
- {
- for (Property prop : properties)
- {
- if (prop.getName().equals(name))
- return prop;
- }
- return null;
- }
-
- @Override
- public void addProperty(Property prop)
- {
- properties.add(prop);
- }
-
- @Override
- public Set<String> getPropertyNames()
- {
- 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)
- throw new IllegalArgumentException("Node cannot be null");
-
- nodeImpl.setNodeIndex(nodes.size());
- nodes.add(nodeImpl);
- }
-
- public List<Node> getNodes()
- {
- return Collections.unmodifiableList(nodes);
- }
-
- public Node getNode(String name)
- {
- if (name == null)
- throw new IllegalArgumentException("Cannot find node with name: null");
-
- Node node = null;
- for (Node aux : getNodes())
- {
- if (name.equals(aux.getName()))
- {
- node = aux;
- break;
- }
- }
- return node;
- }
-
- @SuppressWarnings("unchecked")
- public <T extends Node> List<T> getNodes(Class<T> clazz)
- {
- List<T> retNodes = new ArrayList<T>();
- for (Node node : nodes)
- {
- if (clazz.isAssignableFrom(node.getClass()))
- retNodes.add((T)node);
- }
- return retNodes;
- }
-
- public <T extends Node> T getNode(Class<T> clazz, String name)
- {
- T node = null;
- for (T aux : getNodes(clazz))
- {
- if (aux.getName().equals(name))
- {
- node = aux;
- break;
- }
- }
- return node;
- }
-
- @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 create(Process proc)
- {
- if (status != ProcessStatus.None)
- throw new IllegalStateException("Cannot initialize process in state: " + status);
-
- // Initialize the Element
- super.create(this);
-
- // Check required name
- if (name == null)
- throw new InvalidProcessException("Name is required for: " + this);
-
- if (getNodes(StartEvent.class).size() == 0)
- throw new InvalidProcessException("Process does not have a start event");
-
- if (getNodes(EndEvent.class).size() == 0)
- throw new InvalidProcessException("Process does not have end events");
-
- // Initialize the nodes
- for (Node node : getNodes())
- {
- NodeImpl nodeImpl = (NodeImpl)node;
- nodeImpl.create(this);
- }
-
- status = ProcessStatus.Ready;
- }
-
- @Override
- public void register(Process proc)
- {
- super.register(proc);
- for (Node node : nodes)
- {
- NodeImpl nodeImpl = (NodeImpl)node;
- nodeImpl.register(this);
- }
- }
-
- @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();
- 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()
{
return runtimeException;
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -0,0 +1,340 @@
+/*
+ * 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.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.ObjectName;
+import javax.persistence.Basic;
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Lob;
+import javax.persistence.OneToMany;
+import javax.persistence.Transient;
+
+import org.hibernate.annotations.IndexColumn;
+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.ProcessStructure;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.Property;
+import org.jbpm.api.model.StartEvent;
+import org.jbpm.api.model.builder.ObjectNameFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A process definition
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at Entity(name = "ProcessStructure")
+public class ProcessStructureImpl extends AbstractElementImpl implements ProcessStructure
+{
+ private static final long serialVersionUID = 1L;
+
+ // provide logging
+ final static Logger log = LoggerFactory.getLogger(ProcessStructureImpl.class);
+
+ @Basic
+ private String name;
+
+ @IndexColumn(name = "nodeIndex")
+ @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "procStruct", targetEntity = NodeImpl.class)
+ private List<Node> nodes = new ArrayList<Node>();
+
+ @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>();
+
+ @Lob
+ private byte[] rawProc;
+
+ public ProcessStructureImpl(ProcessEngine engine, String name)
+ {
+ super(engine);
+ this.name = name;
+
+ if (name == null)
+ throw new InvalidProcessException("Process name cannot be null");
+ }
+
+ // Persistence ctor
+ protected ProcessStructureImpl()
+ {
+ }
+
+ public ProcessStructureImpl newInstance()
+ {
+ ProcessStructureImpl procCopy;
+ try
+ {
+ ByteArrayInputStream bais = new ByteArrayInputStream(rawProc);
+ ObjectInputStream ois = new ObjectInputStream(bais);
+ procCopy = (ProcessStructureImpl)ois.readObject();
+ }
+ catch (Exception ex)
+ {
+ throw new IllegalStateException("Cannot deserialize process", ex);
+ }
+ return procCopy;
+ }
+
+ @Override
+ @Transient
+ public ObjectName getKey()
+ {
+ StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
+ str.append("type=ProcessDefinition,name=" + getName() + ",id=" + getId());
+ ObjectName oname = ObjectNameFactory.create(str.toString());
+ return oname;
+ }
+
+ @Override
+ public String getName()
+ {
+ return name;
+ }
+
+ @Override
+ public Property getProperty(String name)
+ {
+ for (Property prop : properties)
+ {
+ if (prop.getName().equals(name))
+ return prop;
+ }
+ return null;
+ }
+
+ @Override
+ public void addProperty(Property prop)
+ {
+ properties.add(prop);
+ }
+
+ @Override
+ public Set<String> getPropertyNames()
+ {
+ 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)
+ throw new IllegalArgumentException("Node cannot be null");
+
+ nodeImpl.setNodeIndex(nodes.size());
+ nodes.add(nodeImpl);
+ }
+
+ @Override
+ public List<Node> getNodes()
+ {
+ return Collections.unmodifiableList(nodes);
+ }
+
+ @Override
+ public Node getNode(String name)
+ {
+ if (name == null)
+ throw new IllegalArgumentException("Cannot find node with name: null");
+
+ Node node = null;
+ for (Node aux : getNodes())
+ {
+ if (name.equals(aux.getName()))
+ {
+ node = aux;
+ break;
+ }
+ }
+ return node;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T extends Node> List<T> getNodes(Class<T> clazz)
+ {
+ List<T> retNodes = new ArrayList<T>();
+ for (Node node : nodes)
+ {
+ if (clazz.isAssignableFrom(node.getClass()))
+ retNodes.add((T)node);
+ }
+ return retNodes;
+ }
+
+ @Override
+ public <T extends Node> T getNode(Class<T> clazz, String name)
+ {
+ T node = null;
+ for (T aux : getNodes(clazz))
+ {
+ if (aux.getName().equals(name))
+ {
+ node = aux;
+ break;
+ }
+ }
+ return node;
+ }
+
+ @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);
+ }
+
+ public void initialize(ProcessStructure procStruct)
+ {
+ // Check required name
+ if (name == null)
+ throw new InvalidProcessException("Name is required for: " + this);
+
+ if (getNodes(StartEvent.class).size() == 0)
+ throw new InvalidProcessException("Process does not have a start event");
+
+ if (getNodes(EndEvent.class).size() == 0)
+ throw new InvalidProcessException("Process does not have end events");
+
+ // Initialize the nodes
+ for (Node node : getNodes())
+ {
+ NodeImpl nodeImpl = (NodeImpl)node;
+ nodeImpl.initialize(procStruct);
+ }
+
+ // Save the initalized raw data
+ if (rawProc == null)
+ {
+ try
+ {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+ oos.writeObject(this);
+ rawProc = baos.toByteArray();
+ }
+ catch (IOException ex)
+ {
+ throw new IllegalStateException("Cannot serialize process structure", ex);
+ }
+ }
+ }
+
+ public void instantiate(Process proc)
+ {
+ for (Node node : nodes)
+ {
+ NodeImpl nodeImpl = (NodeImpl)node;
+ nodeImpl.instantiate(proc);
+ }
+ }
+
+ public 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);
+ }
+ }
+
+ public String toString()
+ {
+ return "ProcessStructure[" + getName() + "]";
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -34,7 +34,7 @@
import org.jbpm.api.client.MessageListener;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Node;
-import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.runtime.ExecutionContext;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.FlowHandler;
@@ -66,9 +66,9 @@
@Transient
private List<Token> suspendedTokens = new ArrayList<Token>();
- public ReceiveTaskImpl(String name)
+ public ReceiveTaskImpl(ProcessStructure procStruct, String name)
{
- super(name, TaskType.Receive);
+ super(procStruct, name, TaskType.Receive);
}
// Persistence ctor
@@ -198,14 +198,14 @@
}
@Override
- protected void create(Process proc)
+ protected void initialize(ProcessStructure procStruct)
{
- super.create(proc);
+ super.initialize(procStruct);
if (messageRef == null)
throw new InvalidProcessException("A message for the message ref attribute MUST be entered");
- ProcessImpl procImpl = (ProcessImpl)proc;
- procImpl.initializeMessageRef(messageRef);
+ ProcessStructureImpl procDefImpl = (ProcessStructureImpl)procStruct;
+ procDefImpl.initializeMessageRef(messageRef);
}
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskImpl.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/SendTaskImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -29,7 +29,7 @@
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Node;
-import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.Token;
import org.jbpm.ri.runtime.MessageSender;
@@ -53,9 +53,9 @@
@Transient
protected MessageImpl messageRef;
- public SendTaskImpl(String name)
+ public SendTaskImpl(ProcessStructure procStruct, String name)
{
- super(name, TaskType.Send);
+ super(procStruct, name, TaskType.Send);
}
// Persistence ctor
@@ -101,15 +101,15 @@
}
@Override
- protected void create(Process proc)
+ protected void initialize(ProcessStructure procStruct)
{
- super.create(proc);
+ super.initialize(procStruct);
if (messageRef == null)
throw new InvalidProcessException("A message for the message ref attribute MUST be entered");
- ProcessImpl procImpl = (ProcessImpl)proc;
- procImpl.initializeMessageRef(messageRef);
+ ProcessStructureImpl procDefImpl = (ProcessStructureImpl)procStruct;
+ procDefImpl.initializeMessageRef(messageRef);
if (messageRef.getToRef() == null)
throw new IllegalArgumentException("Message target cannot be null for: " + this);
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StartEventImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -33,10 +33,10 @@
import org.jbpm.api.client.SignalListener;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessStructure;
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;
@@ -66,9 +66,9 @@
// The start signal listener
private transient SignalListener startListener;
- public StartEventImpl(String name)
+ public StartEventImpl(ProcessStructure procStruct, String name)
{
- super(name);
+ super(procStruct, name);
this.eventType = EventType.Start;
}
@@ -118,7 +118,7 @@
{
private static final long serialVersionUID = 1L;
- ProcessEngine engine = getProcess().getProcessEngine();
+ ProcessEngine engine = getProcessDefinition().getProcessEngine();
SignalService sigService = engine.getService(SignalService.class);
public void throwEnterSignal(Token token)
@@ -147,12 +147,13 @@
}
@Override
- protected void register(final Process proc)
+ protected void instantiate(Process proc)
{
- super.register(proc);
+ super.instantiate(proc);
- final ProcessEngine engine = proc.getProcessEngine();
-
+ final ProcessEngine engine = getProcessEngine();
+ final SignalService sigService = engine.getService(SignalService.class);
+
if (getTriggerType() == EventDetailType.Signal)
{
// Register the start signal listener
@@ -179,18 +180,11 @@
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);
- }
+ log.debug("Start process from signal: " + signal);
+ sigService.removeSignalListener(startListener);
+
+ ExecutionService execService = engine.getService(ExecutionService.class);
+ execService.startProcess(getProcess(), start, null);
}
public String toString()
@@ -198,26 +192,13 @@
return start + "." + startSignal;
}
};
- SignalService sigService = engine.getService(SignalService.class);
+
+ // Add the start signal listener
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() + "]";
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StructureDelegateImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StructureDelegateImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StructureDelegateImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -0,0 +1,142 @@
+/*
+ * 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.List;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.FetchType;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.OneToOne;
+
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Assignment;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.model.ProcessStructure;
+import org.jbpm.api.model.Property;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A process definition
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at MappedSuperclass
+public abstract class StructureDelegateImpl extends AbstractElementImpl implements ProcessStructure
+{
+ private static final long serialVersionUID = 1L;
+
+ // provide logging
+ final static Logger log = LoggerFactory.getLogger(StructureDelegateImpl.class);
+
+ @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = ProcessStructureImpl.class)
+ protected ProcessStructure procStruct;
+
+ public StructureDelegateImpl(ProcessEngine engine, ProcessStructure procStruct)
+ {
+ super(engine);
+ this.procStruct = procStruct;
+ }
+
+ // Persistence ctor
+ protected StructureDelegateImpl()
+ {
+ }
+
+ @Override
+ public String getName()
+ {
+ return procStruct.getName();
+ }
+
+ @Override
+ public Property getProperty(String name)
+ {
+ return procStruct.getProperty(name);
+ }
+
+ @Override
+ public void addProperty(Property prop)
+ {
+ procStruct.addProperty(prop);
+ }
+
+ @Override
+ public Set<String> getPropertyNames()
+ {
+ return procStruct.getPropertyNames();
+ }
+
+ @Override
+ public boolean removeProperty(String name)
+ {
+ return procStruct.removeProperty(name);
+ }
+
+ @Override
+ public List<Node> getNodes()
+ {
+ return procStruct.getNodes();
+ }
+
+ @Override
+ public Node getNode(String name)
+ {
+ return procStruct.getNode(name);
+ }
+
+ @Override
+ public <T extends Node> List<T> getNodes(Class<T> clazz)
+ {
+ return procStruct.getNodes(clazz);
+ }
+
+ @Override
+ public <T extends Node> T getNode(Class<T> clazz, String name)
+ {
+ return procStruct.getNode(clazz, name);
+ }
+
+ @Override
+ public Set<Message> getMessages()
+ {
+ return procStruct.getMessages();
+ }
+
+ @Override
+ public Message getMessage(String msgName)
+ {
+ return procStruct.getMessage(msgName);
+ }
+
+ @Override
+ public List<Assignment> getAssignments()
+ {
+ return procStruct.getAssignments();
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/StructureDelegateImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/TaskImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -33,6 +33,7 @@
import org.jbpm.api.InvalidProcessException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Node;
+import org.jbpm.api.model.ProcessStructure;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Signal;
import org.jbpm.api.model.Task;
@@ -61,9 +62,9 @@
@Enumerated(EnumType.STRING)
protected TaskType taskType;
- public TaskImpl(String name, TaskType taskType)
+ public TaskImpl(ProcessStructure procStruct, String name, TaskType taskType)
{
- super(name);
+ super(procStruct, name);
this.taskType = taskType;
}
@@ -123,7 +124,7 @@
{
private static final long serialVersionUID = 1L;
- ProcessEngine engine = getProcess().getProcessEngine();
+ ProcessEngine engine = getProcessDefinition().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/ProcessBuilderImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/model/builder/ProcessBuilderImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -26,6 +26,7 @@
import org.jbpm.api.NotImplementedException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Assignment.AssignTime;
import org.jbpm.api.model.Event.EventDetailType;
import org.jbpm.api.model.Expression.ExpressionLanguage;
@@ -48,7 +49,8 @@
import org.jbpm.ri.model.InclusiveGatewayImpl;
import org.jbpm.ri.model.NodeImpl;
import org.jbpm.ri.model.ParallelGatewayImpl;
-import org.jbpm.ri.model.ProcessImpl;
+import org.jbpm.ri.model.ProcessDefinitionImpl;
+import org.jbpm.ri.model.ProcessStructureImpl;
import org.jbpm.ri.model.PropertyImpl;
import org.jbpm.ri.model.ReceiveTaskImpl;
import org.jbpm.ri.model.SendTaskImpl;
@@ -65,7 +67,7 @@
public class ProcessBuilderImpl implements ProcessBuilder
{
protected ProcessEngine engine;
- protected ProcessImpl proc;
+ protected ProcessStructureImpl procStruct;
protected NodeImpl node;
public ProcessBuilderImpl(ProcessEngine engine)
@@ -76,20 +78,22 @@
protected ProcessBuilderImpl(ProcessBuilderImpl procBuilder)
{
this.engine = procBuilder.engine;
- this.proc = procBuilder.proc;
+ this.procStruct = procBuilder.procStruct;
this.node = procBuilder.node;
}
public ProcessBuilder addProcess(String procName)
{
- proc = new ProcessImpl(engine, procName);
+ procStruct = new ProcessStructureImpl(engine, procName);
return this;
}
- public Process getProcess()
+ public ProcessDefinition getProcessDefinition()
{
- ProcessImpl procImpl = getProcessInternal();
- procImpl.create(procImpl);
+ ProcessStructureImpl procStruct = getProcessStructure();
+ procStruct.initialize(procStruct);
+
+ ProcessDefinitionImpl procImpl = new ProcessDefinitionImpl(engine, procStruct);
return procImpl;
}
@@ -114,13 +118,13 @@
public EventBuilder addStartEvent(String name)
{
- addNode(node = new StartEventImpl(name));
+ addNode(node = new StartEventImpl(procStruct, name));
return new EventBuilderImpl(this);
}
public EventBuilder addStartEvent(String name, EventDetailType ResultType)
{
- StartEventImpl startImpl = new StartEventImpl(name);
+ StartEventImpl startImpl = new StartEventImpl(procStruct, name);
startImpl.setTriggerType(ResultType);
addNode(node = startImpl);
return new EventBuilderImpl(this);
@@ -128,19 +132,19 @@
public EventBuilder addEvent(String name)
{
- addNode(node = new EventImpl(name));
+ addNode(node = new EventImpl(procStruct, name));
return new EventBuilderImpl(this);
}
public EventBuilder addEndEvent(String name)
{
- addNode(node = new EndEventImpl(name));
+ addNode(node = new EndEventImpl(procStruct, name));
return new EventBuilderImpl(this);
}
public EventBuilder addEndEvent(String name, EventDetailType resultType)
{
- EndEventImpl endImpl = new EndEventImpl(name);
+ EndEventImpl endImpl = new EndEventImpl(procStruct, name);
endImpl.setResultType(resultType);
addNode(node = endImpl);
return new EventBuilderImpl(this);
@@ -156,7 +160,7 @@
{
if (type == TaskType.None || type == null)
{
- node = new TaskImpl(name, TaskType.None);
+ node = new TaskImpl(procStruct, name, TaskType.None);
}
else if (type == TaskType.Service)
{
@@ -164,11 +168,11 @@
}
else if (type == TaskType.Receive)
{
- node = new ReceiveTaskImpl(name);
+ node = new ReceiveTaskImpl(procStruct, name);
}
else if (type == TaskType.Send)
{
- node = new SendTaskImpl(name);
+ node = new SendTaskImpl(procStruct, name);
}
else if (type == TaskType.User)
{
@@ -198,19 +202,19 @@
{
if (GatewayType.Exclusive == type)
{
- node = new ExclusiveGatewayImpl(name);
+ node = new ExclusiveGatewayImpl(procStruct, name);
}
else if (GatewayType.Inclusive == type)
{
- node = new InclusiveGatewayImpl(name);
+ node = new InclusiveGatewayImpl(procStruct, name);
}
else if (GatewayType.Parallel == type)
{
- node = new ParallelGatewayImpl(name);
+ node = new ParallelGatewayImpl(procStruct, name);
}
else if (GatewayType.Complex == type)
{
- node = new ComplexGatewayImpl(name);
+ node = new ComplexGatewayImpl(procStruct, name);
}
addNode(node);
return new GatewayBuilderImpl(this);
@@ -219,7 +223,7 @@
public ProcessBuilder addProcessAssignment(AssignTime time, ExpressionLanguage lang, String fromExpr, String toProp)
{
AssignmentImpl assignment = getAssignment(time, lang, fromExpr, toProp);
- getProcessInternal().addAssignment(assignment);
+ getProcessStructure().addAssignment(assignment);
return this;
}
@@ -259,14 +263,14 @@
public MessageBuilder addProcessMessage(String name)
{
MessageBuilder msgBuilder = new MessageBuilderImpl().newMessage(name);
- getProcessInternal().addMessage(msgBuilder.getMessage());
+ getProcessStructure().addMessage(msgBuilder.getMessage());
return msgBuilder;
}
public ProcessBuilder addProcessProperty(String name, String value)
{
PropertyImpl prop = new PropertyImpl(name, value);
- getProcessInternal().addProperty(prop);
+ getProcessStructure().addProperty(prop);
return this;
}
@@ -279,7 +283,7 @@
private ProcessBuilder addNode(NodeImpl nodeImpl)
{
- getProcessInternal().addNode(nodeImpl);
+ getProcessStructure().addNode(nodeImpl);
return this;
}
@@ -291,11 +295,11 @@
return node;
}
- private ProcessImpl getProcessInternal()
+ private ProcessStructureImpl getProcessStructure()
{
- if (proc == null)
+ if (procStruct == null)
throw new IllegalStateException("No process available");
- return proc;
+ return procStruct;
}
}
\ No newline at end of file
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/DelegatingExecutionContext.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -29,6 +29,7 @@
import java.util.Map;
import org.jbpm.api.model.Node;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.model.Property;
import org.jbpm.api.runtime.ExecutionContext;
import org.jbpm.api.model.Process;
@@ -45,15 +46,15 @@
private ExecutionContext delegate;
private String activityPrefix;
private String procPrefix;
- private Process proc;
+ private ProcessDefinition procDef;
DelegatingExecutionContext(Node node, ExecutionContext delegate)
{
this.node = node;
this.delegate = delegate;
- proc = node.getProcess();
- procPrefix = proc.getName() + ".";
+ procDef = node.getProcessDefinition();
+ procPrefix = procDef.getName() + ".";
activityPrefix = procPrefix + node.getName() + ".";
}
@@ -76,7 +77,7 @@
else if (name.startsWith(procPrefix))
{
String key = name.substring(procPrefix.length());
- Property prop = proc.getProperty(key);
+ Property prop = procDef.getProperty(key);
if (prop != null)
{
value = prop.getValue();
@@ -104,7 +105,7 @@
}
// Add process property keys
- for (String propName : proc.getPropertyNames())
+ for (String propName : procDef.getPropertyNames())
{
Key key = new Key(null, procPrefix + propName);
keys.add(key);
Modified: 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 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/MessageSender.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -54,7 +54,7 @@
{
this.fromNode = fromNode;
this.messageRef = messageRef;
- this.fromRef = new ParticipantImpl(fromNode.getProcess().getKey());
+ this.fromRef = new ParticipantImpl(fromNode.getProcessDefinition().getKey());
if (messageRef == null)
throw new IllegalArgumentException("MessageRef cannot be null");
@@ -90,7 +90,7 @@
MessageImpl msg = (MessageImpl)msgBuilder.getMessage();
msg.setFromRef(fromRef);
- ProcessEngine engine = fromNode.getProcess().getProcessEngine();
+ ProcessEngine engine = fromNode.getProcessDefinition().getProcessEngine();
MessageService msgService = engine.getService(MessageService.class);
msgService.sendMessage(msg);
}
Modified: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RuntimeProcessImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RuntimeProcessImpl.java 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/RuntimeProcessImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -23,8 +23,8 @@
//$Id$
+import org.jbpm.api.model.Process;
import org.jbpm.api.runtime.TokenExecutor;
-import org.jbpm.api.model.Process;
/**
* A RuntimeProcess add runtime behaviour to the {@link Process}
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/runtime/TokenExecutorImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -109,7 +109,7 @@
{
synchronized (runnableTokens)
{
- ProcessStatus procStatus = getProcess(token).getProcessStatus();
+ ProcessStatus procStatus = rtProc.getProcess().getProcessStatus();
if (procStatus != ProcessStatus.Ready && procStatus != ProcessStatus.Active)
throw new IllegalStateException("Cannot start token to process in state: " + procStatus);
@@ -187,11 +187,6 @@
}
}
- private Process getProcess(Token token)
- {
- return token.getFlow().getTargetRef().getProcess();
- }
-
/****************************************************
* The runnable Token
*/
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ExecutionServiceImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -92,20 +92,20 @@
if (proc.getProcessStatus() == ProcessStatus.Active)
throw new IllegalStateException("Cannot start an already active process");
- startProcessInternal(start, att);
+ startProcessInternal(proc, start, att);
}
}
@Override
- public void startProcess(StartEvent start, Attachments att)
+ public void startProcess(Process proc, StartEvent start, Attachments att)
{
// Prepare the process for start
- startProcessPrepare(start.getProcess());
+ startProcessPrepare(proc);
- startProcessInternal(start, att);
+ startProcessInternal(proc, start, att);
}
- private synchronized void startProcessInternal(StartEvent start, Attachments att)
+ private synchronized void startProcessInternal(Process proc, StartEvent start, Attachments att)
{
@SuppressWarnings("serial")
class InitialFlow extends SequenceFlowImpl
@@ -117,7 +117,6 @@
}
}
- Process proc = start.getProcess();
RuntimeProcess rtProc = getRuntimeProcess(proc, false);
boolean startProcessThread = (rtProc == null);
@@ -169,7 +168,7 @@
// Register the process if needed
ProcessEngine engine = getProcessEngine();
ProcessService procService = engine.getService(ProcessService.class);
- if (procService.getProcessByKey(proc.getKey()) == null)
+ if (procService.getProcess(proc.getKey()) == null)
procService.registerProcess(proc);
}
@@ -263,8 +262,8 @@
// and then we get here because of a ProcessTimeoutException
ProcessEngine engine = getProcessEngine();
ProcessService procService = engine.getService(ProcessService.class);
- if (procService.getProcessByKey(proc.getKey()) != null)
- procService.unregisterProcess(proc);
+ if (procService.getProcess(proc.getKey()) != null)
+ procService.unregisterProcess(proc.getKey());
}
@@ -370,7 +369,7 @@
synchronized (proc)
{
ProcessService procService = engine.getService(ProcessService.class);
- procService.unregisterProcess(proc);
+ procService.unregisterProcess(procID);
runtimeProcesses.remove(procID);
// Notify that the process has now ended
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/PersistenceServiceImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -38,8 +38,10 @@
import org.jbpm.api.ProcessNotFoundException;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
import org.jbpm.api.service.PersistenceService;
import org.jbpm.api.service.Service;
+import org.jbpm.ri.model.ProcessDefinitionImpl;
import org.jbpm.ri.model.ProcessImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -75,6 +77,68 @@
this.annotatedClasses = annotatedClasses;
}
+ @Override
+ public ObjectName saveProcessDefinition(ProcessDefinition procDef)
+ {
+ log.debug("START saveProcessDefinition: " + procDef.getKey());
+ Session session = getSessionFactory().openSession();
+ Transaction tx = session.beginTransaction();
+ try
+ {
+ session.save(procDef);
+ tx.commit();
+ }
+ finally
+ {
+ session.close();
+ }
+ log.debug("END saveProcessDefinition: " + procDef.getKey());
+ return procDef.getKey();
+ }
+
+ @Override
+ public ProcessDefinition loadProcessDefinition(ObjectName procDefID)
+ {
+ log.debug("START loadProcessDefinition: " + procDefID);
+ ProcessDefinitionImpl procDefImpl = null;
+ Session session = getSessionFactory().openSession();
+ try
+ {
+ Integer id = Integer.valueOf(procDefID.getKeyProperty("id"));
+ procDefImpl = (ProcessDefinitionImpl)session.load(ProcessDefinitionImpl.class, id);
+ Hibernate.initialize(procDefImpl);
+ }
+ catch (ObjectNotFoundException ex)
+ {
+ throw new ProcessNotFoundException("Cannot find process: " + procDefID);
+ }
+ finally
+ {
+ session.close();
+ }
+ log.debug("END loadProcessDefinition: " + procDefID);
+ return (ProcessDefinition)procDefImpl;
+ }
+
+ @Override
+ public void deleteProcessDefinition(ProcessDefinition procDef)
+ {
+ log.debug("START deleteProcessDefinition: " + procDef);
+ Session session = getSessionFactory().openSession();
+ Transaction tx = session.beginTransaction();
+ try
+ {
+ session.delete(procDef);
+ tx.commit();
+ }
+ finally
+ {
+ session.close();
+ }
+ log.debug("END deleteProcessDefinition: " + procDef);
+ }
+
+ @Override
public ObjectName saveProcess(Process proc)
{
log.debug("START saveProcess: " + proc.getKey());
@@ -93,6 +157,7 @@
return proc.getKey();
}
+ @Override
public Process loadProcess(ObjectName procID)
{
log.debug("START loadProcess: " + procID);
@@ -113,12 +178,13 @@
session.close();
}
log.debug("END loadProcess: " + procID);
- return procImpl;
+ return (Process)procImpl;
}
+ @Override
public void deleteProcess(Process proc)
{
- log.debug("START deleteProcess: " + proc.getKey());
+ log.debug("START deleteProcess: " + proc);
Session session = getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
try
@@ -130,7 +196,7 @@
{
session.close();
}
- log.debug("END deleteProcess: " + proc.getKey());
+ log.debug("END deleteProcess: " + proc);
}
@SuppressWarnings("unchecked")
Added: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessDefinitionServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessDefinitionServiceImpl.java (rev 0)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessDefinitionServiceImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -0,0 +1,42 @@
+/*
+ * 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.ProcessDefinitionService;
+
+/**
+ * The ProcessDefinitionService is the entry point to create, find and otherwise manage process definitions.
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 18-Jun-2008
+ */
+public class ProcessDefinitionServiceImpl extends ProcessDefinitionService implements MutableService
+{
+ @Override
+ public void setProcessEngine(ProcessEngine engine)
+ {
+ super.setProcessEngine(engine);
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessDefinitionServiceImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
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-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java 2008-10-02 20:44:53 UTC (rev 2468)
@@ -23,12 +23,8 @@
// $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.
@@ -43,23 +39,4 @@
{
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
Modified: projects/spec/trunk/modules/impl/src/main/resources/jbpm-cfg-beans.xml
===================================================================
--- projects/spec/trunk/modules/impl/src/main/resources/jbpm-cfg-beans.xml 2008-10-02 12:37:27 UTC (rev 2467)
+++ projects/spec/trunk/modules/impl/src/main/resources/jbpm-cfg-beans.xml 2008-10-02 20:44:53 UTC (rev 2468)
@@ -13,6 +13,7 @@
<inject bean="jBPMMessageBuilderService" />
<inject bean="jBPMPersistenceService" />
<inject bean="jBPMProcessBuilderService" />
+ <inject bean="jBPMProcessDefinitionService" />
<inject bean="jBPMProcessService" />
<inject bean="jBPMSignalService" />
</set>
@@ -33,12 +34,15 @@
<value>org.jbpm.ri.model.NodeImpl</value>
<value>org.jbpm.ri.model.ParallelGatewayImpl</value>
<value>org.jbpm.ri.model.ParticipantImpl</value>
+ <value>org.jbpm.ri.model.ProcessDefinitionImpl</value>
+ <value>org.jbpm.ri.model.ProcessStructureImpl</value>
<value>org.jbpm.ri.model.ProcessImpl</value>
<value>org.jbpm.ri.model.PropertyImpl</value>
<value>org.jbpm.ri.model.ReceiveTaskImpl</value>
<value>org.jbpm.ri.model.SendTaskImpl</value>
<value>org.jbpm.ri.model.SequenceFlowImpl</value>
<value>org.jbpm.ri.model.StartEventImpl</value>
+ <value>org.jbpm.ri.model.StructureDelegateImpl</value>
<value>org.jbpm.ri.model.TaskImpl</value>
</set>
</property>
@@ -49,6 +53,7 @@
<bean name="jBPMMessageService" class="org.jbpm.ri.service.MessageServiceImpl" />
<bean name="jBPMMessageBuilderService" class="org.jbpm.ri.service.MessageBuilderServiceImpl" />
<bean name="jBPMProcessBuilderService" class="org.jbpm.ri.service.ProcessBuilderServiceImpl" />
+ <bean name="jBPMProcessDefinitionService" class="org.jbpm.ri.service.ProcessDefinitionServiceImpl" />
<bean name="jBPMProcessService" class="org.jbpm.ri.service.ProcessServiceImpl" />
<bean name="jBPMSignalService" class="org.jbpm.ri.service.SignalServiceImpl" />
More information about the jbpm-commits
mailing list