Uploaded image for project: 'Drools'
  1. Drools
  2. DROOLS-4468

Invalid result with collect, mvel and ForceEagerActivationOption.YES

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • None
    • 7.25.0.Final
    • core engine
    • None
    • 2019 Week 35-37
    • Hide

      See test case in the linked PR as well as the attached reproducer (same rules, just added to run it easily against different versions).

      Show
      See test case in the linked PR as well as the attached reproducer (same rules, just added to run it easily against different versions).
    • NEW
    • NEW

      A rule updates a list in a fact:

      rule "Init"
          dialect "mvel"
          when
              $fl: FactWithList(items.size()==0)
          then
              $fl.getItems().add("A");
              $fl.getItems().add("B");
              update($fl);
      end
      

      A second rule verifies if other facts exist, matching the items in the updated list:

      rule "Expected Outcome"
          dialect "mvel"
          when
              $fl: FactWithList($itemList : items != null)
              $l: java.util.ArrayList(size > 0) from collect(FactWithString($itemList contains stringValue));
          then
              System.out.println("--> Rule: " + kcontext.getRule().getName() + " fired, " + $fl + ", collect list: " + $l.size());
      end
      

      This rule is not fired if

      • mvel dialect is used and
      • Drools is executed with ForceEagerActivationOption.YES (jBPM use case)

      Note: This worked in 7.17 and earlier!

              mfusco@redhat.com Mario Fusco
              rhn-support-mputz Martin Weiler (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: