Added BackwardChainingTest.testInsertionOrderTwo which will *fail*, so don't be shocked if Hudson turns purple.
-W On 24 June 2011 22:35, Mark Proctor <mproc...@codehaus.org> wrote: > On 24/06/2011 21:22, Michael Anstis wrote: > > Your test, Mark, is not the same example to which Wolfgang refers. > > You'll need to re-test with the DRL at the end of Wolfgang's email (which is > what we've included in N&N for 5.2). > > It's quite possible one of the ?'s is simply wrong... but I don't understand > the subtleties of BC syntax yet. > > If the query has "?" in it, then it's pull only. In which case the insertion > order matters, as the query is triggered when Here or in below Person is > triggered. Inserting the Location objects after the query is triggered will > not return a result, unless you use leave off the "?" for a reactive "open > query" > > Mark > > With kind regards, > > Mike > > On 24 June 2011 21:14, Mark Proctor <mproc...@codehaus.org> wrote: >> >> On 23/06/2011 13:20, Wolfgang Laun wrote: >> >> Still not resolved... >> >> I have added a test for all the possible insertion orders for that >> particular use case and was not able to reproduce a problem: >> >> https://github.com/droolsjbpm/drools/commit/501f2196dcef754eed5a28b066b50665a5bc29a3 >> >> MArk >> >> On 22 June 2011 21:40, Mark Proctor <mproc...@codehaus.org> wrote: >>> >>> heh, I made a mistake with the rule >>> ( Location(z, y;) and ?hasFood(x, z;) ) >>> should be >>> ( Location(z, y;) and hasFood(x, z;) ) >>> >>> Otherwise it's not reactive, and then ordering matters. >>> >>> With that change I can do the insertions in any order and all is fine. >>> >> >> This works for the example you gave. But the one taken from the >> "Introduction" still depends on the order the facts are inserted. Below is >> the .drl, which does not need any pojos. Rule kickOff contains the order >> that produces nothing to see and eat: >> You are in the table >> You can see [] >> You can eat [] >> >> Insert Here after the others, and it works. >> >> -W >> >> import java.util.List >> >> declare Thing >> thing : String @key >> end >> >> declare Edible extends Thing >> end >> >> declare Location extends Thing >> location : String @key >> end >> >> declare Here >> place : String >> end >> >> rule kickOff >> when >> then >> System.out.println( "insert Here" ); >> insert( new Here( "table" ) ); >> System.out.println( "insert Edible" ); >> insert( new Edible( "peach" ) ); >> System.out.println( "insert Location" ); >> insert( new Location( "peach", "table" ) ); >> end >> >> # 2011-06-22 >> query isContainedIn( String x, String y ) >> Location(x, y;) >> or >> ( Location(z, y;) and /*?*/isContainedIn(x, z;) ) >> end >> >> query whereFood( String x, String y ) >> ( Location(x, y;) and >> Edible(x;) ) >> or >> ( Location(z, y;) and /*?*/whereFood(x, z;) ) >> end >> >> query look(String place, List things, List food) >> Here(place;) >> things := List() from accumulate( Location(thing, place;), >> collectList( thing ) ) >> food := List() from accumulate( /*?*/whereFood(thing, place;), >> collectList( thing ) ) >> end >> >> rule reactiveLook >> when >> Here( $place : place) >> /*?*/look($place, $things; $food := food) >> then >> System.out.println( "You are in the " + $place); >> System.out.println( " You can see " + $things ); >> System.out.println( " You can eat " + $food ); >> end >> >> >> _______________________________________________ >> rules-dev mailing list >> rules-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-dev >> >> >> _______________________________________________ >> rules-dev mailing list >> rules-dev@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-dev >> > > > _______________________________________________ > rules-dev mailing list > rules-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-dev > > > _______________________________________________ > rules-dev mailing list > rules-dev@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-dev > >
_______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev