[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