[jboss-svn-commits] JBL Code SVN: r7802 - in labs/jbossrules/trunk: . drools-analytics drools-analytics/src drools-analytics/src/main drools-analytics/src/main/java drools-analytics/src/main/java/org drools-analytics/src/main/java/org/drools drools-analytics/src/main/java/org/drools/analytics drools-analytics/src/main/resources

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 23 16:08:25 EST 2006


Author: michael.neale at jboss.com
Date: 2006-11-23 16:08:17 -0500 (Thu, 23 Nov 2006)
New Revision: 7802

Added:
   labs/jbossrules/trunk/drools-analytics/
   labs/jbossrules/trunk/drools-analytics/.classpath
   labs/jbossrules/trunk/drools-analytics/.project
   labs/jbossrules/trunk/drools-analytics/src/
   labs/jbossrules/trunk/drools-analytics/src/main/
   labs/jbossrules/trunk/drools-analytics/src/main/java/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Constraint.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java
   labs/jbossrules/trunk/drools-analytics/src/main/resources/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl
Log:
still experimental, but its a start

Added: labs/jbossrules/trunk/drools-analytics/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-analytics/.classpath	2006-11-23 17:16:57 UTC (rev 7801)
+++ labs/jbossrules/trunk/drools-analytics/.classpath	2006-11-23 21:08:17 UTC (rev 7802)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" path="src/main/resources"/>
+	<classpathentry kind="src" path="src/test/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="DROOLS/JBoss Rules"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>


Property changes on: labs/jbossrules/trunk/drools-analytics/.classpath
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-analytics/.project
===================================================================
--- labs/jbossrules/trunk/drools-analytics/.project	2006-11-23 17:16:57 UTC (rev 7801)
+++ labs/jbossrules/trunk/drools-analytics/.project	2006-11-23 21:08:17 UTC (rev 7802)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>drools-analytics</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.drools.ide.droolsbuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>


