[jboss-svn-commits] JBL Code SVN: r10147 - in labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms: client/modeldriven/brxml and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 13 00:19:50 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-03-13 00:19:49 -0400 (Tue, 13 Mar 2007)
New Revision: 10147

Added:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionAssertLogicalFact.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionModifyField.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/information.gif
Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/HumanReadable.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionAssertFact.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionSetField.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/BRLPersistence.java
Log:
JBRULES-630 logical assertions etc.

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/HumanReadable.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/HumanReadable.java	2007-03-13 02:37:12 UTC (rev 10146)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/HumanReadable.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -48,8 +48,10 @@
         ceDisplayMap.put( "or", "Any of" );
         
         actionDisplayMap.put( "assert", "Assert" );
+        actionDisplayMap.put( "assertLogical", "Logically assert" );
         actionDisplayMap.put( "retract", "Retract" );
         actionDisplayMap.put( "set", "Set" );
+        actionDisplayMap.put( "modify", "Modify" );
     
     }
     

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionAssertFact.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionAssertFact.java	2007-03-13 02:37:12 UTC (rev 10146)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionAssertFact.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -9,6 +9,13 @@
     extends
     ActionFieldList {
 
+    /**
+     * This is used mainly for display purposes. 
+     */
+    public String getType() {
+        return "assert";
+    }
+    
     public String factType;
     
     public ActionAssertFact(String type) {

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionAssertLogicalFact.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionAssertLogicalFact.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionAssertLogicalFact.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -0,0 +1,25 @@
+package org.drools.brms.client.modeldriven.brxml;
+
+/**
+ * Logical assertions are used as part of "truth maintenance". 
+ * 
+ * @author Michael Neale
+ */
+public class ActionAssertLogicalFact extends ActionAssertFact {
+
+    public ActionAssertLogicalFact(String fact) {
+        super(fact);
+    }
+    
+    public ActionAssertLogicalFact() {
+        super();
+    }
+
+    /**
+     * This is used mainly for display purposes. 
+     */    
+    public String getType() {
+        return "assertLogical";
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionAssertLogicalFact.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionModifyField.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionModifyField.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionModifyField.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -0,0 +1,27 @@
+package org.drools.brms.client.modeldriven.brxml;
+
+/**
+ * Basically the same as setting fields, EXCEPT that
+ * it will notify the engine of the changes.
+ * This only applies to bound fact variables from the LHS.
+ * 
+ * @author Michael Neale
+ */
+public class ActionModifyField extends ActionSetField {
+
+    public ActionModifyField(String itemText) {
+        super(itemText);        
+    }
+    
+    public ActionModifyField() {
+        super();
+    }
+
+    /**
+     * This is used mainly for display purposes. 
+     */    
+    public String getType() {
+        return "modify";
+    }    
+    
+}


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionModifyField.java
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionSetField.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionSetField.java	2007-03-13 02:37:12 UTC (rev 10146)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/brxml/ActionSetField.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -2,8 +2,10 @@
 
 /**
  * For setting a field on a bound LHS variable or a global.
+ * If setting a field on a fact bound variable, this will 
+ * NOT notify the engine of any changes (unless done outside of the engine).
+ * 
  * @author Michael Neale
- *
  */
 public class ActionSetField extends ActionFieldList {
 
@@ -12,9 +14,15 @@
         this.variable = var;
     }
     
+    /**
+     * This is used mainly for display purposes. 
+     */    
+    public String getType() {
+        return "set";
+    }
+    
     public ActionSetField() {}
     public String variable;
-    public boolean modify;
 
      
  

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java	2007-03-13 02:37:12 UTC (rev 10146)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionAssertFactWidget.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -5,6 +5,7 @@
 import org.drools.brms.client.modeldriven.HumanReadable;
 import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.brms.client.modeldriven.brxml.ActionAssertFact;
+import org.drools.brms.client.modeldriven.brxml.ActionAssertLogicalFact;
 import org.drools.brms.client.modeldriven.brxml.ActionFieldValue;
 
 import com.google.gwt.user.client.Command;
@@ -107,8 +108,10 @@
                 showAddFieldPopup(w);
             }
         } );
-                
-        horiz.add( new Label(HumanReadable.getActionDisplayName("assert") + " " + this.model.factType) );
+            
+
+        
+        horiz.add( new Label(HumanReadable.getActionDisplayName(this.model.getType()) + " " + this.model.factType) );
         horiz.add( edit );
         return horiz;
         

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java	2007-03-13 02:37:12 UTC (rev 10146)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/ActionSetFieldWidget.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -5,6 +5,7 @@
 import org.drools.brms.client.modeldriven.HumanReadable;
 import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.brms.client.modeldriven.brxml.ActionFieldValue;
+import org.drools.brms.client.modeldriven.brxml.ActionModifyField;
 import org.drools.brms.client.modeldriven.brxml.ActionSetField;
 import org.drools.brms.client.modeldriven.brxml.FactPattern;
 import org.drools.brms.client.modeldriven.brxml.RuleModel;
@@ -106,8 +107,7 @@
             }
         } );
         
