[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