[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=">" 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=">" 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