[rules-users] use multiple drl files with a dsl

Thierry B jboss-rules at tbzone.org
Tue Nov 25 03:36:43 EST 2008


Hello,

I try to use several drl files declared with same package with a dsl, but
it doesn't work.

java.lang.RuntimeException: ExempleTest6.java *****************: Unable to
compile drl files.....
        at com.pv.rules.test.Exemple6Test.readRule(Exemple6Test.java:85)
        at com.pv.rules.test.Exemple6Test.test1(Exemple6Test.java:35)
        at com.pv.rules.test.Exemple6Test.main(Exemple6Test.java:26)

I have an Unexpected token from a word that I've define on my dsl which
works if I use only one drl file.

I used that to check errors:

// Check the builder for errors
                if ( builder.hasErrors() ) {
                    System.out.println( builder.getErrors().toString() );
                    throw new RuntimeException( "ExempleTest6.java
*****************:
Unable to compile drl files.....");
                }


I use that in my java readRule method :

private static RuleBase readRule() throws Exception {
Reader source1 = new InputStreamReader(
Exemple6Test.class.getResourceAsStream( "/com/pv/rules/drl/Exemple61.drl"
) );
Reader source2 = new InputStreamReader(
Exemple6Test.class.getResourceAsStream(
"/com/pv/rules/drl/Exemple62.drl" ) );

Reader dsl = new InputStreamReader(
Exemple6Test.class.getResourceAsStream(
"/com/pv/rules/dsl/XPathLanguageExemple4.dsl" ) );

PackageBuilder builder = new PackageBuilder();

builder.addPackageFromDrl( source1, dsl );
builder.addPackageFromDrl( source2, dsl );
builder.addPackageFromDrl( source3, dsl );

// Check the builder for errors
if ( builder.hasErrors() ) {
 System.out.println( builder.getErrors().toString() );
 throw new RuntimeException( "ExempleTest6.java *****************:
Unable to compile drl files.....");
}

//get the compiled package (which is serializable)
Package pkg = builder.getPackage();

//add the package to a rulebase (deploy the rule package).
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( pkg );
return ruleBase;
}

Do you have an idea ?

Thanks :-)

PS: Sorry for the previous message, I sent it in error, I didn't finish to
type it.





More information about the rules-users mailing list