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

Mask should reflect properties accessed in other nodes join constraints

XMLWordPrintable

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

      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));
          }
      

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

              Created:
              Updated:
              Resolved: