[jbpm-commits] JBoss JBPM SVN: r4858 - in jbpm4/trunk/modules: examples/src/test/java/org/jbpm/examples/async/activity and 7 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Wed May 20 08:37:04 EDT 2009
Author: tom.baeyens at jboss.com
Date: 2009-05-20 08:37:04 -0400 (Wed, 20 May 2009)
New Revision: 4858
Added:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/Continuation.java
Modified:
jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/Activity.java
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/async/activity/Application.java
jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/async/activity/process.jpdl.xml
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ActivityBuilder.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventListenerReference.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivity.java
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/async/AsyncBasicsTest.java
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/JobQueryTest.java
Log:
JBPM-2256 adding async continuations
Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/Activity.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/Activity.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/Activity.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -109,10 +109,6 @@
* to the parent activities. It doesn't take into account the process definition. */
Activity getParentActivity();
- /** indicates if this activity should be executed
- * <a href="package-summary.html#asynchronouscontinuations">asynchronously</a>. */
- boolean isAsync();
-
/** the type of this activity which corresponds to the xml tag */
String getType();
}
\ No newline at end of file
Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/async/activity/Application.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/async/activity/Application.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/async/activity/Application.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -27,4 +27,12 @@
*/
public class Application {
+ public void generatePdf() {
+ }
+
+ public void calculatePrimes() {
+ }
+
+ public void runTestSuite() {
+ }
}
Modified: jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/async/activity/process.jpdl.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/async/activity/process.jpdl.xml 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/async/activity/process.jpdl.xml 2009-05-20 12:37:04 UTC (rev 4858)
@@ -9,21 +9,21 @@
<java name="generate pdf"
class="org.jbpm.examples.async.activity.Application"
method="generatePdf"
- async="true">
+ continue="async">
<transition to="calculate primes" />
</java>
<java name="calculate primes"
class="org.jbpm.examples.async.activity.Application"
method="calculatePrimes"
- async="true">
+ continue="async">
<transition to="run test suite" />
</java>
<java name="run test suite"
class="org.jbpm.examples.async.activity.Application"
method="runTestSuite"
- async="true">
+ continue="async">
<transition to="end" />
</java>
Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -41,6 +41,7 @@
import org.jbpm.pvm.internal.model.ActivityCoordinatesImpl;
import org.jbpm.pvm.internal.model.ActivityImpl;
import org.jbpm.pvm.internal.model.CompositeElementImpl;
+import org.jbpm.pvm.internal.model.Continuation;
import org.jbpm.pvm.internal.model.EventImpl;
import org.jbpm.pvm.internal.model.EventListenerReference;
import org.jbpm.pvm.internal.model.ObservableElementImpl;
@@ -238,8 +239,11 @@
activityBinding.parseName(nestedElement, activity, parse);
parseTransitions(nestedElement, activity, parse);
- if (XmlUtil.attributeBoolean(nestedElement, "async", false, parse, Boolean.FALSE)) {
- activity.setAsync(true);
+ String continuationText = XmlUtil.attribute(nestedElement, "continue");
+ if ("async".equals(continuationText)) {
+ activity.setContinuation(Continuation.ASYNCHRONOUS);
+ } else if ("exclusive".equals(continuationText)) {
+ activity.setContinuation(Continuation.EXCLUSIVE);
}
ActivityBehaviour activityBehaviour = (ActivityBehaviour) activityBinding.parse(nestedElement, parse, this);
@@ -331,8 +335,11 @@
event = scopeElement.createEvent(eventName);
}
- if (XmlUtil.attributeBoolean(element, "async", false, parse, Boolean.FALSE)) {
- event.setAsync(true);
+ String continuationText = XmlUtil.attribute(element, "continue");
+ if ("async".equals(continuationText)) {
+ event.setContinuation(Continuation.ASYNCHRONOUS);
+ } else if ("exclusive".equals(continuationText)) {
+ event.setContinuation(Continuation.EXCLUSIVE);
}
for (Element eventListenerElement: XmlUtil.elements(element)) {
@@ -341,8 +348,11 @@
EventListener eventListener = (EventListener) eventBinding.parse(eventListenerElement, parse, this);
EventListenerReference eventListenerReference = event.createEventListenerReference(eventListener);
- if (XmlUtil.attributeBoolean(eventListenerElement, "async", false, parse, Boolean.FALSE)) {
- eventListenerReference.setAsync(true);
+ continuationText = XmlUtil.attribute(eventListenerElement, "continue");
+ if ("async".equals(continuationText)) {
+ eventListenerReference.setContinuation(Continuation.ASYNCHRONOUS);
+ } else if ("exclusive".equals(continuationText)) {
+ eventListenerReference.setContinuation(Continuation.EXCLUSIVE);
}
} else {
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ActivityBuilder.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ActivityBuilder.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ActivityBuilder.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -24,6 +24,7 @@
import java.lang.reflect.Constructor;
import org.jbpm.pvm.internal.model.ActivityImpl;
+import org.jbpm.pvm.internal.model.Continuation;
import org.jbpm.pvm.internal.model.ProcessDefinitionImpl;
/**
@@ -97,7 +98,7 @@
}
public ActivityBuilder asyncExecute() {
- activity.setAsync(true);
+ activity.setContinuation(Continuation.ASYNCHRONOUS);
return this;
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -46,7 +46,7 @@
protected ActivityImpl parentActivity;
protected String type;
- protected boolean isAsync;
+ protected Continuation continuation = Continuation.SYNCHRONOUS;
protected ActivityCoordinatesImpl coordinates;
@@ -395,6 +395,10 @@
return chain;
}
+ public boolean isAsync() {
+ return ! (continuation==Continuation.SYNCHRONOUS);
+ }
+
// getters and setters //////////////////////////////////////////////////////
public ObservableElementImpl getParent() {
@@ -419,12 +423,6 @@
public void setParentActivity(ActivityImpl parentActivity) {
this.parentActivity = parentActivity;
}
- public boolean isAsync() {
- return isAsync;
- }
- public void setAsync(boolean isExecutionAsync) {
- this.isAsync = isExecutionAsync;
- }
public String getType() {
return type;
}
@@ -437,4 +435,10 @@
public void setCoordinates(ActivityCoordinatesImpl coordinates) {
this.coordinates = coordinates;
}
+ public Continuation getContinuation() {
+ return continuation;
+ }
+ public void setContinuation(Continuation continuation) {
+ this.continuation = continuation;
+ }
}
Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/Continuation.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/Continuation.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/Continuation.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -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.pvm.internal.model;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public enum Continuation {
+
+ SYNCHRONOUS,
+
+ ASYNCHRONOUS,
+
+ EXCLUSIVE
+}
Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/Continuation.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventImpl.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventImpl.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -38,7 +38,7 @@
protected String name;
protected List<EventListenerReference> listenerReferences;
- protected boolean isAsync;
+ protected Continuation continuation = Continuation.SYNCHRONOUS;
public String toString() {
return (name != null ? "event(" + name + ")" : "event");
@@ -73,6 +73,10 @@
return eventListenerReference;
}
+ public boolean isAsync() {
+ return ! (continuation==Continuation.SYNCHRONOUS);
+ }
+
// getters and setters //////////////////////////////////////////////////////
public long getDbid() {
@@ -90,10 +94,10 @@
public void setListenerReferences(List<EventListenerReference> eventListenerReferences) {
this.listenerReferences = eventListenerReferences;
}
- public boolean isAsync() {
- return isAsync;
+ public Continuation getContinuation() {
+ return continuation;
}
- public void setAsync(boolean isAsync) {
- this.isAsync = isAsync;
+ public void setContinuation(Continuation continuation) {
+ this.continuation = continuation;
}
}
\ No newline at end of file
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventListenerReference.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventListenerReference.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventListenerReference.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -31,8 +31,8 @@
private static final long serialVersionUID = 1L;
/** does this action accept propagated events ? */
- boolean isPropagationEnabled = false;
- boolean isAsync = false;
+ protected boolean isPropagationEnabled = false;
+ protected Continuation continuation = Continuation.SYNCHRONOUS;
/** does this action accept propagated events ? Default is false. */
public boolean isPropagationEnabled() {
@@ -45,10 +45,13 @@
}
public boolean isAsync() {
- return isAsync;
+ return Continuation.SYNCHRONOUS!=continuation;
}
- public void setAsync(boolean isAsync) {
- this.isAsync = isAsync;
+ public Continuation getContinuation() {
+ return continuation;
}
+ public void setContinuation(Continuation continuation) {
+ this.continuation = continuation;
+ }
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -613,7 +613,7 @@
}
/** fires the given event without propagation */
- void fire(EventImpl event, ObservableElement eventSource, ObservableElement observableElement) {
+ public void fire(EventImpl event, ObservableElement eventSource, ObservableElement observableElement) {
List<EventListenerReference> eventListenerReferences = event.getListenerReferences();
if (eventListenerReferences!=null) {
for (EventListenerReference eventListenerReference: eventListenerReferences) {
@@ -626,7 +626,7 @@
}
}
}
-
+
public void handleException(ObservableElementImpl observableElement,
EventImpl event,
EventListenerReference eventListenerReference,
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivity.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivity.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivity.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -24,6 +24,7 @@
import org.jbpm.api.activity.ActivityBehaviour;
import org.jbpm.internal.log.Log;
import org.jbpm.pvm.internal.job.MessageImpl;
+import org.jbpm.pvm.internal.model.Continuation;
import org.jbpm.pvm.internal.model.ExecutionImpl;
import org.jbpm.pvm.internal.model.ActivityImpl;
import org.jbpm.pvm.internal.model.ExecutionImpl.Propagation;
@@ -70,6 +71,10 @@
}
public MessageImpl<?> createAsyncMessage(ExecutionImpl execution) {
- return new ExecuteActivityMessage(execution);
+ ExecuteActivityMessage executeActivityMessage = new ExecuteActivityMessage(execution);
+ if (execution.getActivity().getContinuation()==Continuation.EXCLUSIVE) {
+ executeActivityMessage.setExclusive(true);
+ }
+ return executeActivityMessage;
}
-}
\ No newline at end of file
+}
Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/async/AsyncBasicsTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/async/AsyncBasicsTest.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/async/AsyncBasicsTest.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -55,10 +55,10 @@
" <start>" +
" <transition to='a' />" +
" </start>" +
- " <java name='a' async='true' class='"+Do.class.getName()+"' method='something'>" +
+ " <java name='a' continue='async' class='"+Do.class.getName()+"' method='something'>" +
" <transition to='b' />" +
" </java>" +
- " <java name='b' async='true' class='"+Do.class.getName()+"' method='something'>" +
+ " <java name='b' continue='async' class='"+Do.class.getName()+"' method='something'>" +
" <transition to='end' />" +
" </java>" +
" <end name='end' />" +
@@ -112,10 +112,10 @@
" <transition to='a' />" +
" </start>" +
" <java name='a' class='"+Do.class.getName()+"' method='something'>" +
- " <transition async='true' to='b' />" +
+ " <transition continue='async' to='b' />" +
" </java>" +
" <java name='b' class='"+Do.class.getName()+"' method='something'>" +
- " <transition async='true' to='end' />" +
+ " <transition continue='async' to='end' />" +
" </java>" +
" <end name='end' />" +
"</process>"
@@ -165,7 +165,7 @@
" <start>" +
" <transition to='a' />" +
" </start>" +
- " <state name='a' async='true'>" +
+ " <state name='a' continue='async'>" +
" <transition to='end' />" +
" </state>" +
" <end name='end' />" +
Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/JobQueryTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/JobQueryTest.java 2009-05-20 09:35:25 UTC (rev 4857)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/mgmt/JobQueryTest.java 2009-05-20 12:37:04 UTC (rev 4858)
@@ -40,7 +40,7 @@
" <start>" +
" <transition to='t' />" +
" </start>" +
- " <state name='t' async='true' />" +
+ " <state name='t' continue='async' />" +
"</process>"
);
@@ -69,7 +69,7 @@
" <transition to='t' />" +
" </start>" +
" <java name='t' " +
- " async='true' " +
+ " continue='async' " +
" class='"+Dog.class.getName()+"'" +
" method='bark'>" +
" </java>" +
More information about the jbpm-commits
mailing list