[jboss-svn-commits] JBL Code SVN: r20883 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/spi and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jul 2 09:19:15 EDT 2008


Author: KrisVerlaenen
Date: 2008-07-02 09:19:15 -0400 (Wed, 02 Jul 2008)
New Revision: 20883

Added:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ActionContext.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/NodeInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ForEachTest.java
Log:
JBRULES-1658: Generalize action framework
 - adding ActionContext to action execution

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2008-07-02 13:06:44 UTC (rev 20882)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/DroolsMVELFactory.java	2008-07-02 13:19:15 UTC (rev 20883)
@@ -255,7 +255,7 @@
         return false;
     }
 
-    private void addResolver(String name,
+    public void addResolver(String name,
                              VariableResolver vr) {
         if ( this.variableResolvers == null ) {
             this.variableResolvers = new HashMap();

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java	2008-07-02 13:06:44 UTC (rev 20882)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java	2008-07-02 13:19:15 UTC (rev 20883)
@@ -10,10 +10,12 @@
 import org.drools.rule.MVELDialectRuntimeData;
 import org.drools.rule.Package;
 import org.drools.spi.Action;
+import org.drools.spi.ActionContext;
 import org.drools.spi.KnowledgeHelper;
 import org.mvel.MVEL;
 import org.mvel.compiler.CompiledExpression;
 import org.mvel.debug.DebugTools;
+import org.mvel.integration.impl.SimpleValueResolver;
 
 public class MVELAction
     implements
@@ -46,11 +48,13 @@
     public String getDialect() {
         return "mvel";
     }
-
-    public void execute(final KnowledgeHelper knowledgeHelper, final WorkingMemory workingMemory) throws Exception {
+    
+    public void execute(final KnowledgeHelper knowledgeHelper, final WorkingMemory workingMemory, ActionContext context) throws Exception {
         // must clone to avoid concurrency problems
         DroolsMVELFactory factory = (DroolsMVELFactory) this.prototype.clone();
-
+        
+        factory.addResolver("context", new SimpleValueResolver(context));
+        
         factory.setContext( null,
                             knowledgeHelper,
                             null,

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java	2008-07-02 13:06:44 UTC (rev 20882)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java	2008-07-02 13:19:15 UTC (rev 20883)
@@ -4,5 +4,6 @@
 
 public interface Action {
     
-    public void execute(final KnowledgeHelper knowledgeHelper, final WorkingMemory workingMemory) throws Exception ;
+    void execute(final KnowledgeHelper knowledgeHelper, final WorkingMemory workingMemory, ActionContext context) throws Exception;
+    
 }

Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ActionContext.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ActionContext.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/ActionContext.java	2008-07-02 13:19:15 UTC (rev 20883)
@@ -0,0 +1,17 @@
+package org.drools.spi;
+
+import org.drools.workflow.instance.NodeInstance;
+
+public class ActionContext {
+    
+    private NodeInstance nodeInstance;
+
+    public NodeInstance getNodeInstance() {
+        return nodeInstance;
+    }
+
+    public void setNodeInstance(NodeInstance nodeInstance) {
+        this.nodeInstance = nodeInstance;
+    }
+    
+}

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/NodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/NodeInstance.java	2008-07-02 13:06:44 UTC (rev 20882)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/NodeInstance.java	2008-07-02 13:19:15 UTC (rev 20883)
@@ -1,5 +1,6 @@
 package org.drools.workflow.instance;
 
+import org.drools.process.instance.ContextInstance;
 import org.drools.workflow.core.Node;
 
 
@@ -43,4 +44,6 @@
     
     Node getNode();
     
+    ContextInstance resolveContextInstance(String contextId, Object param);
+    
 }

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java	2008-07-02 13:06:44 UTC (rev 20882)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/impl/ExtendedNodeInstanceImpl.java	2008-07-02 13:19:15 UTC (rev 20883)
@@ -9,6 +9,7 @@
 import org.drools.process.core.context.exception.ExceptionScope;
 import org.drools.process.instance.context.exception.ExceptionScopeInstance;
 import org.drools.spi.Action;
+import org.drools.spi.ActionContext;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.impl.ExtendedNodeImpl;
@@ -41,8 +42,10 @@
 	        }
 			for (DroolsAction droolsAction: actions) {
 				Action action = (Action) droolsAction.getMetaData("Action");
+				ActionContext context = new ActionContext();
+				context.setNodeInstance(this);
 				try {
-					action.execute(knowledgeHelper, workingMemory);
+					action.execute(knowledgeHelper, workingMemory, context);
 				} catch (Exception exception) {
 					String exceptionName = exception.getClass().getName();
 					ExceptionScopeInstance exceptionScopeInstance = (ExceptionScopeInstance)

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java	2008-07-02 13:06:44 UTC (rev 20882)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/ActionNodeInstance.java	2008-07-02 13:19:15 UTC (rev 20883)
@@ -21,6 +21,7 @@
 import org.drools.base.SequentialKnowledgeHelper;
 import org.drools.common.InternalRuleBase;
 import org.drools.spi.Action;
+import org.drools.spi.ActionContext;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.workflow.core.Node;
 import org.drools.workflow.core.node.ActionNode;
@@ -48,7 +49,9 @@
 		Action action = (Action) getActionNode().getAction().getMetaData("Action");
 		try {
 		    KnowledgeHelper knowledgeHelper = createKnowledgeHelper();
-	        action.execute( knowledgeHelper, getProcessInstance().getWorkingMemory() );		    
+		    ActionContext context = new ActionContext();
+		    context.setNodeInstance(this);
+	        action.execute(knowledgeHelper, getProcessInstance().getWorkingMemory(), context);		    
 		} catch (Exception e) {
 		    throw new RuntimeException("unable to execute Action", e);
 		}

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-02 13:06:44 UTC (rev 20882)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/workflow/instance/node/WorkItemNodeInstance.java	2008-07-02 13:19:15 UTC (rev 20883)
@@ -123,8 +123,9 @@
 		            	VariableScopeInstance variableScopeInstance = (VariableScopeInstance)
 		                	resolveContextInstance(VariableScope.VARIABLE_SCOPE, paramName);
 		                if (variableScopeInstance != null) {
-		                	String variableValue = (String) variableScopeInstance.getVariable(paramName);
-			                replacements.put(paramName, variableValue);
+		                    Object variableValue = variableScopeInstance.getVariable(paramName);
+		                	String variableValueString = variableValue == null ? "" : variableValue.toString(); 
+			                replacements.put(paramName, variableValueString);
 		                } else {
 		                    System.err.println("Could not find variable scope for variable " + paramName);
 		                    System.err.println("when trying to replace variable in string for Work Item " + work.getName());

Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ForEachTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ForEachTest.java	2008-07-02 13:06:44 UTC (rev 20882)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/process/ForEachTest.java	2008-07-02 13:19:15 UTC (rev 20883)
@@ -18,6 +18,7 @@
 import org.drools.reteoo.ReteooWorkingMemory;
 import org.drools.ruleflow.core.RuleFlowProcess;
 import org.drools.spi.Action;
+import org.drools.spi.ActionContext;
 import org.drools.spi.KnowledgeHelper;
 import org.drools.workflow.core.DroolsAction;
 import org.drools.workflow.core.Node;
@@ -75,7 +76,7 @@
         actionNode.setName("Print child");
         DroolsAction action = new DroolsConsequenceAction("java", null);
         action.setMetaData("Action", new Action() {
-            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory) throws Exception {
+            public void execute(KnowledgeHelper knowledgeHelper, WorkingMemory workingMemory, ActionContext context) throws Exception {
                 myList.add("Executed action");
             }
         });




More information about the jboss-svn-commits mailing list