Hi Javier.
Yes that sounds like a bug, and you have a work around !
Would you care to create a JIRA and a test case and we can make sure it is
fixed at least for trunk.
Michael.
On 11/21/06, Javier Prieto <[EMAIL PROTECTED]> wrote:
Hi,
I'm developing an application with a GUI for rule management. It writes a
drools xml rule file with the rules specified by GUI. I get a rule
compilation error when i read rule package from xml rule file. I think
it's
a little bug. This is an example of an xml rule file that fails:
<?xml version="1.0" encoding="UTF-8"?>
<package name="com.sample"
xmlns="http://drools.org/drools-3.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="http://drools.org/drools-3.0 drools-3.0.xsd">
<function return-type="void" name="manageAlert">
<parameter identifier="alert" type="String"/>
<body>System.out.println(alert);</body>
</function>
<function return-type="void" name="manageRuleFired">
<parameter identifier="ruleName" type="String"/>
<body>System.out.println(ruleName + " fired");</body>
</function>
<rule name="Impossible Rule">
<lhs>
<eval>1 == 2</eval>
</lhs>
<rhs>manageAlert("impossibleRule!!!"); manageRuleFired("Impossible
Rule");</rhs>
</rule>
</package>
And this is the exception I get:
org.drools.rule.InvalidRulePackage: Rule Compilation error The method
manageAlert(String) is undefined for the type Rule_Impossible_Rule_0
at org.drools.rule.Package.checkValidity(Unknown Source)
at org.drools.common.AbstractRuleBase.addPackage(Unknown Source)
at com.sample.DroolsTest.readRule(DroolsTest.java:89)
at com.sample.DroolsTest.main(DroolsTest.java:30)
However, if i insert a blank char anywhere in the first sentence of the
rhs
body (manageAlert(...);), it works well:
For example:
<rhs>manageAlert ("impossibleRule!!!"); manageRuleFired("Impossible
Rule");</rhs> (blank after manageAlert)
or, <rhs>manageAlert( "impossibleRule!!!"); manageRuleFired("Impossible
Rule");</rhs> (blank after '(' )
or, <rhs> manageAlert("impossibleRule!!!"); manageRuleFired("Impossible
Rule");</rhs> (blank at the begining)
or, <rhs>manageAlert("impossible Rule!!!"); manageRuleFired("Impossible
Rule");</rhs> (blank in the string)
...
Now, I'm writing the xml file inserting a \n char at the beginning of the
rhs body in order to solve it temporarily:
<rhs>
manageAlert("impossibleRule!!!"); manageRuleFired("Impossible Rule");
</rhs>
I suppose it's a little bug in the addPackageFromXml (or other addPackage
method) that labels a package as invalid or something similar... It would
be
easy to fix it?
--
View this message in context:
http://www.nabble.com/A-bug-compiling-package-from-xml-tf2678699.html#a7471000
Sent from the drools - user mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email