-        
-        horiz.add( new Label(HumanReadable.getActionDisplayName("set") + " [" + model.variable + "]") );
+        horiz.add( new Label(HumanReadable.getActionDisplayName(this.model.getType()) + " [" + model.variable + "]") );
         horiz.add( edit );
         
         return horiz;

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2007-03-13 02:37:12 UTC (rev 10146)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/modeldriven/ui/RuleModeller.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -9,6 +9,8 @@
 import org.drools.brms.client.modeldriven.HumanReadable;
 import org.drools.brms.client.modeldriven.SuggestionCompletionEngine;
 import org.drools.brms.client.modeldriven.brxml.ActionAssertFact;
+import org.drools.brms.client.modeldriven.brxml.ActionAssertLogicalFact;
+import org.drools.brms.client.modeldriven.brxml.ActionModifyField;
 import org.drools.brms.client.modeldriven.brxml.ActionRetractFact;
 import org.drools.brms.client.modeldriven.brxml.ActionSetField;
 import org.drools.brms.client.modeldriven.brxml.CompositeFactPattern;
@@ -294,12 +296,15 @@
         List vars = model.getBoundFacts();        
         final ListBox varBox = new ListBox();
         final ListBox retractBox = new ListBox();
+        final ListBox modifyBox = new ListBox();
         varBox.addItem( "Choose ..." );        
-        retractBox.addItem( "Choose..." );
+        retractBox.addItem( "Choose ..." );
+        modifyBox.addItem( "Choose ..." );
         for ( Iterator iter = vars.iterator(); iter.hasNext(); ) {
             String v = (String) iter.next();
             varBox.addItem( v );
             retractBox.addItem( v );
+            modifyBox.addItem( v );
         }
         String[] globals = this.completions.getGlobalVariables();
         for ( int i = 0; i < globals.length; i++ ) {
@@ -309,20 +314,11 @@
         varBox.setSelectedIndex( 0 );
         varBox.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
-                addModifyVar(varBox.getItemText( varBox.getSelectedIndex() ));
+                addActionSetField(varBox.getItemText( varBox.getSelectedIndex() ));
                 popup.hide();
             }
         });
         
-        if (varBox.getItemCount() > 1) {
-            popup.addAttribute( "Modify a field on", varBox );
-            
-        }
-        if (retractBox.getItemCount() > 1) {
-            popup.addAttribute( "Retract a fact", retractBox );
-        }
-        
-        
         retractBox.addChangeListener( new ChangeListener() {
             public void onChange(Widget w) {
                 addRetract(retractBox.getItemText( retractBox.getSelectedIndex() ));
@@ -330,11 +326,44 @@
             }            
         });
         