Property changes on: labs/jbossrules/trunk/drools-analytics/.project
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java	2006-11-23 17:16:57 UTC (rev 7801)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java	2006-11-23 21:08:17 UTC (rev 7802)
@@ -0,0 +1,48 @@
+package org.drools.analytics;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.spi.KnowledgeHelper;
+
+/**
+ * This is a class which contains lists of warnings and errors to be reported to the user via a user interface or static report of
+ * some form. 
+ * 
+ * It uses the ReportItem class to contains rules/warnings as pertains to them. Display them or ignore them as you will.
+ * 
+ * @author Michael Neale
+ *
+ */
+public class AnalysisResult implements Serializable {
+
+    
+    private static final long serialVersionUID = -6207688526236713721L;
+    private List warnings = new ArrayList();
+    private List errors = new ArrayList();
+    
+    public void addWarning(KnowledgeHelper k, String message) {
+        warnings.add( new ReportItem(k.getRule().getName(), message) );
+    }
+    
+    public void addError(KnowledgeHelper k, String message) {
+        errors.add( new ReportItem(k.getRule().getName(), message) );
+    }
+    
+    static class ReportItem implements Serializable {
+        private static final long serialVersionUID = 3674119457586457238L;
+        public String rule;
+        public String message;
+        
+        public ReportItem(String rule, String message) {
+            this.rule = rule;
+            this.message = message;
+        }
+        
+        public String toString() {
+            return rule + ": " + message;
+        }
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Constraint.java	2006-11-23 17:16:57 UTC (rev 7801)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Constraint.java	2006-11-23 21:08:17 UTC (rev 7802)
@@ -0,0 +1,53 @@
+package org.drools.analytics;
+
+public class Constraint {
+
+    private String field;
+    private String operator;
+    private String value;
+    private String objectType;
+    private String ruleName;
+    private String parentCE = "rule";
+    
+    public static String CE_OR;
+    public static String CE_NOT;
+    public static String CE_EXIST;    
+    
+    public String getParentCE() {
+        return parentCE;
+    }
+    public void setParentCE(String parentCE) {
+        this.parentCE = parentCE;
+    }
+    public String getObjectType() {
+        return objectType;
+    }
+    public void setObjectType(String objectType) {
+        this.objectType = objectType;
+    }
+    public String getRuleName() {
+        return ruleName;
+    }
+    public void setRuleName(String ruleName) {
+        this.ruleName = ruleName;
+    }
+    public String getField() {
+        return field;
+    }
+    public void setField(String field) {
+        this.field = field;
+    }
+    public String getOperator() {
+        return operator;
+    }
+    public void setOperator(String operator) {
+        this.operator = operator;
+    }
+    public String getValue() {
+        return value;
+    }
+    public void setValue(String value) {
+        this.value = value;
+    }
+    
+}


Property changes on: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Constraint.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java	2006-11-23 17:16:57 UTC (rev 7801)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java	2006-11-23 21:08:17 UTC (rev 7802)
@@ -0,0 +1,9 @@
+package org.drools.analytics;
+
+public class Pattern {
+
+    public String id;
+    public String objectType;
+    public Constraint[] constraints;
+    
+}


Property changes on: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java	2006-11-23 17:16:57 UTC (rev 7801)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java	2006-11-23 21:08:17 UTC (rev 7802)
@@ -0,0 +1,9 @@
+package org.drools.analytics;
+
+public class Rule {
+
+    
+    public String name;
+    public Pattern[] patterns;
+    public String rhs;
+}


Property changes on: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl	2006-11-23 17:16:57 UTC (rev 7801)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl	2006-11-23 21:08:17 UTC (rev 7802)
@@ -0,0 +1,106 @@
+ package drools.analytics
+
+import org.drools.analytics.*
+
+global AnalysisResult result
+
+rule "Less than"
+	when
+		constraint: Constraint( f:field, o:operator == "<", v:value, r:ruleName, ot:objectType    )
+		not Constraint( field == f, objectType == ot, ruleName != r, value == v,
+					other:operator -> (other.equals(">=") || other.equals("==") ))
+	then
+		result.addWarning(drools, "You may be missing a greater or equal range of values: " + constraint);
+end
+
+rule "Less than or equal to"
+	when
+		constraint: Constraint( f:field, o:operator == "<=", v:value, r:ruleName, ot:objectType )
+		not Constraint( field == f, objectType == ot, ruleName != r, operator == ">", value == v )
+	then
+		result.addWarning(drools, "You may be missing a greater range of values for: " + constraint);
+end
+
+rule "Greater than"
+	when
+		constraint: Constraint( f:field, o:operator == ">", v:value, r:ruleName, ot:objectType )
+		not Constraint( field == f, objectType == ot, ruleName != r, value == v,
+					other:operator -> (other.equals("<=") || other.equals("==") ))
+	then
+		result.addWarning(drools, "You may be missing a lesser or equal range of values for: " + constraint);
+end
+
+
+rule "Greater than or equal to"
+	when
+		constraint: Constraint( f:field, o:operator == ">=", v:value, r:ruleName, ot:objectType )
+		not Constraint( field == f, objectType == ot, ruleName != r, operator == "<", value == v )
+	then
+		result.addWarning(drools, "You may be missing a lesser range of values for: " + constraint);
+end
+
+rule "Inequal - missing equality case"	
+	when
+		constraint: Constraint( f:field, o:operator == "!=", v:value, r:ruleName, ot:objectType )
+		not Constraint( field == f, objectType == ot, value == v,
+					other: operator -> (other.equals("==") || other.equals("|=")) )
+	then 
+		result.addWarning(drools, "You specified an inequality, but there is no equivalent equality: " + constraint);		
+end
+
+rule "same field with conflicting constraints on the one Rule - impossible to satisfy"
+	when
+		constraint: Constraint(  )
+	then
+end	
+
+rule "Not node conflicting with top level CE - impossible to satisfy"
+	when
+		
+	then
+		
+end
+
+rule "Subsumption"
+	when		
+		//need to check RHS for rule, to have the same action
+		//and when there is at least one Pattern in common
+	then
+		
+end
+
+rule "Combination explosion risk"
+	when
+		
+	then
+		
+end
+
+rule "Major combination explosion danger"
+	when
+		
+	then
+		
+end
+
+rule "Infinite loop risk warning"
+	when
+		//RHS modifies a fact which LHS depends on, no "no loop"
+	then
+		
+end
+
+rule "No action - possibly commented out"
+	when
+		
+	then
+		
+end
+
+rule "Less restrictive constraint first"
+	when
+		//if the first constraint is less restrictive then the next, suggest re-arrange
+		//works off the pattern
+	then
+		
+end


Property changes on: labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list