[rules-dev] Import of declared type in other drools resources

Tihomir Surdilovic tsurdilo at redhat.com
Tue Dec 14 18:41:13 EST 2010


On 12/14/10 5:20 PM, Michael Neale wrote:
> Any package scoped things really should go in the .package file IIRC.
> There is no clever resolving across multiple files (not sure if that 
> is a valid feature request or not).
>
For now I'll just make sure .package files get read in first (if exist).

> On Wed, Dec 15, 2010 at 3:13 AM, Tihomir Surdilovic 
> <tsurdilo at redhat.com <mailto:tsurdilo at redhat.com>> wrote:
>
>     Yep, I can reproduce what you are seeing. The order of files being
>     read
>     in (alphabetical/lexical order..) matters in that the
>     DroolsCompilerAntTask will compile them one at a time:
>
>     public class DroolsCompilerAntTask extends MatchingTask {
>     ....
>     private void createWithKnowledgeBuilder(AntClassLoader loader) throws
>     FileNotFoundException,
>     DroolsParserException,
>     IOException {
>     ...
>
>     for ( int i = 0; i < fileNames.length; i++ ) {
>     // compile rule file and add to the builder
>     compileAndAddFile( builder,
>     fileNames[i] );
>     }
>
>     ...
>     }
>     }
>
>     I'll take a look at the code and fix it up in the near future, but for
>     now what you can do is just as Mic said to put your declared types in
>     let's say drools.package file and make sure in your ant tasks that
>     they
>     get read first. In my simple test this worked fine:
>
>     <target name="declaredtypes">
>     <compiler srcdir="ant" tofile="antout/person.rules">
>     <!-- classpathref="cheese.classpath" -->
>     <include name="*.package" />
>     </compiler>
>     </target>
>
>     <target name="rules" depends="declaredtypes">
>     <compiler srcdir="ant" tofile="antout/person.rules">
>     <!-- classpathref="cheese.classpath" -->
>     <include name="*.drl" />
>     <include name="*.brl" />
>     <include name="*.xml" />
>     <include name="*.dslr" />
>     </compiler>
>     </target>
>
>     since all declarations are in drools.package (or person.package or
>     whatever you want to call it), and making sure that "rules" target
>     depends on the "declaredtypes" target you can assure your declared
>     types
>     get read first. Let me know if this helps.
>
>     Thanks.
>
>     On 12/14/10 7:23 AM, stanka wrote:
>     > Here are more details:
>     >
>     > I have one drools resource Person.drl with the following content:
>     >
>     > package testpkg
>     >
>     > declare Person
>     >       name : String
>     > end
>     >
>     > And another file PersonRules.drl in the same dir with the
>     following content:
>     > package testpkg
>     >
>     >
>     > rule "Your First Rule"
>     >
>     >       when
>     >               Person(name == "Bobi")
>     >       then
>     >               System.out.println("hi bobi");
>     >
>     > end
>     >
>     > 1)Drools builder shows an error(Unable to resolve ObjectType
>     person) on line
>     >               Person(name == "Bobi")
>     > Is there a way to workarround the problem?
>     > 2)I construct the knowledgebase using
>     >
>     http://grepcode.com/file/repository.jboss.com/maven2/org.drools/drools-ant/5.1.0.M1/org/drools/contrib/DroolsCompilerAntTask.java#DroolsCompilerAntTask.execute%28%29
>     > and  bintype=PACKAGEBINTYPE= "knowledge" and
>     binformat:PACKAGEBINFORMAT !=
>     > package.
>     > When I use PeronRules for name of the drools rules resource, the
>     > knowledgebase is built, but if I rename the file from PeronRules to
>     > 1PeronRules I get the following error:
>     > Unable to resolve ObjectType 'Person' : [Rule name='Your First
>     Rule']
>     >
>     > The problem with the order is, sometimes the rules filename may
>     be loaded
>     > after the type declaration which seems to be a problem, how can
>     I deal with
>     > this?
>     >
>
>     _______________________________________________
>     rules-dev mailing list
>     rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/rules-dev
>
>
>
>
> -- 
> Michael D Neale
> home: www.michaelneale.net <http://www.michaelneale.net>
> blog: michaelneale.blogspot.com <http://michaelneale.blogspot.com>
>
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20101214/71243eba/attachment.html 


More information about the rules-dev mailing list