[jboss-svn-commits] JBL Code SVN: r16762 - in labs/jbossrules/trunk/drools-core: src/main/java/org/drools and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Nov 23 11:33:01 EST 2007
Author: mark.proctor at jboss.com
Date: 2007-11-23 11:33:01 -0500 (Fri, 23 Nov 2007)
New Revision: 16762
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ProcessIntegrationException.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/rule/Dialectable.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java
Modified:
labs/jbossrules/trunk/drools-core/.classpath
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/ActionNodeInstanceImpl.java
Log:
JBRULES-1197 Extends actions support to include other dialects and callback
-I'm updating PackageBuilder to be able to handle actions. It's still very messy, but all unit tests are currently passing. So I'm committing now, before I start on more major refactorings.
Modified: labs/jbossrules/trunk/drools-core/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-core/.classpath 2007-11-23 16:27:41 UTC (rev 16761)
+++ labs/jbossrules/trunk/drools-core/.classpath 2007-11-23 16:33:01 UTC (rev 16762)
@@ -6,7 +6,7 @@
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.8/mvel-1.2.8.jar"/>
<classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mvel/mvel/1.2.8/mvel-1.2.8.jar"/>
<classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
</classpath>
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ProcessIntegrationException.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ProcessIntegrationException.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ProcessIntegrationException.java 2007-11-23 16:33:01 UTC (rev 16762)
@@ -0,0 +1,78 @@
+package org.drools;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.drools.rule.Rule;
+import org.drools.ruleflow.common.core.Process;
+
+/**
+ * Indicates an error integrating a <code>Process</code> or <code>Package</code>
+ * into a <code>RuleBase</code>.
+ *
+ * @see RuleBase#addProcess
+ * @see RuleBase#addPackage
+ *
+ * @author <a href="mailto:bob at eng.werken.com">bob mcwhirter </a>
+ *
+ * @version $Id: RuleIntegrationException.java,v 1.6 2004/09/17 00:14:06
+ * mproctor Exp $
+ */
+public class ProcessIntegrationException extends IntegrationException {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 400L;
+ /** The rule. */
+ private final Process process;
+
+ /**
+ * @see java.lang.Exception#Exception()
+ *
+ * @param process
+ * The offending process.
+ */
+ public ProcessIntegrationException(final Process process) {
+ super( createMessage( process ) );
+ this.process = process;
+ }
+
+ /**
+ * @see java.lang.Exception#Exception(Throwable cause)
+ *
+ * @param rule
+ * The offending rule.
+ */
+ public ProcessIntegrationException(final Process process,
+ final Throwable cause) {
+ super( createMessage( process ),
+ cause );
+ this.process = process;
+ }
+
+ /**
+ * Retrieve the <code>Rule</code>.
+ *
+ * @return The rule.
+ */
+ public Process getProcess() {
+ return this.process;
+ }
+
+ private static String createMessage(final Process process) {
+ return process.getName() + " cannot be integrated";
+ }
+}
\ No newline at end of file
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/mvel/MVELAction.java 2007-11-23 16:33:01 UTC (rev 16762)
@@ -0,0 +1,62 @@
+package org.drools.base.mvel;
+
+import java.io.Serializable;
+
+import org.drools.WorkingMemory;
+import org.drools.spi.Action;
+import org.drools.spi.Consequence;
+import org.drools.spi.KnowledgeHelper;
+import org.mvel.CompiledExpression;
+import org.mvel.MVEL;
+import org.mvel.debug.DebugTools;
+
+public class MVELAction
+ implements
+ Action,
+ Serializable {
+ private static final long serialVersionUID = 400L;
+
+ private final Serializable expr;
+ private final DroolsMVELFactory factory;
+
+ public MVELAction(final Serializable expr,
+ final DroolsMVELFactory factory) {
+ this.expr = expr;
+ this.factory = factory;
+ }
+
+ public String getDialect() {
+ return "mvel";
+ }
+
+ public void execute(final WorkingMemory workingMemory) throws Exception {
+ this.factory.setContext( null,
+ null,
+ null,
+ workingMemory,
+ null );
+ CompiledExpression compexpr = (CompiledExpression) this.expr;
+
+ //Receive breakpoints from debugger
+ MVELDebugHandler.prepare();
+
+ if ( MVELDebugHandler.isDebugMode() ) {
+ if ( MVELDebugHandler.verbose ) {
+ System.out.println( DebugTools.decompile( compexpr ) );
+ }
+ MVEL.executeDebugger( compexpr,
+ null,
+ this.factory );
+ } else {
+ MVEL.executeExpression( compexpr,
+ null,
+ this.factory );
+ }
+
+ }
+
+ public Serializable getCompExpr() {
+ return expr;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Dialectable.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Dialectable.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Dialectable.java 2007-11-23 16:33:01 UTC (rev 16762)
@@ -0,0 +1,5 @@
+package org.drools.rule;
+
+public interface Dialectable {
+ public String getDialect();
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-11-23 16:27:41 UTC (rev 16761)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PackageCompilationData.java 2007-11-23 16:33:01 UTC (rev 16762)
@@ -38,6 +38,7 @@
import org.drools.RuntimeDroolsException;
import org.drools.base.accumulators.JavaAccumulatorFunctionExecutor;
import org.drools.common.DroolsObjectInputStream;
+import org.drools.ruleflow.core.impl.ActionNodeImpl;
import org.drools.spi.Accumulator;
import org.drools.spi.Consequence;
import org.drools.spi.EvalExpression;
@@ -265,6 +266,8 @@
((Rule) invoker).setConsequence( (Consequence) clazz.newInstance() );
} else if ( invoker instanceof JavaAccumulatorFunctionExecutor ) {
((JavaAccumulatorFunctionExecutor) invoker).setExpression( (ReturnValueExpression) clazz.newInstance() );
+ } else if ( invoker instanceof ActionNodeImpl ) {
+ ((ActionNodeImpl) invoker).setAction( clazz.newInstance() );
}
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java 2007-11-23 16:27:41 UTC (rev 16761)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/Rule.java 2007-11-23 16:33:01 UTC (rev 16762)
@@ -41,7 +41,8 @@
*/
public class Rule
implements
- Serializable {
+ Serializable,
+ Dialectable {
/**
*
*/
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/ActionNodeInstanceImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/ActionNodeInstanceImpl.java 2007-11-23 16:27:41 UTC (rev 16761)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/ruleflow/instance/impl/ActionNodeInstanceImpl.java 2007-11-23 16:33:01 UTC (rev 16762)
@@ -31,6 +31,7 @@
import org.drools.ruleflow.core.ActionNode;
import org.drools.ruleflow.core.impl.DroolsConsequenceAction;
import org.drools.ruleflow.instance.RuleFlowNodeInstance;
+import org.drools.spi.Action;
import org.mvel.ExpressionCompiler;
import org.mvel.MVEL;
import org.mvel.ParserContext;
@@ -41,6 +42,7 @@
* @author <a href="mailto:kris_verlaenen at hotmail.com">Kris Verlaenen</a>
*/
public class ActionNodeInstanceImpl extends RuleFlowNodeInstanceImpl {
+ private Action action;
protected ActionNode getActionNode() {
return (ActionNode) getNode();
Added: 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 (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/spi/Action.java 2007-11-23 16:33:01 UTC (rev 16762)
@@ -0,0 +1,8 @@
+package org.drools.spi;
+
+import org.drools.WorkingMemory;
+import org.drools.rule.Dialectable;
+
+public interface Action {
+ void execute(WorkingMemory workingMemory) throws Exception ;
+}
More information about the jboss-svn-commits
mailing list