[jboss-svn-commits] JBL Code SVN: r13264 - in labs/jbossrules/trunk/drools-compiler/src: test/java/org/drools/xml and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jul 9 12:57:25 EDT 2007


Author: fmeyer
Date: 2007-07-09 12:57:24 -0400 (Mon, 09 Jul 2007)
New Revision: 13264

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseComplex.xml
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_complex.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml
Log:
JBRULES-987 - Wrong condition in not dumper for Drl
JBRULES-988 - Error in querydescriptor dumper for drl

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2007-07-09 16:00:34 UTC (rev 13263)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/lang/DrlDumper.java	2007-07-09 16:57:24 UTC (rev 13264)
@@ -233,12 +233,11 @@
 
     public void visitNotDescr(final NotDescr descr) {
         this.template = new String();
-        if ( descr.getDescrs().isEmpty() ) {
-            this.template = "\t   not " + processDescrList( descr.getDescrs() );
+        if ( !descr.getDescrs().isEmpty() ) {
+            this.template = "\t   not ( " + processDescrList( descr.getDescrs() ) +")";
         } else {
             this.template = "";
         }
-
     }
 
     public void visitOrDescr(final OrDescr descr) {
@@ -283,13 +282,22 @@
 
     public void visitQueryDescr(final QueryDescr descr) {
         this.template = new String();
-        this.template = "<query name=\"" + descr.getName() + "\">" + "<lhs>" + processDescrList( descr.getLhs().getDescrs() ) + "</lhs>" + "</query>";
+        this.template = "query \"" + descr.getName() + "\"" + processDescrList( descr.getLhs().getDescrs() )  + "end";
     }
+    
 
     private String processRules(final List rules) {
         String ruleList = "";
+        Object ruleobj;
         for ( final Iterator iterator = rules.iterator(); iterator.hasNext(); ) {
-            final RuleDescr ruleDescr = (RuleDescr) iterator.next();
+        	ruleobj = iterator.next();
+        	if ( ruleobj instanceof QueryDescr ) {
+        		visitQueryDescr((QueryDescr) ruleobj);
+        		ruleList += this.template;
+        		break;
+        	}
+
+        	final RuleDescr ruleDescr = (RuleDescr) ruleobj;
             String rule = "rule \"" + ruleDescr.getName() + "\" " + DrlDumper.eol;
             final String attribute = processAttribute( ruleDescr.getAttributes() );
             String lhs = "";

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java	2007-07-09 16:00:34 UTC (rev 13263)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTest.java	2007-07-09 16:57:24 UTC (rev 13264)
@@ -11,7 +11,6 @@
 
 public class DumperTest extends TestCase {
 
-
     // Xml Dumper test
     
     public void testRoundTripAccumulateXml() throws Exception {
@@ -21,7 +20,7 @@
     public void testRoundTripCollectXml() throws Exception {
         DumperTestHelper.XmlFile( "test_ParseCollect.xml" );
     }
-
+    
     public void testRoundTripExistsXml() throws Exception {
         DumperTestHelper.XmlFile( "test_ParseExists.xml" );
     }
@@ -67,4 +66,15 @@
     public void testRoundTripSimpleRuleDrl() throws Exception {
         DumperTestHelper.DrlFile( "test_simplerule.drl" );
     }
+
+    public void testRoundTripPComplexDrl() throws Exception {
+        DumperTestHelper.DrlFile( "test_complex.drl" );
+    }
+    
+    public void testRoundTripPComplexXml() throws Exception {
+        DumperTestHelper.XmlFile( "test_ParseComplex.xml" );
+    }
+    
+
+    
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java	2007-07-09 16:00:34 UTC (rev 13263)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/xml/DumperTestHelper.java	2007-07-09 16:57:24 UTC (rev 13264)
@@ -27,8 +27,9 @@
 
         final XmlDumper dumper = new XmlDumper();
         final String result = dumper.dump( pkgOriginal );
-
+        
         String buffer = readFile( filename );
+        
         assertEqualsIgnoreWhitespace( buffer,
                                       result );
         assertNotNull( result );

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseComplex.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseComplex.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseComplex.xml	2007-07-09 16:57:24 UTC (rev 13264)
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package name="pt.inescporto.cec.rules"
+    xmlns="http://drools.org/drools-4.0"
+    xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="http://drools.org/drools-4.0 drools-4.0.xsd">
+    <import name="pt.inescporto.cec.entities.SetupInUse"/>
+    <import name="pt.inescporto.cec.entities.SetupUse"/>
+    <import name="pt.inescporto.cec.entities.ArtigoProducao"/>
+    <import name="pt.inescporto.cec.entities.Parameter"/>
+    <import name="pt.inescporto.cec.entities.BestParms"/>
+    <import name="pt.inescporto.cec.entities.AccaoInspeccaoOperacao"/>
+    <import name="pt.inescporto.cec.entities.MelhorEmNaoConformidades"/>
+    <import name="pt.inescporto.cec.entities.OtherInspectionMethod"/>
+    <import name="pt.inescporto.cec.entities.AccaoInspeccao"/>
+    <rule name="ruleBestProductionOrderCreator">
+        <lhs>
+            <pattern object-type="AccaoInspeccao">
+                <field-binding field-name="recursoID" identifier="resource"/>
+                <field-constraint field-name="artigoID">
+                    <literal-restriction evaluator="==" value="3"/>
+                </field-constraint>
+                <field-binding field-name="operacaoID" identifier="operation"/>
+                <field-binding field-name="ordemProducaoID" identifier="ProductionOrder"/>
+                <field-binding field-name="recursoID" identifier="resourceID"/>
+                <field-binding field-name="accaoInspeccaoID" identifier="InspectionAction"/>
+            </pattern>
+            <pattern object-type="AccaoInspeccaoOperacao">
+                <field-binding field-name="inspAccaoOperacaoID" identifier="inspectionActionOperation"/>
+                <field-constraint field-name="inspectionActionID">
+                    <variable-restriction evaluator="==" identifier="InspectionAction"/>
+                </field-constraint>
+            </pattern>
+            <pattern object-type="OtherInspectionMethod">
+                <field-binding field-name="numeroNaoConformidades" identifier="NCNumber"/>
+                <field-constraint field-name="inspAccaoOperacaoID">
+                    <variable-restriction evaluator="==" identifier="inspectionActionOperation"/>
+                </field-constraint>
+            </pattern>
+            <not>
+                <pattern object-type="MelhorEmNaoConformidades">
+                    <field-constraint field-name="operacaoID">
+                        <variable-restriction evaluator="==" identifier="operation"/>
+                    </field-constraint>
+                    <field-constraint field-name="recursoID">
+                        <variable-restriction evaluator="==" identifier="resource"/>
+                    </field-constraint>
+                </pattern>
+            </not>
+        </lhs>
+        <rhs>insert(new MelhorEmNaoConformidades(ProductionOrder,NCNumber,operation,resource));</rhs>
+    </rule>
+    <rule name="Best Checker">
+        <lhs>
+            <pattern object-type="AccaoInspeccao">
+                <field-constraint field-name="artigoID">
+                    <literal-restriction evaluator="==" value="3"/>
+                </field-constraint>
+                <field-binding field-name="recursoID" identifier="resource"/>
+                <field-binding field-name="operacaoID" identifier="operation"/>
+                <field-binding field-name="ordemProducaoID" identifier="ProductionOrder"/>
+                <field-binding field-name="recursoID" identifier="resourceID"/>
+                <field-binding field-name="accaoInspeccaoID" identifier="InspectionAction"/>
+            </pattern>
+            <pattern object-type="AccaoInspeccaoOperacao">
+                <field-binding field-name="inspAccaoOperacaoID" identifier="inspectionActionOperation"/>
+                <field-constraint field-name="inspectionActionID">
+                    <variable-restriction evaluator="==" identifier="InspectionAction"/>
+                </field-constraint>
+            </pattern>
+            <pattern object-type="OtherInspectionMethod">
+                <field-binding field-name="numeroNaoConformidades" identifier="NCNumber"/>
+                <field-constraint field-name="inspAccaoOperacaoID">
+                    <variable-restriction evaluator="==" identifier="inspectionActionOperation"/>
+                </field-constraint>
+            </pattern>
+            <pattern identifier="TheBest" object-type="MelhorEmNaoConformidades">
+                <field-constraint field-name="operacaoID">
+                    <variable-restriction evaluator="==" identifier="operation"/>
+                </field-constraint>
+                <field-constraint field-name="recursoID">
+                    <variable-restriction evaluator="==" identifier="resource"/>
+                </field-constraint>
+                <field-constraint field-name="numeroDefeitos">
+                    <variable-restriction evaluator="&gt;" identifier="NCNumber"/>
+                </field-constraint>
+            </pattern>
+        </lhs>
+        <rhs>TheBest.setNumeroDefeitos(NCNumber);
+TheBest.setOrdemProducaoID(ProductionOrder);
+update(TheBest);
+</rhs>
+    </rule>
+    <rule name="ruleBestParametersCreator">
+        <rule-attribute name="salience" value="-100"/>
+        <lhs>
+            <pattern object-type="MelhorEmNaoConformidades">
+                <field-binding field-name="ordemProducaoID" identifier="$poID"/>
+                <field-binding field-name="numeroDefeitos" identifier="$NC"/>
+            </pattern>
+            <pattern object-type="SetupInUse">
+                <field-binding field-name="setupUseID" identifier="$setup"/>
+                <field-constraint field-name="productionOrderID">
+                    <variable-restriction evaluator="==" identifier="$poID"/>
+                </field-constraint>
+            </pattern>
+            <pattern identifier="$p" object-type="Parameter">
+                <field-binding field-name="parameterID" identifier="$parID"/>
+                <field-constraint field-name="setupUseID">
+                    <variable-restriction evaluator="==" identifier="$setup"/>
+                </field-constraint>
+            </pattern>
+            <not>
+                <pattern object-type="BestParms">
+                    <field-constraint field-name="parameterID">
+                        <variable-restriction evaluator="==" identifier="$parID"/>
+                    </field-constraint>
+                </pattern>
+            </not>
+        </lhs>
+        <rhs>BestParms newBest=new BestParms();
+newBest.setParameterID($parID);
+newBest.setNominalValue(new Float($p.getNominalValue()));
+newBest.setMaxLimit(new Float($p.getMaxLimit()));
+newBest.setMinLimit(new Float($p.getMinLimit()));
+newBest.setMaxLimitAlarm(new Float($p.getMaxLimitAlarm()));
+newBest.setMinLimitAlarm(new Float($p.getMinLimitAlarm()));
+newBest.setNonConformities(new Float($NC));
+insert(newBest);
+</rhs>
+    </rule>
+    <rule name="ruleBestParametersChecker">
+        <rule-attribute name="salience" value="-100"/>
+        <lhs>
+            <pattern object-type="MelhorEmNaoConformidades">
+                <field-binding field-name="ordemProducaoID" identifier="$poID"/>
+                <field-binding field-name="numeroDefeitos" identifier="$NC"/>
+            </pattern>
+            <pattern object-type="SetupInUse">
+                <field-binding field-name="setupUseID" identifier="$setup"/>
+                <field-constraint field-name="productionOrderID">
+                    <variable-restriction evaluator="==" identifier="$poID"/>
+                </field-constraint>
+            </pattern>
+            <pattern identifier="$p" object-type="Parameter">
+                <field-binding field-name="parameterID" identifier="$parID"/>
+                <field-constraint field-name="setupUseID">
+                    <variable-restriction evaluator="==" identifier="$setup"/>
+                </field-constraint>
+            </pattern>
+            <pattern identifier="$newBest" object-type="Parameter">
+                <field-constraint field-name="parameterID">
+                    <variable-restriction evaluator="==" identifier="$parID"/>
+                </field-constraint>
+                <field-constraint field-name="nonConformities">
+                    <variable-restriction evaluator="&gt;" identifier="$NC"/>
+                </field-constraint>
+            </pattern>
+        </lhs>
+        <rhs>$newBest.setNominalValue(new Float(p.getNominalValue()));
+$newBest.setMaxLimit(new Float(p.getMaxLimit()));
+$newBest.setMinLimit(new Float(p.getMinLimit()));
+$newBest.setMaxLimitAlarm(new Float(p.getMaxLimitAlarm()));
+$newBest.setMinLimitAlarm(new Float(p.getMinLimitAlarm()));
+$newBest.setNonConformities(new Float($NC));
+update($newBest);
+</rhs>
+    </rule>
+    <rule name="print">
+        <rule-attribute name="salience" value="-110"/>
+        <lhs>
+            <pattern identifier="bp" object-type="BestParms"> </pattern>
+        </lhs>
+        <rhs>System.out.println("Parameter: "+bp.getParameterID()+" Value: "+bp.getNominalValue()+" NC: "+bp.getNonConformities());
+</rhs>
+    </rule>
+</package>

Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml	2007-07-09 16:00:34 UTC (rev 13263)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_ParseRule.xml	2007-07-09 16:57:24 UTC (rev 13264)
@@ -10,7 +10,7 @@
 
 	<global identifier="x" type="com.sample.X" />
 	<global identifier="yada" type="com.sample.Yada" />
-	
+
 	<function return-type="void" name="myFunc">
 	    <parameter identifier="foo" type="Bar" />
 	    <parameter identifier="bada" type="Bing" />
@@ -85,7 +85,7 @@
                     <field-constraint field-name="likes">
                         <variable-restriction evaluator="==" identifier="type"/>
                     </field-constraint>
-                </pattern>                
+                </pattern>
             </exists>
         </not>
 
@@ -123,7 +123,7 @@
                         org.drools.Bar.BAR_ENUM_VALUE
                     </qualified-identifier-restriction>
                 </or-restriction-connective>
-            </field-constraint>            
+            </field-constraint>
         </pattern>
 
         <pattern identifier="foo6" object-type="Bar" >

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_complex.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_complex.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/xml/test_complex.drl	2007-07-09 16:57:24 UTC (rev 13264)
@@ -0,0 +1,83 @@
+package rules;
+
+
+import pt.inescporto.cec.entities.SetupUse;
+import pt.inescporto.cec.entities.SetupInUse;
+import pt.inescporto.cec.entities.Parameter;
+import pt.inescporto.cec.entities.OrdemFabrico;
+import pt.inescporto.cec.entities.AccaoInspeccao;
+import pt.inescporto.cec.entities.AccaoInspeccaoOperacao;
+import pt.inescporto.cec.entities.MelhorEmNaoConformidades;
+import pt.inescporto.cec.entities.OtherInspectionMethod;
+import pt.inescporto.cec.entities.BestParms;
+
+
+rule "ruleBestProductionOrderCreator"
+when
+		AccaoInspeccao( artigoID == 3 , $operID: operacaoID , $resourceID: recursoID, $ProdOrderID: ordemProducaoID, $IAID: accaoInspeccaoID  )
+		AccaoInspeccaoOperacao( inspectionActionID == $IAID, $tmp: inspAccaoOperacaoID  )
+		OtherInspectionMethod(inspActionOperacaoID == $tmp, $NCNumber: numeroNaoConformidades   )
+		not (MelhorEmNaoConformidades( operacaoID == $operID, recursoID == $resourceID ) ) 
+	then
+		insert(new MelhorEmNaoConformidades($ProdOrderID,$NCNumber,$operID,$resourceID));
+end
+	
+rule "ruleBestProductionOrderChecker"
+when
+		AccaoInspeccao( artigoID ==3 , $operID: operacaoID, $resourceID: recursoID, $ProdOrderID: ordemProducaoID, $IAID: accaoInspeccaoID  )
+		AccaoInspeccaoOperacao( inspectionActionID == $IAID, $tmp: inspAccaoOperacaoID  )
+		OtherInspectionMethod( inspActionOperacaoID == $tmp, $NCNumber: numeroNaoConformidades   )
+		$t: MelhorEmNaoConformidades( operacaoID == $operID, recursoID == $resourceID, numeroDefeitos > $NCNumber )
+	then
+		$t.setNumeroDefeitos($NCNumber);
+		$t.setOrdemProducaoID($ProdOrderID);
+		update($t);
+end
+
+rule "ruleBestParametersCreator"
+salience -100
+when
+	MelhorEmNaoConformidades($poID: ordemProducaoID, $nonConformities: numeroDefeitos )	
+	SetupInUse( $setup: setupUseID , productionOrderID == $poID )
+	p: Parameter( $parID: parameterID,  setupUseID == $setup )
+	not (BestParms( parameterID == $parID ))
+then
+	BestParms newBest=new BestParms();
+	newBest.setParameterID($parID);
+	newBest.setNominalValue(new Float(p.getNominalValue()));
+	newBest.setMaxLimit(new Float(p.getMaxLimit()));
+	newBest.setMinLimit(new Float(p.getMinLimit()));
+	newBest.setMaxLimitAlarm(new Float(p.getMaxLimitAlarm()));
+	newBest.setMinLimitAlarm(new Float(p.getMinLimitAlarm()));
+	newBest.setNonConformities($nonConformities);
+	insert(newBest);
+end
+
+rule "ruleBestParametersChecker"
+salience -10
+when
+	MelhorEmNaoConformidades($poID: ordemProducaoID, $NC: numeroDefeitos )	
+	SetupInUse( $setup: setupUseID , productionOrderID == $poID )
+	p: Parameter( $parID: parameterID,  setupUseID == $setup )
+	newBest: BestParms( parameterID == $parID, nonConformities > $NC )
+then
+	newBest.setNominalValue(new Float(p.getNominalValue()));
+	newBest.setMaxLimit(new Float(p.getMaxLimit()));
+	newBest.setMinLimit(new Float(p.getMinLimit()));
+	newBest.setMaxLimitAlarm(new Float(p.getMaxLimitAlarm()));
+	newBest.setMinLimitAlarm(new Float(p.getMinLimitAlarm()));
+	newBest.setNonConformities($NC);
+	update(newBest);
+end
+
+rule "print"
+salience -20
+when 
+	bp: BestParms(  )
+then
+	System.out.println("Parameter: "+bp.getParameterID()+" Value: "+bp.getNominalValue()+" NC: "+bp.getNonConformities());
+end
+
+query "get results"
+		mnc: BestParms(  )
+end
\ No newline at end of file




More information about the jboss-svn-commits mailing list