[jboss-svn-commits] JBL Code SVN: r21226 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/workflow/instance/node and 8 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jul 25 10:56:37 EDT 2008
Author: KrisVerlaenen
Date: 2008-07-25 10:56:37 -0400 (Fri, 25 Jul 2008)
New Revision: 21226
Added:
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/compiler/
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/compiler/BPELCompiler.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELCompensationHandler.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELCorrelation.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELEmpty.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELPick.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELSwitch.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELThrow.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELWait.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELWhile.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELEmptyInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELFaultHandlerInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELPickInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELSwitchInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELThrowInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELWaitInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELWhileInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCompilerTest.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCoreTest.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELTestUtil.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/test/resources/
labs/jbossrules/trunk/drools-process/drools-bpel/src/test/resources/purchaseOrderProcess.bpel
Removed:
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELBasicActivity.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELFaultExceptionHandler.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELStructuredActivity.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELExceptionHandlerInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELTest.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/FaultNode.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/FaultNodeInstance.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/.classpath
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELActivity.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELAssign.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELFlow.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELInvoke.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELProcess.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELReceive.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELReply.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELScope.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELSequence.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELExceptionScopeInstance.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELLinkManager.java
labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELNodeInstanceFactoryRegistry.java
Log:
JBRULES-1696: Extends WS-BPEL support
- extended support for more node types and improved implemenation
- integrated ODE parser for reading in XML files
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -137,8 +137,8 @@
return outConnectionMap.get(outType);
}
- public CompositeNode.NodeAndType internalGetLinkedOutgoingNode(String inType) {
- return inConnectionMap.get(inType);
+ public CompositeNode.NodeAndType internalGetLinkedOutgoingNode(String outType) {
+ return outConnectionMap.get(outType);
}
public Map<String, CompositeNode.NodeAndType> getLinkedIncomingNodes() {
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/FaultNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/FaultNode.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/FaultNode.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -28,9 +28,17 @@
private static final long serialVersionUID = 400L;
private String faultName;
- private String faultData;
+ private String faultVariable;
- public String getFaultName() {
+ public String getFaultVariable() {
+ return faultVariable;
+ }
+
+ public void setFaultVariable(String faultVariable) {
+ this.faultVariable = faultVariable;
+ }
+
+ public String getFaultName() {
return faultName;
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/FaultNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/FaultNodeInstance.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/FaultNodeInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -17,8 +17,10 @@
*/
import org.drools.process.core.context.exception.ExceptionScope;
+import org.drools.process.core.context.variable.VariableScope;
import org.drools.process.instance.ProcessInstance;
import org.drools.process.instance.context.exception.ExceptionScopeInstance;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
import org.drools.workflow.core.Node;
import org.drools.workflow.core.node.FaultNode;
import org.drools.workflow.instance.NodeInstance;
@@ -46,10 +48,27 @@
ExceptionScopeInstance exceptionScopeInstance = (ExceptionScopeInstance)
resolveContextInstance(ExceptionScope.EXCEPTION_SCOPE, faultNode.getFaultName());
if (exceptionScopeInstance != null) {
- exceptionScopeInstance.handleException(faultNode.getFaultName(), null);
+ handleException(exceptionScopeInstance);
} else {
getProcessInstance().setState(ProcessInstance.STATE_ABORTED);
}
}
+
+ protected void handleException(ExceptionScopeInstance exceptionScopeInstance) {
+ Object value = null;
+ String faultVariable = getFaultNode().getFaultVariable();
+ if (faultVariable != null) {
+ VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
+ resolveContextInstance(VariableScope.VARIABLE_SCOPE, faultVariable);
+ if (variableScopeInstance != null) {
+ value = variableScopeInstance.getVariable(faultVariable);
+ } else {
+ System.err.println("Could not find variable scope for variable " + faultVariable);
+ System.err.println("when trying to execute fault node " + getFaultNode().getName());
+ System.err.println("Continuing without setting value.");
+ }
+ }
+ exceptionScopeInstance.handleException(getFaultNode().getFaultName(), value);
+ }
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -164,8 +164,10 @@
}
public void cancel() {
+ if (workItemId != -1) {
+ getProcessInstance().getWorkingMemory().getWorkItemManager().internalAbortWorkItem(workItemId);
+ }
super.cancel();
- getProcessInstance().getWorkingMemory().getWorkItemManager().internalAbortWorkItem(workItem.getId());
}
public void addEventListeners() {
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/.classpath 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/.classpath 2008-07-25 14:56:37 UTC (rev 21226)
@@ -1,9 +1,19 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/test/java"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
- <classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main/java"/>
+ <classpathentry kind="src" path="src/main/resources"/>
+ <classpathentry kind="src" path="src/test/java"/>
+ <classpathentry kind="src" path="src/test/resources"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-compiler"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/drools-core"/>
+ <classpathentry kind="lib" path="lib/ode-bpel-compiler.jar"/>
+ <classpathentry kind="lib" path="lib/commons-logging-1.1.jar"/>
+ <classpathentry kind="lib" path="lib/wsdl4j-1.6.1.jar"/>
+ <classpathentry kind="lib" path="lib/ode-utils.jar"/>
+ <classpathentry kind="lib" path="lib/xercesImpl-2.9.0.jar"/>
+ <classpathentry kind="lib" path="lib/ode-bpel-schemas.jar"/>
+ <classpathentry kind="lib" path="lib/xalan-2.7.0.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/compiler/BPELCompiler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/compiler/BPELCompiler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/compiler/BPELCompiler.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,163 @@
+package org.drools.bpel.compiler;
+
+import java.io.ByteArrayInputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.ode.bpel.compiler.bom.Activity;
+import org.apache.ode.bpel.compiler.bom.AssignActivity;
+import org.apache.ode.bpel.compiler.bom.BpelObjectFactory;
+import org.apache.ode.bpel.compiler.bom.Catch;
+import org.apache.ode.bpel.compiler.bom.FlowActivity;
+import org.apache.ode.bpel.compiler.bom.InvokeActivity;
+import org.apache.ode.bpel.compiler.bom.Link;
+import org.apache.ode.bpel.compiler.bom.LinkSource;
+import org.apache.ode.bpel.compiler.bom.LinkTarget;
+import org.apache.ode.bpel.compiler.bom.Process;
+import org.apache.ode.bpel.compiler.bom.ReceiveActivity;
+import org.apache.ode.bpel.compiler.bom.ReplyActivity;
+import org.apache.ode.bpel.compiler.bom.SequenceActivity;
+import org.apache.ode.utils.StreamUtils;
+import org.drools.bpel.core.BPELActivity;
+import org.drools.bpel.core.BPELAssign;
+import org.drools.bpel.core.BPELFaultHandler;
+import org.drools.bpel.core.BPELFlow;
+import org.drools.bpel.core.BPELInvoke;
+import org.drools.bpel.core.BPELProcess;
+import org.drools.bpel.core.BPELReceive;
+import org.drools.bpel.core.BPELReply;
+import org.drools.bpel.core.BPELSequence;
+import org.drools.bpel.core.BPELActivity.SourceLink;
+import org.drools.bpel.core.BPELActivity.TargetLink;
+import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.core.datatype.impl.type.StringDataType;
+import org.xml.sax.InputSource;
+
+public class BPELCompiler {
+
+ public BPELProcess compileProcess(URL bpelFile) throws Exception {
+ InputSource isrc = new InputSource(new ByteArrayInputStream(StreamUtils.read(bpelFile)));
+ Process process = BpelObjectFactory.getInstance().parse(isrc, bpelFile.toURI());
+ return compileProcess(process);
+ }
+
+ private BPELProcess compileProcess(Process process) {
+ BPELProcess result = new BPELProcess();
+ result.setName(process.getName());
+ result.setId(process.getTargetNamespace());
+ result.setPackageName("org.drools.bpel");
+ result.setVersion("1.0");
+ BPELActivity activity = compileActivity(process.getRootActivity());
+ result.setActivity(activity);
+ // variables
+ VariableScope variableScope = result.getVariableScope();
+ List<Variable> variables = new ArrayList<Variable>();
+ for (org.apache.ode.bpel.compiler.bom.Variable variable: process.getVariables()) {
+ Variable bpelVariable = new Variable();
+ bpelVariable.setName(variable.getName());
+ bpelVariable.setType(new StringDataType());
+ variables.add(bpelVariable);
+ }
+ variableScope.setVariables(variables);
+ // fault handlers
+ List<BPELFaultHandler> faultHandlers = new ArrayList<BPELFaultHandler>();
+ for (Catch catcher: process.getFaultHandler().getCatches()) {
+ BPELFaultHandler faultHandler = new BPELFaultHandler();
+ faultHandler.setFaultName(catcher.getFaultName().toString());
+ faultHandler.setFaultVariable(catcher.getFaultVariable());
+ faultHandler.setActivity(compileActivity(catcher.getActivity()));
+ faultHandlers.add(faultHandler);
+ }
+ result.setFaultHandlers(faultHandlers);
+ return result;
+ }
+
+ private BPELActivity compileActivity(Activity activity) {
+ BPELActivity result = null;
+ if (activity instanceof ReceiveActivity) {
+ ReceiveActivity receiveActivity = (ReceiveActivity) activity;
+ BPELReceive receive = new BPELReceive();
+ receive.setCreateInstance(receiveActivity.isCreateInstance());
+ receive.setPartnerLink(receiveActivity.getPartnerLink());
+ receive.setPortType(receiveActivity.getPortType().toString());
+ receive.setOperation(receiveActivity.getOperation());
+ receive.setVariable(receiveActivity.getVariable());
+ result = receive;
+ } else if (activity instanceof ReplyActivity) {
+ ReplyActivity replyActivity = (ReplyActivity) activity;
+ BPELReply reply = new BPELReply();
+ reply.setPartnerLink(replyActivity.getPartnerLink());
+ reply.setPortType(replyActivity.getPortType().toString());
+ reply.setOperation(replyActivity.getOperation());
+ reply.setVariable(replyActivity.getVariable());
+ if (replyActivity.getFaultName() != null) {
+ reply.setFaultName(replyActivity.getFaultName().toString());
+ }
+ result = reply;
+ } else if (activity instanceof InvokeActivity) {
+ InvokeActivity invokeActivity = (InvokeActivity) activity;
+ BPELInvoke invoke = new BPELInvoke();
+ invoke.setPartnerLink(invokeActivity.getPartnerLink());
+ invoke.setPortType(invokeActivity.getPortType().toString());
+ invoke.setOperation(invokeActivity.getOperation());
+ invoke.setInputVariable(invokeActivity.getInputVar());
+ if (invokeActivity.getOutputVar() != null) {
+ invoke.setOutputVariable(invokeActivity.getOutputVar());
+ }
+ result = invoke;
+ } else if (activity instanceof SequenceActivity) {
+ SequenceActivity sequenceActivity = (SequenceActivity) activity;
+ BPELSequence sequence = new BPELSequence();
+ List<BPELActivity> subActivities = new ArrayList<BPELActivity>();
+ for (Activity subActivity: sequenceActivity.getActivities()) {
+ subActivities.add(compileActivity(subActivity));
+ }
+ sequence.setActivities(subActivities);
+ result = sequence;
+ } else if (activity instanceof FlowActivity) {
+ FlowActivity flowActivity = (FlowActivity) activity;
+ BPELFlow flow = new BPELFlow();
+ List<BPELActivity> subActivities = new ArrayList<BPELActivity>();
+ for (Activity subActivity: flowActivity.getActivities()) {
+ subActivities.add(compileActivity(subActivity));
+ }
+ flow.setActivities(subActivities);
+ String[] links = new String[flowActivity.getLinks().size()];
+ int i = 0;
+ for (Link link: flowActivity.getLinks()) {
+ links[i++] = link.getLinkName();
+ }
+ flow.setLinks(links);
+ result = flow;
+ } else if (activity instanceof AssignActivity) {
+ AssignActivity assignActivity = (AssignActivity) activity;
+ BPELAssign assign = new BPELAssign();
+ // TODO
+ assign.setAction("");
+ result = assign;
+ } else {
+ throw new IllegalArgumentException("Unknown activity type " + activity.getClass());
+ }
+ result.setName(activity.getName());
+ SourceLink[] sourceLinks = new SourceLink[activity.getLinkSources().size()];
+ int i = 0;
+ for (LinkSource linkSource: activity.getLinkSources()) {
+ sourceLinks[i] = new SourceLink(linkSource.getLinkName());
+ if (linkSource.getTransitionCondition() != null) {
+ sourceLinks[i].setTransitionCondition(linkSource.getTransitionCondition().getTextValue());
+ }
+ i++;
+ }
+ result.setSourceLinks(sourceLinks);
+ TargetLink[] targetLinks = new TargetLink[activity.getLinkTargets().size()];
+ i = 0;
+ for (LinkTarget linkTarget: activity.getLinkTargets()) {
+ targetLinks[i++] = new TargetLink(linkTarget.getLinkName());
+ }
+ result.setTargetLinks(targetLinks);
+ return result;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELActivity.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELActivity.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELActivity.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -7,13 +7,58 @@
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
public interface BPELActivity extends Node {
+
+ // TODO
+ // String getJoinCondition();
+ // void setJoinCondition(String joinCondition);
+
+ // TODO
+ // boolean isSuppressJoinFailure();
+ // void setSuppressJoinFailure(boolean suppressJoinFailure);
- String[] getSourceLinks();
+ SourceLink[] getSourceLinks();
- void setSourceLinks(String[] sourceLinks);
+ void setSourceLinks(SourceLink[] sourceLinks);
- String[] getTargetLinks();
+ TargetLink[] getTargetLinks();
- void setTargetLinks(String[] targetLinks);
+ void setTargetLinks(TargetLink[] targetLinks);
+ public class SourceLink {
+
+ private String linkName;
+ private String transitionCondition;
+
+ public SourceLink(String linkName) {
+ this.linkName = linkName;
+ }
+
+ public String getLinkName() {
+ return linkName;
+ }
+
+ public String getTransitionCondition() {
+ return transitionCondition;
+ }
+
+ public void setTransitionCondition(String transitionCondition) {
+ this.transitionCondition = transitionCondition;
+ }
+
+ }
+
+ public class TargetLink {
+
+ private String linkName;
+
+ public TargetLink(String linkName) {
+ this.linkName = linkName;
+ }
+
+ public String getLinkName() {
+ return linkName;
+ }
+
+ }
+
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELAssign.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELAssign.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELAssign.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -8,30 +8,30 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class BPELAssign extends ActionNode implements BPELBasicActivity {
+public class BPELAssign extends ActionNode implements BPELActivity {
private static final long serialVersionUID = 400L;
- private String[] sourceLinks;
- private String[] targetLinks;
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
public void setAction(String assign) {
setAction(new DroolsConsequenceAction("mvel", assign));
}
- public String[] getSourceLinks() {
+ public SourceLink[] getSourceLinks() {
return sourceLinks;
}
- public void setSourceLinks(String[] sourceLinks) {
+ public void setSourceLinks(SourceLink[] sourceLinks) {
this.sourceLinks = sourceLinks;
}
- public String[] getTargetLinks() {
+ public TargetLink[] getTargetLinks() {
return targetLinks;
}
- public void setTargetLinks(String[] targetLinks) {
+ public void setTargetLinks(TargetLink[] targetLinks) {
this.targetLinks = targetLinks;
}
Deleted: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELBasicActivity.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELBasicActivity.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELBasicActivity.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -1,10 +0,0 @@
-package org.drools.bpel.core;
-
-
-/**
- *
- * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
- */
-public interface BPELBasicActivity extends BPELActivity {
-
-}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELCompensationHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELCompensationHandler.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELCompensationHandler.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,19 @@
+package org.drools.bpel.core;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELCompensationHandler {
+
+ private BPELActivity activity;
+
+ public BPELActivity getActivity() {
+ return activity;
+ }
+
+ public void setActivity(BPELActivity activity) {
+ this.activity = activity;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELCorrelation.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELCorrelation.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELCorrelation.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,41 @@
+package org.drools.bpel.core;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELCorrelation {
+
+ public static final int PATTERN_IN = 1;
+ public static final int PATTERN_OUT = 2;
+ public static final int PATTERN_OUT_IN = 3;
+
+ private String set;
+ private boolean initiate;
+ private int pattern;
+
+ public String getSet() {
+ return set;
+ }
+
+ public void setSet(String set) {
+ this.set = set;
+ }
+
+ public boolean isInitiate() {
+ return initiate;
+ }
+
+ public void setInitiate(boolean initiate) {
+ this.initiate = initiate;
+ }
+
+ public int getPattern() {
+ return pattern;
+ }
+
+ public void setPattern(int pattern) {
+ this.pattern = pattern;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELEmpty.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELEmpty.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELEmpty.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,37 @@
+package org.drools.bpel.core;
+
+import org.drools.workflow.core.impl.DroolsConsequenceAction;
+import org.drools.workflow.core.node.ActionNode;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELEmpty extends ActionNode implements BPELActivity {
+
+ private static final long serialVersionUID = 4L;
+
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
+
+ public BPELEmpty() {
+ this.setAction(new DroolsConsequenceAction("java", ""));
+ }
+
+ public SourceLink[] getSourceLinks() {
+ return sourceLinks;
+ }
+
+ public void setSourceLinks(SourceLink[] sourceLinks) {
+ this.sourceLinks = sourceLinks;
+ }
+
+ public TargetLink[] getTargetLinks() {
+ return targetLinks;
+ }
+
+ public void setTargetLinks(TargetLink[] targetLinks) {
+ this.targetLinks = targetLinks;
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELFaultExceptionHandler.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELFaultExceptionHandler.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELFaultExceptionHandler.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -1,21 +0,0 @@
-package org.drools.bpel.core;
-
-import org.drools.process.core.context.exception.ExceptionHandler;
-
-public class BPELFaultExceptionHandler implements ExceptionHandler {
-
- private String faultName;
-
- public String getFaultName() {
- return faultName;
- }
-
- public void setFaultName(String faultName) {
- this.faultName = faultName;
- }
-
- public void handleException(String exception, Object params) {
-
- }
-
-}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELFlow.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELFlow.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELFlow.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -13,15 +13,15 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class BPELFlow extends CompositeNode implements BPELStructuredActivity {
+public class BPELFlow extends CompositeNode implements BPELActivity {
private static final long serialVersionUID = 400L;
private Split split;
private Join join;
private String[] links;
- private String[] sourceLinks;
- private String[] targetLinks;
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
public BPELFlow() {
split = new Split();
@@ -74,19 +74,19 @@
return links;
}
- public String[] getSourceLinks() {
+ public SourceLink[] getSourceLinks() {
return sourceLinks;
}
- public void setSourceLinks(String[] sourceLinks) {
+ public void setSourceLinks(SourceLink[] sourceLinks) {
this.sourceLinks = sourceLinks;
}
- public String[] getTargetLinks() {
+ public TargetLink[] getTargetLinks() {
return targetLinks;
}
- public void setTargetLinks(String[] targetLinks) {
+ public void setTargetLinks(TargetLink[] targetLinks) {
this.targetLinks = targetLinks;
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELInvoke.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELInvoke.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELInvoke.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -8,7 +8,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class BPELInvoke extends WorkItemNode implements BPELBasicActivity, BPELFaultHandlerContainer {
+public class BPELInvoke extends WorkItemNode implements BPELActivity, BPELFaultHandlerContainer {
private static final long serialVersionUID = 400L;
@@ -18,8 +18,12 @@
private static final String INPUT = "Message";
private static final String OUTPUT = "Result";
- private String[] sourceLinks;
- private String[] targetLinks;
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
+ private BPELFaultHandler[] catches;
+ private BPELFaultHandler catchAll;
+ private BPELCorrelation[] correlations;
+ private BPELCompensationHandler compensationHandler;
public BPELInvoke() {
Work work = new WorkImpl();
@@ -67,20 +71,52 @@
addOutMapping(OUTPUT, outputVariable);
}
- public String[] getSourceLinks() {
+ public SourceLink[] getSourceLinks() {
return sourceLinks;
}
- public void setSourceLinks(String[] sourceLinks) {
+ public void setSourceLinks(SourceLink[] sourceLinks) {
this.sourceLinks = sourceLinks;
}
- public String[] getTargetLinks() {
+ public TargetLink[] getTargetLinks() {
return targetLinks;
}
- public void setTargetLinks(String[] targetLinks) {
+ public void setTargetLinks(TargetLink[] targetLinks) {
this.targetLinks = targetLinks;
}
+ public BPELFaultHandler[] getCatches() {
+ return catches;
+ }
+
+ public void setCatches(BPELFaultHandler[] catches) {
+ this.catches = catches;
+ }
+
+ public BPELFaultHandler getCatchAll() {
+ return catchAll;
+ }
+
+ public void setCatchAll(BPELFaultHandler catchAll) {
+ this.catchAll = catchAll;
+ }// TODO: BPELInvoke
+
+ public BPELCorrelation[] getCorrelations() {
+ return correlations;
+ }
+
+ public void setCorrelations(BPELCorrelation[] correlations) {
+ this.correlations = correlations;
+ }
+
+ public BPELCompensationHandler getCompensationHandler() {
+ return compensationHandler;
+ }
+
+ public void setCompensationHandler(BPELCompensationHandler compensationHandler) {
+ this.compensationHandler = compensationHandler;
+ }
+
}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELPick.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELPick.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELPick.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,227 @@
+package org.drools.bpel.core;
+
+import org.drools.process.core.event.EventFilter;
+import org.drools.process.core.timer.Timer;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.impl.ConnectionImpl;
+import org.drools.workflow.core.node.CompositeNode;
+import org.drools.workflow.core.node.EndNode;
+import org.drools.workflow.core.node.EventNode;
+import org.drools.workflow.core.node.Join;
+import org.drools.workflow.core.node.TimerNode;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELPick extends CompositeNode implements BPELActivity {
+
+ private static final long serialVersionUID = 400L;
+
+ private boolean createInstance;
+ private Join join;
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
+
+ public BPELPick() {
+ EndNode endNode = new EndNode();
+ endNode.setTerminate(false);
+ join = new Join();
+ join.setType(Join.TYPE_XOR);
+ addNode(join);
+ linkIncomingConnections(
+ Node.CONNECTION_DEFAULT_TYPE,
+ new CompositeNode.NodeAndType(
+ endNode, Node.CONNECTION_DEFAULT_TYPE));
+ linkOutgoingConnections(
+ new CompositeNode.NodeAndType(
+ join, Node.CONNECTION_DEFAULT_TYPE),
+ Node.CONNECTION_DEFAULT_TYPE);
+ }
+
+ public void setName(String name) {
+ super.setName(name);
+ join.setName(name + " join");
+ }
+
+ public boolean isCreateInstance() {
+ return createInstance;
+ }
+
+ public void setCreateInstance(boolean createInstance) {
+ this.createInstance = createInstance;
+ }
+
+ public void addOnMessage(OnMessage onMessage) {
+ EventNode eventNode = new EventNode();
+ eventNode.addEventFilter(new OnMessageEventFilter(
+ onMessage.getPartnerLink(), onMessage.getPortType(), onMessage.getOperation()));
+ addNode(eventNode);
+ addNode(onMessage.getActivity());
+ new ConnectionImpl(
+ eventNode, Node.CONNECTION_DEFAULT_TYPE,
+ onMessage.getActivity(), Node.CONNECTION_DEFAULT_TYPE);
+ new ConnectionImpl(
+ onMessage.getActivity(), Node.CONNECTION_DEFAULT_TYPE,
+ join, Node.CONNECTION_DEFAULT_TYPE);
+ }
+
+ public void addOnAlarm(OnAlarm onAlarm) {
+ TimerNode timerNode = new TimerNode();
+ Timer timer = new Timer();
+ if (onAlarm.getForExpression() != null) {
+ timer.setDelay(getDelayFor(onAlarm.getForExpression()));
+ } else {
+ timer.setDelay(getDelayUntil(onAlarm.getUntilExpression()));
+ }
+ timerNode.setTimer(timer);
+ addNode(timerNode);
+ addNode(onAlarm.getActivity());
+ new ConnectionImpl(
+ timerNode, Node.CONNECTION_DEFAULT_TYPE,
+ onAlarm.getActivity(), Node.CONNECTION_DEFAULT_TYPE);
+ new ConnectionImpl(
+ onAlarm.getActivity(), Node.CONNECTION_DEFAULT_TYPE,
+ join, Node.CONNECTION_DEFAULT_TYPE);
+ }
+
+ private int getDelayFor(String forExpression) {
+ // TODO: BPELPick timer delay
+ return 1000;
+ }
+
+ private int getDelayUntil(String untilExpression) {
+ // TODO: BPELPick timer until
+ return 1000;
+ }
+
+ public SourceLink[] getSourceLinks() {
+ return sourceLinks;
+ }
+
+ public void setSourceLinks(SourceLink[] sourceLinks) {
+ this.sourceLinks = sourceLinks;
+ }
+
+ public TargetLink[] getTargetLinks() {
+ return targetLinks;
+ }
+
+ public void setTargetLinks(TargetLink[] targetLinks) {
+ this.targetLinks = targetLinks;
+ }
+
+ public class OnMessage {
+
+ private String partnerLink;
+ private String portType;
+ private String operation;
+ private String variable;
+ private BPELCorrelation[] correlations;
+ private BPELActivity activity;
+
+ public String getPartnerLink() {
+ return partnerLink;
+ }
+
+ public void setPartnerLink(String partnerLink) {
+ this.partnerLink = partnerLink;
+ }
+
+ public String getPortType() {
+ return portType;
+ }
+
+ public void setPortType(String portType) {
+ this.portType = portType;
+ }
+
+ public String getOperation() {
+ return operation;
+ }
+
+ public void setOperation(String operation) {
+ this.operation = operation;
+ }
+
+ public String getVariable() {
+ return variable;
+ }
+
+ public void setVariable(String variable) {
+ this.variable = variable;
+ }
+
+ public BPELCorrelation[] getCorrelations() {
+ return correlations;
+ }
+
+ public void setCorrelations(BPELCorrelation[] correlations) {
+ this.correlations = correlations;
+ }
+
+ public BPELActivity getActivity() {
+ return activity;
+ }
+
+ public void setActivity(BPELActivity activity) {
+ this.activity = activity;
+ }
+
+ }
+
+ private class OnMessageEventFilter implements EventFilter {
+
+ private String partnerLink;
+ private String portType;
+ private String operation;
+
+ public OnMessageEventFilter(String partnerLink, String portType, String operation) {
+ this.partnerLink = partnerLink;
+ this.portType = portType;
+ this.operation = operation;
+ }
+
+ public boolean acceptsEvent(String type, Object event) {
+ if ("message".equals(type)) {
+ String[] message = (String[]) event;
+ return partnerLink.equals(message[0]) && portType.equals(message[1]) && operation.equals(message[2]);
+ }
+ return false;
+ }
+
+ }
+
+ public class OnAlarm {
+
+ private String forExpression;
+ private String untilExpression;
+ private BPELActivity activity;
+
+ public String getForExpression() {
+ return forExpression;
+ }
+
+ public void setForExpression(String forExpression) {
+ this.forExpression = forExpression;
+ }
+
+ public String getUntilExpression() {
+ return untilExpression;
+ }
+
+ public void setUntilExpression(String untilExpression) {
+ this.untilExpression = untilExpression;
+ }
+
+ public BPELActivity getActivity() {
+ return activity;
+ }
+
+ public void setActivity(BPELActivity activity) {
+ this.activity = activity;
+ }
+
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELProcess.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELProcess.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELProcess.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -43,8 +43,10 @@
"The activity of this BPEL process has already been set!");
}
this.activity = activity;
+ activity.setId(1);
addNode(activity);
EndNode end = new EndNode();
+ end.setId(2);
addNode(end);
new ConnectionImpl(
activity, Node.CONNECTION_DEFAULT_TYPE,
@@ -59,7 +61,9 @@
ExceptionScope exceptionScope = new ExceptionScope();
addContext(exceptionScope);
setDefaultContext(exceptionScope);
+ int i = 3;
for (BPELFaultHandler faultHandler: faultHandlers) {
+ faultHandler.getActivity().setId(i++);
addNode(faultHandler.getActivity());
exceptionScope.setExceptionHandler(faultHandler.getFaultName(), faultHandler);
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELReceive.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELReceive.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELReceive.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -10,7 +10,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class BPELReceive extends NodeImpl implements BPELBasicActivity {
+public class BPELReceive extends NodeImpl implements BPELActivity {
private static final long serialVersionUID = 400L;
@@ -19,13 +19,10 @@
private String operation;
private String variable;
private boolean createInstance;
- private String[] sourceLinks;
- private String[] targetLinks;
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
+ private BPELCorrelation[] correlations;
-
- public BPELReceive() {
- }
-
public String getPartnerLink() {
return partnerLink;
}
@@ -66,19 +63,19 @@
this.createInstance = createInstance;
}
- public String[] getSourceLinks() {
+ public SourceLink[] getSourceLinks() {
return sourceLinks;
}
- public void setSourceLinks(String[] sourceLinks) {
+ public void setSourceLinks(SourceLink[] sourceLinks) {
this.sourceLinks = sourceLinks;
}
- public String[] getTargetLinks() {
+ public TargetLink[] getTargetLinks() {
return targetLinks;
}
- public void setTargetLinks(String[] targetLinks) {
+ public void setTargetLinks(TargetLink[] targetLinks) {
this.targetLinks = targetLinks;
}
@@ -91,4 +88,12 @@
return null;
}
+ public BPELCorrelation[] getCorrelations() {
+ return correlations;
+ }
+
+ public void setCorrelations(BPELCorrelation[] correlations) {
+ this.correlations = correlations;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELReply.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELReply.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELReply.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -8,7 +8,7 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class BPELReply extends WorkItemNode implements BPELBasicActivity {
+public class BPELReply extends WorkItemNode implements BPELActivity {
private static final long serialVersionUID = 400L;
@@ -18,10 +18,11 @@
private static final String INPUT = "Message";
private static final String FAULT_NAME = "FaultName";
- private String[] sourceLinks;
- private String[] targetLinks;
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
+ private BPELCorrelation[] correlations;
- public BPELReply() {
+ public BPELReply() {
// TODO: a reply is not a simple web service invocation
Work work = new WorkImpl();
work.setName("WebServiceInvocation");
@@ -68,20 +69,28 @@
addInMapping(INPUT, variable);
}
- public String[] getSourceLinks() {
+ public SourceLink[] getSourceLinks() {
return sourceLinks;
}
- public void setSourceLinks(String[] sourceLinks) {
+ public void setSourceLinks(SourceLink[] sourceLinks) {
this.sourceLinks = sourceLinks;
}
- public String[] getTargetLinks() {
+ public TargetLink[] getTargetLinks() {
return targetLinks;
}
- public void setTargetLinks(String[] targetLinks) {
+ public void setTargetLinks(TargetLink[] targetLinks) {
this.targetLinks = targetLinks;
}
+ public BPELCorrelation[] getCorrelations() {
+ return correlations;
+ }
+
+ public void setCorrelations(BPELCorrelation[] correlations) {
+ this.correlations = correlations;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELScope.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELScope.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELScope.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -1,16 +1,28 @@
package org.drools.bpel.core;
+import org.drools.process.core.context.variable.VariableScope;
import org.drools.workflow.core.Node;
+import org.drools.workflow.core.node.CompositeContextNode;
import org.drools.workflow.core.node.CompositeNode;
/**
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class BPELScope extends CompositeNode implements BPELActivity, BPELFaultHandlerContainer {
+public class BPELScope extends CompositeContextNode implements BPELActivity, BPELFaultHandlerContainer {
private static final long serialVersionUID = 400L;
+ public BPELScope() {
+ VariableScope variableScope = new VariableScope();
+ addContext(variableScope);
+ setDefaultContext(variableScope);
+ }
+
+ public VariableScope getVariableScope() {
+ return (VariableScope) getDefaultContext(VariableScope.VARIABLE_SCOPE);
+ }
+
public void setActivity(BPELActivity activity) {
addNode(activity);
linkIncomingConnections(
@@ -23,19 +35,19 @@
Node.CONNECTION_DEFAULT_TYPE);
}
- public String[] getSourceLinks() {
+ public SourceLink[] getSourceLinks() {
throw new IllegalArgumentException("A scope does not support links!");
}
- public String[] getTargetLinks() {
+ public TargetLink[] getTargetLinks() {
throw new IllegalArgumentException("A scope does not support links!");
}
- public void setSourceLinks(String[] sourceLinks) {
+ public void setSourceLinks(SourceLink[] sourceLinks) {
throw new IllegalArgumentException("A scope does not support links!");
}
- public void setTargetLinks(String[] targetLinks) {
+ public void setTargetLinks(TargetLink[] targetLinks) {
throw new IllegalArgumentException("A scope does not support links!");
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELSequence.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELSequence.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELSequence.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -10,12 +10,12 @@
*
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
-public class BPELSequence extends CompositeNode implements BPELStructuredActivity {
+public class BPELSequence extends CompositeNode implements BPELActivity {
private static final long serialVersionUID = 400L;
- private String[] sourceLinks;
- private String[] targetLinks;
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
public void setActivities(List<BPELActivity> activities) {
if (activities == null || activities.size() < 2) {
@@ -42,19 +42,19 @@
Node.CONNECTION_DEFAULT_TYPE);
}
- public String[] getSourceLinks() {
+ public SourceLink[] getSourceLinks() {
return sourceLinks;
}
- public void setSourceLinks(String[] sourceLinks) {
+ public void setSourceLinks(SourceLink[] sourceLinks) {
this.sourceLinks = sourceLinks;
}
- public String[] getTargetLinks() {
+ public TargetLink[] getTargetLinks() {
return targetLinks;
}
- public void setTargetLinks(String[] targetLinks) {
+ public void setTargetLinks(TargetLink[] targetLinks) {
this.targetLinks = targetLinks;
}
Deleted: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELStructuredActivity.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELStructuredActivity.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELStructuredActivity.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -1,13 +0,0 @@
-package org.drools.bpel.core;
-
-import java.util.List;
-
-/**
- *
- * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
- */
-public interface BPELStructuredActivity extends BPELActivity {
-
- void setActivities(List<BPELActivity> activities);
-
-}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELSwitch.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELSwitch.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELSwitch.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,78 @@
+package org.drools.bpel.core;
+
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.impl.ConnectionImpl;
+import org.drools.workflow.core.impl.ConstraintImpl;
+import org.drools.workflow.core.node.CompositeNode;
+import org.drools.workflow.core.node.Join;
+import org.drools.workflow.core.node.Split;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELSwitch extends CompositeNode implements BPELActivity {
+
+ private static final long serialVersionUID = 400L;
+
+ private Split split;
+ private Join join;
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
+
+ public BPELSwitch() {
+ split = new Split();
+ split.setType(Split.TYPE_XOR);
+ addNode(split);
+ join = new Join();
+ join.setType(Join.TYPE_XOR);
+ addNode(join);
+ linkIncomingConnections(
+ Node.CONNECTION_DEFAULT_TYPE,
+ new CompositeNode.NodeAndType(
+ split, Node.CONNECTION_DEFAULT_TYPE));
+ linkOutgoingConnections(
+ new CompositeNode.NodeAndType(
+ join, Node.CONNECTION_DEFAULT_TYPE),
+ Node.CONNECTION_DEFAULT_TYPE);
+ }
+
+ public void setName(String name) {
+ super.setName(name);
+ split.setName(name + " split");
+ join.setName(name + " join");
+ }
+
+ public void addCase(String expression, BPELActivity activity) {
+ addNode(activity);
+ ConnectionImpl connection = new ConnectionImpl(
+ split, Node.CONNECTION_DEFAULT_TYPE,
+ activity, Node.CONNECTION_DEFAULT_TYPE);
+ new ConnectionImpl(
+ activity, Node.CONNECTION_DEFAULT_TYPE,
+ join, Node.CONNECTION_DEFAULT_TYPE);
+ ConstraintImpl constraint = new ConstraintImpl();
+ constraint.setConstraint(expression);
+ constraint.setType("code");
+ constraint.setDialect("XPath");
+ constraint.setPriority(getNodes().length - 2);
+ split.setConstraint(connection, constraint);
+ }
+
+ public SourceLink[] getSourceLinks() {
+ return sourceLinks;
+ }
+
+ public void setSourceLinks(SourceLink[] sourceLinks) {
+ this.sourceLinks = sourceLinks;
+ }
+
+ public TargetLink[] getTargetLinks() {
+ return targetLinks;
+ }
+
+ public void setTargetLinks(TargetLink[] targetLinks) {
+ this.targetLinks = targetLinks;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELThrow.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELThrow.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELThrow.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,32 @@
+package org.drools.bpel.core;
+
+import org.drools.workflow.core.node.FaultNode;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELThrow extends FaultNode implements BPELActivity {
+
+ private static final long serialVersionUID = 4L;
+
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
+
+ public SourceLink[] getSourceLinks() {
+ return sourceLinks;
+ }
+
+ public void setSourceLinks(SourceLink[] sourceLinks) {
+ this.sourceLinks = sourceLinks;
+ }
+
+ public TargetLink[] getTargetLinks() {
+ return targetLinks;
+ }
+
+ public void setTargetLinks(TargetLink[] targetLinks) {
+ this.targetLinks = targetLinks;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELWait.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELWait.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELWait.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,55 @@
+package org.drools.bpel.core;
+
+import org.drools.process.core.timer.Timer;
+import org.drools.workflow.core.node.TimerNode;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELWait extends TimerNode implements BPELActivity {
+
+ private static final long serialVersionUID = 4L;
+
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
+
+ public SourceLink[] getSourceLinks() {
+ return sourceLinks;
+ }
+
+ public void setSourceLinks(SourceLink[] sourceLinks) {
+ this.sourceLinks = sourceLinks;
+ }
+
+ public TargetLink[] getTargetLinks() {
+ return targetLinks;
+ }
+
+ public void setTargetLinks(TargetLink[] targetLinks) {
+ this.targetLinks = targetLinks;
+ }
+
+ public void setForExpression(String forExpression) {
+ Timer timer = new Timer();
+ timer.setDelay(getDelayFor(forExpression));
+ setTimer(timer);
+ }
+
+ public void setUntilExpression(String untilExpression) {
+ Timer timer = new Timer();
+ timer.setDelay(getDelayUntil(untilExpression));
+ setTimer(timer);
+ }
+
+ private int getDelayFor(String forExpression) {
+ // TODO: BPELPick timer delay
+ return 1000;
+ }
+
+ private int getDelayUntil(String untilExpression) {
+ // TODO: BPELPick timer until
+ return 1000;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELWhile.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELWhile.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELWhile.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,91 @@
+package org.drools.bpel.core;
+
+import org.drools.workflow.core.Node;
+import org.drools.workflow.core.impl.ConnectionImpl;
+import org.drools.workflow.core.impl.ConstraintImpl;
+import org.drools.workflow.core.node.CompositeNode;
+import org.drools.workflow.core.node.Join;
+import org.drools.workflow.core.node.Split;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELWhile extends CompositeNode implements BPELActivity {
+
+ private static final long serialVersionUID = 400L;
+
+ private Join join;
+ private Split split;
+ private SourceLink[] sourceLinks;
+ private TargetLink[] targetLinks;
+
+ public BPELWhile() {
+ join = new Join();
+ join.setType(Join.TYPE_XOR);
+ addNode(join);
+ split = new Split();
+ split.setType(Split.TYPE_XOR);
+ addNode(split);
+ BPELEmpty empty = new BPELEmpty();
+ addNode(empty);
+ linkIncomingConnections(
+ Node.CONNECTION_DEFAULT_TYPE,
+ new CompositeNode.NodeAndType(
+ join, Node.CONNECTION_DEFAULT_TYPE));
+ linkOutgoingConnections(
+ new CompositeNode.NodeAndType(
+ empty, Node.CONNECTION_DEFAULT_TYPE),
+ Node.CONNECTION_DEFAULT_TYPE);
+ new ConnectionImpl(
+ join, Node.CONNECTION_DEFAULT_TYPE,
+ split, Node.CONNECTION_DEFAULT_TYPE);
+ ConnectionImpl connection = new ConnectionImpl(
+ split, Node.CONNECTION_DEFAULT_TYPE,
+ empty, Node.CONNECTION_DEFAULT_TYPE);
+ ConstraintImpl constraint = new ConstraintImpl();
+ constraint.setConstraint("true");
+ constraint.setType("code");
+ constraint.setPriority(Integer.MAX_VALUE);
+ split.setConstraint(connection, constraint);
+ }
+
+ public void setName(String name) {
+ super.setName(name);
+ split.setName(name + " split");
+ join.setName(name + " join");
+ }
+
+ public void setActivity(String condition, BPELActivity activity) {
+ addNode(activity);
+ ConnectionImpl connection = new ConnectionImpl(
+ split, Node.CONNECTION_DEFAULT_TYPE,
+ activity, Node.CONNECTION_DEFAULT_TYPE);
+ new ConnectionImpl(
+ activity, Node.CONNECTION_DEFAULT_TYPE,
+ join, Node.CONNECTION_DEFAULT_TYPE);
+ ConstraintImpl constraint = new ConstraintImpl();
+ constraint.setConstraint(condition);
+ constraint.setType("code");
+ constraint.setDialect("XPath");
+ constraint.setPriority(getNodes().length - 2);
+ split.setConstraint(connection, constraint);
+ }
+
+ public SourceLink[] getSourceLinks() {
+ return sourceLinks;
+ }
+
+ public void setSourceLinks(SourceLink[] sourceLinks) {
+ this.sourceLinks = sourceLinks;
+ }
+
+ public TargetLink[] getTargetLinks() {
+ return targetLinks;
+ }
+
+ public void setTargetLinks(TargetLink[] targetLinks) {
+ this.targetLinks = targetLinks;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELEmptyInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELEmptyInstance.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELEmptyInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,25 @@
+package org.drools.bpel.instance;
+
+import org.drools.workflow.instance.NodeInstance;
+import org.drools.workflow.instance.node.ActionNodeInstance;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELEmptyInstance extends ActionNodeInstance {
+
+ private static final long serialVersionUID = 400L;
+
+ public void internalTrigger(NodeInstance from, String type) {
+ if (BPELLinkManager.checkActivityEnabled(this)) {
+ super.internalTrigger(from, type);
+ }
+ }
+
+ public void triggerCompleted() {
+ super.triggerCompleted();
+ BPELLinkManager.activateTargetLinks(this);
+ }
+
+}
Deleted: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELExceptionHandlerInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELExceptionHandlerInstance.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELExceptionHandlerInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -1,58 +0,0 @@
-package org.drools.bpel.instance;
-
-import org.drools.bpel.core.BPELFaultHandler;
-import org.drools.process.core.context.exception.ExceptionHandler;
-import org.drools.process.core.context.variable.VariableScope;
-import org.drools.process.instance.context.exception.ExceptionHandlerInstance;
-import org.drools.process.instance.context.variable.VariableScopeInstance;
-import org.drools.workflow.instance.NodeInstance;
-import org.drools.workflow.instance.NodeInstanceContainer;
-import org.drools.workflow.instance.impl.NodeInstanceImpl;
-
-public class BPELExceptionHandlerInstance implements ExceptionHandlerInstance {
-
- private BPELFaultHandler faultHandler;
- private NodeInstanceContainer nodeInstanceContainer;
-
- public BPELFaultHandler getFaultHandler() {
- return faultHandler;
- }
-
- public void setExceptionHandler(ExceptionHandler handler) {
- this.faultHandler = (BPELFaultHandler) handler;
- }
-
- public NodeInstanceContainer getNodeInstanceContainer() {
- return nodeInstanceContainer;
- }
-
- public void setNodeInstanceContainer(NodeInstanceContainer nodeInstanceContainer) {
- this.nodeInstanceContainer = nodeInstanceContainer;
- }
-
- public void handleException(String exception, Object param) {
- if (exception == null) {
- throw new IllegalArgumentException(
- "Exception is null!");
- }
- if (!(faultHandler.getFaultName() == null || exception.equals(faultHandler.getFaultName()))) {
- throw new IllegalArgumentException(
- "Cannot handle exception: " + exception);
- }
- NodeInstance nodeInstance = nodeInstanceContainer.getNodeInstance(faultHandler.getActivity());
- String faultVariable = faultHandler.getFaultVariable();
- if (faultVariable != null) {
- VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
- ((NodeInstanceImpl) nodeInstance).resolveContextInstance(VariableScope.VARIABLE_SCOPE, faultHandler.getFaultVariable());
- if (variableScopeInstance != null) {
- variableScopeInstance.setVariable(faultVariable, (String) param);
- } else {
- System.err.println("Could not find variable scope for variable " + faultVariable);
- System.err.println("when trying handle fault " + exception);
- System.err.println("Continuing without setting variable.");
- }
- }
- nodeInstance.trigger(null, null);
- }
-
-}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELExceptionScopeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELExceptionScopeInstance.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELExceptionScopeInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -22,7 +22,7 @@
public void handleException(ExceptionHandler handler, String exception, Object params) {
if (handler instanceof BPELFaultHandler) {
- BPELExceptionHandlerInstance handlerInstance = new BPELExceptionHandlerInstance();
+ BPELFaultHandlerInstance handlerInstance = new BPELFaultHandlerInstance();
handlerInstance.setExceptionHandler(handler);
handlerInstance.setNodeInstanceContainer(nodeInstanceContainer);
handlerInstance.handleException(exception, params);
Copied: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELFaultHandlerInstance.java (from rev 21186, labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELExceptionHandlerInstance.java)
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELFaultHandlerInstance.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELFaultHandlerInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,66 @@
+package org.drools.bpel.instance;
+
+import org.drools.bpel.core.BPELFaultHandler;
+import org.drools.process.core.context.exception.ExceptionHandler;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.context.exception.ExceptionHandlerInstance;
+import org.drools.process.instance.context.variable.VariableScopeInstance;
+import org.drools.workflow.core.Node;
+import org.drools.workflow.instance.NodeInstance;
+import org.drools.workflow.instance.NodeInstanceContainer;
+import org.drools.workflow.instance.impl.NodeInstanceImpl;
+import org.drools.workflow.instance.node.CompositeNodeInstance;
+
+public class BPELFaultHandlerInstance implements ExceptionHandlerInstance {
+
+ private BPELFaultHandler faultHandler;
+ private NodeInstanceContainer nodeInstanceContainer;
+
+ public BPELFaultHandler getFaultHandler() {
+ return faultHandler;
+ }
+
+ public void setExceptionHandler(ExceptionHandler handler) {
+ this.faultHandler = (BPELFaultHandler) handler;
+ }
+
+ public NodeInstanceContainer getNodeInstanceContainer() {
+ return nodeInstanceContainer;
+ }
+
+ public void setNodeInstanceContainer(NodeInstanceContainer nodeInstanceContainer) {
+ this.nodeInstanceContainer = nodeInstanceContainer;
+ }
+
+ public void handleException(String exception, Object param) {
+ if (exception == null) {
+ throw new IllegalArgumentException(
+ "Exception is null!");
+ }
+ if (!(faultHandler.getFaultName() == null || exception.equals(faultHandler.getFaultName()))) {
+ throw new IllegalArgumentException(
+ "Cannot handle exception: " + exception);
+ }
+ NodeInstance nodeInstance = nodeInstanceContainer.getNodeInstance(faultHandler.getActivity());
+ String faultVariable = faultHandler.getFaultVariable();
+ if (faultVariable != null) {
+ VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
+ ((NodeInstanceImpl) nodeInstance).resolveContextInstance(VariableScope.VARIABLE_SCOPE, faultHandler.getFaultVariable());
+ if (variableScopeInstance != null) {
+ variableScopeInstance.setVariable(faultVariable, (String) param);
+ } else {
+ System.err.println("Could not find variable scope for variable " + faultVariable);
+ System.err.println("when trying handle fault " + exception);
+ System.err.println("Continuing without setting variable.");
+ }
+ }
+ nodeInstance.trigger(null, null);
+ if (nodeInstanceContainer instanceof BPELProcessInstance) {
+ ((BPELProcessInstance) nodeInstanceContainer).setState(ProcessInstance.STATE_ABORTED);
+ } else {
+ ((CompositeNodeInstance) nodeInstanceContainer).triggerCompleted(Node.CONNECTION_DEFAULT_TYPE);
+ }
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELLinkManager.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELLinkManager.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELLinkManager.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -1,6 +1,8 @@
package org.drools.bpel.instance;
import org.drools.bpel.core.BPELActivity;
+import org.drools.bpel.core.BPELActivity.SourceLink;
+import org.drools.bpel.core.BPELActivity.TargetLink;
import org.drools.util.ArrayUtils;
import org.drools.workflow.instance.NodeInstance;
import org.drools.workflow.instance.NodeInstanceContainer;
@@ -15,13 +17,13 @@
private BPELLinkManager() {
}
- private static String[] getSourceLinks(NodeInstance activityInstance) {
+ private static SourceLink[] getSourceLinks(NodeInstance activityInstance) {
return ((BPELActivity)
((NodeInstanceImpl) activityInstance).getNode())
.getSourceLinks();
}
- private static String[] getTargetLinks(NodeInstance activityInstance) {
+ private static TargetLink[] getTargetLinks(NodeInstance activityInstance) {
return ((BPELActivity)
((NodeInstanceImpl) activityInstance).getNode())
.getTargetLinks();
@@ -29,13 +31,13 @@
public static boolean checkActivityEnabled(NodeInstance activityInstance) {
boolean enabled = true;
- String[] incomingLinks = getTargetLinks(activityInstance);
+ TargetLink[] incomingLinks = getTargetLinks(activityInstance);
if (incomingLinks != null) {
for (int i = 0; i < incomingLinks.length; i++) {
- BPELFlowInstance flowInstance = getFlowInstance(activityInstance, incomingLinks[i]);
- if (!flowInstance.isLinkActive(incomingLinks[i])) {
+ BPELFlowInstance flowInstance = getFlowInstance(activityInstance, incomingLinks[i].getLinkName());
+ if (!flowInstance.isLinkActive(incomingLinks[i].getLinkName())) {
enabled = false;
- flowInstance.addWaitingActivityInstance(activityInstance, incomingLinks[i]);
+ flowInstance.addWaitingActivityInstance(activityInstance, incomingLinks[i].getLinkName());
}
}
}
@@ -43,11 +45,14 @@
}
public static void activateTargetLinks(NodeInstance activityInstance) {
- String[] outgoingLinks = getSourceLinks(activityInstance);
+ SourceLink[] outgoingLinks = getSourceLinks(activityInstance);
if (outgoingLinks != null) {
for (int i = 0; i < outgoingLinks.length; i++) {
- BPELFlowInstance flowInstance = getFlowInstance(activityInstance, outgoingLinks[i]);
- flowInstance.activateLink(outgoingLinks[i]);
+ BPELFlowInstance flowInstance = getFlowInstance(activityInstance, outgoingLinks[i].getLinkName());
+ String transitionCondition = outgoingLinks[i].getTransitionCondition();
+ if (transitionCondition == null || evaluateTransitionCondition(transitionCondition)) {
+ flowInstance.activateLink(outgoingLinks[i].getLinkName());
+ }
}
}
}
@@ -60,5 +65,10 @@
}
return (BPELFlowInstance) parent;
}
+
+ private static boolean evaluateTransitionCondition(String transitionCondition) {
+ // TODO SourceLink transitionCondition
+ return true;
+ }
}
Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELNodeInstanceFactoryRegistry.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELNodeInstanceFactoryRegistry.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELNodeInstanceFactoryRegistry.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -1,12 +1,18 @@
package org.drools.bpel.instance;
import org.drools.bpel.core.BPELAssign;
+import org.drools.bpel.core.BPELEmpty;
import org.drools.bpel.core.BPELFlow;
import org.drools.bpel.core.BPELInvoke;
+import org.drools.bpel.core.BPELPick;
import org.drools.bpel.core.BPELReceive;
import org.drools.bpel.core.BPELReply;
import org.drools.bpel.core.BPELScope;
import org.drools.bpel.core.BPELSequence;
+import org.drools.bpel.core.BPELSwitch;
+import org.drools.bpel.core.BPELThrow;
+import org.drools.bpel.core.BPELWait;
+import org.drools.bpel.core.BPELWhile;
import org.drools.workflow.instance.impl.NodeInstanceFactoryRegistry;
import org.drools.workflow.instance.impl.factory.CreateNewNodeFactory;
@@ -27,6 +33,18 @@
new CreateNewNodeFactory( BPELScopeInstance.class ) );
register( BPELSequence.class,
new CreateNewNodeFactory( BPELSequenceInstance.class ) );
+ register( BPELEmpty.class,
+ new CreateNewNodeFactory( BPELEmptyInstance.class ) );
+ register( BPELPick.class,
+ new CreateNewNodeFactory( BPELPickInstance.class ) );
+ register( BPELSwitch.class,
+ new CreateNewNodeFactory( BPELSwitchInstance.class ) );
+ register( BPELThrow.class,
+ new CreateNewNodeFactory( BPELThrowInstance.class ) );
+ register( BPELWait.class,
+ new CreateNewNodeFactory( BPELWaitInstance.class ) );
+ register( BPELWhile.class,
+ new CreateNewNodeFactory( BPELWhileInstance.class ) );
}
}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELPickInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELPickInstance.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELPickInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,24 @@
+package org.drools.bpel.instance;
+
+import org.drools.workflow.instance.NodeInstance;
+import org.drools.workflow.instance.node.CompositeNodeInstance;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELPickInstance extends CompositeNodeInstance {
+
+ private static final long serialVersionUID = 400L;
+
+ public void internalTrigger(NodeInstance from, String type) {
+ if (BPELLinkManager.checkActivityEnabled(this)) {
+ super.internalTrigger(from, type);
+ }
+ }
+
+ public void triggerCompleted(String outType) {
+ super.triggerCompleted(outType);
+ BPELLinkManager.activateTargetLinks(this);
+ }
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELSwitchInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELSwitchInstance.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELSwitchInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,24 @@
+package org.drools.bpel.instance;
+
+import org.drools.workflow.instance.NodeInstance;
+import org.drools.workflow.instance.node.CompositeNodeInstance;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELSwitchInstance extends CompositeNodeInstance {
+
+ private static final long serialVersionUID = 400L;
+
+ public void internalTrigger(NodeInstance from, String type) {
+ if (BPELLinkManager.checkActivityEnabled(this)) {
+ super.internalTrigger(from, type);
+ }
+ }
+
+ public void triggerCompleted(String outType) {
+ super.triggerCompleted(outType);
+ BPELLinkManager.activateTargetLinks(this);
+ }
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELThrowInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELThrowInstance.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELThrowInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,25 @@
+package org.drools.bpel.instance;
+
+import org.drools.process.instance.context.exception.ExceptionScopeInstance;
+import org.drools.workflow.instance.NodeInstance;
+import org.drools.workflow.instance.node.FaultNodeInstance;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELThrowInstance extends FaultNodeInstance {
+
+ private static final long serialVersionUID = 400L;
+
+ public void internalTrigger(NodeInstance from, String type) {
+ if (BPELLinkManager.checkActivityEnabled(this)) {
+ super.internalTrigger(from, type);
+ }
+ }
+
+ protected void handleException(ExceptionScopeInstance exceptionScopeInstance) {
+ super.handleException(exceptionScopeInstance);
+ BPELLinkManager.activateTargetLinks(this);
+ }
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELWaitInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELWaitInstance.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELWaitInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,24 @@
+package org.drools.bpel.instance;
+
+import org.drools.workflow.instance.NodeInstance;
+import org.drools.workflow.instance.node.TimerNodeInstance;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELWaitInstance extends TimerNodeInstance {
+
+ private static final long serialVersionUID = 400L;
+
+ public void internalTrigger(NodeInstance from, String type) {
+ if (BPELLinkManager.checkActivityEnabled(this)) {
+ super.internalTrigger(from, type);
+ }
+ }
+
+ public void triggerCompleted() {
+ super.triggerCompleted();
+ BPELLinkManager.activateTargetLinks(this);
+ }
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELWhileInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELWhileInstance.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELWhileInstance.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,24 @@
+package org.drools.bpel.instance;
+
+import org.drools.workflow.instance.NodeInstance;
+import org.drools.workflow.instance.node.CompositeNodeInstance;
+
+/**
+ *
+ * @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
+ */
+public class BPELWhileInstance extends CompositeNodeInstance {
+
+ private static final long serialVersionUID = 400L;
+
+ public void internalTrigger(NodeInstance from, String type) {
+ if (BPELLinkManager.checkActivityEnabled(this)) {
+ super.internalTrigger(from, type);
+ }
+ }
+
+ public void triggerCompleted(String outType) {
+ super.triggerCompleted(outType);
+ BPELLinkManager.activateTargetLinks(this);
+ }
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCompilerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCompilerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCompilerTest.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,112 @@
+package org.drools.bpel.test;
+
+import java.util.Properties;
+
+import junit.framework.TestCase;
+
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.bpel.compiler.BPELCompiler;
+import org.drools.bpel.core.BPELProcess;
+import org.drools.bpel.instance.BPELProcessInstance;
+import org.drools.bpel.test.BPELTestUtil.WebServiceInvocationHandler;
+import org.drools.common.AbstractRuleBase;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.compiler.ProcessBuilder;
+import org.drools.process.instance.ProcessInstance;
+import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.reteoo.ReteooWorkingMemory;
+
+public class BPELCompilerTest extends TestCase {
+
+ private WorkingMemory getWorkingMemory() throws Exception {
+ // Compile process
+ BPELCompiler compiler = new BPELCompiler();
+ BPELProcess process = compiler.compileProcess(
+ BPELCompilerTest.class.getResource("/purchaseOrderProcess.bpel"));
+
+ // Build process
+ Properties properties = new Properties();
+ properties.put( "processNodeBuilderRegistry", "bpelNodeBuilderRegistry.conf" );
+ PackageBuilderConfiguration packageConf = new PackageBuilderConfiguration( properties );
+ PackageBuilder packageBuilder = new PackageBuilder(packageConf);
+ ProcessBuilder processBuilder = new ProcessBuilder(packageBuilder);
+ processBuilder.buildProcess(process);
+
+ // Load process
+ properties = new Properties();
+ properties.put( "processInstanceFactoryRegistry", "bpelProcessInstanceFactory.conf" );
+ properties.put( "processNodeInstanceFactoryRegistry", "bpelProcessNodeInstanceFactory.conf" );
+ properties.put( "processContextInstanceFactoryRegistry", "bpelProcessContextInstanceFactory.conf" );
+ RuleBaseConfiguration ruleBaseConf = new RuleBaseConfiguration( properties );
+ AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(ruleBaseConf);
+ ruleBase.addProcess(process);
+ InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
+ WorkItemHandler handler = new WebServiceInvocationHandler();
+ workingMemory.getWorkItemManager().registerWorkItemHandler("WebServiceInvocation", handler);
+ return workingMemory;
+ }
+
+ public void testPurchaseOrderProcessNormalFlow() throws Exception {
+ // Execute process
+ WorkingMemory workingMemory = getWorkingMemory();
+ BPELProcessInstance processInstance = (BPELProcessInstance)
+ workingMemory.startProcess("http://drools.jboss.org/example/bpel/purchase");
+
+ // start process
+ BPELTestUtil.webServiceInvocation(processInstance, "purchasing", "{http://manufacturing.org/wsdl/purchase}purchaseOrderPT", "sendPurchaseOrder", "PURCHASE ORDER");
+
+ // reply to web service invocations
+ WorkItem workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "scheduling", "{http://manufacturing.org/wsdl/purchase}schedulingPT", "requestProductionScheduling");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "invoicing", "{http://manufacturing.org/wsdl/purchase}computePricePT", "initiatePriceCalculation");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "shipping", "{http://manufacturing.org/wsdl/purchase}shippingPT", "requestShipping");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, "SHIPPING");
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "invoicing", "{http://manufacturing.org/wsdl/purchase}computePricePT", "sendShippingPrice");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ // invoke web service callbacks
+ BPELTestUtil.webServiceInvocation(processInstance, "shipping", "{http://manufacturing.org/wsdl/purchase}shippingCallbackPT", "sendSchedule", "SCHEDULE");
+ BPELTestUtil.webServiceInvocation(processInstance, "invoicing", "{http://manufacturing.org/wsdl/purchase}invoiceCallbackPT", "sendInvoice", "INVOICE");
+
+ // reply to web service invocation
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "scheduling", "{http://manufacturing.org/wsdl/purchase}schedulingPT", "sendShippingSchedule");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "purchasing", "{http://manufacturing.org/wsdl/purchase}purchaseOrderPT", "sendPurchaseOrder");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
+ }
+
+ public void testPurchaseOrderProcessFault() throws Exception {
+ // Execute process
+ WorkingMemory workingMemory = getWorkingMemory();
+ BPELProcessInstance processInstance = (BPELProcessInstance)
+ workingMemory.startProcess("http://drools.jboss.org/example/bpel/purchase");
+
+ // start process
+ BPELTestUtil.webServiceInvocation(processInstance, "purchasing", "{http://manufacturing.org/wsdl/purchase}purchaseOrderPT", "sendPurchaseOrder", "PURCHASE ORDER");
+
+ // reply to web service invocations
+ WorkItem workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "scheduling", "{http://manufacturing.org/wsdl/purchase}schedulingPT", "requestProductionScheduling");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "invoicing", "{http://manufacturing.org/wsdl/purchase}computePricePT", "initiatePriceCalculation");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "shipping", "{http://manufacturing.org/wsdl/purchase}shippingPT", "requestShipping");
+ BPELTestUtil.replyWebServiceInvocationFault(workingMemory, workItem, "{http://manufacturing.org/wsdl/purchase}cannotCompleteOrder", "SHIPPING FAULT");
+
+ assertEquals(ProcessInstance.STATE_ABORTED, processInstance.getState());
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCoreTest.java (from rev 21186, labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCoreTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCoreTest.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,328 @@
+package org.drools.bpel.test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.audit.WorkingMemoryFileLogger;
+import org.drools.bpel.core.BPELActivity;
+import org.drools.bpel.core.BPELAssign;
+import org.drools.bpel.core.BPELFaultHandler;
+import org.drools.bpel.core.BPELFlow;
+import org.drools.bpel.core.BPELInvoke;
+import org.drools.bpel.core.BPELProcess;
+import org.drools.bpel.core.BPELReceive;
+import org.drools.bpel.core.BPELReply;
+import org.drools.bpel.core.BPELSequence;
+import org.drools.bpel.core.BPELActivity.SourceLink;
+import org.drools.bpel.core.BPELActivity.TargetLink;
+import org.drools.bpel.instance.BPELProcessInstance;
+import org.drools.bpel.test.BPELTestUtil.WebServiceInvocationHandler;
+import org.drools.common.AbstractRuleBase;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.compiler.ProcessBuilder;
+import org.drools.process.core.context.variable.Variable;
+import org.drools.process.core.context.variable.VariableScope;
+import org.drools.process.core.datatype.impl.type.StringDataType;
+import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.reteoo.ReteooWorkingMemory;
+
+public class BPELCoreTest {
+
+ public static BPELProcess getProcess() {
+ BPELProcess process = new BPELProcess();
+ process.setName("Purchase Order Process");
+ process.setId("1");
+ process.setVersion("1");
+ process.setPackageName("org.drools.bpel.test");
+ int nodeId = 0;
+
+ // variables
+ VariableScope variableScope = process.getVariableScope();
+ List<Variable> variables = new ArrayList<Variable>();
+ Variable variable = new Variable();
+ variable.setName("PO");
+ variable.setType(new StringDataType());
+ variables.add(variable);
+ variable = new Variable();
+ variable.setName("Invoice");
+ variable.setType(new StringDataType());
+ variables.add(variable);
+ variable = new Variable();
+ variable.setName("POFault");
+ variable.setType(new StringDataType());
+ variables.add(variable);
+ variable = new Variable();
+ variable.setName("shippingRequest");
+ variable.setType(new StringDataType());
+ variables.add(variable);
+ variable = new Variable();
+ variable.setName("shippingInfo");
+ variable.setType(new StringDataType());
+ variables.add(variable);
+ variable = new Variable();
+ variable.setName("shippingSchedule");
+ variable.setType(new StringDataType());
+ variables.add(variable);
+ variableScope.setVariables(variables);
+
+ // faultHandler
+ List<BPELFaultHandler> faultHandlers = new ArrayList<BPELFaultHandler>();
+ BPELFaultHandler faultHandler = new BPELFaultHandler();
+ faultHandler.setFaultName("cannotCompleteOrder");
+ faultHandler.setFaultVariable("POFault");
+ BPELReply reply = new BPELReply();
+ reply.setId(++nodeId);
+ reply.setPartnerLink("purchasing");
+ reply.setPortType("lns:purchaseOrderPT");
+ reply.setOperation("sendPurchaseOrder");
+ reply.setVariable("POFault");
+ reply.setFaultName("cannotCompleteOrder");
+ faultHandler.setActivity(reply);
+ faultHandlers.add(faultHandler);
+ process.setFaultHandlers(faultHandlers);
+
+ // sequence
+ BPELSequence sequence = new BPELSequence();
+ sequence.setId(++nodeId);
+ sequence.setName("sequence");
+ List<BPELActivity> sequenceActivities = new ArrayList<BPELActivity>();
+
+ // Receive purchase order
+ BPELReceive receive = new BPELReceive();
+ receive.setId(++nodeId);
+ receive.setName("Receive Purchase Order");
+ receive.setPartnerLink("purchasing");
+ receive.setPortType("lns:purchaseOrderPT");
+ receive.setOperation("sendPurchaseOrder");
+ receive.setVariable("PO");
+ receive.setCreateInstance(true);
+ sequenceActivities.add(receive);
+
+ // flow
+ BPELFlow flow = new BPELFlow();
+ flow.setId(++nodeId);
+ flow.setName("flow");
+ flow.setLinks(new String[] { "ship-to-invoice", "ship-to-scheduling" });
+ List<BPELActivity> flowActivities = new ArrayList<BPELActivity>();
+
+ /********** sequence1 **********/
+ BPELSequence sequence1 = new BPELSequence();
+ sequence1.setId(++nodeId);
+ sequence1.setName("sequence1");
+ List<BPELActivity> sequence1Activities = new ArrayList<BPELActivity>();
+
+ // assign1
+ BPELAssign assign1 = new BPELAssign();
+ assign1.setId(++nodeId);
+ // $shippingRequest.customerInfo <- $PO.customerInfo
+ assign1.setAction("");
+ sequence1Activities.add(assign1);
+
+ // invoke1
+ BPELInvoke invoke1 = new BPELInvoke();
+ invoke1.setId(++nodeId);
+ invoke1.setName("Decide On Shipper");
+ invoke1.setPartnerLink("shipping");
+ invoke1.setPortType("lns:shippingPT");
+ invoke1.setOperation("requestShipping");
+ invoke1.setInputVariable("shippingRequest");
+ invoke1.setOutputVariable("shippingInfo");
+ invoke1.setSourceLinks(new SourceLink[] { new SourceLink("ship-to-invoice") });
+ sequence1Activities.add(invoke1);
+
+ // receive1
+ BPELReceive receive1 = new BPELReceive();
+ receive1.setId(++nodeId);
+ receive1.setName("Arrange Logistics");
+ receive1.setPartnerLink("shipping");
+ receive1.setPortType("lns:shippingCallbackPT");
+ receive1.setOperation("sendSchedule");
+ receive1.setVariable("shippingSchedule");
+ receive1.setCreateInstance(false);
+ receive1.setSourceLinks(new SourceLink[] { new SourceLink("ship-to-scheduling") });
+ sequence1Activities.add(receive1);
+
+ sequence1.setActivities(sequence1Activities);
+ flowActivities.add(sequence1);
+
+ /********** sequence2 **********/
+ BPELSequence sequence2 = new BPELSequence();
+ sequence2.setId(++nodeId);
+ sequence2.setName("sequence2");
+ List<BPELActivity> sequence2Activities = new ArrayList<BPELActivity>();
+
+ // invoke2a
+ BPELInvoke invoke2a = new BPELInvoke();
+ invoke2a.setId(++nodeId);
+ invoke2a.setName("Initial Price Calculation");
+ invoke2a.setPartnerLink("invoicing");
+ invoke2a.setPortType("lns:computePricePT");
+ invoke2a.setOperation("initiatePriceCalculation");
+ invoke2a.setInputVariable("PO");
+ sequence2Activities.add(invoke2a);
+
+ // invoke2b
+ BPELInvoke invoke2b = new BPELInvoke();
+ invoke2b.setId(++nodeId);
+ invoke2b.setName("Complete Price Calculation");
+ invoke2b.setPartnerLink("invoicing");
+ invoke2b.setPortType("lns:computePricePT");
+ invoke2b.setOperation("sendShippingPrice");
+ invoke2b.setInputVariable("shippingInfo");
+ invoke2b.setTargetLinks(new TargetLink[] { new TargetLink("ship-to-invoice") });
+ sequence2Activities.add(invoke2b);
+
+ // receive2
+ BPELReceive receive2 = new BPELReceive();
+ receive2.setId(++nodeId);
+ receive2.setName("Receive Invoice");
+ receive2.setPartnerLink("invoicing");
+ receive2.setPortType("lns:invoiceCallbackPT");
+ receive2.setOperation("sendInvoice");
+ receive2.setVariable("Invoice");
+ receive2.setCreateInstance(false);
+ sequence2Activities.add(receive2);
+
+ sequence2.setActivities(sequence2Activities);
+ flowActivities.add(sequence2);
+
+ /********** sequence3 **********/
+ BPELSequence sequence3 = new BPELSequence();
+ sequence3.setId(++nodeId);
+ sequence3.setName("sequence3");
+ List<BPELActivity> sequence3Activities = new ArrayList<BPELActivity>();
+
+ // invoke3a
+ BPELInvoke invoke3a = new BPELInvoke();
+ invoke3a.setId(++nodeId);
+ invoke3a.setName("Initiate Production Scheduling");
+ invoke3a.setPartnerLink("scheduling");
+ invoke3a.setPortType("lns:schedulingPT");
+ invoke3a.setOperation("requestProductionScheduling");
+ invoke3a.setInputVariable("PO");
+ sequence3Activities.add(invoke3a);
+
+ // invoke2b
+ BPELInvoke invoke3b = new BPELInvoke();
+ invoke3b.setId(++nodeId);
+ invoke3b.setName("Complete Production Scheduling");
+ invoke3b.setPartnerLink("scheduling");
+ invoke3b.setPortType("lns:schedulingPT");
+ invoke3b.setOperation("sendShippingSchedule");
+ invoke3b.setInputVariable("shippingSchedule");
+ invoke3b.setTargetLinks(new TargetLink[] { new TargetLink("ship-to-scheduling") });
+ sequence3Activities.add(invoke3b);
+
+ sequence3.setActivities(sequence3Activities);
+ flowActivities.add(sequence3);
+
+ flow.setActivities(flowActivities);
+ sequenceActivities.add(flow);
+
+ // reply
+ reply = new BPELReply();
+ reply.setId(++nodeId);
+ reply.setName("Invoice Processing");
+ reply.setPartnerLink("purchasing");
+ reply.setPortType("lns:purchaseOrderPT");
+ reply.setOperation("sendPurchaseOrder");
+ reply.setVariable("Invoice");
+ sequenceActivities.add(reply);
+
+ sequence.setActivities(sequenceActivities);
+ process.setActivity(sequence);
+
+ Properties properties = new Properties();
+ properties.put( "processNodeBuilderRegistry", "bpelNodeBuilderRegistry.conf" );
+ PackageBuilderConfiguration packageConf = new PackageBuilderConfiguration( properties );
+ PackageBuilder packageBuilder = new PackageBuilder(packageConf);
+ ProcessBuilder processBuilder = new ProcessBuilder(packageBuilder);
+ processBuilder.buildProcess(process);
+ return process;
+ }
+
+ // normal execution
+ public static void main(String[] args) {
+ BPELProcess process = getProcess();
+ // execute
+ Properties properties = new Properties();
+ properties.put( "processInstanceFactoryRegistry", "bpelProcessInstanceFactory.conf" );
+ properties.put( "processNodeInstanceFactoryRegistry", "bpelProcessNodeInstanceFactory.conf" );
+ properties.put( "processContextInstanceFactoryRegistry", "bpelProcessContextInstanceFactory.conf" );
+ RuleBaseConfiguration ruleBaseConf = new RuleBaseConfiguration( properties );
+ AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(ruleBaseConf);
+ ruleBase.addProcess(process);
+ InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
+ WorkItemHandler handler = new WebServiceInvocationHandler();
+ workingMemory.getWorkItemManager().registerWorkItemHandler("WebServiceInvocation", handler);
+ WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger(workingMemory);
+ BPELProcessInstance processInstance = (BPELProcessInstance) workingMemory.startProcess("1");
+
+ // start process
+ BPELTestUtil.webServiceInvocation(processInstance, "purchasing", "lns:purchaseOrderPT", "sendPurchaseOrder", "PURCHASE ORDER");
+
+ // reply to web service invocations
+ WorkItem workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "scheduling", "lns:schedulingPT", "requestProductionScheduling");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "invoicing", "lns:computePricePT", "initiatePriceCalculation");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "shipping", "lns:shippingPT", "requestShipping");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, "SHIPPING");
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "invoicing", "lns:computePricePT", "sendShippingPrice");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ // invoke web service callbacks
+ BPELTestUtil.webServiceInvocation(processInstance, "shipping", "lns:shippingCallbackPT", "sendSchedule", "SCHEDULE");
+ BPELTestUtil.webServiceInvocation(processInstance, "invoicing", "lns:invoiceCallbackPT", "sendInvoice", "INVOICE");
+
+ // reply to web service invocation
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "scheduling", "lns:schedulingPT", "sendShippingSchedule");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ logger.writeToDisk();
+ }
+
+ // shipping returns fault
+ public static void main1(String[] args) {
+ BPELProcess process = getProcess();
+ // execute
+ Properties properties = new Properties();
+ properties.put( "processInstanceFactoryRegistry", "bpelProcessInstanceFactory.conf" );
+ properties.put( "processNodeInstanceFactoryRegistry", "bpelProcessNodeInstanceFactory.conf" );
+ properties.put( "processContextInstanceFactoryRegistry", "bpelProcessContextInstanceFactory.conf" );
+ RuleBaseConfiguration ruleBaseConf = new RuleBaseConfiguration( properties );
+ AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(ruleBaseConf);
+ ruleBase.addProcess(process);
+ InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
+ WorkItemHandler handler = new WebServiceInvocationHandler();
+ workingMemory.getWorkItemManager().registerWorkItemHandler("WebServiceInvocation", handler);
+ WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger(workingMemory);
+ BPELProcessInstance processInstance = (BPELProcessInstance) workingMemory.startProcess("1");
+
+ // start process
+ BPELTestUtil.webServiceInvocation(processInstance, "purchasing", "lns:purchaseOrderPT", "sendPurchaseOrder", "PURCHASE ORDER");
+
+ // reply to web service invocations
+ WorkItem workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "scheduling", "lns:schedulingPT", "requestProductionScheduling");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "invoicing", "lns:computePricePT", "initiatePriceCalculation");
+ BPELTestUtil.replyWebServiceInvocation(workingMemory, workItem, null);
+
+ workItem = BPELTestUtil.findWebServiceInvocation(workingMemory, "shipping", "lns:shippingPT", "requestShipping");
+ BPELTestUtil.replyWebServiceInvocationFault(workingMemory, workItem, "cannotCompleteOrder", "SHIPPING FAULT");
+
+ logger.writeToDisk();
+ }
+
+
+}
Deleted: labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELTest.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELTest.java 2008-07-25 14:50:59 UTC (rev 21225)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELTest.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -1,403 +0,0 @@
-package org.drools.bpel.test;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import org.drools.RuleBaseConfiguration;
-import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
-import org.drools.audit.WorkingMemoryFileLogger;
-import org.drools.bpel.core.BPELActivity;
-import org.drools.bpel.core.BPELAssign;
-import org.drools.bpel.core.BPELFaultHandler;
-import org.drools.bpel.core.BPELFlow;
-import org.drools.bpel.core.BPELInvoke;
-import org.drools.bpel.core.BPELProcess;
-import org.drools.bpel.core.BPELReceive;
-import org.drools.bpel.core.BPELReply;
-import org.drools.bpel.core.BPELSequence;
-import org.drools.bpel.instance.BPELProcessInstance;
-import org.drools.common.AbstractRuleBase;
-import org.drools.common.InternalWorkingMemory;
-import org.drools.compiler.PackageBuilder;
-import org.drools.compiler.PackageBuilderConfiguration;
-import org.drools.compiler.ProcessBuilder;
-import org.drools.process.core.context.variable.Variable;
-import org.drools.process.core.context.variable.VariableScope;
-import org.drools.process.core.datatype.impl.type.StringDataType;
-import org.drools.process.instance.WorkItem;
-import org.drools.process.instance.WorkItemHandler;
-import org.drools.process.instance.WorkItemManager;
-import org.drools.reteoo.ReteooWorkingMemory;
-
-public class BPELTest {
-
- public static BPELProcess getProcess() {
- BPELProcess process = new BPELProcess();
- process.setName("Purchase Order Process");
- process.setId("1");
- process.setVersion("1");
- process.setPackageName("org.drools.bpel.test");
- int nodeId = 0;
-
- // variables
- VariableScope variableScope = process.getVariableScope();
- List<Variable> variables = new ArrayList<Variable>();
- Variable variable = new Variable();
- variable.setName("PO");
- variable.setType(new StringDataType());
- variables.add(variable);
- variable = new Variable();
- variable.setName("Invoice");
- variable.setType(new StringDataType());
- variables.add(variable);
- variable = new Variable();
- variable.setName("POFault");
- variable.setType(new StringDataType());
- variables.add(variable);
- variable = new Variable();
- variable.setName("shippingRequest");
- variable.setType(new StringDataType());
- variables.add(variable);
- variable = new Variable();
- variable.setName("shippingInfo");
- variable.setType(new StringDataType());
- variables.add(variable);
- variable = new Variable();
- variable.setName("shippingSchedule");
- variable.setType(new StringDataType());
- variables.add(variable);
- variableScope.setVariables(variables);
-
- // faultHandler
- List<BPELFaultHandler> faultHandlers = new ArrayList<BPELFaultHandler>();
- BPELFaultHandler faultHandler = new BPELFaultHandler();
- faultHandler.setFaultName("cannotCompleteOrder");
- faultHandler.setFaultVariable("POFault");
- BPELReply reply = new BPELReply();
- reply.setId(++nodeId);
- reply.setPartnerLink("purchasing");
- reply.setPortType("lns:purchaseOrderPT");
- reply.setOperation("sendPurchaseOrder");
- reply.setVariable("POFault");
- reply.setFaultName("cannotCompleteOrder");
- faultHandler.setActivity(reply);
- faultHandlers.add(faultHandler);
- process.setFaultHandlers(faultHandlers);
-
- // sequence
- BPELSequence sequence = new BPELSequence();
- sequence.setId(++nodeId);
- sequence.setName("sequence");
- List<BPELActivity> sequenceActivities = new ArrayList<BPELActivity>();
-
- // Receive purchase order
- BPELReceive receive = new BPELReceive();
- receive.setId(++nodeId);
- receive.setName("Receive Purchase Order");
- receive.setPartnerLink("purchasing");
- receive.setPortType("lns:purchaseOrderPT");
- receive.setOperation("sendPurchaseOrder");
- receive.setVariable("PO");
- receive.setCreateInstance(true);
- sequenceActivities.add(receive);
-
- // flow
- BPELFlow flow = new BPELFlow();
- flow.setId(++nodeId);
- flow.setName("flow");
- flow.setLinks(new String[] { "ship-to-invoice", "ship-to-scheduling" });
- List<BPELActivity> flowActivities = new ArrayList<BPELActivity>();
-
- /********** sequence1 **********/
- BPELSequence sequence1 = new BPELSequence();
- sequence1.setId(++nodeId);
- sequence1.setName("sequence1");
- List<BPELActivity> sequence1Activities = new ArrayList<BPELActivity>();
-
- // assign1
- BPELAssign assign1 = new BPELAssign();
- assign1.setId(++nodeId);
- // $shippingRequest.customerInfo <- $PO.customerInfo
- assign1.setAction("");
- sequence1Activities.add(assign1);
-
- // invoke1
- BPELInvoke invoke1 = new BPELInvoke();
- invoke1.setId(++nodeId);
- invoke1.setName("Decide On Shipper");
- invoke1.setPartnerLink("shipping");
- invoke1.setPortType("lns:shippingPT");
- invoke1.setOperation("requestShipping");
- invoke1.setInputVariable("shippingRequest");
- invoke1.setOutputVariable("shippingInfo");
- invoke1.setSourceLinks(new String[] { "ship-to-invoice" });
- sequence1Activities.add(invoke1);
-
- // receive1
- BPELReceive receive1 = new BPELReceive();
- receive1.setId(++nodeId);
- receive1.setName("Arrange Logistics");
- receive1.setPartnerLink("shipping");
- receive1.setPortType("lns:shippingCallbackPT");
- receive1.setOperation("sendSchedule");
- receive1.setVariable("shippingSchedule");
- receive1.setCreateInstance(false);
- receive1.setSourceLinks(new String[] { "ship-to-scheduling" });
- sequence1Activities.add(receive1);
-
- sequence1.setActivities(sequence1Activities);
- flowActivities.add(sequence1);
-
- /********** sequence2 **********/
- BPELSequence sequence2 = new BPELSequence();
- sequence2.setId(++nodeId);
- sequence2.setName("sequence2");
- List<BPELActivity> sequence2Activities = new ArrayList<BPELActivity>();
-
- // invoke2a
- BPELInvoke invoke2a = new BPELInvoke();
- invoke2a.setId(++nodeId);
- invoke2a.setName("Initial Price Calculation");
- invoke2a.setPartnerLink("invoicing");
- invoke2a.setPortType("lns:computePricePT");
- invoke2a.setOperation("initiatePriceCalculation");
- invoke2a.setInputVariable("PO");
- sequence2Activities.add(invoke2a);
-
- // invoke2b
- BPELInvoke invoke2b = new BPELInvoke();
- invoke2b.setId(++nodeId);
- invoke2b.setName("Complete Price Calculation");
- invoke2b.setPartnerLink("invoicing");
- invoke2b.setPortType("lns:computePricePT");
- invoke2b.setOperation("sendShippingPrice");
- invoke2b.setInputVariable("shippingInfo");
- invoke2b.setTargetLinks(new String[] { "ship-to-invoice" });
- sequence2Activities.add(invoke2b);
-
- // receive2
- BPELReceive receive2 = new BPELReceive();
- receive2.setId(++nodeId);
- receive2.setName("Receive Invoice");
- receive2.setPartnerLink("invoicing");
- receive2.setPortType("lns:invoiceCallbackPT");
- receive2.setOperation("sendInvoice");
- receive2.setVariable("Invoice");
- receive2.setCreateInstance(false);
- sequence2Activities.add(receive2);
-
- sequence2.setActivities(sequence2Activities);
- flowActivities.add(sequence2);
-
- /********** sequence3 **********/
- BPELSequence sequence3 = new BPELSequence();
- sequence3.setId(++nodeId);
- sequence3.setName("sequence3");
- List<BPELActivity> sequence3Activities = new ArrayList<BPELActivity>();
-
- // invoke3a
- BPELInvoke invoke3a = new BPELInvoke();
- invoke3a.setId(++nodeId);
- invoke3a.setName("Initiate Production Scheduling");
- invoke3a.setPartnerLink("scheduling");
- invoke3a.setPortType("lns:schedulingPT");
- invoke3a.setOperation("requestProductionScheduling");
- invoke3a.setInputVariable("PO");
- sequence3Activities.add(invoke3a);
-
- // invoke2b
- BPELInvoke invoke3b = new BPELInvoke();
- invoke3b.setId(++nodeId);
- invoke3b.setName("Complete Production Scheduling");
- invoke3b.setPartnerLink("scheduling");
- invoke3b.setPortType("lns:schedulingPT");
- invoke3b.setOperation("sendShippingSchedule");
- invoke3b.setInputVariable("shippingSchedule");
- invoke3b.setTargetLinks(new String[] { "ship-to-scheduling" });
- sequence3Activities.add(invoke3b);
-
- sequence3.setActivities(sequence3Activities);
- flowActivities.add(sequence3);
-
- flow.setActivities(flowActivities);
- sequenceActivities.add(flow);
-
- // reply
- reply = new BPELReply();
- reply.setId(++nodeId);
- reply.setName("Invoice Processing");
- reply.setPartnerLink("purchasing");
- reply.setPortType("lns:purchaseOrderPT");
- reply.setOperation("sendPurchaseOrder");
- reply.setVariable("Invoice");
- sequenceActivities.add(reply);
-
- sequence.setActivities(sequenceActivities);
- process.setActivity(sequence);
-
- Properties properties = new Properties();
- properties.put( "processNodeBuilderRegistry", "bpelNodeBuilderRegistry.conf" );
- PackageBuilderConfiguration packageConf = new PackageBuilderConfiguration( properties );
- PackageBuilder packageBuilder = new PackageBuilder(packageConf);
- ProcessBuilder processBuilder = new ProcessBuilder(packageBuilder);
- processBuilder.buildProcess(process);
- return process;
- }
-
- // normal execution
- public static void main(String[] args) {
- BPELProcess process = getProcess();
- // execute
- Properties properties = new Properties();
- properties.put( "processInstanceFactoryRegistry", "bpelProcessInstanceFactory.conf" );
- properties.put( "processNodeInstanceFactoryRegistry", "bpelProcessNodeInstanceFactory.conf" );
- properties.put( "processContextInstanceFactoryRegistry", "bpelProcessContextInstanceFactory.conf" );
- RuleBaseConfiguration ruleBaseConf = new RuleBaseConfiguration( properties );
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(ruleBaseConf);
- ruleBase.addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
- WorkItemHandler handler = new WebServiceInvocationHandler();
- workingMemory.getWorkItemManager().registerWorkItemHandler("WebServiceInvocation", handler);
- WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger(workingMemory);
- BPELProcessInstance processInstance = (BPELProcessInstance) workingMemory.startProcess("1");
-
- // start process
- webServiceInvocation(processInstance, "purchasing", "lns:purchaseOrderPT", "sendPurchaseOrder", "PURCHASE ORDER");
-
- // reply to web service invocations
- WorkItem workItem = findWebServiceInvocation(workingMemory, "scheduling", "lns:schedulingPT", "requestProductionScheduling");
- replyWebServiceInvocation(workingMemory, workItem, null);
-
- workItem = findWebServiceInvocation(workingMemory, "invoicing", "lns:computePricePT", "initiatePriceCalculation");
- replyWebServiceInvocation(workingMemory, workItem, null);
-
- workItem = findWebServiceInvocation(workingMemory, "shipping", "lns:shippingPT", "requestShipping");
- replyWebServiceInvocation(workingMemory, workItem, "SHIPPING");
-
- workItem = findWebServiceInvocation(workingMemory, "invoicing", "lns:computePricePT", "sendShippingPrice");
- replyWebServiceInvocation(workingMemory, workItem, null);
-
- // invoke web service callbacks
- webServiceInvocation(processInstance, "shipping", "lns:shippingCallbackPT", "sendSchedule", "SCHEDULE");
- webServiceInvocation(processInstance, "invoicing", "lns:invoiceCallbackPT", "sendInvoice", "INVOICE");
-
- // reply to web service invocation
- workItem = findWebServiceInvocation(workingMemory, "scheduling", "lns:schedulingPT", "sendShippingSchedule");
- replyWebServiceInvocation(workingMemory, workItem, null);
-
- logger.writeToDisk();
- }
-
- // shipping returns fault
- public static void main1(String[] args) {
- BPELProcess process = getProcess();
- // execute
- Properties properties = new Properties();
- properties.put( "processInstanceFactoryRegistry", "bpelProcessInstanceFactory.conf" );
- properties.put( "processNodeInstanceFactoryRegistry", "bpelProcessNodeInstanceFactory.conf" );
- properties.put( "processContextInstanceFactoryRegistry", "bpelProcessContextInstanceFactory.conf" );
- RuleBaseConfiguration ruleBaseConf = new RuleBaseConfiguration( properties );
- AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase(ruleBaseConf);
- ruleBase.addProcess(process);
- InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
- WorkItemHandler handler = new WebServiceInvocationHandler();
- workingMemory.getWorkItemManager().registerWorkItemHandler("WebServiceInvocation", handler);
- WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger(workingMemory);
- BPELProcessInstance processInstance = (BPELProcessInstance) workingMemory.startProcess("1");
-
- // start process
- webServiceInvocation(processInstance, "purchasing", "lns:purchaseOrderPT", "sendPurchaseOrder", "PURCHASE ORDER");
-
- // reply to web service invocations
- WorkItem workItem = findWebServiceInvocation(workingMemory, "scheduling", "lns:schedulingPT", "requestProductionScheduling");
- replyWebServiceInvocation(workingMemory, workItem, null);
-
- workItem = findWebServiceInvocation(workingMemory, "invoicing", "lns:computePricePT", "initiatePriceCalculation");
- replyWebServiceInvocation(workingMemory, workItem, null);
-
- workItem = findWebServiceInvocation(workingMemory, "shipping", "lns:shippingPT", "requestShipping");
- replyWebServiceInvocationFault(workingMemory, workItem, "cannotCompleteOrder", "SHIPPING FAULT");
-
- logger.writeToDisk();
- }
-
- private static WorkItem findWebServiceInvocation(WorkingMemory workingMemory, String partnerLink, String portType, String operation) {
- Set<WorkItem> workItems = workingMemory.getWorkItemManager().getWorkItems();
- for (Iterator<WorkItem> iterator = workItems.iterator(); iterator.hasNext(); ) {
- WorkItem workItem = iterator.next();
- if ("WebServiceInvocation".equals(workItem.getName())
- && workItem.getParameter("PartnerLink").equals(partnerLink)
- && workItem.getParameter("PortType").equals(portType)
- && workItem.getParameter("Operation").equals(operation)) {
- return workItem;
- }
- }
- return null;
- }
-
- private static void replyWebServiceInvocation(WorkingMemory workingMemory, WorkItem workItem, String result) {
- System.out.println("Replying to web service invocation "
- + workItem.getParameter("PartnerLink") + " "
- + workItem.getParameter("PortType") + " "
- + workItem.getParameter("Operation") + ", message = "
- + workItem.getParameter("Message") + ": "
- + result);
- Map<String, Object> results = new HashMap<String, Object>();
- results.put("Result", result);
- workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), results);
- }
-
- private static void replyWebServiceInvocationFault(WorkingMemory workingMemory, WorkItem workItem, String faultName, String result) {
- System.out.println("Replying to web service invocation "
- + workItem.getParameter("PartnerLink") + " "
- + workItem.getParameter("PortType") + " "
- + workItem.getParameter("Operation") + ", faultName = "
- + workItem.getParameter("FaultName") + ", message = "
- + workItem.getParameter("Message") + ": "
- + result);
- Map<String, Object> results = new HashMap<String, Object>();
- results.put("Result", result);
- results.put("FaultName", faultName);
- workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), results);
- }
-
- private static void webServiceInvocation(BPELProcessInstance processInstance, String partnerLink, String portType, String operation, String result) {
- System.out.println("Web service invocation "
- + partnerLink + " "
- + portType + " "
- + operation + ": "
- + result);
- processInstance.acceptMessage(partnerLink, portType, operation, result);
- }
-
- public static class WebServiceInvocationHandler implements WorkItemHandler {
-
- public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
- System.out.println("Web service invoked "
- + workItem.getParameter("PartnerLink") + " "
- + workItem.getParameter("PortType") + " "
- + (workItem.getParameter("FaultName") == null ? ""
- : "fault=" + workItem.getParameter("FaultName"))
- + workItem.getParameter("Operation") + ", message = "
- + workItem.getParameter("Message"));
- }
-
- public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
- System.out.println("Web service invocation aborted "
- + workItem.getParameter("PartnerLink") + " "
- + workItem.getParameter("PortType") + " "
- + (workItem.getParameter("FaultName") == null ? ""
- : workItem.getParameter("FaultName"))
- + workItem.getParameter("Operation") + ", message = "
- + workItem.getParameter("Message"));
- }
-
- }
-
-}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELTestUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELTestUtil.java (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELTestUtil.java 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,92 @@
+package org.drools.bpel.test;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.WorkingMemory;
+import org.drools.bpel.instance.BPELProcessInstance;
+import org.drools.process.instance.WorkItem;
+import org.drools.process.instance.WorkItemHandler;
+import org.drools.process.instance.WorkItemManager;
+
+public class BPELTestUtil {
+
+ private BPELTestUtil() {
+ }
+
+ public static WorkItem findWebServiceInvocation(WorkingMemory workingMemory, String partnerLink, String portType, String operation) {
+ Set<WorkItem> workItems = workingMemory.getWorkItemManager().getWorkItems();
+ for (Iterator<WorkItem> iterator = workItems.iterator(); iterator.hasNext(); ) {
+ WorkItem workItem = iterator.next();
+ if ("WebServiceInvocation".equals(workItem.getName())
+ && workItem.getParameter("PartnerLink").equals(partnerLink)
+ && workItem.getParameter("PortType").equals(portType)
+ && workItem.getParameter("Operation").equals(operation)) {
+ return workItem;
+ }
+ }
+ return null;
+ }
+
+ public static void replyWebServiceInvocation(WorkingMemory workingMemory, WorkItem workItem, String result) {
+ System.out.println("Replying to web service invocation "
+ + workItem.getParameter("PartnerLink") + " "
+ + workItem.getParameter("PortType") + " "
+ + workItem.getParameter("Operation") + ", message = "
+ + workItem.getParameter("Message") + ": "
+ + result);
+ Map<String, Object> results = new HashMap<String, Object>();
+ results.put("Result", result);
+ workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), results);
+ }
+
+ public static void replyWebServiceInvocationFault(WorkingMemory workingMemory, WorkItem workItem, String faultName, String result) {
+ System.out.println("Replying to web service invocation "
+ + workItem.getParameter("PartnerLink") + " "
+ + workItem.getParameter("PortType") + " "
+ + workItem.getParameter("Operation") + ", faultName = "
+ + workItem.getParameter("FaultName") + ", message = "
+ + workItem.getParameter("Message") + ": "
+ + result);
+ Map<String, Object> results = new HashMap<String, Object>();
+ results.put("Result", result);
+ results.put("FaultName", faultName);
+ workingMemory.getWorkItemManager().completeWorkItem(workItem.getId(), results);
+ }
+
+ public static void webServiceInvocation(BPELProcessInstance processInstance, String partnerLink, String portType, String operation, String result) {
+ System.out.println("Web service invocation "
+ + partnerLink + " "
+ + portType + " "
+ + operation + ": "
+ + result);
+ processInstance.acceptMessage(partnerLink, portType, operation, result);
+ }
+
+ public static class WebServiceInvocationHandler implements WorkItemHandler {
+
+ public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
+ System.out.println("Web service invoked "
+ + workItem.getParameter("PartnerLink") + " "
+ + workItem.getParameter("PortType") + " "
+ + (workItem.getParameter("FaultName") == null ? ""
+ : "fault=" + workItem.getParameter("FaultName"))
+ + workItem.getParameter("Operation") + ", message = "
+ + workItem.getParameter("Message"));
+ }
+
+ public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {
+ System.out.println("Web service invocation aborted "
+ + workItem.getParameter("PartnerLink") + " "
+ + workItem.getParameter("PortType") + " "
+ + (workItem.getParameter("FaultName") == null ? ""
+ : workItem.getParameter("FaultName"))
+ + workItem.getParameter("Operation") + ", message = "
+ + workItem.getParameter("Message"));
+ }
+
+ }
+
+}
Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/test/resources/purchaseOrderProcess.bpel
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/test/resources/purchaseOrderProcess.bpel (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/test/resources/purchaseOrderProcess.bpel 2008-07-25 14:56:37 UTC (rev 21226)
@@ -0,0 +1,69 @@
+<process name="purchaseOrderProcess"
+ targetNamespace="http://drools.jboss.org/example/bpel/purchase"
+ xmlns="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
+ xmlns:lns="http://manufacturing.org/wsdl/purchase">
+
+ <partnerLinks>
+ <partnerLink name="purchasing" partnerLinkType="lns:purchasingLT" myRole="purchaseService"/>
+ <partnerLink name="invoicing" partnerLinkType="lns:invoicingLT" myRole="invoiceRequester" partnerRole="invoiceService"/>
+ <partnerLink name="shipping" partnerLinkType="lns:shippingLT" myRole="shippingRequester" partnerRole="shippingService"/>
+ <partnerLink name="scheduling" partnerLinkType="lns:schedulingLT" partnerRole="schedulingService"/>
+ </partnerLinks>
+
+ <variables>
+ <variable name="PO" messageType="lns:POMessage"/>
+ <variable name="Invoice" messageType="lns:InvMessage"/>
+ <variable name="POFault" messageType="lns:orderFaultType"/>
+ <variable name="shippingRequest" messageType="lns:shippingRequestMessage"/>
+ <variable name="shippingInfo" messageType="lns:shippingInfoMessage"/>
+ <variable name="shippingSchedule" messageType="lns:scheduleMessage"/>
+ </variables>
+
+ <faultHandlers>
+ <catch faultName="lns:cannotCompleteOrder" faultVariable="POFault">
+ <reply partnerLink="purchasing" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="POFault" faultName="cannotCompleteOrder"/>
+ </catch>
+ </faultHandlers>
+
+ <sequence>
+ <receive partnerLink="purchasing" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="PO" createInstance="yes">
+ </receive>
+ <flow>
+ <links>
+ <link name="ship-to-invoice"/>
+ <link name="ship-to-scheduling"/>
+ </links>
+ <sequence>
+ <assign>
+ <copy>
+ <from variable="PO" part="customerInfo"/>
+ <to variable="shippingRequest" part="customerInfo"/>
+ </copy>
+ </assign>
+ <invoke partnerLink="shipping" portType="lns:shippingPT" operation="requestShipping" inputVariable="shippingRequest" outputVariable="shippingInfo">
+ <source linkName="ship-to-invoice"/>
+ </invoke>
+ <receive partnerLink="shipping" portType="lns:shippingCallbackPT" operation="sendSchedule" variable="shippingSchedule">
+ <source linkName="ship-to-scheduling"/>
+ </receive>
+ </sequence>
+ <sequence>
+ <invoke partnerLink="invoicing" portType="lns:computePricePT" operation="initiatePriceCalculation" inputVariable="PO">
+ </invoke>
+ <invoke partnerLink="invoicing" portType="lns:computePricePT" operation="sendShippingPrice" inputVariable="shippingInfo">
+ <target linkName="ship-to-invoice"/>
+ </invoke>
+ <receive partnerLink="invoicing" portType="lns:invoiceCallbackPT" operation="sendInvoice" variable="Invoice"/>
+ </sequence>
+ <sequence>
+ <invoke partnerLink="scheduling" portType="lns:schedulingPT" operation="requestProductionScheduling" inputVariable="PO">
+ </invoke>
+ <invoke partnerLink="scheduling" portType="lns:schedulingPT" operation="sendShippingSchedule" inputVariable="shippingSchedule">
+ <target linkName="ship-to-scheduling"/>
+ </invoke>
+ </sequence>
+ </flow>
+ <reply partnerLink="purchasing" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="Invoice"/>
+ </sequence>
+
+</process>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list