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

Evaluation of the RHS in a rule with multiple matches using noloop and update gets cut short

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: 6.0.1.Final
    • Component/s: None
    • Labels:
      None

      Description

      If you have a rule with both noloop and update where there are multiple matches on the LHS, the RHS only runs for first match instead of running for all matches. The following example shows the problem:

              @Test
              public void testMultipleNoLoop1() {
                  String str =
                          "import org.drools.compiler.Person\n" +
                          "rule R no-loop\n" +
                          "when\n" +
                          "  String()\n" +
                          "  $p : Person( $age : age )\n" +
                          "then\n" +
                          "    modify($p) { setAge( $age + 1 ) }\n" +
                          "end\n";
           
                  KnowledgeBase kbase = loadKnowledgeBaseFromString(str);
                  StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
           
                  Person mario = new Person("Mario", 38);
           
                  ksession.insert("a");
                  ksession.insert("b");
                  ksession.insert(mario);
                  ksession.fireAllRules();
           
                  assertEquals(40, mario.getAge());
              }
      

        Attachments

          Activity

            People

            Assignee:
            mfusco Mario Fusco
            Reporter:
            mfusco Mario Fusco
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: