[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