[jboss-svn-commits] JBL Code SVN: r19580 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/rule/builder and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 15 18:44:00 EDT 2008


Author: KrisVerlaenen
Date: 2008-04-15 18:44:00 -0400 (Tue, 15 Apr 2008)
New Revision: 19580

Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/ActionNodeBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ActionBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaActionBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilder.java
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
   labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaActionBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilderTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDecisionBuilderTest.java
Log:
JBRULES-1561: Code completion for ruleflow action editor
 - Added code completion to action dialog
JBRULES-1402: Inserting facts within "Action Node" (IDE RULEFLOW EDITOR)
 - support for drools.* and update/insert/... methods (for both Java and MVEL

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/ActionNodeBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/ActionNodeBuilder.java	2008-04-15 20:39:50 UTC (rev 19579)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/process/builder/ActionNodeBuilder.java	2008-04-15 22:44:00 UTC (rev 19580)
@@ -21,9 +21,7 @@
         DroolsConsequenceAction action = (DroolsConsequenceAction) actionNode.getAction();
         ActionDescr actionDescr = new ActionDescr();
         actionDescr.setText( action.getConsequence() );   
-        
         Dialect dialect = context.getDialectRegistry().getDialect( action.getDialect() );            
-        
         dialect.getActionBuilder().build( context, actionNode, actionDescr );
     }
 

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ActionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ActionBuilder.java	2008-04-15 20:39:50 UTC (rev 19579)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/ActionBuilder.java	2008-04-15 22:44:00 UTC (rev 19580)
@@ -1,7 +1,6 @@
 package org.drools.rule.builder;
 
 import org.drools.lang.descr.ActionDescr;
