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

Mask should reflect properties accessed in other nodes join constraints

    Details

    • Docs QE Status:
      NEW
    • QE Status:
      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));
          }
      

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

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

                  Dates

                  • Created:
                    Updated:
                    Resolved: