In my opinion, for 300 drl files, the better is to use a specific KB for 
each DRL (or some KAgent).
This way you don't have to pollute your rules with control facts (and 
you can eventually re-use some part of DRL files into multiple context 
KB), and the RETE is tightened to the strict minimum (no eval of useless 
constraints).

Moreover, I am not sure if drools compiler can really handle some 
removal or addition of rules dynamically in a existing KB without having 
to recompile all rules (so keeping up-to-date a big KB can be costly).

If you (still) want to use your solution 1 (ie control facts), you can 
also use rule inheritance (which make a rule inherit the conditions of 
another "parent" rule, and the parent rule will contain the check on the 
control fact) :
  rule context-rule
       enabled false // this rule won't fire by itself
    when
          Context(task = "bar")
    then
          // not used anyway
  end

rule X extends context-rule
    when
         // specific conditions
    then
         // fired when specific conditions AND context-rule's conditions 
are met
end
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to