+        modifyBox.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+                addModify(modifyBox.getItemText( modifyBox.getSelectedIndex() ));
+                popup.hide();
+            }            
+        });        
         
+        if (varBox.getItemCount() > 1) {
+            popup.addAttribute( "Set the values of a field on", varBox );            
+        }
+
+        
+        if (modifyBox.getItemCount() > 1) {
+            HorizontalPanel horiz = new HorizontalPanel();
+            horiz.add( modifyBox );
+            Image img = new Image("images/information.gif");
+            img.setTitle( "Modify a field on a fact, and notify the engine to re-evaluate rules." );
+            horiz.add( img );
+            popup.addAttribute( "Modify a fact", horiz );
+        }
+        
+        popup.addRow( new HTML("<hr/>") );
+        
+        if (retractBox.getItemCount() > 1) {
+            popup.addAttribute( "Retract the fact", retractBox );
+        }        
+        
+        popup.addRow( new HTML("<hr/>") );
+        
+        
         final ListBox factsToAssert = new ListBox();
-        factsToAssert.addItem( "Choose..." );
+        final ListBox factsToLogicallyAssert = new ListBox();
+        factsToAssert.addItem( "Choose ..." );
+        factsToLogicallyAssert.addItem( "Choose ..." );
         for ( int i = 0; i < completions.getFactTypes().length; i++ ) {
-            factsToAssert.addItem( completions.getFactTypes()[i] );
+            String item = completions.getFactTypes()[i];
+            factsToAssert.addItem( item );
+            factsToLogicallyAssert.addItem( item );
         }
         
         factsToAssert.addChangeListener( new ChangeListener() {
@@ -347,12 +376,29 @@
             }            
         });
         
+        factsToLogicallyAssert.addChangeListener( new ChangeListener() {
+            public void onChange(Widget w) {
+               String fact = factsToLogicallyAssert.getItemText( factsToLogicallyAssert.getSelectedIndex() );
+               model.addRhsItem( new ActionAssertLogicalFact(fact) );
+               refreshWidget();
+               popup.hide();
+                
+            }            
+        });        
         
+        
         if (factsToAssert.getItemCount() > 1) {
             popup.addAttribute( "Assert a new fact", factsToAssert );
+            HorizontalPanel horiz = new HorizontalPanel();
+            horiz.add( factsToLogicallyAssert );
+            Image img = new Image("images/information.gif");
+            img.setTitle( "Logically assert a fact - the fact will be retracted when the supporting evidence is removed." );
+            horiz.add( img );
+            popup.addAttribute( "Logically assert a new fact", horiz );
         }
         
         
+        
         //
         // The list of DSL sentences
         //
@@ -381,6 +427,12 @@
     
 
 
+    protected void addModify(String itemText) {
+        this.model.addRhsItem(new ActionModifyField(itemText));
+        refreshWidget(); 
+        
+    }
+
     protected void addNewDSLRhs(DSLSentence sentence) {
         this.model.addRhsItem( sentence );
         refreshWidget();        
@@ -391,7 +443,7 @@
         refreshWidget();        
     }
 
