[jbpm-commits] JBoss JBPM SVN: r1565 - in api/trunk: modules/api and 7 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Jul 10 05:00:19 EDT 2008
Author: thomas.diesler at jboss.com
Date: 2008-07-10 05:00:19 -0400 (Thu, 10 Jul 2008)
New Revision: 1565
Added:
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InitialToken.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java
Removed:
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/internal/
api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/BasicTask.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Signal.java
Modified:
api/trunk/modules/api/pom.xml
api/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Activity.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ComplexGateway.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Event.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ExclusiveGateway.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InclusiveGateway.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/NamedFlowObject.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ParallelGateway.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/SignalListener.java
api/trunk/modules/api/src/main/java/org/jboss/bpm/test/DefaultEngineTestCase.java
api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java
api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java
api/trunk/pom.xml
Log:
Use JAXB for API model
Modified: api/trunk/modules/api/pom.xml
===================================================================
--- api/trunk/modules/api/pom.xml 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/pom.xml 2008-07-10 09:00:19 UTC (rev 1565)
@@ -10,11 +10,8 @@
<!-- ====================================================================== -->
<!-- $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">
+<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>JBoss jBPM - API Source</name>
<groupId>org.jboss.jbpm</groupId>
<artifactId>jbpm-api</artifactId>
@@ -33,6 +30,10 @@
<!-- Compile Dependencies -->
<dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.jboss.microcontainer</groupId>
<artifactId>jboss-kernel</artifactId>
</dependency>
@@ -61,5 +62,4 @@
</plugin>
</plugins>
</reporting>
-
</project>
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/client/SignalManager.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -30,7 +30,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jboss.bpm.runtime.Signal;
+import org.jboss.bpm.model.Signal;
import org.jboss.bpm.runtime.SignalListener;
/**
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Activity.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Activity.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Activity.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,8 +21,8 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
-
// $Id$
/**
@@ -33,6 +33,20 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface Activity extends NamedFlowObject
+ at XmlType(name="Activity")
+public abstract class Activity extends NamedFlowObject
{
+ /**
+ * Call to initialize fully
+ * Note, this MUST NOT leak into the public API.
+ */
+ protected void init(String name)
+ {
+ if (name == null)
+ {
+ Process proc = getProcess();
+ name = "AnonymousActivity#" + proc.getFlowObjects().size();
+ setName(name);
+ }
+ }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ComplexGateway.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ComplexGateway.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ComplexGateway.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,7 +21,9 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
+
// $Id$
/**
@@ -34,6 +36,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface ComplexGateway extends Gateway
+ at XmlType(name="ComplexGateway")
+public class ComplexGateway extends Gateway
{
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/EndEvent.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,7 +21,13 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+import org.jboss.bpm.runtime.Attachments;
+import org.jboss.bpm.runtime.Token;
+
+
// $Id$
/**
@@ -34,8 +40,42 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface EndEvent extends Event
+ at XmlType(name="EndEvent")
+public class EndEvent extends Event
{
+ @XmlTransient
+ private Result result;
+
/** Get the result */
- Result getResult();
+ public Result getResult()
+ {
+ return result;
+ }
+
+ /** Get signal for enter */
+ public Signal getEnterSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.ENTER_END_EVENT);
+ }
+
+ /** Get signal for exit */
+ public Signal getExitSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.EXIT_END_EVENT);
+ }
+
+ @Override
+ public void execute(final Token token)
+ {
+ super.execute(token);
+
+ // Provide the result
+ result = new Result()
+ {
+ public Attachments getAttachments()
+ {
+ return token.getExecutionContext();
+ }
+ };
+ }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Event.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Event.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Event.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,8 +21,10 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
+
// $Id$
/**
@@ -32,6 +34,22 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface Event extends FlowObject
+ at XmlType(name="Event")
+public abstract class Event extends FlowObject
{
+ /**
+ * Get signal for enter
+ */
+ public Signal getEnterSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.ENTER_EVENT);
+ }
+
+ /**
+ * Get signal for exit
+ */
+ public Signal getExitSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.EXIT_EVENT);
+ }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ExclusiveGateway.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ExclusiveGateway.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ExclusiveGateway.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,7 +21,9 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
+
// $Id$
/**
@@ -30,6 +32,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface ExclusiveGateway extends Gateway
+ at XmlType(name="ExclusiveGateway")
+public class ExclusiveGateway extends Gateway
{
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/FlowObject.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,7 +21,10 @@
*/
package org.jboss.bpm.model;
-import org.jboss.bpm.runtime.Signal;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.runtime.Token;
//$Id$
@@ -32,17 +35,90 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface FlowObject
+ at XmlType(name="FlowObject")
+public abstract class FlowObject
{
- /** Get the associated Process */
- Process getProcess();
+ @XmlTransient
+ protected Process process;
+ @XmlTransient
+ private Object implObject;
+
+ /**
+ * Get the associated Process
+ */
+ public Process getProcess()
+ {
+ return process;
+ }
- /** Get signal for enter */
- Signal getEnterSignal();
+ /**
+ * Get signal for enter
+ */
+ @XmlTransient
+ public abstract Signal getEnterSignal();
- /** Get signal for exit */
- Signal getExitSignal();
+ /**
+ * Get signal for exit
+ */
+ @XmlTransient
+ public abstract Signal getExitSignal();
- /** Execute this flow object*/
- void execute(Token token);
+ /**
+ * Set the associated process
+ * Note, this MUST NOT leak into the public API.
+ */
+ @XmlTransient
+ // TODO
+ public void setProcess(Process process)
+ {
+ if (this.process != null)
+ throw new IllegalStateException("Cannot reassign task to process");
+
+ this.process = process;
+ }
+
+ /**
+ * Set the associated implementation object
+ * Note, this MUST NOT leak into the public API.
+ */
+ // TODO
+ public Object getImplObject()
+ {
+ return implObject;
+ }
+
+ /**
+ * Get the associated implementation object
+ * Note, this MUST NOT leak into the public API.
+ */
+ protected void setImplObject(Object implObject)
+ {
+ this.implObject = implObject;
+ }
+
+ /**
+ * Execute this flow object
+ */
+ public void execute(Token token)
+ {
+ SignalManager sm = SignalManager.locateSignalManager();
+ try
+ {
+ sm.throwSignal(getEnterSignal());
+ executeOverwrite(token);
+ }
+ finally
+ {
+ sm.throwSignal(getExitSignal());
+ }
+ }
+
+ /**
+ * Overwrite to provide an actual implemenation
+ * Note, this MUST NOT leak into the public API.
+ */
+ protected void executeOverwrite(Token token)
+ {
+ // nothing to do
+ }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Gateway.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,8 +21,10 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
+
// $Id$
/**
@@ -32,6 +34,18 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface Gateway extends FlowObject
+ at XmlType(name="Gateway")
+public abstract class Gateway extends FlowObject
{
+ @Override
+ public Signal getEnterSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.ENTER_GATEWAY);
+ }
+
+ @Override
+ public Signal getExitSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.EXIT_GATEWAY);
+ }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InclusiveGateway.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InclusiveGateway.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InclusiveGateway.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,7 +21,9 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
+
// $Id$
/**
@@ -32,6 +34,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface InclusiveGateway extends Gateway
+ at XmlType(name="InclusiveGateway")
+public class InclusiveGateway extends Gateway
{
}
\ No newline at end of file
Copied: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InitialToken.java (from rev 1564, api/trunk/modules/api/src/main/java/org/jboss/bpm/model/internal/InitialToken.java)
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InitialToken.java (rev 0)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/InitialToken.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -0,0 +1,65 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.model;
+
+// $Id$
+
+import org.jboss.bpm.runtime.Attachments;
+import org.jboss.bpm.runtime.BasicAttachments;
+import org.jboss.bpm.runtime.ExecutionContext;
+import org.jboss.bpm.runtime.Token;
+
+/**
+ * An initial token
+ *
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+class InitialToken implements Token
+{
+ private Process proc;
+ private ExecutionContext context;
+
+ public InitialToken(Process proc, Attachments att)
+ {
+ this.proc = proc;
+ this.context = new InitialContext(att);
+ }
+
+ public Process getProcess()
+ {
+ return proc;
+ }
+
+ public ExecutionContext getExecutionContext()
+ {
+ return context;
+ }
+
+ class InitialContext extends BasicAttachments implements ExecutionContext
+ {
+ InitialContext(Attachments att)
+ {
+ super(att);
+ }
+ }
+}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ItermediateEvent.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,7 +21,9 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
+
// $Id$
/**
@@ -34,6 +36,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface ItermediateEvent extends Event
+ at XmlType(name="ItermediateEvent")
+public class ItermediateEvent extends Event
{
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/NamedFlowObject.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/NamedFlowObject.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/NamedFlowObject.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,6 +21,9 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
//$Id$
@@ -30,8 +33,30 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface NamedFlowObject extends FlowObject
+ at XmlType(name="NamedFlowObject")
+public abstract class NamedFlowObject extends FlowObject
{
- /** Get the name */
- String getName();
+ @XmlElement
+ private String name;
+
+ /**
+ * Get the name
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Set the name
+ * Note, this MUST NOT leak into the public API.
+ */
+ // TODO
+ public void setName(String name)
+ {
+ if (this.name != null)
+ throw new IllegalStateException("Cannot rename: " + name);
+
+ this.name = name;
+ }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ParallelGateway.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ParallelGateway.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/ParallelGateway.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,7 +21,9 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
+
// $Id$
/**
@@ -30,6 +32,7 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface ParallelGateway extends Gateway
+ at XmlType(name="ParallelGateway")
+public class ParallelGateway extends Gateway
{
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Process.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,9 +21,23 @@
*/
package org.jboss.bpm.model;
+import java.util.Collections;
+import java.util.HashSet;
import java.util.Set;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.bpm.InvalidProcessException;
+import org.jboss.bpm.NameNotUniqueException;
+import org.jboss.bpm.NotImplementedException;
+import org.jboss.bpm.client.ProcessManager;
import org.jboss.bpm.runtime.Attachments;
@@ -35,26 +49,197 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface Process extends Activity
+ at XmlType(name="Process")
+ at XmlRootElement(name="process")
+public class Process extends Activity
{
- /** Start the process */
- Future<Result> startProcess();
+ @XmlElement
+ protected Set<FlowObject> flowObjects = new HashSet<FlowObject>();
- /** Start the process, with a given execution context */
- Future<Result> startProcess(Attachments att);
+ /**
+ * Call to initialize fully
+ * Note, this MUST NOT leak into the public API.
+ */
+ protected void init(String name)
+ {
+ if (name == null)
+ {
+ ProcessManager pdm = ProcessManager.locateProcessManager();
+ name = "AnonymousProcess#" + pdm.getProcesses().size();
+ setName(name);
+ }
+ }
- /** Get the start event */
- StartEvent getStartEvent();
+ /**
+ * Add a flow object
+ * Note, this MUST NOT leak into the public API.
+ */
+ protected void addFlowObject(FlowObject flowObject)
+ {
+ if (flowObject instanceof StartEvent && getStartEventInternal() != null)
+ throw new InvalidProcessException("Process cannot have multiple start events: " + flowObject);
+
+ if (flowObject instanceof NamedFlowObject)
+ {
+ String name = ((NamedFlowObject)flowObject).getName();
+ if (findFlowObject(name) != null)
+ throw new NameNotUniqueException("NamedFlowObject: " + name);
+ }
+
+ flowObjects.add(flowObject);
+ }
+ /**
+ * Get the start event
+ */
+ @XmlTransient
+ public StartEvent getStartEvent()
+ {
+ StartEvent start = getStartEventInternal();
+ if (start == null)
+ throw new InvalidProcessException("Process does not have a start event");
+
+ return start;
+ }
+
+ private StartEvent getStartEventInternal()
+ {
+ StartEvent start = null;
+ for (FlowObject aux : flowObjects)
+ {
+ if (aux instanceof StartEvent)
+ {
+ start = (StartEvent)aux;
+ break;
+ }
+ }
+ return start;
+ }
+
/** Get the set of end events */
- Set<EndEvent> getEndEvents();
+ @XmlTransient
+ public Set<EndEvent> getEndEvents()
+ {
+ Set<EndEvent> ends = getEndEventsInternal();
+ if (ends.size() == 0)
+ throw new InvalidProcessException("Process does not have end events");
+
+ return ends;
+ }
+
+ private Set<EndEvent> getEndEventsInternal()
+ {
+ Set<EndEvent> ends = new HashSet<EndEvent>();
+ for (FlowObject aux : flowObjects)
+ {
+ if (aux instanceof EndEvent)
+ {
+ ends.add((EndEvent)aux);
+ }
+ }
+ return ends;
+ }
/** Get the set of flow objects */
- Set<FlowObject> getFlowObjects();
+ public Set<FlowObject> getFlowObjects()
+ {
+ return Collections.unmodifiableSet(flowObjects);
+ }
+ /** Start the process */
+ public Future<Result> startProcess()
+ {
+ return startProcess(null);
+ }
+
+ /** Start the process, with a given execution context */
+ public Future<Result> startProcess(Attachments att)
+ {
+ execute(new InitialToken(this, att));
+ return new ResultFuture();
+ }
+
/**
* Find a flow object by name
* @return null if not found
*/
- NamedFlowObject findFlowObject(String name);
+ public NamedFlowObject findFlowObject(String name)
+ {
+ NamedFlowObject nfo = null;
+ for (FlowObject aux : flowObjects)
+ {
+ if (aux instanceof NamedFlowObject && ((NamedFlowObject)aux).getName().equals(name))
+ {
+ nfo = (NamedFlowObject)aux;
+ break;
+ }
+ }
+ return nfo;
+ }
+
+ /**
+ * Get signal for enter
+ */
+ @Override
+ public Signal getEnterSignal()
+ {
+ return new Signal(this, Signal.Type.ENTER_PROCESS);
+ }
+
+ /**
+ * Get signal for exit
+ */
+ @Override
+ public Signal getExitSignal()
+ {
+ return new Signal(this, Signal.Type.EXIT_PROCESS);
+ }
+
+ @XmlTransient
+ class ResultFuture implements Future<Result>
+ {
+ private Result result;
+
+ public boolean cancel(boolean mayInterruptIfRunning)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Result get() throws InterruptedException, ExecutionException
+ {
+ return getResult();
+ }
+
+ public Result get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
+ {
+ throw new NotImplementedException();
+ }
+
+ public boolean isCancelled()
+ {
+ return false;
+ }
+
+ public boolean isDone()
+ {
+ return getResult() != null;
+ }
+
+ private Result getResult()
+ {
+ if (result == null)
+ {
+ Set<EndEvent> ends = getEndEventsInternal();
+ for (EndEvent aux : ends)
+ {
+ result = aux.getResult();
+ if (result != null)
+ {
+ break;
+ }
+ }
+ }
+ return result;
+ }
+ }
}
\ No newline at end of file
Copied: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java (from rev 1561, api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Signal.java)
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java (rev 0)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Signal.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -0,0 +1,98 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.model;
+
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+//$Id$
+
+
+/**
+ * A Signal thrown by the ProcessEngine
+ *
+ * @author Thomas.Diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+ at XmlTransient
+public class Signal
+{
+ @XmlType(name="SignalType")
+ public enum Type
+ {
+ ENTER_START_EVENT, EXIT_START_EVENT,
+ ENTER_EVENT, EXIT_EVENT,
+ ENTER_END_EVENT, EXIT_END_EVENT,
+ ENTER_GATEWAY, EXIT_GATEWAY,
+ ENTER_PROCESS, EXIT_PROCESS,
+ ENTER_SUB_PROCESS, EXIT_SUB_PROCESS,
+ ENTER_TASK, EXIT_TASK,
+ USER_SIGNAL
+ }
+
+ private Process proc;
+ private Type type;
+ private String message;
+
+ /** Create the signal for a given process */
+ public Signal(Process proc, Type type)
+ {
+ this.proc = proc;
+ this.type = type;
+ }
+
+ /** Create the signal for a given process */
+ public Signal(Process proc, Type type, String message)
+ {
+ this.proc = proc;
+ this.type = type;
+ this.message = message;
+
+ }
+
+ /** Get the proccess */
+ public Process getProcess()
+ {
+ return proc;
+ }
+
+ public Type getType()
+ {
+ return type;
+ }
+
+ public String getMessage()
+ {
+ return message;
+ }
+
+ public String toString()
+ {
+ StringBuilder string = new StringBuilder(type + "[" + proc.getName());
+ if (message != null)
+ {
+ string.append(":" + message);
+ }
+ string.append("]");
+ return string.toString();
+ }
+}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/StartEvent.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
+
//$Id$
@@ -33,6 +35,22 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface StartEvent extends Event
+ at XmlType(name="StartEvent")
+public class StartEvent extends Event
{
+ /**
+ * Get signal for enter
+ */
+ public Signal getEnterSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.ENTER_START_EVENT);
+ }
+
+ /**
+ * Get signal for exit
+ */
+ public Signal getExitSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.EXIT_START_EVENT);
+ }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/SubProcess.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,6 +21,9 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
// $Id$
/**
@@ -29,8 +32,15 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface SubProcess extends Process
+ at XmlType(name="SubProcess")
+public class SubProcess extends Process
{
+ @XmlTransient
+ private Process parentProcess;
+
/** Get the parent process */
- Process getParentProcess();
+ public Process getParentProcess()
+ {
+ return parentProcess;
+ }
}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/model/Task.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.model;
+import javax.xml.bind.annotation.XmlType;
+
//$Id$
/**
@@ -32,6 +34,18 @@
* @author thomas.diesler at jboss.com
* @since 08-Jul-2008
*/
-public interface Task extends Activity
+ at XmlType(name="Task")
+public class Task extends Activity
{
+ /** Get signal for enter */
+ public Signal getEnterSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.ENTER_TASK, getName());
+ }
+
+ /** Get signal for exit */
+ public Signal getExitSignal()
+ {
+ return new Signal(getProcess(), Signal.Type.EXIT_TASK, getName());
+ }
}
\ No newline at end of file
Deleted: api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/BasicTask.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/BasicTask.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/BasicTask.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -1,55 +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.jboss.bpm.runtime;
-
-//$Id$
-
-import org.jboss.bpm.model.internal.AbstractTask;
-
-/**
- * Extend to implement a named task
- *
- * @author thomas.diesler at jboss.com
- * @since 08-Jul-2008
- */
-public class BasicTask extends AbstractTask
-{
- private String name;
-
- public String getName()
- {
- return name;
- }
-
- public void setName(String name)
- {
- if (this.name != null)
- throw new IllegalStateException("Cannot rename task");
-
- this.name = name;
- }
-
- // Overwrite to implement execute
- protected void executeOverwrite(Token token)
- {
- }
-}
\ No newline at end of file
Deleted: api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Signal.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Signal.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/Signal.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -1,94 +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.jboss.bpm.runtime;
-
-//$Id$
-
-import org.jboss.bpm.model.Process;
-
-/**
- * A Signal thrown by the ProcessEngine
- *
- * @author Thomas.Diesler at jboss.com
- * @since 08-Jul-2008
- */
-public class Signal
-{
- public enum Type
- {
- ENTER_START_EVENT, EXIT_START_EVENT,
- ENTER_EVENT, EXIT_EVENT,
- ENTER_END_EVENT, EXIT_END_EVENT,
- ENTER_GATEWAY, EXIT_GATEWAY,
- ENTER_PROCESS, EXIT_PROCESS,
- ENTER_SUB_PROCESS, EXIT_SUB_PROCESS,
- ENTER_TASK, EXIT_TASK,
- USER_SIGNAL
- }
-
- private Process proc;
- private Type type;
- private String message;
-
- /** Create the signal for a given process */
- public Signal(Process proc, Type type)
- {
- this.proc = proc;
- this.type = type;
- }
-
- /** Create the signal for a given process */
- public Signal(Process proc, Type type, String message)
- {
- this.proc = proc;
- this.type = type;
- this.message = message;
-
- }
-
- /** Get the proccess */
- public Process getProcess()
- {
- return proc;
- }
-
- public Type getType()
- {
- return type;
- }
-
- public String getMessage()
- {
- return message;
- }
-
- public String toString()
- {
- StringBuilder string = new StringBuilder(type + "[" + proc.getName());
- if (message != null)
- {
- string.append(":" + message);
- }
- string.append("]");
- return string.toString();
- }
-}
\ No newline at end of file
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/SignalListener.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/SignalListener.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/runtime/SignalListener.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -21,6 +21,8 @@
*/
package org.jboss.bpm.runtime;
+import org.jboss.bpm.model.Signal;
+
//$Id$
Modified: api/trunk/modules/api/src/main/java/org/jboss/bpm/test/DefaultEngineTestCase.java
===================================================================
--- api/trunk/modules/api/src/main/java/org/jboss/bpm/test/DefaultEngineTestCase.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/api/src/main/java/org/jboss/bpm/test/DefaultEngineTestCase.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -30,7 +30,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.bpm.client.ProcessEngine;
-import org.jboss.bpm.runtime.Signal;
+import org.jboss.bpm.model.Signal;
import org.jboss.bpm.runtime.SignalListener;
public abstract class DefaultEngineTestCase extends AbstractAPITestCase implements SignalListener
Modified: api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java
===================================================================
--- api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/context/TaskA.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -23,7 +23,7 @@
// $Id$
-import org.jboss.bpm.runtime.BasicTask;
+import org.jboss.bpm.model.Task;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.Token;
@@ -33,7 +33,7 @@
* @author Thomas.Diesler at jboss.com
* @since 04-Jul-2008
*/
-public class TaskA extends BasicTask
+public class TaskA extends Task
{
protected void executeOverwrite(Token token)
{
Modified: api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java
===================================================================
--- api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/sequence/BasicSequenceTest.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -31,7 +31,7 @@
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Result;
-import org.jboss.bpm.runtime.Signal;
+import org.jboss.bpm.model.Signal;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
Modified: api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java
===================================================================
--- api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/BasicTaskTest.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -31,8 +31,8 @@
import org.jboss.bpm.client.SignalManager;
import org.jboss.bpm.model.Process;
import org.jboss.bpm.model.Result;
+import org.jboss.bpm.model.Signal;
import org.jboss.bpm.runtime.Attachments;
-import org.jboss.bpm.runtime.Signal;
import org.jboss.bpm.test.DefaultEngineTestCase;
/**
Modified: api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java
===================================================================
--- api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/modules/testsuite/src/test/java/org/jboss/bpm/samples/task/TaskA.java 2008-07-10 09:00:19 UTC (rev 1565)
@@ -23,7 +23,7 @@
// $Id$
-import org.jboss.bpm.runtime.BasicTask;
+import org.jboss.bpm.model.Task;
import org.jboss.bpm.runtime.ExecutionContext;
import org.jboss.bpm.runtime.Token;
@@ -33,7 +33,7 @@
* @author Thomas.Diesler at jboss.com
* @since 04-Jul-2008
*/
-public class TaskA extends BasicTask
+public class TaskA extends Task
{
protected void executeOverwrite(Token token)
{
Modified: api/trunk/pom.xml
===================================================================
--- api/trunk/pom.xml 2008-07-09 20:03:53 UTC (rev 1564)
+++ api/trunk/pom.xml 2008-07-10 09:00:19 UTC (rev 1565)
@@ -38,6 +38,7 @@
<!-- Properties -->
<properties>
<commons.logging.version>1.1.1</commons.logging.version>
+ <jaxb.ri.version>2.1.7</jaxb.ri.version>
<jboss.microcontainer.version>2.0.0.Beta15</jboss.microcontainer.version>
<jboss.jbpm3.version>3.2.4-SNAPSHOT</jboss.jbpm3.version>
</properties>
@@ -46,6 +47,11 @@
<dependencyManagement>
<dependencies>
<dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>${jaxb.ri.version}</version>
+ </dependency>
+ <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>${commons.logging.version}</version>
More information about the jbpm-commits
mailing list