Uploaded image for project: 'JBRULES'
  1. JBRULES
  2. JBRULES-2398

Rule not fired when using 'in (0)' condition and another rule with condition ' == null' exists

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      When following package is used:

      package BROKEN_TEST;
      import pl.wosik.conversion.BrokenTest.Holder;
      rule "_12"

      salience 3
      activation-group "BROKEN"
      when
      $a : Holder(value in (0))
      then
      System.out.println("setting 0");
      $a.setOutcome("setting 0");
      end

      rule "_13"

      salience 2
      activation-group "BROKEN"
      when
      $a : Holder(value in (1))
      then
      System.out.println("setting 1");
      $a.setOutcome("setting 1");
      end

      rule "_22"

      salience 1
      activation-group "BROKEN"
      when
      $a : Holder(value == null)
      then
      System.out.println("setting null");
      $a.setOutcome("setting null");
      end

      Rule "_12" will not be fired even when Holder.value is 0 because some strange interference between it's and rule _22's condition (note that _22 won't be fired as expected).
      When "Holder(value in (0))" is changed into "Holder(value == 0)" or "Holder(value in (0,9))" or the whole rule_22 is removed rule _12 will be fired.

      This issue is important as such seemingly strange "in (0)" condition can be generated from a decision table (as was in my case).

      I will attach a self-contained Test Case.

            mproctor@redhat.com Mark Proctor
            Jaroslaw.Wosik Jaroslaw Wosik (Inactive)
            Archiver:
            rhn-support-ceverson Clark Everson

              Created:
              Updated:
              Resolved:
              Archived: