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

Mask should reflect properties accessed in other nodes join constraints

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • 7.0.0.Beta7
    • None
    • core engine
    • None
    • NEW
    • NEW

    Description

      The following test exhibit a failing and a working test:

          @Test()
          public void testAbis_NotWorking() {
              // DROOLS-644
              String drl =
                      "import " + Person.class.getCanonicalName() + ";\n" +
                      "global java.util.List list;\n" +
                      "rule R when\n" +
                      "    $p1 : Person( name == \"Mario\" ) \n" +
                      "    $p2 : Person( age > $p1.age ) \n" +
                      "then\n" +
                      "    list.add(\"t0\");\n" +
                      "end\n" +
                      "rule Z when\n" +
                      "    $p1 : Person( name == \"Mario\" ) \n" +
                      "then\n" +
                      "    modify($p1) { setAge(35); } \n" +
                      "end\n" 
                      ;
              
              // making the default explicit:
              KieSession ksession = new KieHelper(PropertySpecificOption.ALWAYS).addContent(drl, ResourceType.DRL)
                      .build()
                      .newKieSession();
              ksession.addEventListener(new DebugAgendaEventListener());
              System.out.println(drl);
              ReteDumper.dumpRete(ksession);
      
              List<String> list = new ArrayList<String>();
              ksession.setGlobal("list", list);
      
              Person mario = new Person("Mario", 40);
              Person mark = new Person("Mark", 37);
              FactHandle fh_mario = ksession.insert(mario);
              ksession.insert(mark);
              int x = ksession.fireAllRules();
              assertEquals(1, list.size());
              assertEquals("t0", list.get(0));
          }
          
          @Test()
          public void testAbis_Working() {
              // DROOLS-644
              String drl =
                      "import " + Person.class.getCanonicalName() + ";\n" +
                      "global java.util.List list;\n" +
                      "rule R when\n" +
                      "    $p1 : Person( name == \"Mario\", $a1: age) \n" +
                      "    $p2 : Person( age > $a1 ) \n" +
                      "then\n" +
                      "    list.add(\"t0\");\n" +
                      "end\n" +
                      "rule Z when\n" +
                      "    $p1 : Person( name == \"Mario\" ) \n" +
                      "then\n" +
                      "    modify($p1) { setAge(35); } \n" +
                      "end\n" 
                      ;
      
              // making the default explicit:
              KieSession ksession = new KieHelper(PropertySpecificOption.ALWAYS).addContent(drl, ResourceType.DRL)
                      .build()
                      .newKieSession();
              
              System.out.println(drl);
              ReteDumper.dumpRete(ksession);
      
              List<String> list = new ArrayList<String>();
              ksession.setGlobal("list", list);
      
              Person mario = new Person("Mario", 40);
              Person mark = new Person("Mark", 37);
              FactHandle fh_mario = ksession.insert(mario);
              ksession.insert(mark);
              int x = ksession.fireAllRules();
              assertEquals(1, list.size());
              assertEquals("t0", list.get(0));
          }
      

      Attachments

        Issue Links

          Activity

            People

              mfusco@redhat.com Mario Fusco
              mmortari@redhat.com Matteo Mortari
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: