[rules-users] Declared Types and Globals in different files with incremental KnowledgeAgent

De Rooms Brecht bderooms at vub.ac.be
Fri Sep 20 05:18:23 EDT 2013


Dear Drools Users,

I am building a network server for drools  since the existing 
drools-server did not meet my requirements.  Since I recently found a 
bug and find the people here very helpful I'll try to explain another 
issue I encountered in the hope that it improves drools 5.6 and 6.0.
I noticed that declared types and globals don't seem to be found when 
you access them from a rule that was written in a different file. For 
the declared types I hacked around this issue by preprocessing the files 
and placing every declared type at the top of each file that needs it. 
For globals this is of course not possible.

An example is shown below. File1 is loaded from the moment the agent 
starts up, then file2 is loaded.
There is a difference when the knowledgeAgent detects the two files at 
once or one by one. In this case the KnowledgeAgent detects one file and 
then a few minutes later the other file and compiles them completely 
separately.
The idea is to keep how many rules are matched of a certain type in a 
global.

*   FILE1: global_rules_matches.drl
     ----------------------------------------------
     package ellipsoidfacts

     // declare
     global Integer RULES_MATCHED;

     // initialize global
     rule "initRULESMATCHED"
           salience 999
           when

           then
               RULES_MATCHED = 0;
     end*

*   FILE2: testrule.drl
     ----------------------------------------------
     package ellipsoidfacts

    rule "Gesture_lefthook"
     when

         // ... any  precedent rules ...

     then
         System.out.println("matched gesture:  lefthook"+ RULES_MATCHED);
     end*

In this particular case, my rule is not matched. I load these rules 
using a changeset xml, my knowledgeagent is set to incremental (but 
either doesnt work).
The same happens when I declare types in FILE1 and use them in FILE2. 
When I write the type declaration in both files it works perfectly.
Being the same package I assumed that these two scenarios should work. 
Am I doing something wrong or is the agent not supposed to work like 
this and should a package be in one file?

Kind Regards,
De Rooms Brecht
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20130920/e9572849/attachment.html 


More information about the rules-users mailing list