-    protected void addModifyVar(String itemText) {        
+    protected void addActionSetField(String itemText) {        
         this.model.addRhsItem(new ActionSetField(itemText));
         refreshWidget();        
     }

Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/information.gif
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/public/images/information.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java	2007-03-13 02:37:12 UTC (rev 10146)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/JBRMSServiceServlet.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -41,6 +41,7 @@
 import org.drools.repository.VersionableItem;
 
 import com.google.gwt.user.client.rpc.SerializableException;
+import com.google.gwt.user.client.rpc.SerializationException;
 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
 
 /** 
@@ -54,6 +55,7 @@
     implements
     RepositoryService {
 
+
     private static final long serialVersionUID = 3150768417428383474L;
     private static final DateFormat dateFormatter = DateFormat.getInstance();
     private static final Logger log = Logger.getLogger( JBRMSServiceServlet.class );
@@ -579,6 +581,8 @@
         }
         
     }
+
+
     
 
 

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java	2007-03-13 02:37:12 UTC (rev 10146)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/rules/SuggestionCompletionLoader.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -3,8 +3,10 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.StringReader;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.List;
 import java.util.jar.JarEntry;
 import java.util.jar.JarInputStream;
 
@@ -156,6 +158,8 @@
                     ClassFieldInspector inspector = new ClassFieldInspector( clazz );
                     String[] fields = (String[]) inspector.getFieldNames().keySet().toArray( new String[inspector.getFieldNames().size()] );
 
+                    fields = removeIrrelevantFields(fields);
+                    
                     builder.addFactType( factType );
                     builder.addFieldsForType( factType,
                                               fields );
@@ -177,6 +181,23 @@
     }
 
     /**
+     * This will remove the unneeded "fields" that come from java.lang.Object
+     * these are really not needed for the modeller.
+     */
+    String[] removeIrrelevantFields(String[] fields) {
+        List result = new ArrayList();
+        for ( int i = 0; i < fields.length; i++ ) {
+            String field = fields[i];
+            if (field.equals( "class" ) || field.equals( "hashCode" ) || field.equals( "toString" )) {
+                //ignore
+            } else {
+                result.add( field );
+            }
+        }
+        return (String[]) result.toArray( new String[result.size()] );
+    }
+
+    /**
      * @param pkg
      * @param classname
      * @param clazz

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/BRLPersistence.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/BRLPersistence.java	2007-03-13 02:37:12 UTC (rev 10146)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/BRLPersistence.java	2007-03-13 04:19:49 UTC (rev 10147)
@@ -3,6 +3,8 @@
 import org.drools.brms.client.modeldriven.brxml.ActionAssertFact;
 import org.drools.brms.client.modeldriven.brxml.ActionFieldList;
 import org.drools.brms.client.modeldriven.brxml.ActionFieldValue;
+import org.drools.brms.client.modeldriven.brxml.ActionAssertLogicalFact;
+import org.drools.brms.client.modeldriven.brxml.ActionModifyField;
 import org.drools.brms.client.modeldriven.brxml.ActionRetractFact;
 import org.drools.brms.client.modeldriven.brxml.ActionSetField;
 import org.drools.brms.client.modeldriven.brxml.CompositeFactPattern;
@@ -36,17 +38,19 @@
         xt.alias( "fact", FactPattern.class );
         xt.alias( "retract", ActionRetractFact.class );
         xt.alias( "assert", ActionAssertFact.class );
-        xt.alias( "modify", ActionSetField.class );
-        xt.alias( "dsl-expression", DSLSentence.class );
-        xt.alias( "composite-pattern", CompositeFactPattern.class );
+        xt.alias( "modify", ActionModifyField.class );
+        xt.alias( "setField", ActionSetField.class );
+        xt.alias( "dslExpression", DSLSentence.class );
+        xt.alias( "compositePattern", CompositeFactPattern.class );
         xt.alias( "attribute", RuleAttribute.class );
-        xt.alias( "action-field-list", ActionFieldList.class );
-        xt.alias( "action-field-value", ActionFieldValue.class );
-        xt.alias( "connective-constraint", ConnectiveConstraint.class );
+
+        xt.alias( "fieldValue", ActionFieldValue.class );
+        xt.alias( "connectiveConstraint", ConnectiveConstraint.class );
         xt.alias( "constraint", Constraint.class );
-        xt.alias( "sentence-fragment", DSLSentenceFragment.class );
-        
+        xt.alias( "sentenceFragment", DSLSentenceFragment.class );
+        xt.alias( "assertLogical", ActionAssertLogicalFact.class );
 
+
     }
 
     public static BRLPersistence getInstance() {




More information about the jboss-svn-commits mailing list