-import org.drools.process.core.context.variable.VariableScope;
 import org.drools.workflow.core.node.ActionNode;
 
 public interface ActionBuilder {

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaActionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaActionBuilder.java	2008-04-15 20:39:50 UTC (rev 19579)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/java/JavaActionBuilder.java	2008-04-15 22:44:00 UTC (rev 19580)
@@ -75,7 +75,7 @@
                                                (ProcessBuildContext) context,
                                                (String[]) usedIdentifiers[1].toArray( new String[usedIdentifiers[1].size()] ) );
         map.put( "text",
-                 actionDescr.getText() );
+                 dialect.getKnowledgeHelperFixer().fix( actionDescr.getText() ));
 
         generatTemplates( "actionMethod",
                           "actionInvoker",

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilder.java	2008-04-15 20:39:50 UTC (rev 19579)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilder.java	2008-04-15 22:44:00 UTC (rev 19580)
@@ -2,6 +2,8 @@
 
 import java.io.Serializable;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Set;
 
 import org.drools.base.mvel.DroolsMVELFactory;
@@ -13,11 +15,51 @@
 import org.drools.rule.builder.ActionBuilder;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.workflow.core.node.ActionNode;
+import org.mvel.Macro;
+import org.mvel.MacroProcessor;
 
 public class MVELActionBuilder
     implements
     ActionBuilder {
 
+    private static final Map macros = new HashMap( 5 );
+    static {
+        macros.put( "insert",
+                    new Macro() {
+                        public String doMacro() {
+                            return "drools.insert";
+                        }
+                    } );
+
+        macros.put( "insertLogical",
+                    new Macro() {
+                        public String doMacro() {
+                            return "drools.insertLogical";
+                        }
+                    } );
+
+        macros.put( "modify",
+                    new Macro() {
+                        public String doMacro() {
+                            return "@Modify with";
+                        }
+                    } );
+
+        macros.put( "update",
+                    new Macro() {
+                        public String doMacro() {
+                            return "drools.update";
+                        }
+                    } );
+
+        macros.put( "retract",
+                    new Macro() {
+                        public String doMacro() {
+                            return "drools.retract";
+                        }
+                    } );;
+    }
+    
     public MVELActionBuilder() {
 
     }
@@ -26,7 +68,7 @@
                       final ActionNode actionNode,
                       final ActionDescr actionDescr) {
 
-        String text = actionDescr.getText();
+        String text = processMacros( actionDescr.getText() );
 
         try {
             MVELDialect dialect = (MVELDialect) context.getDialect( "mvel" );
@@ -62,6 +104,12 @@
         }
     }
 
+    public static String processMacros(String consequence) {
+        MacroProcessor macroProcessor = new MacroProcessor();
+        macroProcessor.setMacros( macros );
+        return macroProcessor.parse( delimitExpressions( consequence ) );
+    }
+
     /**
      * Allows newlines to demarcate expressions, as per MVEL command line.
      * If expression spans multiple lines (ie inside an unbalanced bracket) then

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel	2008-04-15 20:39:50 UTC (rev 19579)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaInvokers.mvel	2008-04-15 22:44:00 UTC (rev 19580)
@@ -392,12 +392,14 @@
 {
     private static final long serialVersionUID  = 400L;
 
-    public void execute(org.drools.WorkingMemory workingMemory) throws Exception {
+    public void execute(org.drools.spi.KnowledgeHelper knowledgeHelper,
+                        org.drools.WorkingMemory workingMemory) throws Exception {
 
         @foreach{type : globalTypes, identifier : globals} @{type} @{identifier} = ( @{type} ) workingMemory.getGlobal( "@{identifier}" );
         @end{}
 
         @{processClassName}.@{methodName} (
+	        knowledgeHelper at if{globals != empty}, at end{}
 	        @foreach{identifier : globals} @{identifier}
 	        @end{","} );
     }

Modified: labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel	2008-04-15 20:39:50 UTC (rev 19579)
+++ labs/jbossrules/trunk/drools-compiler/src/main/resources/org/drools/rule/builder/dialect/java/javaRule.mvel	2008-04-15 22:44:00 UTC (rev 19580)
@@ -75,7 +75,7 @@
 @end{}
 
 @declare{"actionMethod"}
-public static void @{methodName}(@foreach{type :globalTypes, identifier : globals}  @{type} @{identifier} @end{","} ) throws Exception {
+public static void @{methodName}(org.drools.spi.KnowledgeHelper drools at if{globals != empty}, at end{} @foreach{type :globalTypes, identifier : globals}  @{type} @{identifier} @end{","} ) throws Exception {
     @{text}
 }
 @end{}

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaActionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaActionBuilderTest.java	2008-04-15 20:39:50 UTC (rev 19579)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/java/JavaActionBuilderTest.java	2008-04-15 22:44:00 UTC (rev 19580)
@@ -9,6 +9,7 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.WorkingMemory;
+import org.drools.base.DefaultKnowledgeHelper;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.lang.descr.ActionDescr;
@@ -16,6 +17,7 @@
 import org.drools.rule.Package;
 import org.drools.rule.builder.ProcessBuildContext;
 import org.drools.spi.Action;
+import org.drools.spi.KnowledgeHelper;
 import org.drools.workflow.core.impl.WorkflowProcessImpl;
 import org.drools.workflow.core.node.ActionNode;
 
@@ -62,7 +64,8 @@
         List list = new  ArrayList();
         wm.setGlobal( "list", list );        
         
-        ((Action)actionNode.getAction()).execute( wm );
+        KnowledgeHelper knowledgeHelper = new DefaultKnowledgeHelper();
+        ((Action)actionNode.getAction()).execute( knowledgeHelper, wm );
        
         assertEquals("hello world", list.get(0) );
     }    

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilderTest.java	2008-04-15 20:39:50 UTC (rev 19579)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELActionBuilderTest.java	2008-04-15 22:44:00 UTC (rev 19580)
@@ -9,12 +9,14 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.WorkingMemory;
+import org.drools.base.DefaultKnowledgeHelper;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.lang.descr.ActionDescr;
 import org.drools.rule.Package;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.spi.Action;
+import org.drools.spi.KnowledgeHelper;
 import org.drools.workflow.core.node.ActionNode;
 
 public class MVELActionBuilderTest extends TestCase {
@@ -49,9 +51,10 @@
         final WorkingMemory wm = ruleBase.newStatefulSession();
 
         List list = new  ArrayList();
-        wm.setGlobal( "list", list );        
+        wm.setGlobal( "list", list );     
         
-        ((Action)actionNode.getAction()).execute( wm );
+        KnowledgeHelper knowledgeHelper = new DefaultKnowledgeHelper();
+        ((Action)actionNode.getAction()).execute( knowledgeHelper, wm );
         
         assertEquals("hello world", list.get(0) );
     }    

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDecisionBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDecisionBuilderTest.java	2008-04-15 20:39:50 UTC (rev 19579)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELDecisionBuilderTest.java	2008-04-15 22:44:00 UTC (rev 19580)
@@ -9,12 +9,14 @@
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.WorkingMemory;
+import org.drools.base.DefaultKnowledgeHelper;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
 import org.drools.lang.descr.ActionDescr;
 import org.drools.rule.Package;
 import org.drools.rule.builder.PackageBuildContext;
 import org.drools.spi.Action;
+import org.drools.spi.KnowledgeHelper;
 import org.drools.workflow.core.node.ActionNode;
 
 public class MVELDecisionBuilderTest extends TestCase {
@@ -51,7 +53,8 @@
         List list = new  ArrayList();
         wm.setGlobal( "list", list );        
         
-        ((Action)actionNode.getAction()).execute( wm );
+        KnowledgeHelper knowledgeHelper = new DefaultKnowledgeHelper();
+        ((Action)actionNode.getAction()).execute( knowledgeHelper, wm );
         
         assertEquals("hello world", list.get(0) );
     }    




More information about the jboss-svn-commits mailing list