[jboss-svn-commits] JBL Code SVN: r21241 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/workflow/core/node and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Jul 26 20:52:09 EDT 2008


Author: KrisVerlaenen
Date: 2008-07-26 20:52:09 -0400 (Sat, 26 Jul 2008)
New Revision: 21241

Added:
   labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/drools.packagebuilder.conf
   labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/drools.rulebase.conf
Removed:
   labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELNodeInstanceFactoryRegistry.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
   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/ForEachNode.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java
   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/BPELFlow.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/BPELProcess.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/BPELWhile.java
   labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELProcessInstance.java
   labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/bpelNodeBuilderRegistry.conf
   labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/bpelProcessNodeInstanceFactory.conf
   labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCompilerTest.java
Log:
JBRULES-1696: Extends WS-BPEL support

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/compiler/ProcessBuilder.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -54,7 +54,7 @@
 public class ProcessBuilder {
 
     private PackageBuilder packageBuilder;
-    private final List     errors = new ArrayList();
+    private final List<DroolsError>     errors = new ArrayList<DroolsError>();
     private Map<String, ProcessValidator> processValidators = new HashMap<String, ProcessValidator>();;
 
     public ProcessBuilder(PackageBuilder packageBuilder) {
@@ -62,7 +62,7 @@
         this.processValidators.put(RuleFlowProcess.RULEFLOW_TYPE, RuleFlowProcessValidator.getInstance());
     }
 
-    public List getErrors() {
+    public List<DroolsError> getErrors() {
         return errors;
     }
 

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-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/CompositeNode.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -328,7 +328,8 @@
             this.inNodeId = outNode.getId();
             this.inNode = outNode;
             this.inType = outType;
-        }
+            setMetaData("hidden", true);
+       }
         
         public Node getInNode() {
             if (inNode == null) {
@@ -369,6 +370,7 @@
             this.outNodeId = outNode.getId();
             this.outNode = outNode;
             this.outType = outType;
+            setMetaData("hidden", true);
         }
         
         public Node getOutNode() {

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/core/node/ForEachNode.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -46,6 +46,7 @@
         // Split
         ForEachSplitNode split = new ForEachSplitNode();
         split.setName("ForEachSplit");
+        split.setMetaData("hidden", true);
         super.addNode(split);
         super.linkIncomingConnections(
             Node.CONNECTION_DEFAULT_TYPE, 
@@ -53,6 +54,7 @@
         // Composite node
         CompositeContextNode compositeNode = new CompositeContextNode();
         compositeNode.setName("ForEachComposite");
+        compositeNode.setMetaData("hidden", true);
         super.addNode(compositeNode);
         VariableScope variableScope = new VariableScope();
         compositeNode.setContext(VariableScope.VARIABLE_SCOPE, variableScope);
@@ -60,6 +62,7 @@
         // Join
         ForEachJoinNode join = new ForEachJoinNode();
         join.setName("ForEachJoin");
+        join.setMetaData("hidden", true);
         super.addNode(join);
         super.linkOutgoingConnections(
             new CompositeNode.NodeAndType(join, Node.CONNECTION_DEFAULT_TYPE),

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/NodeInstanceImpl.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -90,9 +90,17 @@
     }
     
     public final void trigger(NodeInstance from, String type) {
-        ((EventSupport) getProcessInstance().getWorkingMemory()).getRuleFlowEventSupport().fireBeforeRuleFlowNodeTriggered(this, (InternalWorkingMemory) getProcessInstance().getWorkingMemory());
+    	boolean hidden = false;
+    	if (getNode().getMetaData("hidden") != null) {
+    		hidden = true;
+    	}
+    	if (!hidden) {
+    		((EventSupport) getProcessInstance().getWorkingMemory()).getRuleFlowEventSupport().fireBeforeRuleFlowNodeTriggered(this, (InternalWorkingMemory) getProcessInstance().getWorkingMemory());
+    	}
         internalTrigger(from, type);
-        ((EventSupport) getProcessInstance().getWorkingMemory()).getRuleFlowEventSupport().fireAfterRuleFlowNodeTriggered(this, (InternalWorkingMemory) getProcessInstance().getWorkingMemory());
+        if (!hidden) {
+            ((EventSupport) getProcessInstance().getWorkingMemory()).getRuleFlowEventSupport().fireAfterRuleFlowNodeTriggered(this, (InternalWorkingMemory) getProcessInstance().getWorkingMemory());
+        }
     }
     
     public abstract void internalTrigger(NodeInstance from, String type);

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/CompositeNodeInstance.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -58,7 +58,8 @@
         List<Connection> connections = nodeAndType.getNode().getIncomingConnections(nodeAndType.getType());
         for (Iterator<Connection> iterator = connections.iterator(); iterator.hasNext(); ) {
             Connection connection = iterator.next();
-            if (((CompositeNode.CompositeNodeStart) connection.getFrom()).getInNode().getId() == from.getNodeId()) {
+            if ((connection.getFrom() instanceof CompositeNode.CompositeNodeStart) &&
+            		((CompositeNode.CompositeNodeStart) connection.getFrom()).getInNode().getId() == from.getNodeId()) {
                 NodeInstance nodeInstance = getNodeInstance(connection.getFrom());
                 nodeInstance.trigger(null, nodeAndType.getType());
                 return;

Modified: 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	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/compiler/BPELCompiler.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -9,33 +9,74 @@
 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.EmptyActivity;
 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.OnAlarm;
+import org.apache.ode.bpel.compiler.bom.OnMessage;
+import org.apache.ode.bpel.compiler.bom.PickActivity;
 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.ScopeActivity;
 import org.apache.ode.bpel.compiler.bom.SequenceActivity;
+import org.apache.ode.bpel.compiler.bom.SwitchActivity;
+import org.apache.ode.bpel.compiler.bom.ThrowActivity;
+import org.apache.ode.bpel.compiler.bom.WaitActivity;
+import org.apache.ode.bpel.compiler.bom.WhileActivity;
 import org.apache.ode.utils.StreamUtils;
+import org.drools.RuleBase;
 import org.drools.bpel.core.BPELActivity;
 import org.drools.bpel.core.BPELAssign;
+import org.drools.bpel.core.BPELEmpty;
 import org.drools.bpel.core.BPELFaultHandler;
 import org.drools.bpel.core.BPELFlow;
 import org.drools.bpel.core.BPELInvoke;
+import org.drools.bpel.core.BPELPick;
 import org.drools.bpel.core.BPELProcess;
 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.bpel.core.BPELActivity.SourceLink;
 import org.drools.bpel.core.BPELActivity.TargetLink;
+import org.drools.common.AbstractRuleBase;
+import org.drools.compiler.DroolsError;
+import org.drools.compiler.PackageBuilder;
+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.xml.sax.InputSource;
 
 public class BPELCompiler {
+	
+	public void loadProcess(RuleBase ruleBase, String fileName) {
+		try {
+			BPELCompiler compiler = new BPELCompiler();
+			BPELProcess process = compiler.compileProcess(
+				BPELCompiler.class.getResource(fileName));
+			PackageBuilder packageBuilder = new PackageBuilder();
+			ProcessBuilder processBuilder = new ProcessBuilder(packageBuilder);
+			processBuilder.buildProcess(process);
+	        if (!processBuilder.getErrors().isEmpty()) {
+	        	for (DroolsError error: processBuilder.getErrors()) {
+	        		System.err.println(error);
+	        	}
+	        	throw new IllegalArgumentException("Could not build process " + fileName);
+	        }
+	        ((AbstractRuleBase) ruleBase).addProcess(process);
+		} catch (Throwable t) {
+			throw new IllegalArgumentException("Could not load process " + fileName, t);
+		}
+	}
 
 	public BPELProcess compileProcess(URL bpelFile) throws Exception {
 		InputSource isrc = new InputSource(new ByteArrayInputStream(StreamUtils.read(bpelFile)));
@@ -62,15 +103,17 @@
 		}
 		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);
+		if (process.getFaultHandler() != null) {
+	        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;
 	}
 	
@@ -134,9 +177,79 @@
 		} else if (activity instanceof AssignActivity) {
 			AssignActivity assignActivity = (AssignActivity) activity;
 			BPELAssign assign = new BPELAssign();
-			// TODO
+			// TODO assign copy
 			assign.setAction("");
 			result = assign;
+		} else if (activity instanceof EmptyActivity) {
+			result = new BPELEmpty();
+		} else if (activity instanceof ThrowActivity) {
+			ThrowActivity throwActivity = (ThrowActivity) activity;
+			BPELThrow bpelThrow = new BPELThrow();
+			bpelThrow.setFaultName(throwActivity.getFaultName().toString());
+			bpelThrow.setFaultVariable(throwActivity.getFaultVariable());
+			result = bpelThrow;
+		} else if (activity instanceof PickActivity) {
+			PickActivity pickActivity = (PickActivity) activity;
+			BPELPick pick = new BPELPick();
+			pick.setCreateInstance(pickActivity.isCreateInstance());
+			for (OnMessage onMessage: pickActivity.getOnMessages()) {
+				BPELPick.OnMessage bpelOnMessage = pick.new OnMessage();
+				bpelOnMessage.setPartnerLink(onMessage.getPartnerLink());
+				bpelOnMessage.setPortType(onMessage.getPortType().toString());
+				bpelOnMessage.setOperation(onMessage.getOperation());
+				bpelOnMessage.setVariable(onMessage.getVariable());
+				bpelOnMessage.setActivity(compileActivity(onMessage.getActivity()));
+				pick.addOnMessage(bpelOnMessage);
+			}
+			for (OnAlarm onAlarm: pickActivity.getOnAlarms()) {
+				BPELPick.OnAlarm bpelOnAlarm = pick.new OnAlarm();
+				if (onAlarm.getFor() != null) {
+					bpelOnAlarm.setForExpression(onAlarm.getFor().toString());
+				}
+				if (onAlarm.getUntil() != null) {
+					bpelOnAlarm.setUntilExpression(onAlarm.getUntil().toString());
+				}
+				pick.addOnAlarm(bpelOnAlarm);
+			}
+			result = pick;
+		} else if (activity instanceof ScopeActivity) {
+			ScopeActivity scopeActivity = (ScopeActivity) activity;
+			BPELScope scope = new BPELScope();
+			VariableScope variableScope = scope.getVariableScope();
+	        List<Variable> variables = new ArrayList<Variable>();
+			// TODO
+//			for (org.apache.ode.bpel.compiler.bom.Variable variable: scopeActivity.getVariables()) {
+//		        Variable bpelVariable =	new Variable();
+//		        bpelVariable.setName(variable.getName());
+//		        bpelVariable.setType(new StringDataType());
+//		        variables.add(bpelVariable);
+//			}
+			variableScope.setVariables(variables);
+			result = scope;
+		} else if (activity instanceof SwitchActivity) {
+			SwitchActivity switchActivity = (SwitchActivity) activity;
+			BPELSwitch bpelSwitch = new BPELSwitch();
+			for (SwitchActivity.Case bpelCase: switchActivity.getCases()) {
+				bpelSwitch.addCase(bpelCase.getCondition().toString(), compileActivity(bpelCase.getActivity()));
+			}
+			result = bpelSwitch;
+		} else if (activity instanceof WaitActivity) {
+			WaitActivity waitActivity = (WaitActivity) activity;
+			BPELWait wait = new BPELWait();
+			if (waitActivity.getFor() != null) {
+				wait.setForExpression(waitActivity.getFor().toString());
+			}
+			if (waitActivity.getUntil() != null) {
+				wait.setUntilExpression(waitActivity.getUntil().toString());
+			}
+			result = wait;
+		} else if (activity instanceof WhileActivity) {
+			WhileActivity whileActivity = (WhileActivity) activity;
+			BPELWhile bpelWhile = new BPELWhile();
+			bpelWhile.setActivity(
+				whileActivity.getCondition().toString(),
+				compileActivity(whileActivity.getActivity()));
+			result = bpelWhile;
 		} else {
 			throw new IllegalArgumentException("Unknown activity type " + activity.getClass());
 		}

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-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELFlow.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -26,9 +26,11 @@
     public BPELFlow() {
         split = new Split();
         split.setType(Split.TYPE_AND);
+        split.setMetaData("hidden", true);
         addNode(split);
         join = new Join();
         join.setType(Join.TYPE_AND);
+        join.setMetaData("hidden", true);
         addNode(join);
         linkIncomingConnections(
             Node.CONNECTION_DEFAULT_TYPE,
@@ -40,12 +42,6 @@
             Node.CONNECTION_DEFAULT_TYPE);
     }
     
-    public void setName(String name) {
-        super.setName(name);
-        split.setName(name + " split");
-        join.setName(name + " join");
-    }
-    
     public void setActivities(List<BPELActivity> activities) {
         if (activities == null || activities.size() < 2) {
             throw new IllegalArgumentException(

Modified: 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	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELPick.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -24,26 +24,23 @@
     private TargetLink[] targetLinks;
 
     public BPELPick() {
-    	EndNode endNode = new EndNode();
-    	endNode.setTerminate(false);
+    	EndNode end = new EndNode();
+    	end.setTerminate(false);
+    	end.setMetaData("hidden", true);
         join = new Join();
         join.setType(Join.TYPE_XOR);
+        join.setMetaData("hidden", true);
         addNode(join);
         linkIncomingConnections(
             Node.CONNECTION_DEFAULT_TYPE,
             new CompositeNode.NodeAndType(
-                endNode, Node.CONNECTION_DEFAULT_TYPE));
+                end, 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;
 	}
@@ -56,6 +53,7 @@
     	EventNode eventNode = new EventNode();
     	eventNode.addEventFilter(new OnMessageEventFilter(
 			onMessage.getPartnerLink(), onMessage.getPortType(), onMessage.getOperation()));
+    	eventNode.setMetaData("hidden", true);
     	addNode(eventNode);
     	addNode(onMessage.getActivity());
         new ConnectionImpl(

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-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELProcess.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -47,6 +47,7 @@
         addNode(activity);
         EndNode end = new EndNode();
         end.setId(2);
+        end.setMetaData("hidden", true);
         addNode(end);
         new ConnectionImpl(
             activity, Node.CONNECTION_DEFAULT_TYPE,

Modified: 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	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELSwitch.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -23,9 +23,11 @@
     public BPELSwitch() {
     	split = new Split();
         split.setType(Split.TYPE_XOR);
+        split.setMetaData("hidden", true);
         addNode(split);
         join = new Join();
         join.setType(Join.TYPE_XOR);
+        join.setMetaData("hidden", true);
         addNode(join);
         linkIncomingConnections(
             Node.CONNECTION_DEFAULT_TYPE,
@@ -37,12 +39,6 @@
             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(

Modified: 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	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/core/BPELWhile.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -23,11 +23,14 @@
     public BPELWhile() {
         join = new Join();
         join.setType(Join.TYPE_XOR);
+        join.setMetaData("hidden", true);
         addNode(join);
     	split = new Split();
         split.setType(Split.TYPE_XOR);
+        split.setMetaData("hidden", true);
         addNode(split);
         BPELEmpty empty = new BPELEmpty();
+        empty.setMetaData("hidden", true);
         addNode(empty);
         linkIncomingConnections(
             Node.CONNECTION_DEFAULT_TYPE,
@@ -46,16 +49,11 @@
         ConstraintImpl constraint = new ConstraintImpl();
         constraint.setConstraint("true");
         constraint.setType("code");
-        constraint.setPriority(Integer.MAX_VALUE);
+        constraint.setDialect("mvel");
+        constraint.setPriority(Integer.MAX_VALUE - 1);
         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(
@@ -65,9 +63,10 @@
             activity, Node.CONNECTION_DEFAULT_TYPE,
             join, Node.CONNECTION_DEFAULT_TYPE);
         ConstraintImpl constraint = new ConstraintImpl();
+        // TODO While constraint dialect
         constraint.setConstraint(condition);
         constraint.setType("code");
-        constraint.setDialect("XPath");
+        constraint.setDialect("mvel");
         constraint.setPriority(getNodes().length - 2);
         split.setConstraint(connection, constraint);
     }

Deleted: 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-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELNodeInstanceFactoryRegistry.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -1,50 +0,0 @@
-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;
-
-public class BPELNodeInstanceFactoryRegistry extends NodeInstanceFactoryRegistry {
-    
-    public BPELNodeInstanceFactoryRegistry() {
-        register( BPELAssign.class,
-                  new CreateNewNodeFactory( BPELAssignInstance.class ) );
-        register( BPELFlow.class,
-                  new CreateNewNodeFactory( BPELFlowInstance.class ) );
-        register( BPELInvoke.class,
-                  new CreateNewNodeFactory( BPELInvokeInstance.class ) );
-        register( BPELReceive.class,
-                  new CreateNewNodeFactory( BPELReceiveInstance.class ) );
-        register( BPELReply.class,
-                  new CreateNewNodeFactory( BPELReplyInstance.class ) );
-        register( BPELScope.class,
-                  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 ) );
-    }
-
-}

Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELProcessInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELProcessInstance.java	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/java/org/drools/bpel/instance/BPELProcessInstance.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -7,6 +7,8 @@
 import org.drools.bpel.core.BPELActivity;
 import org.drools.bpel.core.BPELProcess;
 import org.drools.bpel.core.BPELReceive;
+import org.drools.common.EventSupport;
+import org.drools.common.InternalWorkingMemory;
 import org.drools.workflow.core.Node;
 import org.drools.workflow.core.NodeContainer;
 import org.drools.workflow.instance.NodeInstance;
@@ -53,7 +55,10 @@
                 return;
             }
         }
-        ((BPELReceiveInstance) nodeInstanceContainer.getNodeInstance(receive)).triggerCompleted(message);
+        BPELReceiveInstance bpelReceiveInstance = (BPELReceiveInstance) nodeInstanceContainer.getNodeInstance(receive);
+        ((EventSupport) getWorkingMemory()).getRuleFlowEventSupport().fireBeforeRuleFlowNodeTriggered(bpelReceiveInstance, (InternalWorkingMemory) getWorkingMemory());
+        bpelReceiveInstance.triggerCompleted(message);
+        ((EventSupport) getWorkingMemory()).getRuleFlowEventSupport().fireAfterRuleFlowNodeTriggered(bpelReceiveInstance, (InternalWorkingMemory) getWorkingMemory());
     }
     
     private BPELReceive findBPELReceive(String partnerLink, String portType, String operation) {

Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/bpelNodeBuilderRegistry.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/bpelNodeBuilderRegistry.conf	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/bpelNodeBuilderRegistry.conf	2008-07-27 00:52:09 UTC (rev 21241)
@@ -1,7 +1,11 @@
 // we use MVEL to configure our nodes, simply populate a map, which will be added to the main registry
+import org.drools.workflow.core.node.Split;
 import org.drools.bpel.core.BPELAssign;
+import org.drools.bpel.core.BPELEmpty;
 import org.drools.process.builder.ActionNodeBuilder;
+import org.drools.process.builder.SplitNodeBuilder;
 
 [
     BPELAssign   : new ActionNodeBuilder(),
+    BPELEmpty    : new ActionNodeBuilder(),
 ]

Modified: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/bpelProcessNodeInstanceFactory.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/bpelProcessNodeInstanceFactory.conf	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/bpelProcessNodeInstanceFactory.conf	2008-07-27 00:52:09 UTC (rev 21241)
@@ -6,6 +6,12 @@
 import org.drools.bpel.core.BPELReply;
 import org.drools.bpel.core.BPELScope;
 import org.drools.bpel.core.BPELSequence;
+import org.drools.bpel.core.BPELEmpty;
+import org.drools.bpel.core.BPELPick;
+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.bpel.instance.BPELAssignInstance;
 import org.drools.bpel.instance.BPELFlowInstance;
 import org.drools.bpel.instance.BPELInvokeInstance;
@@ -13,6 +19,12 @@
 import org.drools.bpel.instance.BPELReplyInstance;
 import org.drools.bpel.instance.BPELScopeInstance;
 import org.drools.bpel.instance.BPELSequenceInstance;
+import org.drools.bpel.instance.BPELEmptyInstance;
+import org.drools.bpel.instance.BPELPickInstance;
+import org.drools.bpel.instance.BPELSwitchInstance;
+import org.drools.bpel.instance.BPELThrowInstance;
+import org.drools.bpel.instance.BPELWaitInstance;
+import org.drools.bpel.instance.BPELWhileInstance;
 import org.drools.workflow.instance.impl.factory.CreateNewNodeFactory;
 
 [
@@ -23,4 +35,10 @@
     BPELReply    : new CreateNewNodeFactory( BPELReplyInstance ),
     BPELScope    : new CreateNewNodeFactory( BPELScopeInstance ),
     BPELSequence : new CreateNewNodeFactory( BPELSequenceInstance ),
+    BPELEmpty    : new CreateNewNodeFactory( BPELEmptyInstance ),
+    BPELPick     : new CreateNewNodeFactory( BPELPickInstance ),
+    BPELSwitch   : new CreateNewNodeFactory( BPELSwitchInstance ),
+    BPELThrow    : new CreateNewNodeFactory( BPELThrowInstance ),
+    BPELWait     : new CreateNewNodeFactory( BPELWaitInstance ),
+    BPELWhile    : new CreateNewNodeFactory( BPELWhileInstance ),
 ]

Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/drools.packagebuilder.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/drools.packagebuilder.conf	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/drools.packagebuilder.conf	2008-07-27 00:52:09 UTC (rev 21241)
@@ -0,0 +1 @@
+processNodeBuilderRegistry = bpelNodeBuilderRegistry.conf

Added: labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/drools.rulebase.conf
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/drools.rulebase.conf	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/main/resources/META-INF/drools.rulebase.conf	2008-07-27 00:52:09 UTC (rev 21241)
@@ -0,0 +1,3 @@
+processInstanceFactoryRegistry = bpelProcessInstanceFactory.conf        
+processNodeInstanceFactoryRegistry = bpelProcessNodeInstanceFactory.conf
+processContextInstanceFactoryRegistry = bpelProcessContextInstanceFactory.conf

Modified: 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	2008-07-26 20:08:55 UTC (rev 21240)
+++ labs/jbossrules/trunk/drools-process/drools-bpel/src/test/java/org/drools/bpel/test/BPELCompilerTest.java	2008-07-27 00:52:09 UTC (rev 21241)
@@ -1,10 +1,7 @@
 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;
@@ -14,7 +11,6 @@
 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;
@@ -30,20 +26,12 @@
 			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);
+        PackageBuilder packageBuilder = new PackageBuilder();
         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);
+        AbstractRuleBase ruleBase = (AbstractRuleBase) RuleBaseFactory.newRuleBase();
         ruleBase.addProcess(process);
         InternalWorkingMemory workingMemory = new ReteooWorkingMemory(1, ruleBase);
         WorkItemHandler handler = new WebServiceInvocationHandler();




More information about the jboss-svn-commits mailing list