err, typo there, add() and remove() should be using $myId instead of $id
On Tue, Jul 22, 2014 at 9:38 AM, Jeremy Ary <jeremy....@gmail.com> wrote: > I wonder if something like this might do it? > > when > $set : HashSet ( ) from accumulate ( ObjectA ( $myId : objectC.myId ), > init ( HashSet uniqueIds = new > HashSet<String>(); ), > action ( uniqueIds.add($id); ), > reverse ( uniqueIds.remove($id); ), > result ( uniqueIds ) ) > HashSet ( this == $set, size > 1 ) > then > // consequence > end > > > - Jeremy > > > > On Tue, Jul 22, 2014 at 8:42 AM, richardhands < > richard.ha...@uk.sopragroup.com> wrote: > >> Hi, >> >> I’m trying to wrap my head around how to use a combination of accumulate >> from and collect from to get a count of how many unique items there are >> of a >> nested child property and run the RHS of a rule if it’s > 1 >> >> So I have >> >> Many of Object A >> >> Each one contains >> An object B >> An object C >> >> Object C contains a nested child property >> >> So >> >> A >> +-+-B >> | >> +-C – property myId >> >> (many of these in the working memory) >> >> The rule I’m working with right now is >> >> rule "B must only be at 1 myId per day" >> when >> $b : B() >> $c : C() >> $aList : ArrayList (size > 1) >> from collect( >> A(b == $b, c.getDate() == $c.getDate()) ) >> eval ( RulesUtils.countIdsForC ($aList) > 1 ) >> then >> //fire some rules here >> end >> >> and the RulesUtils method is >> >> public static int countIdsForC (List aList) >> { >> Set<Integer> myIds = new HashSet<Integer>(); >> for (A a : aList) >> { >> myIds.add(a.getC().getMyId()); >> } >> return myIds.size(); >> } >> >> >> Now I’m well aware that this is sub-optimal, and indeed is firing lots of >> extra times and is really (Really) slow. I can vizualise that this should >> easily be possible with some combination of compound accumulate and >> collect >> statements, but for the life of me I can’t work out the correct >> arrangement >> (This is actually for use in an optaplanner ruleset so it will potentially >> be working on lots of data, over many iterations). >> >> Any suggestions on how to do this the way I know it needs to be, >> greatfully >> appreciated >> >> >> >> >> -- >> View this message in context: >> http://drools.46999.n3.nabble.com/how-to-count-distinct-nested-property-tp4030424.html >> Sent from the Drools: User forum mailing list archive at Nabble.com. >> >> _______________________________________________ >> rules-users mailing list >> rules-users@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-users > > >
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users