[rules-users] Problems with repeated execution of rules

Wolfgang Laun wolfgang.laun at gmail.com
Wed Mar 2 14:06:49 EST 2011


The Rete algorithm isn't meant to be run this way - all data in globals. Use
a fact class X123 with three booleans, and insert facts with varied field
values. Your rules ought to be

   when
        X123( cond3 == false )
   then

and

   when
       X123( cond1 == true, cond2 == true )
   then

-W


On 2 March 2011 19:43, Dmitri Pissarenko <dmitri.pissarenko at gmail.com>wrote:

> Hello!
>
> I have following rules file:
>
> import java.util.List;
>
> global List outErrorCodes;
> global Boolean condition1;
> global Boolean condition2;
> global Boolean condition3;
>
> rule "01"
>        when
>                eval( condition3 == false);
>        then
>                outErrorCodes.add("ERROR_CODE1");
>                System.out.println("01");
> end
>
> rule "02"
>        when
>                eval((condition1 == true) && (condition2 == true));
>        then
>                outErrorCodes.add("ERROR_CODE2");
>                System.out.println("02");
> end
>
>
> When I evaluate this file repeatedly, it is evaluated correctly only
> the first time.
>
> I don't understand why it happens, because I always create a new
> knowledge base for every execution (I don't re-use sessions).
>
> Here is the code:
>
> final KnowledgeBase knowledgeBase2 =
> createKnowledgeBase(getRuleFileNames());
> final StatefulKnowledgeSession session2 =
> knowledgeBase2.newStatefulKnowledgeSession();
>
> ...
>
> Then, I set condition1, condition2 and condition3 with calls like this:
>
> session2.setGlobal(curName, curValue);
>
> curValue is Boolean.TRUE or Boolean.FALSE.
>
> Then, I insert the value of the output variable:
>
> session2.setGlobal("outErrorCodes",
>                new LinkedList<String>());
>
> Then, I invoke these methods:
>
> session2.fireAllRules();
> ...
> session2.dispose();
>
> After fireAllRules, outErrorCodes is always empty (apart from the
> first run), even in cases, where rule "01" should apply.
>
> What am I doing wrong?
>
> Thanks in advance
>
> Dmitri
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110302/b18f1dc6/attachment.html 


More information about the rules-users mailing list