JBoss JBPM SVN: r2530 - in projects/spec/trunk/modules/dialects: jpdl32 and 2 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-10-10 12:14:45 -0400 (Fri, 10 Oct 2008)
New Revision: 2530
Modified:
projects/spec/trunk/modules/dialects/api10/pom.xml
projects/spec/trunk/modules/dialects/jpdl32/pom.xml
projects/spec/trunk/modules/dialects/stp/pom.xml
projects/spec/trunk/modules/dialects/xpdl21/pom.xml
Log:
Fix dialect groupid
Modified: projects/spec/trunk/modules/dialects/api10/pom.xml
===================================================================
--- projects/spec/trunk/modules/dialects/api10/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
+++ projects/spec/trunk/modules/dialects/api10/pom.xml 2008-10-10 16:14:45 UTC (rev 2530)
@@ -14,7 +14,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<name>jBPM Spec - Dialect API-1.0</name>
- <groupId>org.jbpm.spec</groupId>
+ <groupId>org.jbpm.jbpm4</groupId>
<artifactId>jbpm-spec-dialect-api10</artifactId>
<packaging>jar</packaging>
Modified: projects/spec/trunk/modules/dialects/jpdl32/pom.xml
===================================================================
--- projects/spec/trunk/modules/dialects/jpdl32/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
+++ projects/spec/trunk/modules/dialects/jpdl32/pom.xml 2008-10-10 16:14:45 UTC (rev 2530)
@@ -14,7 +14,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<name>jBPM Spec - Dialect jPDL-3.2</name>
- <groupId>org.jbpm.spec</groupId>
+ <groupId>org.jbpm.jbpm4</groupId>
<artifactId>jbpm-spec-dialect-jpdl32</artifactId>
<packaging>jar</packaging>
Modified: projects/spec/trunk/modules/dialects/stp/pom.xml
===================================================================
--- projects/spec/trunk/modules/dialects/stp/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
+++ projects/spec/trunk/modules/dialects/stp/pom.xml 2008-10-10 16:14:45 UTC (rev 2530)
@@ -13,7 +13,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<name>jBPM Spec - Dialect STP-0.7.1</name>
- <groupId>org.jbpm.spec</groupId>
+ <groupId>org.jbpm.jbpm4</groupId>
<artifactId>jbpm-spec-dialect-stp</artifactId>
<packaging>jar</packaging>
Modified: projects/spec/trunk/modules/dialects/xpdl21/pom.xml
===================================================================
--- projects/spec/trunk/modules/dialects/xpdl21/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
+++ projects/spec/trunk/modules/dialects/xpdl21/pom.xml 2008-10-10 16:14:45 UTC (rev 2530)
@@ -14,7 +14,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<name>jBPM Spec - Dialect XPDL-2.1</name>
- <groupId>org.jbpm.spec</groupId>
+ <groupId>org.jbpm.jbpm4</groupId>
<artifactId>jbpm-spec-dialect-xpdl21</artifactId>
<packaging>jar</packaging>
17 years, 6 months
JBoss JBPM SVN: r2529 - in projects/spec/trunk: modules and 15 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-10-10 12:04:35 -0400 (Fri, 10 Oct 2008)
New Revision: 2529
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ReceiveTask.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/SendTask.java
projects/spec/trunk/modules/dialects/
projects/spec/trunk/modules/dialects/.classpath
projects/spec/trunk/modules/dialects/.project
projects/spec/trunk/modules/dialects/api10/
projects/spec/trunk/modules/dialects/jpdl32/
projects/spec/trunk/modules/dialects/pom.xml
projects/spec/trunk/modules/dialects/stp/
projects/spec/trunk/modules/dialects/xpdl21/
Removed:
projects/spec/trunk/modules/dialects/.classpath
projects/spec/trunk/modules/dialects/.project
projects/spec/trunk/modules/dialects/api10/
projects/spec/trunk/modules/dialects/api10/src/test/java/org/
projects/spec/trunk/modules/dialects/jpdl32/
projects/spec/trunk/modules/dialects/pom.xml
projects/spec/trunk/modules/dialects/stp/
projects/spec/trunk/modules/dialects/xpdl21/
Modified:
projects/spec/trunk/.project
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/internal/PropertySupport.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/DialectHandler.java
projects/spec/trunk/modules/dialects/api10/pom.xml
projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/DialectHandlerImpl.java
projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java
projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBExpression.java
projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBFlow.java
projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSequenceFlow.java
projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java
projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
projects/spec/trunk/modules/dialects/jpdl32/pom.xml
projects/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java
projects/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java
projects/spec/trunk/modules/dialects/stp/pom.xml
projects/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java
projects/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java
projects/spec/trunk/modules/dialects/xpdl21/pom.xml
projects/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java
projects/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InputSetImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/OutputSetImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/PropertySupportImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SendTaskImpl.java
projects/spec/trunk/pom.xml
Log:
Resurect dialects
Modified: projects/spec/trunk/.project
===================================================================
--- projects/spec/trunk/.project 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/.project 2008-10-10 16:04:35 UTC (rev 2529)
@@ -1,17 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>jbpm</name>
+ <name>jbpm-spec</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
<name>org.maven.ide.eclipse.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.maven.ide.eclipse.maven2Nature</nature>
</natures>
</projectDescription>
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Event.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -47,7 +47,7 @@
*/
enum EventDetailType
{
- None, Message, Error, Compensation, Link, Multiple, Timer, Rule, Signal
+ None, Message, Error, Cancel, Compensation, Link, Multiple, Timer, Rule, Signal, Terminate
}
/**
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ReceiveTask.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ReceiveTask.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ReceiveTask.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.api.model;
+
+//$Id$
+
+/**
+ * A Receive Task is a simple Task that is designed to wait for a message to arrive from an external participant
+ * (relative to the Business Process). Once the message has been received, the Task is completed.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public interface ReceiveTask extends Task
+{
+ /**
+ * A Message for the MessageRef attribute MUST be entered. This indicates that the Message will be received by the
+ * Task. The Message in this context is equivalent to an in-only message pattern (Web service). One or more
+ * corresponding incoming Message Flows MAY be shown on the diagram. However, the display of the Message Flow is not
+ * required. The Message is applied to all incoming Message Flow, but can arrive for only one of the incoming Message
+ * Flow for a single instance of the Task.
+ */
+ Message getMessageRef();
+
+ /**
+ * Receive Tasks can be defined as the instantiation mechanism for the Process with the Instantiate attribute. This
+ * attribute MAY be set to true if the Task is the first activity after the Start Event or a starting Task if there is
+ * no Start Event (i.e., there are no incoming Sequence Flow). Multiple Tasks MAY have this attribute set to True.
+ */
+ boolean isInstantiate();
+
+ /**
+ * This attribute specifies the technology that will be used to send or receive the message. A Web service is the
+ * default technology.
+ */
+ //Implementation getImplementation();
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ReceiveTask.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/SendTask.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/SendTask.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/SendTask.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -0,0 +1,46 @@
+/*
+ * 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 Send Task.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public interface SendTask extends Task
+{
+ /**
+ * A Message for the MessageRef attribute MUST be entered. This indicates that the Message will be sent by the Task. The Message in this context is equivalent to an
+ * out-only message pattern (Web service). One or more corresponding outgoing Message Flow MAY be shown on the diagram. However, the display of the Message Flow is
+ * not required. The Message is applied to all outgoing Message Flow and the Message will be sent down all outgoing Message Flow at the completion of a single
+ * instance of the Task.
+ */
+ Message getMessageRef();
+
+ /**
+ * This attribute specifies the technology that will be used to send or receive the message. A Web service is the default technology.
+ */
+ // Implementation getImplementation();
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/SendTask.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/internal/PropertySupport.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/internal/PropertySupport.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/internal/PropertySupport.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -42,6 +42,16 @@
Property getProperty(String name);
/**
+ * Get the set of properties
+ */
+ Set<Property> getProperties();
+
+ /**
+ * Get the set of property names
+ */
+ Set<String> getPropertyNames();
+
+ /**
* Add a property
*/
void addProperty(Property prop);
@@ -55,10 +65,4 @@
* Remove a property
*/
Property removeProperty(String name);
-
- /**
- * Get the set of property names
- */
- Set<String> getPropertyNames();
-
}
\ No newline at end of file
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/DialectHandler.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/DialectHandler.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/DialectHandler.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -38,7 +38,7 @@
*/
public interface DialectHandler
{
- URI DEFAULT_NAMESPACE_URI = URI.create("urn:bpm.jboss:pdl-0.1");
+ URI DEFAULT_NAMESPACE_URI = URI.create("urn:jbpm.jboss:api-0.1");
/**
* Get the the supported namespace from this dialect.
Copied: projects/spec/trunk/modules/dialects (from rev 2416, projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects)
Deleted: projects/spec/trunk/modules/dialects/.classpath
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/.classpath 2008-09-28 21:47:09 UTC (rev 2416)
+++ projects/spec/trunk/modules/dialects/.classpath 2008-10-10 16:04:35 UTC (rev 2529)
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <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="output" path="target/classes"/>
-</classpath>
Copied: projects/spec/trunk/modules/dialects/.classpath (from rev 2528, projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/.classpath)
===================================================================
--- projects/spec/trunk/modules/dialects/.classpath (rev 0)
+++ projects/spec/trunk/modules/dialects/.classpath 2008-10-10 16:04:35 UTC (rev 2529)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <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="output" path="target/classes"/>
+</classpath>
Deleted: projects/spec/trunk/modules/dialects/.project
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/.project 2008-09-28 21:47:09 UTC (rev 2416)
+++ projects/spec/trunk/modules/dialects/.project 2008-10-10 16:04:35 UTC (rev 2529)
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>bpm-dialects</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.maven.ide.eclipse.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.maven.ide.eclipse.maven2Nature</nature>
- </natures>
-</projectDescription>
Copied: projects/spec/trunk/modules/dialects/.project (from rev 2528, projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/.project)
===================================================================
--- projects/spec/trunk/modules/dialects/.project (rev 0)
+++ projects/spec/trunk/modules/dialects/.project 2008-10-10 16:04:35 UTC (rev 2529)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>bpm-dialects</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ </natures>
+</projectDescription>
Copied: projects/spec/trunk/modules/dialects/api10 (from rev 2528, projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10)
Modified: projects/spec/trunk/modules/dialects/api10/pom.xml
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/pom.xml 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
@@ -20,8 +20,8 @@
<!-- Parent -->
<parent>
- <groupId>org.jbpm.spec</groupId>
+ <groupId>org.jbpm.jbpm4</groupId>
<artifactId>jbpm-spec-dialects</artifactId>
- <version>1.0.0-Alpha1</version>
+ <version>1.0.0-SNAPSHOT</version>
</parent>
</project>
\ No newline at end of file
Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/DialectHandlerImpl.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/DialectHandlerImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/DialectHandlerImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -27,13 +27,15 @@
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.Writer;
+import java.net.URI;
import java.net.URL;
import javax.xml.bind.JAXBException;
-import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.client.DialectHandler;
-import org.jboss.bpm.model.Process;
+import org.jbpm.api.InvalidProcessException;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.service.DialectHandler;
/**
* The DialectHandler converts a supported dialect to the internal Process model.
@@ -43,18 +45,20 @@
*/
public class DialectHandlerImpl implements DialectHandler
{
- public String getNamespaceURI()
+ @Override
+ public URI getNamespaceURI()
{
return DEFAULT_NAMESPACE_URI;
}
- public Process createProcess(String pXML, boolean isInclude)
+ @Override
+ public ProcessDefinition createProcessDefinition(String pXML)
{
try
{
ProcessUnmarshaller unmarschaller = new ProcessUnmarshaller();
- Process proc = unmarschaller.unmarshallProcess(new StringReader(pXML), isInclude);
- return proc;
+ ProcessDefinition procDef = unmarschaller.unmarshallProcess(new StringReader(pXML));
+ return procDef;
}
catch (JAXBException ex)
{
@@ -66,13 +70,14 @@
}
}
- public Process createProcess(URL pURL, boolean isInclude) throws IOException
+ @Override
+ public ProcessDefinition createProcessDefinition(URL pURL) throws IOException
{
try
{
ProcessUnmarshaller unmarschaller = new ProcessUnmarshaller();
- Process proc = unmarschaller.unmarshallProcess(new InputStreamReader(pURL.openStream()), isInclude);
- return proc;
+ ProcessDefinition procDef = unmarschaller.unmarshallProcess(new InputStreamReader(pURL.openStream()));
+ return procDef;
}
catch (JAXBException ex)
{
Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessMarshaller.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -30,7 +30,6 @@
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
-import org.jboss.bpm.NotImplementedException;
import org.jboss.bpm.dialect.api10.model.JAXBAssignment;
import org.jboss.bpm.dialect.api10.model.JAXBComplexGateway;
import org.jboss.bpm.dialect.api10.model.JAXBEndEvent;
@@ -58,40 +57,34 @@
import org.jboss.bpm.dialect.api10.model.JAXBStartEvent;
import org.jboss.bpm.dialect.api10.model.JAXBTask;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
-import org.jboss.bpm.model.Assignment;
-import org.jboss.bpm.model.ComplexGateway;
-import org.jboss.bpm.model.ConnectingObject;
-import org.jboss.bpm.model.EndEvent;
-import org.jboss.bpm.model.Event;
-import org.jboss.bpm.model.EventDetail;
-import org.jboss.bpm.model.ExclusiveGateway;
-import org.jboss.bpm.model.Expression;
-import org.jboss.bpm.model.FlowObject;
-import org.jboss.bpm.model.Gate;
-import org.jboss.bpm.model.Gateway;
-import org.jboss.bpm.model.InclusiveGateway;
-import org.jboss.bpm.model.InputSet;
-import org.jboss.bpm.model.IntermediateEvent;
-import org.jboss.bpm.model.Message;
-import org.jboss.bpm.model.MessageEventDetail;
-import org.jboss.bpm.model.MessageFlow;
-import org.jboss.bpm.model.OutputSet;
-import org.jboss.bpm.model.ParallelGateway;
-import org.jboss.bpm.model.Participant;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.Property;
-import org.jboss.bpm.model.ReceiveTask;
-import org.jboss.bpm.model.SendTask;
-import org.jboss.bpm.model.SequenceFlow;
-import org.jboss.bpm.model.Signal;
-import org.jboss.bpm.model.SignalEventDetail;
-import org.jboss.bpm.model.StartEvent;
-import org.jboss.bpm.model.Task;
-import org.jboss.bpm.model.SequenceFlow.ConditionType;
-import org.jboss.bpm.runtime.ExecutionHandler;
-import org.jboss.bpm.runtime.FlowHandler;
-import org.jboss.bpm.runtime.HandlerSupport;
-import org.jboss.bpm.runtime.SignalHandler;
+import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.Assignment;
+import org.jbpm.api.model.ComplexGateway;
+import org.jbpm.api.model.EndEvent;
+import org.jbpm.api.model.Event;
+import org.jbpm.api.model.ExclusiveGateway;
+import org.jbpm.api.model.Expression;
+import org.jbpm.api.model.Gateway;
+import org.jbpm.api.model.InclusiveGateway;
+import org.jbpm.api.model.InputSet;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.model.OutputSet;
+import org.jbpm.api.model.ParallelGateway;
+import org.jbpm.api.model.Participant;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.model.Property;
+import org.jbpm.api.model.ReceiveTask;
+import org.jbpm.api.model.SendTask;
+import org.jbpm.api.model.SequenceFlow;
+import org.jbpm.api.model.Signal;
+import org.jbpm.api.model.StartEvent;
+import org.jbpm.api.model.Task;
+import org.jbpm.api.model.Event.EventDetailType;
+import org.jbpm.api.model.SequenceFlow.ConditionType;
+import org.jbpm.api.runtime.ExecutionHandler;
+import org.jbpm.api.runtime.FlowHandler;
+import org.jbpm.api.runtime.SignalHandler;
/**
* A JAXB marshaller for a Process
@@ -133,38 +126,37 @@
jaxbProc.getAssignments().add(jaxbAss);
}
- for (FlowObject flowObject : proc.getFlowObjects())
+ for (Node flowObject : proc.getNodes())
{
- JAXBFlowObject jaxbFlowObject;
+ JAXBFlowObject jaxbNode;
if (flowObject instanceof Event)
{
- jaxbFlowObject = adaptEvent(jaxbProc, (Event)flowObject);
+ jaxbNode = adaptEvent(jaxbProc, (Event)flowObject);
}
else if (flowObject instanceof Task)
{
- jaxbFlowObject = adaptTask(jaxbProc, (Task)flowObject);
+ jaxbNode = adaptTask(jaxbProc, (Task)flowObject);
}
else if (flowObject instanceof Gateway)
{
- jaxbFlowObject = adaptGateway(jaxbProc, (Gateway)flowObject);
+ jaxbNode = adaptGateway(jaxbProc, (Gateway)flowObject);
}
else
{
throw new IllegalStateException("Unsupported flow object: " + flowObject);
}
-
+
for (Assignment ass : flowObject.getAssignments())
{
JAXBAssignment jaxbAss = getJaxbAssignment(ass);
- jaxbFlowObject.getAssignments().add(jaxbAss);
+ jaxbNode.getAssignments().add(jaxbAss);
}
-
- jaxbProc.getFlowObjects().add(jaxbFlowObject);
+
+ jaxbProc.getFlowObjects().add(jaxbNode);
}
return jaxbProc;
}
-
private JAXBFlowObject adaptEvent(JAXBProcess jaxbProc, Event event)
{
JAXBEvent jaxbEvent;
@@ -175,89 +167,78 @@
jaxbStart.setName(start.getName());
jaxbStart.setOutFlow(getJAXBFlow(start.getOutFlow()));
- if (start.getTrigger().size() > 1)
- throw new NotImplementedException("JBPM-1660", "StartTrigger Multiple");
+ EventDetailType detailType = start.getDetailType();
- for (EventDetail trigger : start.getTrigger())
+ // if (start.getTriggerType().size() > 1)
+ // throw new NotImplementedException("JBPM-1660", "StartTrigger Multiple");
+
+ if (detailType == EventDetailType.Message)
{
- EventDetail.EventDetailType detailType = trigger.getEventDetailType();
- if (detailType == EventDetail.EventDetailType.Message)
- {
- throw new NotImplementedException("JBPM-1657", "StartTrigger Message");
- }
- else if (detailType == EventDetail.EventDetailType.Timer)
- {
- throw new NotImplementedException("JBPM-1658", "StartTrigger Timer");
- }
- else if (detailType == EventDetail.EventDetailType.Conditional)
- {
- throw new NotImplementedException("JBPM-1659", "StartTrigger Conditional");
- }
- else if (detailType == EventDetail.EventDetailType.Signal)
- {
- SignalEventDetail signalTrigger = (SignalEventDetail)trigger;
- Signal signal = signalTrigger.getSignalRef();
- JAXBSignalEventDetail jaxbTrigger = new JAXBSignalEventDetail();
- jaxbTrigger.setSignal(new JAXBSignal(signal.getSignalType(), signal.getMessage()));
- jaxbStart.getTrigger().add(jaxbTrigger);
- }
- else
- {
- throw new IllegalStateException("Unsupported start trigger: " + detailType);
- }
+ throw new NotImplementedException("JBPM-1657", "StartTrigger Message");
}
+ else if (detailType == EventDetailType.Timer)
+ {
+ throw new NotImplementedException("JBPM-1658", "StartTrigger Timer");
+ }
+ else if (detailType == EventDetailType.Rule)
+ {
+ throw new NotImplementedException("JBPM-1659", "StartTrigger Conditional");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ Signal signal = start.getSignalRef();
+ JAXBSignalEventDetail jaxbTrigger = new JAXBSignalEventDetail();
+ jaxbTrigger.setSignal(new JAXBSignal(signal.getSignalType(), signal.getMessage()));
+ jaxbStart.getTrigger().add(jaxbTrigger);
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported start trigger: " + detailType);
+ }
jaxbEvent = jaxbStart;
}
- else if (event instanceof IntermediateEvent)
- {
- throw new NotImplementedException("JBPM-1661", "IntermediateEvent");
- }
else if (event instanceof EndEvent)
{
EndEvent end = (EndEvent)event;
JAXBEndEvent jaxbEnd = new JAXBEndEvent();
jaxbEnd.setName(end.getName());
- if (end.getResult().size() > 1)
- throw new NotImplementedException("JBPM-1683", "EndEvent Multiple Result");
+ EventDetailType detailType = end.getDetailType();
+ // if (end.getResult().size() > 1)
+ // throw new NotImplementedException("JBPM-1683", "EndEvent Multiple Result");
- for (EventDetail result : end.getResult())
+ if (detailType == EventDetailType.Message)
{
- EventDetail.EventDetailType detailType = result.getEventDetailType();
- if (detailType == EventDetail.EventDetailType.Message)
- {
- MessageEventDetail msgEventDetail = (MessageEventDetail)result;
- Message message = msgEventDetail.getMessageRef();
- JAXBMessageRef jaxbMessageRef = adaptMessageRef(jaxbProc, message);
- JAXBMessageEventDetail jaxbResult = new JAXBMessageEventDetail();
- jaxbResult.setMessageRef(jaxbMessageRef);
- jaxbEnd.getResult().add(jaxbResult);
- }
- else if (detailType == EventDetail.EventDetailType.Error)
- {
- throw new NotImplementedException("JBPM-1677", "EndEvent Error Result");
- }
- else if (detailType == EventDetail.EventDetailType.Cancel)
- {
- throw new NotImplementedException("JBPM-1678", "EndEvent Cancel Result");
- }
- else if (detailType == EventDetail.EventDetailType.Compensation)
- {
- throw new NotImplementedException("JBPM-1679", "EndEvent Compensation Result");
- }
- else if (detailType == EventDetail.EventDetailType.Signal)
- {
- throw new NotImplementedException("JBPM-1651", "EndEvent Signal Result");
- }
- else if (detailType == EventDetail.EventDetailType.Terminate)
- {
- throw new NotImplementedException("JBPM-1680", "EndEvent Terminate Result");
- }
- else
- {
- throw new IllegalStateException("Unsupported end event result type: " + detailType);
- }
+ Message message = end.getMessageRef();
+ JAXBMessageRef jaxbMessageRef = adaptMessageRef(jaxbProc, message);
+ JAXBMessageEventDetail jaxbResult = new JAXBMessageEventDetail();
+ jaxbResult.setMessageRef(jaxbMessageRef);
+ jaxbEnd.getResult().add(jaxbResult);
}
+ else if (detailType == EventDetailType.Error)
+ {
+ throw new NotImplementedException("JBPM-1677", "EndEvent Error Result");
+ }
+ else if (detailType == EventDetailType.Cancel)
+ {
+ throw new NotImplementedException("JBPM-1678", "EndEvent Cancel Result");
+ }
+ else if (detailType == EventDetailType.Compensation)
+ {
+ throw new NotImplementedException("JBPM-1679", "EndEvent Compensation Result");
+ }
+ else if (detailType == EventDetailType.Signal)
+ {
+ throw new NotImplementedException("JBPM-1651", "EndEvent Signal Result");
+ }
+ else if (detailType == EventDetailType.Terminate)
+ {
+ throw new NotImplementedException("JBPM-1680", "EndEvent Terminate Result");
+ }
+ else
+ {
+ throw new IllegalStateException("Unsupported end event result type: " + detailType);
+ }
jaxbEvent = jaxbEnd;
}
@@ -265,13 +246,9 @@
{
throw new IllegalStateException("Unsupported Event: " + event);
}
- if (event instanceof HandlerSupport)
- {
- HandlerSupport hs = (HandlerSupport)event;
- jaxbEvent.setExecutionHandler(getJAXBExecutionHandler(event, hs.getExecutionHandler()));
- jaxbEvent.setFlowHandler(getJAXBFlowHandler(event, hs.getFlowHandler()));
- jaxbEvent.setSignalHandler(getJAXBSignalHandler(event, hs.getSignalHandler()));
- }
+ jaxbEvent.setExecutionHandler(getJAXBExecutionHandler(event, event.getExecutionHandler()));
+ jaxbEvent.setFlowHandler(getJAXBFlowHandler(event, event.getFlowHandler()));
+ jaxbEvent.setSignalHandler(getJAXBSignalHandler(event, event.getSignalHandler()));
return jaxbEvent;
}
@@ -281,13 +258,9 @@
jaxbTask.setTaskType(task.getTaskType());
jaxbTask.setName(task.getName());
jaxbTask.setOutFlow(getJAXBFlow(task.getOutFlow()));
- if (task instanceof HandlerSupport)
- {
- HandlerSupport hs = (HandlerSupport)task;
- jaxbTask.setExecutionHandler(getJAXBExecutionHandler(task, hs.getExecutionHandler()));
- jaxbTask.setFlowHandler(getJAXBFlowHandler(task, hs.getFlowHandler()));
- jaxbTask.setSignalHandler(getJAXBSignalHandler(task, hs.getSignalHandler()));
- }
+ jaxbTask.setExecutionHandler(getJAXBExecutionHandler(task, task.getExecutionHandler()));
+ jaxbTask.setFlowHandler(getJAXBFlowHandler(task, task.getFlowHandler()));
+ jaxbTask.setSignalHandler(getJAXBSignalHandler(task, task.getSignalHandler()));
for (InputSet inSet : task.getInputSets())
{
JAXBInputSet jaxbSet = new JAXBInputSet();
@@ -360,16 +333,12 @@
throw new IllegalStateException("Unsupported gateway: " + gateway);
}
jaxbGateway.setName(gateway.getName());
- if (gateway instanceof HandlerSupport)
+ jaxbGateway.setExecutionHandler(getJAXBExecutionHandler(gateway, gateway.getExecutionHandler()));
+ jaxbGateway.setFlowHandler(getJAXBFlowHandler(gateway, gateway.getFlowHandler()));
+ jaxbGateway.setSignalHandler(getJAXBSignalHandler(gateway, gateway.getSignalHandler()));
+ for (SequenceFlow gate : gateway.getGates())
{
- HandlerSupport hs = (HandlerSupport)gateway;
- jaxbGateway.setExecutionHandler(getJAXBExecutionHandler(gateway, hs.getExecutionHandler()));
- jaxbGateway.setFlowHandler(getJAXBFlowHandler(gateway, hs.getFlowHandler()));
- jaxbGateway.setSignalHandler(getJAXBSignalHandler(gateway, hs.getSignalHandler()));
- }
- for (Gate gate : gateway.getGates())
- {
- SequenceFlow flow = gate.getOutgoingSequenceFlow();
+ SequenceFlow flow = gate;
jaxbGateway.getOutFlows().add(getJAXBFlow(flow));
}
return jaxbGateway;
@@ -409,18 +378,11 @@
private String getParticipant(Participant par)
{
- String parName = null;
- if (par != null)
- {
- if (par.getEntityRef() != null)
- parName = par.getEntityRef().getName().getCanonicalName();
- else if (par.getRoleRef() != null)
- parName = par.getRoleRef().getName().getCanonicalName();
- }
+ String parName = par.getName().getCanonicalName();
return parName;
}
- private JAXBFlow getJAXBFlow(ConnectingObject flow)
+ private JAXBFlow getJAXBFlow(SequenceFlow flow)
{
JAXBFlow jaxb;
if (flow instanceof SequenceFlow)
@@ -438,15 +400,10 @@
}
jaxb = jaxbSeq;
}
- else if (flow instanceof MessageFlow)
+ else
{
throw new NotImplementedException("JBPM-1382", "Message Flow");
}
- else
- {
- throw new IllegalStateException("Unsupported connectiong object: " + flow);
- }
- jaxb.setName(flow.getName());
jaxb.setTargetName(flow.getTargetName());
return jaxb;
}
@@ -477,8 +434,8 @@
jaxbAss.setTo(ass.getTo().getName());
return jaxbAss;
}
-
- private JAXBExecutionHandler getJAXBExecutionHandler(FlowObject fo, ExecutionHandler handler)
+
+ private JAXBExecutionHandler getJAXBExecutionHandler(Node fo, ExecutionHandler handler)
{
JAXBExecutionHandler jaxb = null;
if (handler != null)
@@ -492,7 +449,7 @@
return jaxb;
}
- private JAXBFlowHandler getJAXBFlowHandler(FlowObject fo, FlowHandler handler)
+ private JAXBFlowHandler getJAXBFlowHandler(Node fo, FlowHandler handler)
{
JAXBFlowHandler jaxb = null;
if (handler != null)
@@ -506,7 +463,7 @@
return jaxb;
}
- private JAXBSignalHandler getJAXBSignalHandler(FlowObject fo, SignalHandler handler)
+ private JAXBSignalHandler getJAXBSignalHandler(Node fo, SignalHandler handler)
{
JAXBSignalHandler jaxb = null;
if (handler != null)
Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/ProcessUnmarshaller.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -25,19 +25,12 @@
import java.io.IOException;
import java.io.Reader;
-import java.io.StringWriter;
-import java.net.MalformedURLException;
-import java.net.URL;
import javax.management.ObjectName;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
-import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.client.DialectHandler;
-import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.dialect.api10.model.JAXBAssignment;
import org.jboss.bpm.dialect.api10.model.JAXBCancelEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBCompensationEventDetail;
@@ -53,7 +46,6 @@
import org.jboss.bpm.dialect.api10.model.JAXBFlowObject;
import org.jboss.bpm.dialect.api10.model.JAXBGateway;
import org.jboss.bpm.dialect.api10.model.JAXBHandler;
-import org.jboss.bpm.dialect.api10.model.JAXBInclude;
import org.jboss.bpm.dialect.api10.model.JAXBInclusiveGateway;
import org.jboss.bpm.dialect.api10.model.JAXBInputSet;
import org.jboss.bpm.dialect.api10.model.JAXBIntermediateEvent;
@@ -73,18 +65,22 @@
import org.jboss.bpm.dialect.api10.model.JAXBTerminateEventDetail;
import org.jboss.bpm.dialect.api10.model.JAXBTimerEventDetail;
import org.jboss.bpm.dialect.api10.model.ObjectFactory;
-import org.jboss.bpm.model.EventBuilder;
-import org.jboss.bpm.model.EventDetail;
-import org.jboss.bpm.model.Gateway;
-import org.jboss.bpm.model.GatewayBuilder;
-import org.jboss.bpm.model.MessageBuilder;
-import org.jboss.bpm.model.ObjectNameFactory;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.TaskBuilder;
-import org.jboss.bpm.model.SequenceFlow.ConditionType;
-import org.jboss.bpm.runtime.Handler;
+import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.Gateway;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.SequenceFlow.ConditionType;
+import org.jbpm.api.model.Task.TaskType;
+import org.jbpm.api.model.builder.EventBuilder;
+import org.jbpm.api.model.builder.GatewayBuilder;
+import org.jbpm.api.model.builder.MessageBuilder;
+import org.jbpm.api.model.builder.ObjectNameFactory;
+import org.jbpm.api.model.builder.ProcessBuilder;
+import org.jbpm.api.model.builder.TaskBuilder;
+import org.jbpm.api.runtime.ExecutionHandler;
+import org.jbpm.api.runtime.FlowHandler;
+import org.jbpm.api.runtime.NodeHandler;
+import org.jbpm.api.runtime.SignalHandler;
+import org.jbpm.api.service.ProcessBuilderService;
/**
* A JAXB unmarshaller for a Process
@@ -94,35 +90,32 @@
*/
public class ProcessUnmarshaller
{
- public Process unmarshallProcess(Reader xml, boolean isInclude) throws JAXBException, IOException
+ public ProcessDefinition unmarshallProcess(Reader xml) throws JAXBException, IOException
{
JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setProperty("com.sun.xml.bind.ObjectFactory", new ObjectFactory());
JAXBProcess jaxbProc = (JAXBProcess)unmarshaller.unmarshal(xml);
- Process proc = adaptProcess(jaxbProc, isInclude);
- return proc;
+ ProcessDefinition procDef = adaptProcess(jaxbProc);
+ return procDef;
}
- private Process adaptProcess(JAXBProcess jaxbProc, boolean isInclude) throws IOException
+ private ProcessDefinition adaptProcess(JAXBProcess jaxbProc) throws IOException
{
- ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
procBuilder.addProcess(jaxbProc.getName());
- // Process Includes
- processIncludes(procBuilder, jaxbProc);
-
// Process Messages
for (JAXBMessage jaxb : jaxbProc.getMessages())
{
- MessageBuilder msgBuilder = procBuilder.addMessage(jaxb.getName());
+ MessageBuilder msgBuilder = procBuilder.addProcessMessage(jaxb.getName());
adaptJAXBMessage(msgBuilder, jaxb);
}
// Process Properties
for (JAXBProperty jaxbProp : jaxbProc.getProperties())
{
- procBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue());
+ procBuilder.addProcessProperty(jaxbProp.getName(), jaxbProp.getValue());
}
// Process Assignments
@@ -130,7 +123,7 @@
{
JAXBExpression jaxbFrom = jaxbAss.getFrom();
String jaxbTo = jaxbAss.getTo();
- procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo);
+ procBuilder.addProcessAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo);
}
// Process FlowObjects
@@ -158,48 +151,14 @@
{
JAXBExpression jaxbFrom = jaxbAss.getFrom();
String jaxbTo = jaxbAss.getTo();
- procBuilder.addAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo);
+ procBuilder.addNodeAssignment(jaxbAss.getAssignTime(), jaxbFrom.getLang(), jaxbFrom.getBody(), jaxbTo);
}
}
- Process proc = (isInclude ? procBuilder.getProcessForInclude() : procBuilder.getProcess());
- return proc;
+ ProcessDefinition procDef = procBuilder.getProcessDefinition();
+ return procDef;
}
- private void processIncludes(ProcessBuilder procBuilder, JAXBProcess jaxbProc) throws IOException
- {
- for (JAXBInclude incl : jaxbProc.getIncludes())
- {
- String nsURI = incl.getNamespace();
- String location = incl.getLocation();
-
- URL procURL;
- try
- {
- procURL = new URL(location);
- }
- catch (MalformedURLException ex)
- {
- ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
- procURL = ctxLoader.getResource(location);
- }
- if (procURL == null)
- throw new InvalidProcessException("Cannot find process include: " + location);
-
- ProcessManager pm = ProcessManager.locateProcessManager();
- DialectHandler dh = pm.getDialectHandler(nsURI);
- Process procIncl = dh.createProcess(procURL, true);
-
- // Debug the included process
- StringWriter strwr = new StringWriter();
- DialectHandler dhapi = pm.getDialectHandler(DialectHandler.DEFAULT_NAMESPACE_URI);
- dhapi.marshallProcess(procIncl, strwr);
- // System.out.println(strwr);
-
- procBuilder.addProcess(procIncl);
- }
- }
-
private void adaptJAXBMessage(MessageBuilder msgBuilder, JAXBMessage jaxbMsg)
{
String fromRef = jaxbMsg.getFromRef();
@@ -251,8 +210,7 @@
{
JAXBSignalEventDetail jaxbSignalTrigger = (JAXBSignalEventDetail)jaxbTrigger;
JAXBSignal jaxbSignal = jaxbSignalTrigger.getSignal();
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Signal).addSignalRef(jaxbSignal.getType(),
- jaxbSignal.getMessage());
+ eventBuilder.addSignalRef(jaxbSignal.getType(), jaxbSignal.getMessage());
}
else
{
@@ -277,7 +235,6 @@
if (jaxbResult instanceof JAXBMessageEventDetail)
{
JAXBMessageEventDetail jaxbMessageResult = (JAXBMessageEventDetail)jaxbResult;
- eventBuilder.addEventDetail(EventDetail.EventDetailType.Message);
JAXBMessageRef jaxbMsg = jaxbMessageResult.getMessageRef();
eventBuilder.addMessageRef(jaxbMsg.getNameRef());
}
@@ -311,14 +268,15 @@
{
throw new IllegalStateException("Unsupported Event: " + jaxb);
}
- procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
- procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler()));
- procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
+ procBuilder.addExecutionHandler(loadHandler(ExecutionHandler.class, jaxb.getExecutionHandler()));
+ procBuilder.addFlowHandler(loadHandler(FlowHandler.class, jaxb.getFlowHandler()));
+ procBuilder.addSignalHandler(loadHandler(SignalHandler.class, jaxb.getSignalHandler()));
}
private void adaptTask(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBTask jaxbTask)
{
- TaskBuilder taskBuilder = procBuilder.addTask(jaxbTask.getName(), jaxbTask.getTaskType());
+ TaskType taskType = jaxbTask.getTaskType();
+ TaskBuilder taskBuilder = procBuilder.addTask(jaxbTask.getName(), taskType);
addOutFlow(taskBuilder, jaxbTask.getOutFlow());
for (JAXBInputSet jaxbSet : jaxbTask.getInputSets())
@@ -337,19 +295,22 @@
for (JAXBProperty jaxbProp : jaxbTask.getProperties())
{
- taskBuilder.addProperty(jaxbProp.getName(), jaxbProp.getValue());
+ taskBuilder.addNodeProperty(jaxbProp.getName(), jaxbProp.getValue());
}
JAXBMessageRef jaxbMsgRef = jaxbTask.getMessageRef();
if (jaxbMsgRef != null)
{
String msgName = jaxbMsgRef.getNameRef();
- taskBuilder.addMessageRef(msgName);
+ if (taskType == TaskType.Send)
+ taskBuilder.addOutMessageRef(msgName);
+ else if (taskType == TaskType.Receive)
+ taskBuilder.addInMessageRef(msgName);
}
- procBuilder.addExecutionHandler(loadHandler(jaxbTask.getExecutionHandler()));
- procBuilder.addFlowHandler(loadHandler(jaxbTask.getFlowHandler()));
- procBuilder.addSignalHandler(loadHandler(jaxbTask.getSignalHandler()));
+ procBuilder.addExecutionHandler(loadHandler(ExecutionHandler.class, jaxbTask.getExecutionHandler()));
+ procBuilder.addFlowHandler(loadHandler(FlowHandler.class, jaxbTask.getFlowHandler()));
+ procBuilder.addSignalHandler(loadHandler(SignalHandler.class, jaxbTask.getSignalHandler()));
}
private void adaptJAXBGateway(ProcessBuilder procBuilder, JAXBProcess jaxbProc, JAXBGateway jaxb)
@@ -403,9 +364,9 @@
throw new IllegalStateException("Unsupported connectiong object: " + jaxbFlow);
}
}
- procBuilder.addExecutionHandler(loadHandler(jaxb.getExecutionHandler()));
- procBuilder.addFlowHandler(loadHandler(jaxb.getFlowHandler()));
- procBuilder.addSignalHandler(loadHandler(jaxb.getSignalHandler()));
+ procBuilder.addExecutionHandler(loadHandler(ExecutionHandler.class, jaxb.getExecutionHandler()));
+ procBuilder.addFlowHandler(loadHandler(FlowHandler.class, jaxb.getFlowHandler()));
+ procBuilder.addSignalHandler(loadHandler(SignalHandler.class, jaxb.getSignalHandler()));
}
private void addOutFlow(ProcessBuilder procBuilder, JAXBFlow jaxbFlow)
@@ -428,16 +389,16 @@
}
@SuppressWarnings("unchecked")
- private Class<Handler> loadHandler(JAXBHandler jaxbHandler)
+ private <T extends NodeHandler> Class<T> loadHandler(Class<T> clazz, JAXBHandler jaxbHandler)
{
- Class<Handler> handlerClass = null;
+ Class<T> handlerClass = null;
if (jaxbHandler != null)
{
String className = jaxbHandler.getClassName();
try
{
ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
- handlerClass = (Class<Handler>)ctxLoader.loadClass(className);
+ handlerClass = (Class<T>)ctxLoader.loadClass(className);
}
catch (ClassNotFoundException e)
{
Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBAssignment.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -27,8 +27,8 @@
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
-import org.jboss.bpm.model.Assignment;
-import org.jboss.bpm.model.Assignment.AssignTime;
+import org.jbpm.api.model.Assignment;
+import org.jbpm.api.model.Assignment.AssignTime;
/**
* An Assignment, which is used in the definition of attributes for Process,
Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBExpression.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBExpression.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBExpression.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -27,7 +27,7 @@
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
-import org.jboss.bpm.model.Expression;
+import org.jbpm.api.model.Expression;
/**
* An Expression, which is used in the definition of attributes for @{link StartEvent},
Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBFlow.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBFlow.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBFlow.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -39,20 +39,8 @@
@XmlType(name = "Flow")
public class JAXBFlow extends JAXBGraphicalElement
{
- private String name;
private String targetName;
- public String getName()
- {
- return name;
- }
-
- @XmlAttribute(required = false)
- public void setName(String name)
- {
- this.name = name;
- }
-
public String getTargetName()
{
return targetName;
Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSequenceFlow.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSequenceFlow.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSequenceFlow.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -27,7 +27,7 @@
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
-import org.jboss.bpm.model.SequenceFlow.ConditionType;
+import org.jbpm.api.model.SequenceFlow.ConditionType;
/**
* A Sequence Flow is a solid graphical line that is used to show the order that Activities will be performed in a Process.
Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBSignal.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -27,7 +27,7 @@
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
-import org.jboss.bpm.model.Signal.SignalType;
+import org.jbpm.api.model.Signal.SignalType;
/**
* The base of all supported event details
Modified: projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/api10/src/main/java/org/jboss/bpm/dialect/api10/model/JAXBTask.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.dialect.api10.model;
+//$Id$
+
import java.util.ArrayList;
import java.util.List;
@@ -30,12 +32,8 @@
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
-import org.jboss.bpm.model.Message;
-import org.jboss.bpm.model.Task;
-import org.jboss.bpm.model.Message.Implementation;
+import org.jbpm.api.model.Task;
-//$Id$
-
/**
* A Task is an Atomic Activity that is included within a Process.
*
@@ -50,7 +48,6 @@
public class JAXBTask extends JAXBActivity
{
private Task.TaskType taskType;
- private Implementation implementation;
private List<JAXBInputSet> inputSets = new ArrayList<JAXBInputSet>();
private List<JAXBOutputSet> outputSets = new ArrayList<JAXBOutputSet>();
@@ -87,16 +84,6 @@
this.taskType = taskType;
}
- public Message.Implementation getImplementation()
- {
- return implementation;
- }
-
- public void setImplementation(Message.Implementation implementation)
- {
- this.implementation = implementation;
- }
-
public JAXBMessageRef getMessageRef()
{
return messageRef;
Copied: projects/spec/trunk/modules/dialects/jpdl32 (from rev 2528, projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/jpdl32)
Modified: projects/spec/trunk/modules/dialects/jpdl32/pom.xml
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/jpdl32/pom.xml 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/jpdl32/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
@@ -20,9 +20,9 @@
<!-- Parent -->
<parent>
- <groupId>org.jbpm.spec</groupId>
+ <groupId>org.jbpm.jbpm4</groupId>
<artifactId>jbpm-spec-dialects</artifactId>
- <version>1.0.0-Alpha1</version>
+ <version>1.0.0-SNAPSHOT</version>
</parent>
</project>
\ No newline at end of file
Modified: projects/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/DialectHandlerImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -27,16 +27,19 @@
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.Writer;
+import java.net.URI;
import java.net.URL;
import javax.xml.bind.JAXBException;
-import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.dialect.jpdl32.model.JPDL32ProcessDefinition;
-import org.jboss.bpm.model.Process;
+import org.jbpm.api.InvalidProcessException;
+import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.service.DialectHandler;
+
/**
* The DialectHandler converts a supported dialect to the internal Process model.
*
@@ -45,20 +48,21 @@
*/
public class DialectHandlerImpl implements DialectHandler
{
- public static final String NAMESPACE_URI = "urn:jbpm.org:jpdl-3.2";
+ public static final URI NAMESPACE_URI = URI.create("urn:jbpm.org:jpdl-3.2");
- public String getNamespaceURI()
+ public URI getNamespaceURI()
{
return NAMESPACE_URI;
}
- public Process createProcess(String pXML, boolean isInclude)
+ @Override
+ public ProcessDefinition createProcessDefinition(String pXML)
{
try
{
ProcessUnmarshaller unmarschaller = new ProcessUnmarshaller();
JPDL32ProcessDefinition jaxbProc = unmarschaller.unmarshallProcess(new StringReader(pXML));
- Process proc = new ProcessDefinitionAdapter().adaptProcessDefinition(jaxbProc);
+ ProcessDefinition proc = new ProcessDefinitionAdapter().adaptProcessDefinition(jaxbProc);
return proc;
}
catch (JAXBException ex)
@@ -67,13 +71,14 @@
}
}
- public Process createProcess(URL pURL, boolean isInclude) throws IOException
+ @Override
+ public ProcessDefinition createProcessDefinition(URL pURL) throws IOException
{
try
{
ProcessUnmarshaller unmarschaller = new ProcessUnmarshaller();
JPDL32ProcessDefinition jaxbProc = unmarschaller.unmarshallProcess(new InputStreamReader(pURL.openStream()));
- Process proc = new ProcessDefinitionAdapter().adaptProcessDefinition(jaxbProc);
+ ProcessDefinition proc = new ProcessDefinitionAdapter().adaptProcessDefinition(jaxbProc);
return proc;
}
catch (JAXBException ex)
Modified: projects/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/jpdl32/src/main/java/org/jboss/bpm/dialect/jpdl32/ProcessDefinitionAdapter.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -25,7 +25,6 @@
import java.util.List;
-import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.dialect.jpdl32.model.JPDL32Action;
import org.jboss.bpm.dialect.jpdl32.model.JPDL32EndState;
import org.jboss.bpm.dialect.jpdl32.model.JPDL32Event;
@@ -34,12 +33,13 @@
import org.jboss.bpm.dialect.jpdl32.model.JPDL32StartState;
import org.jboss.bpm.dialect.jpdl32.model.JPDL32State;
import org.jboss.bpm.dialect.jpdl32.model.JPDL32Transition;
-import org.jboss.bpm.model.Gateway;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Task;
-import org.jboss.bpm.runtime.ExecutionHandler;
+import org.jbpm.api.InvalidProcessException;
+import org.jbpm.api.model.Gateway;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.Task;
+import org.jbpm.api.model.builder.ProcessBuilder;
+import org.jbpm.api.runtime.ExecutionHandler;
+import org.jbpm.api.service.ProcessBuilderService;
/**
* Adapt the jpdl-3.2 ProcessDefinition to the API Process
@@ -49,28 +49,28 @@
*/
public class ProcessDefinitionAdapter
{
- public Process adaptProcessDefinition(JPDL32ProcessDefinition jpdlProcDef)
+ public ProcessDefinition adaptProcessDefinition(JPDL32ProcessDefinition jpdlProcDef)
{
- ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- builder.addProcess(jpdlProcDef.getName());
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess(jpdlProcDef.getName());
for (Object jpdlObj : jpdlProcDef.getDescriptionOrSwimlaneOrStartState())
{
if (jpdlObj instanceof JPDL32StartState)
{
- adaptStartState(builder, (JPDL32StartState)jpdlObj);
+ adaptStartState(procBuilder, (JPDL32StartState)jpdlObj);
}
else if (jpdlObj instanceof JPDL32State)
{
- adaptState(builder, (JPDL32State)jpdlObj);
+ adaptState(procBuilder, (JPDL32State)jpdlObj);
}
else if (jpdlObj instanceof JPDL32Fork)
{
- adaptFork(builder, (JPDL32Fork)jpdlObj);
+ adaptFork(procBuilder, (JPDL32Fork)jpdlObj);
}
else if (jpdlObj instanceof JPDL32EndState)
{
- adaptEndState(builder, (JPDL32EndState)jpdlObj);
+ adaptEndState(procBuilder, (JPDL32EndState)jpdlObj);
}
else
{
@@ -78,8 +78,8 @@
}
}
- Process proc = builder.getProcess();
- return proc;
+ ProcessDefinition procDef = procBuilder.getProcessDefinition();
+ return procDef;
}
private void adaptStartState(ProcessBuilder builder, JPDL32StartState jpdlStart)
@@ -110,7 +110,7 @@
if (jpdlAux instanceof JPDL32Action)
{
JPDL32Action jpdlAction = (JPDL32Action)jpdlAux;
- Class<?> handler = loadHandler(jpdlAction.getClazz());
+ Class<ExecutionHandler> handler = loadHandler(jpdlAction.getClazz());
if (ExecutionHandler.class.isAssignableFrom(handler) == false)
throw new InvalidProcessException("Node action is not of type ExecutionHandler");
@@ -141,12 +141,13 @@
}
}
- private Class<?> loadHandler(String className)
+ @SuppressWarnings("unchecked")
+ private Class<ExecutionHandler> loadHandler(String className)
{
try
{
ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader();
- return ctxLoader.loadClass(className);
+ return (Class<ExecutionHandler>)ctxLoader.loadClass(className);
}
catch (ClassNotFoundException e)
{
Deleted: projects/spec/trunk/modules/dialects/pom.xml
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/pom.xml 2008-09-28 21:47:09 UTC (rev 2416)
+++ projects/spec/trunk/modules/dialects/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- ====================================================================== -->
-<!-- -->
-<!-- JBoss, the OpenSource J2EE webOS -->
-<!-- -->
-<!-- Distributable under LGPL license. -->
-<!-- See terms of license at http://www.gnu.org. -->
-<!-- -->
-<!-- ====================================================================== -->
-
-<!-- $Id$ -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <name>jBPM Spec - Dialects</name>
- <groupId>org.jbpm.spec</groupId>
- <artifactId>jbpm-spec-dialects</artifactId>
- <packaging>pom</packaging>
-
- <!-- Parent -->
- <parent>
- <groupId>org.jbpm.spec</groupId>
- <artifactId>jbpm-spec</artifactId>
- <version>1.0.0-Alpha1</version>
- <relativePath>../../pom.xml</relativePath>
- </parent>
-
- <!-- Modules -->
- <modules>
- <module>api10</module>
- <module>jpdl32</module>
- <module>stp</module>
- <module>xpdl21</module>
- </modules>
-
- <!-- Dependencies -->
- <dependencies>
- <dependency>
- <groupId>org.jbpm.spec</groupId>
- <artifactId>jbpm-spec-api</artifactId>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jbpm.spec</groupId>
- <artifactId>jbpm-spec-ri</artifactId>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>com.sun.xml.bind</groupId>
- <artifactId>jaxb-xjc</artifactId>
- <scope>runtime</scope>
- </dependency>
- </dependencies>
-
-</project>
Copied: projects/spec/trunk/modules/dialects/pom.xml (from rev 2528, projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/pom.xml)
===================================================================
--- projects/spec/trunk/modules/dialects/pom.xml (rev 0)
+++ projects/spec/trunk/modules/dialects/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- ====================================================================== -->
+<!-- -->
+<!-- JBoss, the OpenSource J2EE webOS -->
+<!-- -->
+<!-- Distributable under LGPL license. -->
+<!-- See terms of license at http://www.gnu.org. -->
+<!-- -->
+<!-- ====================================================================== -->
+
+<!-- $Id$ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <name>jBPM Spec - Dialects</name>
+ <groupId>org.jbpm.jbpm4</groupId>
+ <artifactId>jbpm-spec-dialects</artifactId>
+ <packaging>pom</packaging>
+
+ <!-- Parent -->
+ <parent>
+ <groupId>org.jbpm.jbpm4</groupId>
+ <artifactId>jbpm-spec</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <!-- Modules -->
+ <modules>
+ <module>api10</module>
+ <module>jpdl32</module>
+ <module>stp</module>
+ <module>xpdl21</module>
+ </modules>
+
+ <!-- Dependencies -->
+ <dependencies>
+ <dependency>
+ <groupId>org.jbpm.jbpm4</groupId>
+ <artifactId>jbpm-spec-api</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-xjc</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ </dependencies>
+
+</project>
Copied: projects/spec/trunk/modules/dialects/stp (from rev 2528, projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/stp)
Modified: projects/spec/trunk/modules/dialects/stp/pom.xml
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/stp/pom.xml 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/stp/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
@@ -19,9 +19,9 @@
<!-- Parent -->
<parent>
- <groupId>org.jbpm.spec</groupId>
+ <groupId>org.jbpm.jbpm4</groupId>
<artifactId>jbpm-spec-dialects</artifactId>
- <version>1.0.0-Alpha1</version>
+ <version>1.0.0-SNAPSHOT</version>
</parent>
</project>
\ No newline at end of file
Modified: projects/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/DialectHandlerImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -26,14 +26,16 @@
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.Writer;
+import java.net.URI;
import java.net.URL;
import javax.xml.bind.JAXBException;
-import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.client.DialectHandler;
-import org.jboss.bpm.model.Process;
+import org.jbpm.api.InvalidProcessException;
+import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.service.DialectHandler;
/**
* The DialectHandler converts a supported dialect to the internal Process model.
@@ -43,20 +45,20 @@
*/
public class DialectHandlerImpl implements DialectHandler
{
- public static final String NAMESPACE_URI = "http://stp.eclipse.org/bpmn";
+ public static final URI NAMESPACE_URI = URI.create("http://stp.eclipse.org/bpmn");
- public String getNamespaceURI()
+ public URI getNamespaceURI()
{
return NAMESPACE_URI;
}
- public Process createProcess(String pXML, boolean isInclude)
+ public ProcessDefinition createProcessDefinition(String pXML)
{
try
{
ProcessUnmarshaller unmarschaller = new ProcessUnmarshaller();
- Process proc = unmarschaller.unmarshallProcess(new ByteArrayInputStream(pXML.getBytes()), isInclude);
- return proc;
+ ProcessDefinition procDef = unmarschaller.unmarshallProcess(new ByteArrayInputStream(pXML.getBytes()));
+ return procDef;
}
catch (JAXBException ex)
{
@@ -64,13 +66,13 @@
}
}
- public Process createProcess(URL pURL, boolean isInclude) throws IOException
+ public ProcessDefinition createProcessDefinition(URL pURL) throws IOException
{
try
{
ProcessUnmarshaller unmarschaller = new ProcessUnmarshaller();
- Process proc = unmarschaller.unmarshallProcess(pURL.openStream(), isInclude);
- return proc;
+ ProcessDefinition procDef = unmarschaller.unmarshallProcess(pURL.openStream());
+ return procDef;
}
catch (JAXBException ex)
{
Modified: projects/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/stp/src/main/java/org/jboss/bpm/dialect/stp/ProcessUnmarshaller.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -35,19 +35,19 @@
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
-import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.dialect.stp.model.Activity;
import org.jboss.bpm.dialect.stp.model.ActivityType;
import org.jboss.bpm.dialect.stp.model.BpmnDiagram;
import org.jboss.bpm.dialect.stp.model.ObjectFactory;
import org.jboss.bpm.dialect.stp.model.Pool;
import org.jboss.bpm.dialect.stp.model.SequenceEdge;
-import org.jboss.bpm.model.Gateway;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
-import org.jboss.bpm.model.Task;
import org.jboss.util.xml.DOMUtils;
+import org.jbpm.api.InvalidProcessException;
+import org.jbpm.api.model.Gateway;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.Task;
+import org.jbpm.api.model.builder.ProcessBuilder;
+import org.jbpm.api.service.ProcessBuilderService;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -66,7 +66,7 @@
private List<Activity> activities = new ArrayList<Activity>();
@SuppressWarnings("unchecked")
- public Process unmarshallProcess(InputStream xml, boolean isInclude) throws JAXBException
+ public ProcessDefinition unmarshallProcess(InputStream xml) throws JAXBException
{
JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
@@ -133,8 +133,8 @@
adaptActivity(procBuilder, stpActivity);
}
- Process proc = (isInclude ? procBuilder.getProcessForInclude() : procBuilder.getProcess());
- return proc;
+ ProcessDefinition procDef = procBuilder.getProcessDefinition();
+ return procDef;
}
private ProcessBuilder adaptDiagram(BpmnDiagram bpmnDiagram)
@@ -146,10 +146,10 @@
throw new IllegalStateException("Multiple Pools not supported");
Pool stpPool = stpPools.get(0);
- ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- builder.addProcess(stpPool.getId());
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess(stpPool.getId());
- return builder;
+ return procBuilder;
}
private void adaptActivity(ProcessBuilder builder, Activity stpActivity)
Copied: projects/spec/trunk/modules/dialects/xpdl21 (from rev 2528, projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/xpdl21)
Modified: projects/spec/trunk/modules/dialects/xpdl21/pom.xml
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/xpdl21/pom.xml 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/xpdl21/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
@@ -20,8 +20,8 @@
<!-- Parent -->
<parent>
- <groupId>org.jbpm.spec</groupId>
+ <groupId>org.jbpm.jbpm4</groupId>
<artifactId>jbpm-spec-dialects</artifactId>
- <version>1.0.0-Alpha1</version>
+ <version>1.0.0-SNAPSHOT</version>
</parent>
</project>
\ No newline at end of file
Modified: projects/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/DialectHandlerImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -27,15 +27,17 @@
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.Writer;
+import java.net.URI;
import java.net.URL;
import javax.xml.bind.JAXBException;
-import org.jboss.bpm.InvalidProcessException;
-import org.jboss.bpm.NotImplementedException;
-import org.jboss.bpm.client.DialectHandler;
import org.jboss.bpm.dialect.xpdl21.model.XPDLWorkflowProcess;
-import org.jboss.bpm.model.Process;
+import org.jbpm.api.InvalidProcessException;
+import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.Process;
+import org.jbpm.api.service.DialectHandler;
/**
* The DialectHandler converts a supported dialect to the internal Process model.
@@ -45,20 +47,21 @@
*/
public class DialectHandlerImpl implements DialectHandler
{
- public static final String NAMESPACE_URI = "http://www.wfmc.org/2008/XPDL2.1";
+ public static final URI NAMESPACE_URI = URI.create("http://www.wfmc.org/2008/XPDL2.1");
- public String getNamespaceURI()
+ public URI getNamespaceURI()
{
return NAMESPACE_URI;
}
- public Process createProcess(String pXML, boolean isInclude)
+ @Override
+ public ProcessDefinition createProcessDefinition(String pXML)
{
try
{
ProcessUnmarshaller unmarschaller = new ProcessUnmarshaller();
XPDLWorkflowProcess jaxbProc = unmarschaller.unmarshallProcess(new StringReader(pXML));
- Process proc = new WorkflowProcessAdapter().adaptWorkflowProcess(jaxbProc);
+ ProcessDefinition proc = new WorkflowProcessAdapter().adaptWorkflowProcess(jaxbProc);
return proc;
}
catch (JAXBException ex)
@@ -67,13 +70,14 @@
}
}
- public Process createProcess(URL pURL, boolean isInclude) throws IOException
+ @Override
+ public ProcessDefinition createProcessDefinition(URL pURL) throws IOException
{
try
{
ProcessUnmarshaller unmarschaller = new ProcessUnmarshaller();
XPDLWorkflowProcess jaxbProc = unmarschaller.unmarshallProcess(new InputStreamReader(pURL.openStream()));
- Process proc = new WorkflowProcessAdapter().adaptWorkflowProcess(jaxbProc);
+ ProcessDefinition proc = new WorkflowProcessAdapter().adaptWorkflowProcess(jaxbProc);
return proc;
}
catch (JAXBException ex)
@@ -82,6 +86,7 @@
}
}
+ @Override
public void marshallProcess(Process proc, Writer out) throws IOException
{
throw new NotImplementedException("JBPM-1640", "DialectHandler XPL2.1 marshallProcess");
Modified: projects/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java
===================================================================
--- projects/spec/tags/jbpm-spec-1.0.0-Alpha1/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/dialects/xpdl21/src/main/java/org/jboss/bpm/dialect/xpdl21/WorkflowProcessAdapter.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -23,14 +23,14 @@
// $Id$
-import org.jboss.bpm.InvalidProcessException;
import org.jboss.bpm.dialect.xpdl21.model.XPDLActivities;
import org.jboss.bpm.dialect.xpdl21.model.XPDLActivity;
import org.jboss.bpm.dialect.xpdl21.model.XPDLEvent;
import org.jboss.bpm.dialect.xpdl21.model.XPDLWorkflowProcess;
-import org.jboss.bpm.model.Process;
-import org.jboss.bpm.model.ProcessBuilder;
-import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jbpm.api.InvalidProcessException;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.builder.ProcessBuilder;
+import org.jbpm.api.service.ProcessBuilderService;
/**
* Adapt the jpdl-3.2 ProcessDefinition to the API Process
@@ -40,10 +40,10 @@
*/
public class WorkflowProcessAdapter
{
- public Process adaptWorkflowProcess(XPDLWorkflowProcess xpdlProc)
+ public ProcessDefinition adaptWorkflowProcess(XPDLWorkflowProcess xpdlProc)
{
- ProcessBuilder builder = ProcessBuilderFactory.newInstance().newProcessBuilder();
- builder.addProcess(xpdlProc.getName());
+ ProcessBuilder procBuilder = ProcessBuilderService.locateProcessBuilder();
+ procBuilder.addProcess(xpdlProc.getName());
XPDLActivities xpdlActivities = xpdlProc.getActivities();
for (XPDLActivity xpdlActivity : xpdlActivities.getActivity())
@@ -53,11 +53,11 @@
{
if (xpdlEvent.getStartEvent() != null)
{
- builder.addStartEvent("Start");
+ procBuilder.addStartEvent("Start");
}
else if (xpdlEvent.getEndEvent() != null)
{
- builder.addEndEvent(xpdlActivity.getName());
+ procBuilder.addEndEvent(xpdlActivity.getName());
}
else
{
@@ -70,7 +70,7 @@
}
}
- Process proc = builder.getProcess();
- return proc;
+ ProcessDefinition procDef = procBuilder.getProcessDefinition();
+ return procDef;
}
}
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InputSetImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InputSetImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InputSetImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -75,6 +75,12 @@
}
@Override
+ public Set<Property> getProperties()
+ {
+ return propSupport.getProperties();
+ }
+
+ @Override
public Set<String> getPropertyNames()
{
return propSupport.getPropertyNames();
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -111,6 +111,12 @@
}
@Override
+ public Set<Property> getProperties()
+ {
+ return propSupport.getProperties();
+ }
+
+ @Override
public Set<String> getPropertyNames()
{
return propSupport.getPropertyNames();
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -175,6 +175,12 @@
}
@Override
+ public Set<Property> getProperties()
+ {
+ return propSupport.getProperties();
+ }
+
+ @Override
public Set<String> getPropertyNames()
{
return propSupport.getPropertyNames();
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/OutputSetImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/OutputSetImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/OutputSetImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -75,6 +75,12 @@
}
@Override
+ public Set<Property> getProperties()
+ {
+ return propSupport.getProperties();
+ }
+
+ @Override
public Set<String> getPropertyNames()
{
return propSupport.getPropertyNames();
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -169,6 +169,12 @@
}
@Override
+ public Set<Property> getProperties()
+ {
+ return procStruct.getProperties();
+ }
+
+ @Override
public Set<String> getPropertyNames()
{
return procStruct.getPropertyNames();
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -172,6 +172,12 @@
}
@Override
+ public Set<Property> getProperties()
+ {
+ return procStruct.getProperties();
+ }
+
+ @Override
public Set<String> getPropertyNames()
{
return procStruct.getPropertyNames();
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -224,6 +224,12 @@
}
@Override
+ public Set<Property> getProperties()
+ {
+ return propSupport.getProperties();
+ }
+
+ @Override
public Set<String> getPropertyNames()
{
return propSupport.getPropertyNames();
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/PropertySupportImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/PropertySupportImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/PropertySupportImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -25,6 +25,7 @@
import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -64,6 +65,13 @@
}
@Override
+ public Set<Property> getProperties()
+ {
+ Set<Property> props = new HashSet<Property>(propmap.values());
+ return Collections.unmodifiableSet(props);
+ }
+
+ @Override
public Set<String> getPropertyNames()
{
return Collections.unmodifiableSet(propmap.keySet());
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ReceiveTaskImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -35,6 +35,7 @@
import org.jbpm.api.model.Message;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.ReceiveTask;
import org.jbpm.api.model.internal.ProcessStructure;
import org.jbpm.api.runtime.ExecutionContext;
import org.jbpm.api.runtime.Token;
@@ -50,7 +51,7 @@
* @since 08-Jul-2008
*/
@Entity(name = "ReceiveTask")
-public class ReceiveTaskImpl extends TaskImpl implements MessageListener
+public class ReceiveTaskImpl extends TaskImpl implements ReceiveTask, MessageListener
{
private static final long serialVersionUID = 1L;
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SendTaskImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SendTaskImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SendTaskImpl.java 2008-10-10 16:04:35 UTC (rev 2529)
@@ -31,6 +31,7 @@
import org.jbpm.api.model.Node;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.SendTask;
import org.jbpm.api.model.internal.ProcessStructure;
import org.jbpm.api.runtime.ExecutionHandler;
import org.jbpm.api.runtime.Token;
@@ -45,7 +46,7 @@
* @since 08-Jul-2008
*/
@Entity(name = "SendTask")
-public class SendTaskImpl extends TaskImpl
+public class SendTaskImpl extends TaskImpl implements SendTask
{
private static final long serialVersionUID = 1L;
Modified: projects/spec/trunk/pom.xml
===================================================================
--- projects/spec/trunk/pom.xml 2008-10-10 13:50:25 UTC (rev 2528)
+++ projects/spec/trunk/pom.xml 2008-10-10 16:04:35 UTC (rev 2529)
@@ -34,6 +34,7 @@
<!-- Modules -->
<modules>
<module>modules/api</module>
+ <module>modules/dialects</module>
<module>modules/ri</module>
<module>modules/cts</module>
</modules>
@@ -42,6 +43,7 @@
<properties>
<hibernate.version>3.2.6.ga</hibernate.version>
<log4j.version>1.2.14</log4j.version>
+ <jaxb.ri.version>2.1.7</jaxb.ri.version>
<mysql.connector.version>5.1.6</mysql.connector.version>
<slf4j.version>1.5.3</slf4j.version>
</properties>
@@ -67,6 +69,16 @@
<version>${hibernate.version}</version>
</dependency>
<dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>${jaxb.ri.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-xjc</artifactId>
+ <version>${jaxb.ri.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
17 years, 6 months
JBoss JBPM SVN: r2528 - in projects/spec/trunk/modules/ri/src/main: java/org/jbpm/ri/runtime and 1 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-10-10 09:50:25 -0400 (Fri, 10 Oct 2008)
New Revision: 2528
Added:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/SessionAssociation.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java
Modified:
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParticipantImpl.java
projects/spec/trunk/modules/ri/src/main/resources/jbpm-cfg-beans.xml
Log:
Execute the node in a Tx
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-10-10 12:01:01 UTC (rev 2527)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/NodeImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
@@ -78,7 +78,6 @@
{
private static final long serialVersionUID = 1L;
- // provide logging
final static Logger log = LoggerFactory.getLogger(NodeImpl.class);
@Basic
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParticipantImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParticipantImpl.java 2008-10-10 12:01:01 UTC (rev 2527)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParticipantImpl.java 2008-10-10 13:50:25 UTC (rev 2528)
@@ -45,8 +45,7 @@
private static final long serialVersionUID = 1L;
@Id @GeneratedValue
- @SuppressWarnings("unused")
- private int id;
+ protected int id;
@Basic
protected String name;
@@ -65,6 +64,11 @@
this.name = otherImpl.name;
}
+ // Persistence ctor
+ protected ParticipantImpl()
+ {
+ }
+
@Override
public ObjectName getName()
{
Added: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/SessionAssociation.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/SessionAssociation.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/SessionAssociation.java 2008-10-10 13:50:25 UTC (rev 2528)
@@ -0,0 +1,70 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+import org.hibernate.Session;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Associates the Hibernate session with the current thread
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+public abstract class SessionAssociation
+{
+ final static Logger log = LoggerFactory.getLogger(SessionAssociation.class);
+
+ private static ThreadLocal<Session> sessionAssociation = new ThreadLocal<Session>();
+
+ public static Session getSession()
+ {
+ return sessionAssociation.get();
+ }
+
+ public static Session setSession(Session session)
+ {
+ sessionAssociation.set(session);
+ return session;
+ }
+
+ public static void closeSession(Session session)
+ {
+ if (session != getSession())
+ throw new IllegalArgumentException("Not the associated session");
+
+ // Close the session
+ try
+ {
+ session.close();
+ }
+ catch (RuntimeException rte)
+ {
+ log.error("Cannot close the associated session", rte);
+ }
+
+ sessionAssociation.remove();
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/SessionAssociation.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java 2008-10-10 13:50:25 UTC (rev 2528)
@@ -0,0 +1,96 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.runtime;
+
+//$Id$
+
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.service.PersistenceService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * An interceptor that handles Node transactions
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 07-Oct-2008
+ */
+public class TransactionInterceptor implements NodeInterceptor
+{
+ final static Logger log = LoggerFactory.getLogger(TransactionInterceptor.class);
+
+ private PersistenceService service;
+
+ @Override
+ public void execute(RuntimeContext rtContext)
+ {
+ Node node = rtContext.getNode();
+
+ PersistenceService service = getPersistenceService(node.getProcessEngine());
+ Session session = SessionAssociation.setSession(service.createSession());
+
+ // Begin the Tx
+ Transaction tx = session.beginTransaction();
+ try
+ {
+ // Load the node
+ node = service.loadNode(session, node.getClass(), node.getKey());
+
+ // Call the next interceptor in the chain
+ rtContext.next();
+
+ // Save the node
+ service.saveNode(session, node);
+
+ // Commit the Tx
+ tx.commit();
+ }
+ catch (RuntimeException rte)
+ {
+ try
+ {
+ // Rollback the Tx
+ tx.rollback();
+ }
+ catch (RuntimeException rbex)
+ {
+ log.error("Cannot roll back transaction", rbex);
+ }
+ throw rte;
+ }
+ finally
+ {
+ SessionAssociation.closeSession(session);
+ }
+ }
+
+ private PersistenceService getPersistenceService(ProcessEngine engine)
+ {
+ if (service == null)
+ service = engine.getService(PersistenceService.class);
+
+ return service;
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/runtime/TransactionInterceptor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/ri/src/main/resources/jbpm-cfg-beans.xml
===================================================================
--- projects/spec/trunk/modules/ri/src/main/resources/jbpm-cfg-beans.xml 2008-10-10 12:01:01 UTC (rev 2527)
+++ projects/spec/trunk/modules/ri/src/main/resources/jbpm-cfg-beans.xml 2008-10-10 13:50:25 UTC (rev 2528)
@@ -60,6 +60,7 @@
<bean name="jBPMProcessService" class="org.jbpm.ri.service.ProcessServiceImpl" >
<property name="interceptors">
<list elementClass="java.lang.String">
+ <value>org.jbpm.ri.runtime.TransactionInterceptor</value>
<value>org.jbpm.ri.runtime.SignalHandlerInterceptor</value>
<value>org.jbpm.ri.runtime.FlowHandlerInterceptor</value>
<value>org.jbpm.ri.runtime.AssignmentInterceptor</value>
17 years, 6 months
JBoss JBPM SVN: r2527 - in jbpm3/trunk/modules/gwt-console: war/src/main/java/org/jboss/bpm/console/client/process and 1 other directories.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-10-10 08:01:01 -0400 (Fri, 10 Oct 2008)
New Revision: 2527
Modified:
jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/MockProcessDAO.java
jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java
jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java
Log:
Implement remove process instance on MockProcessDAO
Modified: jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/MockProcessDAO.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/MockProcessDAO.java 2008-10-10 11:41:39 UTC (rev 2526)
+++ jbpm3/trunk/modules/gwt-console/server/src/main/java/org/jboss/bpm/console/server/dao/internal/MockProcessDAO.java 2008-10-10 12:01:01 UTC (rev 2527)
@@ -81,21 +81,8 @@
public List<ProcessDefinition> removeProcessDefinition(long processId)
{
- /*List<ProcessDefinition> updatedList = new ArrayList<ProcessDefinition>();
- boolean match = false;
- for(ProcessDefinition pd : defs)
- {
- if(processId != pd.getProcessId())
- updatedList.add(pd);
- else
- match = true;
- }
+ System.out.println("Remove definition " + processId);
- if(!match)
- throw new IllegalArgumentException("No process with id " + processId);
-
- return updatedList;*/
-
ProcessDefinition toBeRemoved = null;
for(ProcessDefinition pd : defs)
{
@@ -116,22 +103,23 @@
return instances;
}
-
public List<ProcessInstance> removeProcessInstance(long instanceId)
{
- List<ProcessInstance> updatedList = new ArrayList<ProcessInstance>();
- boolean match = false;
- for(ProcessInstance i : instances)
+
+ System.out.println("Remove instance " + instanceId);
+
+ ProcessInstance toBeRemoved = null;
+ for(ProcessInstance instance : instances)
{
- if(instanceId != i.getId())
- updatedList.add(i);
- else
- match = true;
+ if(instanceId == instance.getId())
+ toBeRemoved = instance;
}
- if(!match)
- throw new IllegalArgumentException("No instance with id " + instanceId);
+ if(null==toBeRemoved)
+ throw new IllegalArgumentException("No process with id " + instanceId);
+ else
+ instances.remove(toBeRemoved);
- return updatedList;
+ return instances;
}
}
Modified: jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java 2008-10-10 11:41:39 UTC (rev 2526)
+++ jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/process/ProcessInstanceList.java 2008-10-10 12:01:01 UTC (rev 2527)
@@ -78,7 +78,7 @@
{
if("yes".equals( btnID) )
{
- ProcessInstance instance = (ProcessInstance)row2InstanceMap.get(row);
+ ProcessInstance instance = row2InstanceMap.get(row);
String url = view.getConfig().getRemoveInstanceURL(instance.getId());
RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url);
Modified: jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java 2008-10-10 11:41:39 UTC (rev 2526)
+++ jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java 2008-10-10 12:01:01 UTC (rev 2527)
@@ -53,7 +53,7 @@
private Store store;
private PagingToolbar pagingToolbar;
- boolean storeInit = false;
+ private boolean storeInit = false;
public RemoteListView(String titleName, ConsoleView view, String resourceUrl)
{
@@ -194,7 +194,6 @@
*/
public void onLoad(Store store, Record[] records)
{
- System.out.println("onLoad");
onRecordsLoaded(records);
if(!storeInit)
@@ -206,13 +205,6 @@
containerPanel.doLayout();
}
-
- public void onDataChanged(Store store)
- {
- super.onDataChanged(store);
- System.out.println("onDataChanged");
- }
-
public void onLoadException(Throwable throwable)
{
throwable.printStackTrace(System.out);
17 years, 6 months
JBoss JBPM SVN: r2526 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/test and 6 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-10-10 07:41:39 -0400 (Fri, 10 Oct 2008)
New Revision: 2526
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestProcessCatalog.java
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequencePersistenceTest.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ProcessDefinitionPersistenceTest.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ProcessPersistenceTest.java
Removed:
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/processmanager/
projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/persistence/
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/signalmanager/
Modified:
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/ProcessService.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/ProcessDefinitionServiceTest.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
Log:
Add persistence tests for proc and procdef
Modified: 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 2008-10-10 10:57:20 UTC (rev 2525)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -30,7 +30,6 @@
import javax.management.ObjectName;
-import org.hibernate.Session;
import org.jbpm.api.client.Deployment;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.ProcessDefinition;
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-10 10:57:20 UTC (rev 2525)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -31,7 +31,6 @@
import javax.management.ObjectName;
-import org.hibernate.Session;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.ProcessDefinition;
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestProcessCatalog.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestProcessCatalog.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestProcessCatalog.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -0,0 +1,108 @@
+/*
+ * 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.test;
+
+// $Id$
+
+import junit.framework.TestCase;
+
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.Assignment;
+import org.jbpm.api.model.EndEvent;
+import org.jbpm.api.model.Expression;
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.model.SequenceFlow;
+import org.jbpm.api.model.StartEvent;
+import org.jbpm.api.model.Task;
+import org.jbpm.api.model.Assignment.AssignTime;
+import org.jbpm.api.model.builder.ProcessBuilder;
+import org.jbpm.api.service.ProcessBuilderService;
+
+/**
+ * A catalog of CTS test processes
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 24-Sep-2008
+ */
+public abstract class CTSTestProcessCatalog
+{
+ public static ProcessDefinition getDefaultProcess(ProcessEngine engine)
+ {
+ ProcessBuilder builder = engine.getService(ProcessBuilderService.class).getProcessBuilder();
+ builder.addProcess("Proc");
+ builder.addProcessProperty("proP1", "valP1").addProcessProperty("proP2", "valP2");
+ builder.addProcessMessage("procMsg").addProperty("msgPropName", "msgPropVal");
+ builder.addProcessAssignment(AssignTime.Start, Expression.ExpressionLanguage.MVEL, "foo==true", "fooTrue");
+ 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(ProcessDefinition procDef)
+ {
+ TestCase.assertNotNull("Process not null", procDef);
+ TestCase.assertEquals("Proc", procDef.getName());
+
+ TestCase.assertEquals("Two proc props", 2, procDef.getPropertyNames().size());
+ TestCase.assertEquals("valP1", procDef.getProperty("proP1").getValue());
+ TestCase.assertEquals("valP2", procDef.getProperty("proP2").getValue());
+
+ Message procMsg = procDef.getMessage("procMsg");
+ TestCase.assertEquals("One proc message", 1, procDef.getMessages().size());
+ TestCase.assertEquals("msgPropVal", procMsg.getProperty("msgPropName").getValue());
+
+ TestCase.assertEquals("One proc assignment", 1, procDef.getAssignments().size());
+ Assignment procAssign = procDef.getAssignments().get(0);
+ TestCase.assertEquals(AssignTime.Start, procAssign.getAssignTime());
+ TestCase.assertEquals("foo==true", procAssign.getFrom().getExpressionBody());
+ TestCase.assertEquals("fooTrue", procAssign.getTo().getName());
+
+ StartEvent start = (StartEvent)procDef.getNode("Start");
+ Task task = (Task)procDef.getNode("Task");
+ EndEvent end = (EndEvent)procDef.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());
+ }
+}
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/test/CTSTestProcessCatalog.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/ProcessBuilderTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessBuilderTest.java 2008-10-10 10:57:20 UTC (rev 2525)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessBuilderTest.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -28,6 +28,7 @@
import org.jbpm.api.model.builder.ProcessBuilder;
import org.jbpm.api.service.ProcessBuilderService;
import org.jbpm.api.test.CTSTestCase;
+import org.jbpm.api.test.CTSTestProcessCatalog;
/**
* Test the ProcessBuilder
@@ -39,8 +40,8 @@
{
public void testBasicProcess() throws Exception
{
- ProcessDefinition procDef = ProcessCatalog.getDefaultProcess();
- ProcessCatalog.validateDefaultProcess(procDef);
+ ProcessDefinition procDef = CTSTestProcessCatalog.getDefaultProcess(getProcessEngine());
+ CTSTestProcessCatalog.validateDefaultProcess(procDef);
}
public void testNoProcessName() throws Exception
Deleted: 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/ProcessCatalog.java 2008-10-10 10:57:20 UTC (rev 2525)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessCatalog.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -1,90 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.test.cts.service.process;
-
-// $Id$
-
-import junit.framework.TestCase;
-
-import org.jbpm.api.model.EndEvent;
-import org.jbpm.api.model.ProcessDefinition;
-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.service.ProcessBuilderService;
-
-/**
- * A catalog of CTS test processes
- *
- * @author thomas.diesler(a)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(ProcessDefinition 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());
- }
-}
Modified: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/process/ProcessDefinitionServiceTest.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -33,6 +33,7 @@
import org.jbpm.api.service.ProcessDefinitionService;
import org.jbpm.api.service.ProcessService;
import org.jbpm.api.test.CTSTestCase;
+import org.jbpm.api.test.CTSTestProcessCatalog;
/**
* Test the ProcessDefinition
@@ -44,8 +45,8 @@
{
public void testBasicProcess() throws Exception
{
- ProcessDefinition procDef = ProcessCatalog.getDefaultProcess();
- ProcessCatalog.validateDefaultProcess(procDef);
+ ProcessDefinition procDef = CTSTestProcessCatalog.getDefaultProcess(getProcessEngine());
+ CTSTestProcessCatalog.validateDefaultProcess(procDef);
ProcessEngine engine = procDef.getProcessEngine();
assertNotNull("ProcessEngine not null", engine);
@@ -59,7 +60,7 @@
public void testNewInstance() throws Exception
{
- ProcessDefinition procDef = ProcessCatalog.getDefaultProcess();
+ ProcessDefinition procDef = CTSTestProcessCatalog.getDefaultProcess(getProcessEngine());
ProcessEngine engine = procDef.getProcessEngine();
ProcessDefinitionService procDefService = engine.getService(ProcessDefinitionService.class);
@@ -73,7 +74,7 @@
public void testRegister() throws Exception
{
- ProcessDefinition procDef = ProcessCatalog.getDefaultProcess();
+ ProcessDefinition procDef = CTSTestProcessCatalog.getDefaultProcess(getProcessEngine());
ProcessEngine engine = procDef.getProcessEngine();
ProcessDefinitionService procDefService = engine.getService(ProcessDefinitionService.class);
Added: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequencePersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequencePersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequencePersistenceTest.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -0,0 +1,52 @@
+/*
+ * 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.pattern.control.sequence;
+
+// $Id$
+
+import java.io.IOException;
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.model.ProcessDefinition;
+import org.jbpm.api.service.PersistenceService;
+
+/**
+ * Test the basic execution sequence
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 03-Jul-2008
+ */
+public class SequencePersistenceTest extends SequenceTest
+{
+ public ProcessDefinition getProcessDefinition() throws IOException
+ {
+ ProcessDefinition procDef = super.getProcessDefinition();
+
+ // Save the process definition
+ PersistenceService service = getProcessEngine().getService(PersistenceService.class);
+ ObjectName procDefID = service.saveProcessDefinition(procDef);
+
+ // Reload the process defintion
+ return service.loadProcessDefinition(procDefID);
+ }
+}
Property changes on: projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/pattern/control/sequence/SequencePersistenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -29,7 +29,6 @@
import javax.management.ObjectName;
-import org.hibernate.Session;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Process.ProcessStatus;
Copied: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ProcessDefinitionPersistenceTest.java (from rev 2516, projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/persistence/ProcessDefinitionPersistenceTest.java)
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ProcessDefinitionPersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ProcessDefinitionPersistenceTest.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -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.test.ri.service.persistence;
+
+// $Id: PersistenceServiceTest.java 2419 2008-09-29 07:22:59Z thomas.diesler(a)jboss.com $
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.ProcessNotFoundException;
+import org.jbpm.api.client.ProcessEngine;
+import org.jbpm.api.model.EndEvent;
+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.api.test.CTSTestProcessCatalog;
+
+/**
+ * Test the PersistenceService
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ProcessDefinitionPersistenceTest extends CTSTestCase
+{
+ /**
+ * Test save, load, delete of a trivial ProcessDefinition
+ */
+ public void testProcessDefinition() throws Exception
+ {
+ ProcessEngine engine = getProcessEngine();
+ PersistenceService service = engine.getService(PersistenceService.class);
+
+ // Save the ProcessDefinition
+ ProcessDefinition procDef = CTSTestProcessCatalog.getDefaultProcess(engine);
+ service.saveProcessDefinition(procDef);
+
+ // Load the ProcessDefinition
+ ObjectName procDefID = procDef.getKey();
+ ProcessDefinition loadDef = service.loadProcessDefinition(procDefID);
+ CTSTestProcessCatalog.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
+ }
+ }
+}
Copied: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ProcessPersistenceTest.java (from rev 2515, projects/spec/trunk/modules/cts/src/test/java/org/jbpm/test/cts/service/persistence/ProcessPersistenceTest.java)
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ProcessPersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ProcessPersistenceTest.java 2008-10-10 11:41:39 UTC (rev 2526)
@@ -0,0 +1,90 @@
+/*
+ * 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.ri.service.persistence;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.ProcessNotFoundException;
+import org.jbpm.api.client.ProcessEngine;
+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.service.ProcessDefinitionService;
+import org.jbpm.api.test.CTSTestCase;
+import org.jbpm.api.test.CTSTestProcessCatalog;
+
+/**
+ * Test the PersistenceService
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public class ProcessPersistenceTest extends CTSTestCase
+{
+ /**
+ * Test save, load, delete of a trivial Process
+ */
+ public void testProcess() throws Exception
+ {
+ ProcessEngine engine = getProcessEngine();
+ ProcessDefinitionService procDefService = engine.getService(ProcessDefinitionService.class);
+ PersistenceService service = engine.getService(PersistenceService.class);
+
+ // Register (save) the process definition, which is not done implicitly
+ ProcessDefinition procDef = unregisterOnTearDown(CTSTestProcessCatalog.getDefaultProcess(engine));
+ procDefService.registerProcessDefinition(procDef);
+
+ // Create and save the Process
+ Process proc = procDef.newInstance();
+ service.saveProcess(proc);
+
+ // Load the process
+ ObjectName procID = proc.getKey();
+ Process loadProc = service.loadProcess(procID);
+ CTSTestProcessCatalog.validateDefaultProcess(loadProc.getProcessDefinition());
+
+ 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
+ {
+ service.loadProcess(procID);
+ fail("ProcessNotFoundException expected");
+ }
+ catch (ProcessNotFoundException ex)
+ {
+ // expected
+ }
+ }
+}
17 years, 6 months
JBoss JBPM SVN: r2525 - in projects/spec/trunk/modules: api/src/main/java/org/jbpm/api/model/internal and 5 other directories.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-10-10 06:57:20 -0400 (Fri, 10 Oct 2008)
New Revision: 2525
Added:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ComplexGateway.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ExclusiveGateway.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Gate.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/InclusiveGateway.java
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ParallelGateway.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GateImpl.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ComplexGatewayPersistenceTest.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/EndEventPersistenceTest.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ExclusiveGatewayPersistenceTest.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/InclusiveGatewayPersistenceTest.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/NodePersistenceTest.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ParallelGatewayPersistenceTest.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/StartEventPersistenceTest.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/UserTaskPersistenceTest.java
Modified:
projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/internal/ProcessStructure.java
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/ProcessService.java
projects/spec/trunk/modules/ri/pom.xml
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ComplexGatewayImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EndEventImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SequenceFlowImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SignalImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/UserTaskImpl.java
projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/TaskPersistenceTest.java
Log:
Add more persistence tests
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ComplexGateway.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ComplexGateway.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ComplexGateway.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,50 @@
+/*
+ * 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 Complex Gateway handles situations that are not easily handled through the other types of Gateways. Complex
+ * Gateways can also be used to combine a set of linked simple Gateways into a single, more compact situation. Modelers
+ * can provide complex expressions that determine the merging and/or splitting behavior of the Gateway.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public interface ComplexGateway extends Gateway
+{
+ /**
+ * If there are multiple incoming Sequence Flow, an IncomingCondition expression
+ * MUST be set by the modeler. This will consist of an expression that can reference
+ * Sequence Flow names and/or Process Properties (Data).
+ */
+ Expression getIncommingCondition();
+
+ /**
+ * If there are multiple outgoing Sequence Flow, an OutgoingCondition expression
+ * MUST be set by the modeler. This will consist of an expression that can reference
+ * (outgoing) Sequence Flow Ids and/or Process Properties (Data).
+ */
+ Expression getOutgoingCondition();
+
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ComplexGateway.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ExclusiveGateway.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ExclusiveGateway.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ExclusiveGateway.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.api.model;
+
+//$Id$
+
+/**
+ * Exclusive Gateways (Decisions) are locations within a business process where the Sequence Flow can take two or more
+ * alternative paths. This is basically the “fork in the road” for a process. For a given performance (or instance) of the
+ * process, only one of the paths can be taken (this should not be confused with forking of paths—refer to “Forking Flow”)
+ *
+ * A Decision is not an activity from the business process perspective, but is a type of Gateway that controls
+ * the Sequence Flow between activities. It can be thought of as a question that is asked at that point in the Process. The
+ * question has a defined set of alternative answers (Gates). Each Decision Gate is associated with a condition expression
+ * found within an outgoing Sequence Flow. When a Gate is chosen during the performance of the Process, the
+ * corresponding Sequence Flow is then chosen. A Token arriving at the Decision would be directed down the appropriate
+ * path, based on the chosen Gate.
+ *
+ * The Exclusive Decision has two or more outgoing Sequence Flow, but only one of them may be taken during the
+ * performance of the Process. Thus, the Exclusive Decision defines a set of alternative paths for the Token to take as it
+ * traverses the Flow. There are two types of Exclusive Decisions: Data-Based and Event-Based.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public interface ExclusiveGateway extends Gateway
+{
+ enum ExclusiveType
+ {
+ Data, Event
+ }
+
+ /**
+ * ExclusiveType is by default Data. The ExclusiveType MAY be set to Event.
+ */
+ ExclusiveType getExclusiveType();
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ExclusiveGateway.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Gate.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Gate.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Gate.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,73 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.api.model;
+
+//$Id$
+
+import java.util.List;
+
+/**
+ * There MAY be zero or more Gates (except where noted below). Zero Gates are
+ * allowed if the Gateway is last object in a Process flow and there are no Start or
+ * End Events for the Process. If there are zero or only one incoming Sequence
+ * Flow, then there MUST be at least two Gates.
+ *
+ * For Exclusive Data-Based Gateways
+ * When two Gates are required, one of them MAY be the DefaultGate.
+ *
+ * For Exclusive Event-Based Gateways
+ * There MUST be two or more Gates. (Note that this type of Gateway does not act
+ * only as a Merge--it is always a Decision, at least.)
+ *
+ * For Inclusive Gateways
+ * When two Gates are required, one of them MAY be the DefaultGate.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public interface Gate
+{
+ /**
+ * Each Gate MUST have an associated (outgoing) Sequence Flow.
+ *
+ * For Exclusive Event-Based, Complex, and Parallel Gateways:
+ * The Sequence Flow MUST have its Condition attribute set to None (there is not an
+ * evaluation of a condition expression).
+ *
+ * For Exclusive Data-Based, and Inclusive Gateways:
+ * The Sequence Flow MUST have its Condition attribute set to Expression and
+ * MUST have a valid ConditionExpression. The ConditionExpression MUST be
+ * unique for all the Gates within the Gateway. If there is only one Gate (i.e., the
+ * Gateway is acting only as a Merge), then Sequence Flow MUST have its Condition
+ * set to None.
+ *
+ * For DefaultGates:
+ * The Sequence Flow MUST have its Condition attribute set to Otherwise
+ */
+ SequenceFlow getOutgoingSequenceFlow();
+
+ /**
+ * One or more assignment expressions MAY be made for each Gate. The
+ * Assignment SHALL be performed when the Gate is selected.
+ */
+ List<Assignment> getAssignments();
+}
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/Gate.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/InclusiveGateway.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/InclusiveGateway.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/InclusiveGateway.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -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$
+
+/**
+ * This Decision represents a branching point where Alternatives are based on conditional expressions contained within
+ * outgoing Sequence Flow. However, in this case, the True evaluation of one condition expression does not exclude the
+ * evaluation of other condition expressions. All Sequence Flow with a True evaluation will be traversed by a Token. In
+ * some sense it’s like a grouping of related independent Binary (Yes/No) Decisions--and can be modeled that way. Since
+ * each path is independent, all combinations of the paths may be taken, from zero to all. However, it should be
+ * designed so that at least one path is taken.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public interface InclusiveGateway extends Gateway
+{
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/InclusiveGateway.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ParallelGateway.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ParallelGateway.java (rev 0)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ParallelGateway.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,35 @@
+/*
+ * 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$
+
+/**
+ * Parallel Gateway is required when two or more Activities need to be executed in parallel.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 08-Jul-2008
+ */
+public interface ParallelGateway extends Gateway
+{
+
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/ParallelGateway.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/internal/ProcessStructure.java
===================================================================
--- projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/internal/ProcessStructure.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/model/internal/ProcessStructure.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -24,7 +24,6 @@
//$Id$
import java.util.List;
-import java.util.Set;
import org.jbpm.api.model.Assignment;
import org.jbpm.api.model.Message;
@@ -76,7 +75,7 @@
*
* @return An empty list if there are none
*/
- Set<Message> getMessages();
+ List<Message> getMessages();
/**
* Get an associated {@link Message} by name.
Modified: 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 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessDefinitionService.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -55,7 +55,7 @@
protected ProcessDefinitionService()
{
}
-
+
/**
* Locate the default ProcessDefinitionService
*/
@@ -64,24 +64,24 @@
ProcessEngine engine = ProcessEngine.getProcessEngine();
return engine.getService(ProcessDefinitionService.class);
}
-
- /**
- * Deploy a new ProcessDefinition to the ProcessDefinition service.
+
+ /**
+ * 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.
*/
@@ -89,22 +89,14 @@
{
if (getProcessDefinition(procDef.getKey()) != null)
throw new IllegalStateException("Process definition already registered: " + procDef);
-
+
log.debug("registerProcessDefinition: " + procDef);
-
+
// Save the ProcessDefinition through the PersistenceService
PersistenceService persService = getProcessEngine().getService(PersistenceService.class);
- Session session = persService.createSession();
- try
- {
- ObjectName procDefID = persService.saveProcessDefinition(procDef);
- procDefs.put(procDefID, procDef);
- return procDefID;
- }
- finally
- {
- session.close();
- }
+ ObjectName procDefID = persService.saveProcessDefinition(procDef);
+ procDefs.put(procDefID, procDef);
+ return procDefID;
}
/**
@@ -117,27 +109,19 @@
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 persService = engine.getService(PersistenceService.class);
- Session session = persService.createSession();
- try
- {
- persService.deleteProcessDefinition(procDef);
- procDefs.remove(procDefID);
- removed = true;
- }
- finally
- {
- session.close();
- }
+ persService.deleteProcessDefinition(procDef);
+ procDefs.remove(procDefID);
+ removed = true;
}
return removed;
}
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-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/api/src/main/java/org/jbpm/api/service/ProcessService.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -66,42 +66,34 @@
ProcessEngine engine = ProcessEngine.getProcessEngine();
return engine.getService(ProcessService.class);
}
-
+
/**
* Register a Process.
*/
public ObjectName registerProcess(Process proc)
{
log.debug("registerProcess: " + proc);
-
+
if (getProcess(proc.getKey()) != null)
throw new IllegalStateException("Process already registered: " + proc);
-
+
ProcessStatus procStatus = proc.getProcessStatus();
ProcessDefinition procDef = proc.getProcessDefinition();
ProcessEngine engine = getProcessEngine();
-
+
if (procStatus != ProcessStatus.None)
throw new IllegalStateException("Cannot register process in state: " + procStatus);
-
+
// Register the process definition if needed
ProcessDefinitionService procDefService = engine.getService(ProcessDefinitionService.class);
if (procDefService.getProcessDefinition(procDef.getKey()) == null)
procDefService.registerProcessDefinition(procDef);
-
+
// Save the process through the PersistenceService
PersistenceService persService = getProcessEngine().getService(PersistenceService.class);
- Session session = persService.createSession();
- try
- {
- ObjectName procID = persService.saveProcess(proc);
- registeredProcs.put(procID, proc);
- return procID;
- }
- finally
- {
- session.close();
- }
+ ObjectName procID = persService.saveProcess(proc);
+ registeredProcs.put(procID, proc);
+ return procID;
}
/**
@@ -114,20 +106,12 @@
if (proc != null)
{
log.debug("unregisterProcess: " + proc);
-
+
// Delete the process through the PersistenceService
PersistenceService persService = getProcessEngine().getService(PersistenceService.class);
- Session session = persService.createSession();
- try
- {
- persService.deleteProcess(proc);
- registeredProcs.remove(procID);
- removed = true;
- }
- finally
- {
- session.close();
- }
+ persService.deleteProcess(proc);
+ registeredProcs.remove(procID);
+ removed = true;
}
return removed;
}
Modified: projects/spec/trunk/modules/ri/pom.xml
===================================================================
--- projects/spec/trunk/modules/ri/pom.xml 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/pom.xml 2008-10-10 10:57:20 UTC (rev 2525)
@@ -104,6 +104,17 @@
</dependency>
</dependencies>
+ <!-- Plugins -->
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
<!-- Profiles -->
<profiles>
</profiles>
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ComplexGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ComplexGatewayImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ComplexGatewayImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -26,6 +26,7 @@
import javax.persistence.Entity;
import org.jbpm.api.NotImplementedException;
+import org.jbpm.api.model.ComplexGateway;
import org.jbpm.api.model.Expression;
import org.jbpm.api.model.internal.ProcessStructure;
@@ -38,7 +39,7 @@
* @since 08-Jul-2008
*/
@Entity(name = "ComplexGateway")
-public class ComplexGatewayImpl extends GatewayImpl
+public class ComplexGatewayImpl extends GatewayImpl implements ComplexGateway
{
private static final long serialVersionUID = 1L;
@@ -47,11 +48,11 @@
super(procStruct, name, GatewayType.Complex);
}
- public GatewayType getGatewayType()
+ // Persistence ctor
+ protected ComplexGatewayImpl()
{
- return GatewayType.Complex;
}
-
+
public Expression getIncommingCondition()
{
throw new NotImplementedException("JBPM-1636", "ComplexGateway incomming condition");
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EndEventImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EndEventImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/EndEventImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -58,9 +58,7 @@
@Entity(name = "EndEvent")
public class EndEventImpl extends EventImpl implements EndEvent, SingleInFlowSupport
{
- // provide serial version UID
private static final long serialVersionUID = 1L;
- // provide logging
final static Logger log = LoggerFactory.getLogger(EndEventImpl.class);
public EndEventImpl(ProcessStructure procStruct, String name)
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ExclusiveGatewayImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -29,6 +29,7 @@
import javax.persistence.Entity;
import javax.persistence.Transient;
+import org.jbpm.api.model.ExclusiveGateway;
import org.jbpm.api.model.Expression;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.SequenceFlow;
@@ -51,7 +52,7 @@
* @since 08-Jul-2008
*/
@Entity(name = "ExclusiveGateway")
-public class ExclusiveGatewayImpl extends GatewayImpl
+public class ExclusiveGatewayImpl extends GatewayImpl implements ExclusiveGateway
{
private static final long serialVersionUID = 1L;
@@ -66,7 +67,18 @@
super(procStruct, name, GatewayType.Exclusive);
}
+ // Persistence ctor
+ protected ExclusiveGatewayImpl()
+ {
+ }
+
@Override
+ public ExclusiveType getExclusiveType()
+ {
+ return ExclusiveType.Data;
+ }
+
+ @Override
protected ExecutionHandler getDefaultExecutionHandler()
{
final Node thisNode = this;
Added: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GateImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GateImpl.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GateImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,86 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.ri.model;
+
+//$Id$
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+
+import org.hibernate.annotations.IndexColumn;
+import org.jbpm.api.model.Assignment;
+import org.jbpm.api.model.Gate;
+import org.jbpm.api.model.SequenceFlow;
+
+/**
+ * There MAY be zero or more Gates (except where noted below). Zero Gates are allowed if the Gateway is last object in a
+ * Process flow and there are no Start or End Events for the Process. If there are zero or only one incoming Sequence
+ * Flow, then there MUST be at least two Gates.
+ *
+ * For Exclusive Data-Based Gateways When two Gates are required, one of them MAY be the DefaultGate.
+ *
+ * For Exclusive Event-Based Gateways There MUST be two or more Gates. (Note that this type of Gateway does not act only
+ * as a Merge--it is always a Decision, at least.)
+ *
+ * For Inclusive Gateways When two Gates are required, one of them MAY be the DefaultGate.
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+@Entity(name = "Gate")
+public class GateImpl implements Gate
+{
+ // provide serial version UID
+ private static final long serialVersionUID = 1L;
+
+ @Id
+ @GeneratedValue
+ protected Integer id;
+
+ @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = SequenceFlowImpl.class)
+ protected SequenceFlow outFlow;
+
+ @IndexColumn(name = "assignIndex")
+ @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = AssignmentImpl.class)
+ private List<Assignment> assignments = new ArrayList<Assignment>();
+
+ @Override
+ public List<Assignment> getAssignments()
+ {
+ return Collections.unmodifiableList(assignments);
+ }
+
+ @Override
+ public SequenceFlow getOutgoingSequenceFlow()
+ {
+ return outFlow;
+ }
+}
\ No newline at end of file
Property changes on: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GateImpl.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/GatewayImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -79,6 +79,11 @@
this.gatewayType = gatewayType;
}
+ // Persistence ctor
+ protected GatewayImpl()
+ {
+ }
+
@Override
public ObjectName getKey()
{
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/InclusiveGatewayImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -31,6 +31,7 @@
import javax.persistence.Entity;
import org.jbpm.api.model.Expression;
+import org.jbpm.api.model.InclusiveGateway;
import org.jbpm.api.model.Node;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.Expression.ExpressionLanguage;
@@ -54,7 +55,7 @@
* @since 08-Jul-2008
*/
@Entity(name = "InclusiveGateway")
-public class InclusiveGatewayImpl extends GatewayImpl
+public class InclusiveGatewayImpl extends GatewayImpl implements InclusiveGateway
{
private static final long serialVersionUID = 1L;
@@ -66,6 +67,11 @@
super(procStruct, name, GatewayType.Inclusive);
}
+ // Persistence ctor
+ protected InclusiveGatewayImpl()
+ {
+ }
+
@Override
protected FlowHandler getDefaultFlowHandler()
{
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/MessageImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -55,6 +55,9 @@
protected int id;
@Basic
+ private int msgIndex;
+
+ @Basic
private String name;
@OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = ParticipantImpl.class)
@@ -74,13 +77,28 @@
this.name = name;
}
- public MessageImpl(String name, Participant toRef, ParticipantImpl fromRef)
+ public MessageImpl(String name, Participant toRef, Participant fromRef)
{
this(name);
this.toRef = toRef;
this.fromRef = fromRef;
}
+ // Persistence ctor
+ protected MessageImpl()
+ {
+ }
+
+ int getMsgIndex()
+ {
+ return msgIndex;
+ }
+
+ void setMsgIndex(int msgIndex)
+ {
+ this.msgIndex = msgIndex;
+ }
+
public String getName()
{
return name;
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ParallelGatewayImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -32,6 +32,7 @@
import javax.persistence.Transient;
import org.jbpm.api.model.Node;
+import org.jbpm.api.model.ParallelGateway;
import org.jbpm.api.model.SequenceFlow;
import org.jbpm.api.model.internal.ProcessStructure;
import org.jbpm.api.runtime.ExecutionHandler;
@@ -50,7 +51,7 @@
* @since 08-Jul-2008
*/
@Entity(name = "ParallelGateway")
-public class ParallelGatewayImpl extends GatewayImpl
+public class ParallelGatewayImpl extends GatewayImpl implements ParallelGateway
{
private static final long serialVersionUID = 1L;
@@ -68,6 +69,11 @@
super(procStruct, name, GatewayType.Parallel);
}
+ // Persistence ctor
+ protected ParallelGatewayImpl()
+ {
+ }
+
@Override
protected ExecutionHandler getDefaultExecutionHandler()
{
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessDefinitionImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -127,7 +127,7 @@
}
@Override
- public Set<Message> getMessages()
+ public List<Message> getMessages()
{
return procStruct.getMessages();
}
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -130,7 +130,7 @@
}
@Override
- public Set<Message> getMessages()
+ public List<Message> getMessages()
{
return procStruct.getMessages();
}
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/ProcessStructureImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -25,7 +25,6 @@
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -80,8 +79,9 @@
@OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = PropertySupportImpl.class)
protected PropertySupport propSupport = new PropertySupportImpl();
+ @IndexColumn(name = "msgIndex")
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = MessageImpl.class)
- private Set<Message> messages = new HashSet<Message>();
+ private List<Message> messages = new ArrayList<Message>();
@IndexColumn(name = "assignIndex")
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = AssignmentImpl.class)
@@ -179,17 +179,19 @@
}
@Override
- public Set<Message> getMessages()
+ public List<Message> getMessages()
{
- return Collections.unmodifiableSet(messages);
+ return Collections.unmodifiableList(messages);
}
- public void addMessage(Message msg)
+ public void addMessage(Message message)
{
- if (getMessage(msg.getName()) != null)
- throw new InvalidProcessException("Duplicate message: " + msg);
+ if (getMessage(message.getName()) != null)
+ throw new InvalidProcessException("Duplicate message: " + message);
- messages.add(msg);
+ MessageImpl messageImpl = (MessageImpl)message;
+ messageImpl.setMsgIndex(messages.size());
+ messages.add(message);
}
@Override
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SequenceFlowImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SequenceFlowImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SequenceFlowImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -51,8 +51,7 @@
// provide serial version UID
private static final long serialVersionUID = 1L;
- @Id
- @GeneratedValue
+ @Id @GeneratedValue
protected Integer id;
@Basic
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SignalImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SignalImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/SignalImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -79,6 +79,11 @@
this.message = message;
}
+ // Persistence ctor
+ protected SignalImpl()
+ {
+ }
+
public ObjectName getFromRef()
{
return ObjectNameFactory.create(fromRef);
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/UserTaskImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/UserTaskImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/model/UserTaskImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -27,7 +27,10 @@
import java.util.List;
import javax.management.ObjectName;
+import javax.persistence.CascadeType;
import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.OneToOne;
import javax.persistence.Transient;
import org.jbpm.api.InvalidProcessException;
@@ -57,13 +60,12 @@
{
private static final long serialVersionUID = 1L;
- // provide logging
final static Logger log = LoggerFactory.getLogger(UserTaskImpl.class);
- @Transient
+ @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = MessageImpl.class)
protected MessageImpl outMessageRef;
- @Transient
+ @OneToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, targetEntity = MessageImpl.class)
protected MessageImpl inMessageRef;
@Transient
@@ -71,13 +73,13 @@
@Transient
private transient Token suspendedToken;
-
+
@Transient
private transient TokenExecutor tokenExecutor;
-
+
@Transient
private transient UserTaskCallback userCallback;
-
+
public UserTaskImpl(ProcessStructure procStruct, String name)
{
super(procStruct, TaskType.User, name);
@@ -122,19 +124,18 @@
this.inMessageRef = message;
}
-
@Override
public void execute(RuntimeContext rtContext)
{
Token token = rtContext.getToken();
tokenExecutor = rtContext.getTokenExecutor();
-
+
if (receivedMessages.size() == 0)
{
MessageSender messageSender = new MessageSender(this, outMessageRef);
messageSender.sendMessage(token);
}
-
+
if (receivedMessages.size() > 0)
{
// Copy the expected properties from the received message
@@ -160,15 +161,17 @@
if (inMessageRef.getName().equals(msgName))
{
log.debug("catchMessage in " + this + " => " + message);
-
+
// Verify expected properties
for (String propName : inMessageRef.getPropertyNames())
{
if (message.getProperty(propName) == null)
throw new IllegalArgumentException("Received message does not contain expected property: " + propName);
}
-
+
// Store the received message
+ MessageImpl messageImpl = (MessageImpl)message;
+ messageImpl.setMsgIndex(receivedMessages.size());
receivedMessages.add(message);
// Activate the suspended token
@@ -228,7 +231,7 @@
protected void unregister(Process proc)
{
super.unregister(proc);
-
+
if (userCallback != null)
userCallback.detach(this);
}
Modified: projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java
===================================================================
--- projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/main/java/org/jbpm/ri/service/ProcessServiceImpl.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -29,9 +29,11 @@
import javax.management.ObjectName;
+import org.hibernate.Session;
import org.jbpm.api.client.ProcessEngine;
import org.jbpm.api.model.Process;
import org.jbpm.api.model.Process.ProcessStatus;
+import org.jbpm.api.service.PersistenceService;
import org.jbpm.api.service.ProcessService;
import org.jbpm.ri.model.ProcessImpl;
import org.jbpm.ri.runtime.NodeInterceptor;
@@ -80,6 +82,11 @@
procImpl.register(proc);
procImpl.setProcessStatus(ProcessStatus.Ready);
+
+ // Save the process through the PersistenceService
+ PersistenceService persService = getProcessEngine().getService(PersistenceService.class);
+ persService.saveProcess(proc);
+
return procID;
}
Added: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ComplexGatewayPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ComplexGatewayPersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ComplexGatewayPersistenceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,52 @@
+/*
+ * 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.ri.service.persistence;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.model.ComplexGateway;
+import org.jbpm.api.model.Gateway.GatewayType;
+import org.jbpm.ri.model.ComplexGatewayImpl;
+
+/**
+ * Test the HibernatePersistenceService for ComplexGateway
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+public class ComplexGatewayPersistenceTest extends NodePersistenceTest
+{
+ public void testNoneComplexGateway() throws Exception
+ {
+ ComplexGateway orgNode = new ComplexGatewayImpl(null, "Gateway");
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ ComplexGateway wasNode = loadNode(ComplexGatewayImpl.class, nodeID);
+ assertEquals("Gateway", wasNode.getName());
+ assertEquals(GatewayType.Complex, wasNode.getGatewayType());
+
+ deleteNode(wasNode);
+ }
+}
Property changes on: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ComplexGatewayPersistenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/EndEventPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/EndEventPersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/EndEventPersistenceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,100 @@
+/*
+ * 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.ri.service.persistence;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Signal;
+import org.jbpm.api.model.EndEvent;
+import org.jbpm.api.model.Event.EventDetailType;
+import org.jbpm.api.model.Signal.SignalType;
+import org.jbpm.ri.model.MessageImpl;
+import org.jbpm.ri.model.SignalImpl;
+import org.jbpm.ri.model.EndEventImpl;
+
+/**
+ * Test the HibernatePersistenceService for EndEvent
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+public class EndEventPersistenceTest extends NodePersistenceTest
+{
+ public void testNoneEndEvent() throws Exception
+ {
+ EndEvent orgNode = new EndEventImpl(null, "End");
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ EndEvent wasNode = loadNode(EndEventImpl.class, nodeID);
+ assertEquals("End", wasNode.getName());
+ assertEquals(EventDetailType.None, wasNode.getDetailType());
+
+ deleteNode(wasNode);
+ }
+
+ public void testSignalEndEvent() throws Exception
+ {
+ EndEventImpl orgNode = new EndEventImpl(null, "End");
+
+ orgNode.setResultType(EventDetailType.Signal);
+ orgNode.setSignalRef(new SignalImpl(SignalType.USER_SIGNAL, getTestID(), "sigMessage"));
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ EndEvent wasNode = loadNode(EndEventImpl.class, nodeID);
+ assertEquals("End", wasNode.getName());
+ assertEquals(EventDetailType.Signal, wasNode.getDetailType());
+
+ Signal wasSig = wasNode.getSignalRef();
+ assertEquals(SignalType.USER_SIGNAL, wasSig.getSignalType());
+ assertEquals(getTestID(), wasSig.getFromRef());
+ assertEquals("sigMessage", wasSig.getMessage());
+
+ deleteNode(wasNode);
+ }
+
+ public void testMessageEndEvent() throws Exception
+ {
+ EndEventImpl orgNode = new EndEventImpl(null, "End");
+
+ orgNode.setResultType(EventDetailType.Message);
+ MessageImpl outMsg = new MessageImpl("outMsg");
+ outMsg.addProperty("outProp", "outVal");
+ orgNode.setMessageRef(outMsg);
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ EndEvent wasNode = loadNode(EndEventImpl.class, nodeID);
+ assertEquals("End", wasNode.getName());
+ assertEquals(EventDetailType.Message, wasNode.getDetailType());
+
+ Message wasMsg = wasNode.getMessageRef();
+ assertEquals("outMsg", wasMsg.getName());
+ assertEquals("outVal", wasMsg.getProperty("outProp").getValue());
+
+ deleteNode(wasNode);
+ }
+}
Property changes on: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/EndEventPersistenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ExclusiveGatewayPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ExclusiveGatewayPersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ExclusiveGatewayPersistenceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,52 @@
+/*
+ * 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.ri.service.persistence;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.model.ExclusiveGateway;
+import org.jbpm.api.model.Gateway.GatewayType;
+import org.jbpm.ri.model.ExclusiveGatewayImpl;
+
+/**
+ * Test the HibernatePersistenceService for ExclusiveGateway
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+public class ExclusiveGatewayPersistenceTest extends NodePersistenceTest
+{
+ public void testNoneExclusiveGateway() throws Exception
+ {
+ ExclusiveGateway orgNode = new ExclusiveGatewayImpl(null, "Gateway");
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ ExclusiveGateway wasNode = loadNode(ExclusiveGatewayImpl.class, nodeID);
+ assertEquals("Gateway", wasNode.getName());
+ assertEquals(GatewayType.Exclusive, wasNode.getGatewayType());
+
+ deleteNode(wasNode);
+ }
+}
Property changes on: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ExclusiveGatewayPersistenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/InclusiveGatewayPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/InclusiveGatewayPersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/InclusiveGatewayPersistenceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,52 @@
+/*
+ * 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.ri.service.persistence;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.model.InclusiveGateway;
+import org.jbpm.api.model.Gateway.GatewayType;
+import org.jbpm.ri.model.InclusiveGatewayImpl;
+
+/**
+ * Test the HibernatePersistenceService for InclusiveGateway
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+public class InclusiveGatewayPersistenceTest extends NodePersistenceTest
+{
+ public void testNoneInclusiveGateway() throws Exception
+ {
+ InclusiveGateway orgNode = new InclusiveGatewayImpl(null, "Gateway");
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ InclusiveGateway wasNode = loadNode(InclusiveGatewayImpl.class, nodeID);
+ assertEquals("Gateway", wasNode.getName());
+ assertEquals(GatewayType.Inclusive, wasNode.getGatewayType());
+
+ deleteNode(wasNode);
+ }
+}
Property changes on: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/InclusiveGatewayPersistenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/NodePersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/NodePersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/NodePersistenceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,104 @@
+/*
+ * 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.ri.service.persistence;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.hibernate.Hibernate;
+import org.hibernate.Session;
+import org.hibernate.StaleStateException;
+import org.hibernate.Transaction;
+import org.jbpm.api.model.Node;
+import org.jbpm.api.service.PersistenceService;
+import org.jbpm.api.test.CTSTestCase;
+import org.jbpm.ri.service.HibernatePersistenceServiceImpl;
+
+/**
+ * Abstract HibernatePersistenceService test for Nodes
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+public abstract class NodePersistenceTest extends CTSTestCase
+{
+ protected HibernatePersistenceServiceImpl service;
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ service = (HibernatePersistenceServiceImpl)PersistenceService.locatePersistenceService();
+ }
+
+ protected ObjectName saveNode(Node node)
+ {
+ Session session = service.createSession();
+ Transaction tx = session.beginTransaction();
+ try
+ {
+ service.saveNode(session, node);
+ tx.commit();
+
+ return node.getKey();
+ }
+ finally
+ {
+ session.close();
+ }
+ }
+
+ protected <T extends Node> T loadNode(Class<T> nodeClass, ObjectName nodeID)
+ {
+ Session session = service.createSession();
+ try
+ {
+ T node = service.loadNode(session, nodeClass, nodeID);
+ Hibernate.initialize(node);
+ return node;
+ }
+ finally
+ {
+ session.close();
+ }
+ }
+
+ protected void deleteNode(Node node)
+ {
+ Session session = service.createSession();
+ Transaction tx = session.beginTransaction();
+ try
+ {
+ service.deleteNode(session, node);
+ tx.commit();
+ }
+ catch(StaleStateException ex)
+ {
+ // ignore, because the node was already deleted by a cascade
+ }
+ finally
+ {
+ session.close();
+ }
+ }
+}
Property changes on: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/NodePersistenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ParallelGatewayPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ParallelGatewayPersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ParallelGatewayPersistenceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,52 @@
+/*
+ * 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.ri.service.persistence;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.model.ParallelGateway;
+import org.jbpm.api.model.Gateway.GatewayType;
+import org.jbpm.ri.model.ParallelGatewayImpl;
+
+/**
+ * Test the HibernatePersistenceService for ParallelGateway
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+public class ParallelGatewayPersistenceTest extends NodePersistenceTest
+{
+ public void testNoneParallelGateway() throws Exception
+ {
+ ParallelGateway orgNode = new ParallelGatewayImpl(null, "Gateway");
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ ParallelGateway wasNode = loadNode(ParallelGatewayImpl.class, nodeID);
+ assertEquals("Gateway", wasNode.getName());
+ assertEquals(GatewayType.Parallel, wasNode.getGatewayType());
+
+ deleteNode(wasNode);
+ }
+}
Property changes on: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/ParallelGatewayPersistenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/StartEventPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/StartEventPersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/StartEventPersistenceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,100 @@
+/*
+ * 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.ri.service.persistence;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.Signal;
+import org.jbpm.api.model.StartEvent;
+import org.jbpm.api.model.Event.EventDetailType;
+import org.jbpm.api.model.Signal.SignalType;
+import org.jbpm.ri.model.MessageImpl;
+import org.jbpm.ri.model.SignalImpl;
+import org.jbpm.ri.model.StartEventImpl;
+
+/**
+ * Test the HibernatePersistenceService for StartEvent
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+public class StartEventPersistenceTest extends NodePersistenceTest
+{
+ public void testNoneStartEvent() throws Exception
+ {
+ StartEvent orgNode = new StartEventImpl(null, "Start");
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ StartEvent wasNode = loadNode(StartEventImpl.class, nodeID);
+ assertEquals("Start", wasNode.getName());
+ assertEquals(EventDetailType.None, wasNode.getDetailType());
+
+ deleteNode(wasNode);
+ }
+
+ public void testSignalStartEvent() throws Exception
+ {
+ StartEventImpl orgNode = new StartEventImpl(null, "Start");
+
+ orgNode.setTriggerType(EventDetailType.Signal);
+ orgNode.setSignalRef(new SignalImpl(SignalType.USER_SIGNAL, getTestID(), "sigMessage"));
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ StartEvent wasNode = loadNode(StartEventImpl.class, nodeID);
+ assertEquals("Start", wasNode.getName());
+ assertEquals(EventDetailType.Signal, wasNode.getDetailType());
+
+ Signal wasSig = wasNode.getSignalRef();
+ assertEquals(SignalType.USER_SIGNAL, wasSig.getSignalType());
+ assertEquals(getTestID(), wasSig.getFromRef());
+ assertEquals("sigMessage", wasSig.getMessage());
+
+ deleteNode(wasNode);
+ }
+
+ public void testMessageStartEvent() throws Exception
+ {
+ StartEventImpl orgNode = new StartEventImpl(null, "Start");
+
+ orgNode.setTriggerType(EventDetailType.Message);
+ MessageImpl inMsg = new MessageImpl("inMsg");
+ inMsg.addProperty("inProp", "inVal");
+ orgNode.setMessageRef(inMsg);
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ StartEvent wasNode = loadNode(StartEventImpl.class, nodeID);
+ assertEquals("Start", wasNode.getName());
+ assertEquals(EventDetailType.Message, wasNode.getDetailType());
+
+ Message wasMsg = wasNode.getMessageRef();
+ assertEquals("inMsg", wasMsg.getName());
+ assertEquals("inVal", wasMsg.getProperty("inProp").getValue());
+
+ deleteNode(wasNode);
+ }
+}
Property changes on: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/StartEventPersistenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/TaskPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/TaskPersistenceTest.java 2008-10-10 10:32:25 UTC (rev 2524)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/TaskPersistenceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -28,10 +28,6 @@
import javax.management.ObjectName;
-import org.hibernate.Hibernate;
-import org.hibernate.Session;
-import org.hibernate.StaleStateException;
-import org.hibernate.Transaction;
import org.jbpm.api.model.Assignment;
import org.jbpm.api.model.Expression;
import org.jbpm.api.model.InputSet;
@@ -47,8 +43,6 @@
import org.jbpm.api.runtime.SignalHandler;
import org.jbpm.api.runtime.Token;
import org.jbpm.api.runtime.TokenExecutor;
-import org.jbpm.api.service.PersistenceService;
-import org.jbpm.api.test.CTSTestCase;
import org.jbpm.ri.model.AssignmentImpl;
import org.jbpm.ri.model.ExpressionImpl;
import org.jbpm.ri.model.InputSetImpl;
@@ -56,7 +50,6 @@
import org.jbpm.ri.model.PropertyImpl;
import org.jbpm.ri.model.SequenceFlowImpl;
import org.jbpm.ri.model.TaskImpl;
-import org.jbpm.ri.service.HibernatePersistenceServiceImpl;
/**
* Test the HibernatePersistenceService for Tasks
@@ -64,57 +57,48 @@
* @author thomas.diesler(a)jboss.com
* @since 08-Jul-2008
*/
-public class TaskPersistenceTest extends CTSTestCase
+public class TaskPersistenceTest extends NodePersistenceTest
{
- HibernatePersistenceServiceImpl service;
-
- @Override
- protected void setUp() throws Exception
- {
- super.setUp();
- service = (HibernatePersistenceServiceImpl)PersistenceService.locatePersistenceService();
- }
-
public void testSimpleTask() throws Exception
{
- Task orgTask = new TaskImpl(null, TaskType.None, "Task");
+ Task orgNode = new TaskImpl(null, TaskType.None, "Task");
- ObjectName taskID = saveNode(orgTask);
+ ObjectName nodeID = saveNode(orgNode);
- Task wasTask = loadNode(taskID);
- assertEquals("Task", wasTask.getName());
- assertEquals(TaskType.None, wasTask.getTaskType());
+ Task wasNode = loadNode(TaskImpl.class, nodeID);
+ assertEquals("Task", wasNode.getName());
+ assertEquals(TaskType.None, wasNode.getTaskType());
- deleteNode(wasTask);
+ deleteNode(wasNode);
}
public void testTaskProperties() throws Exception
{
- TaskImpl orgTask = new TaskImpl(null, TaskType.None, "Task");
- orgTask.addProperty("propOne", "valOne");
- orgTask.addProperty("propTwo", "valTwo");
+ TaskImpl orgNode = new TaskImpl(null, TaskType.None, "Task");
+ orgNode.addProperty("propOne", "valOne");
+ orgNode.addProperty("propTwo", "valTwo");
- ObjectName taskID = saveNode(orgTask);
+ ObjectName nodeID = saveNode(orgNode);
- Task wasTask = loadNode(taskID);
- Set<String> propNames = wasTask.getPropertyNames();
+ Task wasNode = loadNode(TaskImpl.class, nodeID);
+ Set<String> propNames = wasNode.getPropertyNames();
assertEquals(2, propNames.size());
- assertEquals("valOne", wasTask.getProperty("propOne").getValue());
- assertEquals("valTwo", wasTask.getProperty("propTwo").getValue());
+ assertEquals("valOne", wasNode.getProperty("propOne").getValue());
+ assertEquals("valTwo", wasNode.getProperty("propTwo").getValue());
- deleteNode(wasTask);
+ deleteNode(wasNode);
}
public void testTaskAssignments() throws Exception
{
- TaskImpl orgTask = new TaskImpl(null, TaskType.None, "Task");
- orgTask.addAssignment(new AssignmentImpl(AssignTime.Start, new ExpressionImpl("foo"), new PropertyImpl("propFoo", null)));
- orgTask.addAssignment(new AssignmentImpl(AssignTime.End, new ExpressionImpl("bar"), new PropertyImpl("propBar", null)));
+ TaskImpl orgNode = new TaskImpl(null, TaskType.None, "Task");
+ orgNode.addAssignment(new AssignmentImpl(AssignTime.Start, new ExpressionImpl("foo"), new PropertyImpl("propFoo", null)));
+ orgNode.addAssignment(new AssignmentImpl(AssignTime.End, new ExpressionImpl("bar"), new PropertyImpl("propBar", null)));
- ObjectName taskID = saveNode(orgTask);
+ ObjectName nodeID = saveNode(orgNode);
- Task wasTask = loadNode(taskID);
- List<Assignment> ass = wasTask.getAssignments();
+ Task wasNode = loadNode(TaskImpl.class, nodeID);
+ List<Assignment> ass = wasNode.getAssignments();
assertEquals(2, ass.size());
Assignment assOne = ass.get(0);
Assignment assTwo = ass.get(1);
@@ -125,7 +109,7 @@
assertEquals("bar", assTwo.getFrom().getExpressionBody());
assertEquals("propBar", assTwo.getTo().getName());
- deleteNode(wasTask);
+ deleteNode(wasNode);
}
public void testInOutFlows() throws Exception
@@ -140,8 +124,8 @@
ObjectName aID = saveNode(taskA);
ObjectName bID = saveNode(taskB);
- Task wasA = loadNode(aID);
- Task wasB = loadNode(bID);
+ Task wasA = loadNode(TaskImpl.class, aID);
+ Task wasB = loadNode(TaskImpl.class, bID);
SequenceFlow outFlowA = wasA.getOutFlow();
assertEquals("TaskB", outFlowA.getTargetName());
@@ -180,18 +164,18 @@
}
}
- TaskImpl orgTask = new TaskImpl(null, TaskType.None, "Task");
- orgTask.setExecutionHandler(ExecHandler.class);
+ TaskImpl orgNode = new TaskImpl(null, TaskType.None, "Task");
+ orgNode.setExecutionHandler(ExecHandler.class);
- ObjectName taskID = saveNode(orgTask);
+ ObjectName nodeID = saveNode(orgNode);
- Task wasTask = loadNode(taskID);
+ Task wasNode = loadNode(TaskImpl.class, nodeID);
- ExecutionHandler execHandler = wasTask.getExecutionHandler();
+ ExecutionHandler execHandler = wasNode.getExecutionHandler();
assertNotNull(execHandler);
assertTrue(execHandler instanceof ExecutionHandler);
- deleteNode(wasTask);
+ deleteNode(wasNode);
}
public void testSignalHandler() throws Exception
@@ -222,18 +206,18 @@
}
}
- TaskImpl orgTask = new TaskImpl(null, TaskType.None, "Task");
- orgTask.setSignalHandler(SigHandler.class);
+ TaskImpl orgNode = new TaskImpl(null, TaskType.None, "Task");
+ orgNode.setSignalHandler(SigHandler.class);
- ObjectName taskID = saveNode(orgTask);
+ ObjectName nodeID = saveNode(orgNode);
- Task wasTask = loadNode(taskID);
+ Task wasNode = loadNode(TaskImpl.class, nodeID);
- SignalHandler sigHandler = wasTask.getSignalHandler();
+ SignalHandler sigHandler = wasNode.getSignalHandler();
assertNotNull(sigHandler);
assertTrue(sigHandler instanceof SignalHandler);
- deleteNode(wasTask);
+ deleteNode(wasNode);
}
public void testFlowHandler() throws Exception
@@ -259,140 +243,89 @@
}
}
- TaskImpl orgTask = new TaskImpl(null, TaskType.None, "Task");
- orgTask.setFlowHandler(FlowHandlerImpl.class);
+ TaskImpl orgNode = new TaskImpl(null, TaskType.None, "Task");
+ orgNode.setFlowHandler(FlowHandlerImpl.class);
- ObjectName taskID = saveNode(orgTask);
+ ObjectName nodeID = saveNode(orgNode);
- Task wasTask = loadNode(taskID);
+ Task wasNode = loadNode(TaskImpl.class, nodeID);
- FlowHandler flowHandler = wasTask.getFlowHandler();
+ FlowHandler flowHandler = wasNode.getFlowHandler();
assertNotNull(flowHandler);
assertTrue(flowHandler instanceof FlowHandler);
- deleteNode(wasTask);
+ deleteNode(wasNode);
}
public void testInputSet() throws Exception
{
- TaskImpl orgTask = new TaskImpl(null, TaskType.None, "Task");
+ TaskImpl orgNode = new TaskImpl(null, TaskType.None, "Task");
InputSetImpl inSetOne = new InputSetImpl();
inSetOne.addProperty("oneName", "oneValue");
- orgTask.addInputSet(inSetOne);
+ orgNode.addInputSet(inSetOne);
InputSetImpl inSetTwo = new InputSetImpl();
inSetTwo.addProperty("twoName", "twoValue");
- orgTask.addInputSet(inSetTwo);
+ orgNode.addInputSet(inSetTwo);
- ObjectName taskID = saveNode(orgTask);
+ ObjectName nodeID = saveNode(orgNode);
- Task wasTask = loadNode(taskID);
+ Task wasNode = loadNode(TaskImpl.class, nodeID);
- List<InputSet> inSets = wasTask.getInputSets();
+ List<InputSet> inSets = wasNode.getInputSets();
assertEquals(2, inSets.size());
InputSet wasOne = inSets.get(0);
assertEquals("oneValue", wasOne.getProperty("oneName").getValue());
InputSet wasTwo = inSets.get(1);
assertEquals("twoValue", wasTwo.getProperty("twoName").getValue());
- deleteNode(wasTask);
+ deleteNode(wasNode);
}
public void testOutputSet() throws Exception
{
- TaskImpl orgTask = new TaskImpl(null, TaskType.None, "Task");
+ TaskImpl orgNode = new TaskImpl(null, TaskType.None, "Task");
OutputSetImpl outSetOne = new OutputSetImpl();
outSetOne.addProperty("oneName", "oneValue");
- orgTask.addOutputSet(outSetOne);
+ orgNode.addOutputSet(outSetOne);
OutputSetImpl outSetTwo = new OutputSetImpl();
outSetTwo.addProperty("twoName", "twoValue");
- orgTask.addOutputSet(outSetTwo);
+ orgNode.addOutputSet(outSetTwo);
- ObjectName taskID = saveNode(orgTask);
+ ObjectName nodeID = saveNode(orgNode);
- Task wasTask = loadNode(taskID);
+ Task wasNode = loadNode(TaskImpl.class, nodeID);
- List<OutputSet> outSets = wasTask.getOutputSets();
+ List<OutputSet> outSets = wasNode.getOutputSets();
assertEquals(2, outSets.size());
OutputSet wasOne = outSets.get(0);
assertEquals("oneValue", wasOne.getProperty("oneName").getValue());
OutputSet wasTwo = outSets.get(1);
assertEquals("twoValue", wasTwo.getProperty("twoName").getValue());
- deleteNode(wasTask);
+ deleteNode(wasNode);
}
public void testIORules() throws Exception
{
- TaskImpl orgTask = new TaskImpl(null, TaskType.None, "Task");
- orgTask.addIORule(new ExpressionImpl("ioOne"));
- orgTask.addIORule(new ExpressionImpl("ioTwo"));
+ TaskImpl orgNode = new TaskImpl(null, TaskType.None, "Task");
+ orgNode.addIORule(new ExpressionImpl("ioOne"));
+ orgNode.addIORule(new ExpressionImpl("ioTwo"));
- ObjectName taskID = saveNode(orgTask);
+ ObjectName nodeID = saveNode(orgNode);
- Task wasTask = loadNode(taskID);
+ Task wasNode = loadNode(TaskImpl.class, nodeID);
- List<Expression> rules = wasTask.getIORules();
+ List<Expression> rules = wasNode.getIORules();
assertEquals(2, rules.size());
Expression wasOne = rules.get(0);
assertEquals("ioOne", wasOne.getExpressionBody());
Expression wasTwo = rules.get(1);
assertEquals("ioTwo", wasTwo.getExpressionBody());
- deleteNode(wasTask);
+ deleteNode(wasNode);
}
-
- private ObjectName saveNode(Node node)
- {
- Session session = service.createSession();
- Transaction tx = session.beginTransaction();
- try
- {
- service.saveNode(session, node);
- tx.commit();
-
- return node.getKey();
- }
- finally
- {
- session.close();
- }
- }
-
- private Task loadNode(ObjectName nodeID)
- {
- Session session = service.createSession();
- try
- {
- Task task = service.loadNode(session, TaskImpl.class, nodeID);
- Hibernate.initialize(task);
- return task;
- }
- finally
- {
- session.close();
- }
- }
-
- private void deleteNode(Node node)
- {
- Session session = service.createSession();
- Transaction tx = session.beginTransaction();
- try
- {
- service.deleteNode(session, node);
- tx.commit();
- }
- catch(StaleStateException ex)
- {
- // ignore, because the node was already deleted by a cascade
- }
- finally
- {
- session.close();
- }
- }
}
Added: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/UserTaskPersistenceTest.java
===================================================================
--- projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/UserTaskPersistenceTest.java (rev 0)
+++ projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/UserTaskPersistenceTest.java 2008-10-10 10:57:20 UTC (rev 2525)
@@ -0,0 +1,70 @@
+/*
+ * 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.ri.service.persistence;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jbpm.api.model.Message;
+import org.jbpm.api.model.UserTask;
+import org.jbpm.api.model.Task.TaskType;
+import org.jbpm.ri.model.MessageImpl;
+import org.jbpm.ri.model.UserTaskImpl;
+
+/**
+ * Test the HibernatePersistenceService for UserTasks
+ *
+ * @author thomas.diesler(a)jboss.com
+ * @since 10-Oct-2008
+ */
+public class UserTaskPersistenceTest extends NodePersistenceTest
+{
+ public void testUserTask() throws Exception
+ {
+ UserTaskImpl orgNode = new UserTaskImpl(null, "Task");
+
+ MessageImpl outMsg = new MessageImpl("outMsg");
+ outMsg.addProperty("outProp", "outVal");
+ orgNode.setOutMessageRef(outMsg);
+
+ MessageImpl inMsg = new MessageImpl("inMsg");
+ inMsg.addProperty("inProp", "inVal");
+ orgNode.setInMessageRef(inMsg);
+
+ ObjectName nodeID = saveNode(orgNode);
+
+ UserTask wasNode = loadNode(UserTaskImpl.class, nodeID);
+ assertEquals("Task", wasNode.getName());
+ assertEquals(TaskType.User, wasNode.getTaskType());
+
+ Message wasOut = wasNode.getOutMessageRef();
+ assertEquals("outMsg", wasOut.getName());
+ assertEquals("outVal", wasOut.getProperty("outProp").getValue());
+
+ Message wasIn = wasNode.getInMessageRef();
+ assertEquals("inMsg", wasIn.getName());
+ assertEquals("inVal", wasIn.getProperty("inProp").getValue());
+
+ deleteNode(wasNode);
+ }
+}
Property changes on: projects/spec/trunk/modules/ri/src/test/java/org/jbpm/test/ri/service/persistence/UserTaskPersistenceTest.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
17 years, 6 months
JBoss JBPM SVN: r2524 - jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets.
by do-not-reply@jboss.org
Author: heiko.braun(a)jboss.com
Date: 2008-10-10 06:32:25 -0400 (Fri, 10 Oct 2008)
New Revision: 2524
Modified:
jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java
Log:
Fix PagingToolbar disappearance
Modified: jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java
===================================================================
--- jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java 2008-10-10 09:30:20 UTC (rev 2523)
+++ jbpm3/trunk/modules/gwt-console/war/src/main/java/org/jboss/bpm/console/client/widgets/RemoteListView.java 2008-10-10 10:32:25 UTC (rev 2524)
@@ -51,7 +51,10 @@
protected String title;
private Store store;
+ private PagingToolbar pagingToolbar;
+ boolean storeInit = false;
+
public RemoteListView(String titleName, ConsoleView view, String resourceUrl)
{
super();
@@ -85,12 +88,12 @@
DataProxy dataProxy = new ScriptTagProxy(resourceUrl, 1000*10);
- store = new Store(dataProxy, reader, false); // boolean==remoteSort, add's GET parameters
+ store = new Store(dataProxy, reader, false); // boolean==remoteSort, add's GET parameters
store.addStoreListener( new ListViewStoreListener(this, grid) );
grid.setStore(store);
// ------------------------------------------
- final PagingToolbar pagingToolbar = createToolbar(store);
+ pagingToolbar = createToolbar(store);
grid.setBottomToolbar(pagingToolbar);
// PanelListener will lazy load store data.
@@ -100,7 +103,7 @@
{
public boolean doBeforeRender(Component component)
{
- store.load(0, PAGE_SIZE);
+ reloadStore();
return true;
}
}
@@ -114,19 +117,22 @@
grid.setTitle(titleName);
grid.setFrame(true);
- grid.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
+ grid.setWidth(UIConstants.EDITOR_PANEL_WIDTH);
grid.stripeRows(true);
+ grid.setLoadMask(true);
grid.addGridCellListener( new ListViewCellListener() );
return grid;
}
- private PagingToolbar createToolbar(Store store)
+ private PagingToolbar createToolbar(final Store store)
{
PagingToolbar pagingToolbar = new PagingToolbar(store);
pagingToolbar.setPageSize(PAGE_SIZE);
- pagingToolbar.setDisplayInfo(false);
+ pagingToolbar.setDisplayInfo(true);
+ pagingToolbar.setDisplayMsg("{0} - {1} of {2}");
+ pagingToolbar.setEmptyMsg("No topics to display");
pagingToolbar.addButton(
new ToolbarButton("Examine", new ButtonListenerAdapter() {
@@ -188,14 +194,25 @@
*/
public void onLoad(Store store, Record[] records)
{
+ System.out.println("onLoad");
+ onRecordsLoaded(records);
- onRecordsLoaded(records);
-
- containerPanel.clear();
- containerPanel.add(grid);
+ if(!storeInit)
+ {
+ containerPanel.clear();
+ containerPanel.add(grid);
+ storeInit = true;
+ }
containerPanel.doLayout();
}
+
+ public void onDataChanged(Store store)
+ {
+ super.onDataChanged(store);
+ System.out.println("onDataChanged");
+ }
+
public void onLoadException(Throwable throwable)
{
throwable.printStackTrace(System.out);
@@ -229,6 +246,6 @@
protected void reloadStore()
{
- store.load(0,PAGE_SIZE);
+ store.load(0,PAGE_SIZE);
}
}
17 years, 6 months
JBoss JBPM SVN: r2523 - projects/parent/trunk.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-10-10 05:30:20 -0400 (Fri, 10 Oct 2008)
New Revision: 2523
Modified:
projects/parent/trunk/pom.xml
Log:
<testFailureIgnore></testFailureIgnore>
Modified: projects/parent/trunk/pom.xml
===================================================================
--- projects/parent/trunk/pom.xml 2008-10-10 08:39:30 UTC (rev 2522)
+++ projects/parent/trunk/pom.xml 2008-10-10 09:30:20 UTC (rev 2523)
@@ -88,6 +88,7 @@
<configuration>
<failIfNoTests>false</failIfNoTests>
<trimStackTrace>false</trimStackTrace>
+ <testFailureIgnore>${testFailureIgnore}</testFailureIgnore>
<systemProperties>
<property>
<name>log4j.output.dir</name>
17 years, 6 months
JBoss JBPM SVN: r2522 - jbpm3/trunk/modules/enterprise/jar.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-10-10 04:39:30 -0400 (Fri, 10 Oct 2008)
New Revision: 2522
Modified:
jbpm3/trunk/modules/enterprise/jar/pom.xml
Log:
Put slf4j-log4j in scope test
Modified: jbpm3/trunk/modules/enterprise/jar/pom.xml
===================================================================
--- jbpm3/trunk/modules/enterprise/jar/pom.xml 2008-10-10 08:25:17 UTC (rev 2521)
+++ jbpm3/trunk/modules/enterprise/jar/pom.xml 2008-10-10 08:39:30 UTC (rev 2522)
@@ -94,6 +94,7 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
+ <scope>test</scope>
</dependency>
</dependencies>
17 years, 6 months
JBoss JBPM SVN: r2521 - jbpm3/trunk/hudson/hudson-home.
by do-not-reply@jboss.org
Author: thomas.diesler(a)jboss.com
Date: 2008-10-10 04:25:17 -0400 (Fri, 10 Oct 2008)
New Revision: 2521
Modified:
jbpm3/trunk/hudson/hudson-home/command.sh
Log:
Force an update of the mvn snapshots
Modified: jbpm3/trunk/hudson/hudson-home/command.sh
===================================================================
--- jbpm3/trunk/hudson/hudson-home/command.sh 2008-10-10 08:06:33 UTC (rev 2520)
+++ jbpm3/trunk/hudson/hudson-home/command.sh 2008-10-10 08:25:17 UTC (rev 2521)
@@ -37,7 +37,7 @@
#
cd $JBPMDIR
cp profiles.xml.example profiles.xml
-MVN_CMD="mvn $ENVIRONMENT -Pdistro clean install"
+MVN_CMD="mvn -U $ENVIRONMENT -Pdistro clean install"
echo $MVN_CMD; $MVN_CMD; MVN_STATUS=$?
if [ $MVN_STATUS -ne 0 ]; then
echo maven exit status $MVN_STATUS
17 years, 6 months