[rules-users] Inconsistent behaviour of insertLogical in rules having from pattern
Mark Proctor
mproctor at codehaus.org
Thu Aug 28 15:21:51 EDT 2014
This list is now closed.
Please use the google group:
https://groups.google.com/forum/#!forum/drools-usage
Are the auto-responders informing people that the list is closed working?
Mark
On 28 Aug 2014, at 14:31, Vincent LEGENDRE <vincent.legendre at eurodecision.com> wrote:
> Forgot to say : using drools 5.6.FINAL
>
> De: "Vincent LEGENDRE" <vincent.legendre at eurodecision.com>
> À: "Rules Users List" <rules-users at lists.jboss.org>
> Envoyé: Jeudi 28 Août 2014 15:28:49
> Objet: [rules-users] Inconsistent behaviour of insertLogical in rules having from pattern
>
> Hi all,
>
> It is 2 days I am fighting with a strange behaviour of insertLogical in rules having from pattern in conditions : it works the first time, and not after ...
>
> -----------------------------------------
> Here is my use-case (simplified) :
>
> I have a class that represent a Flight. A Flight has a start/end datetime and is associated with a Airplane and a list of Crew :
> class Flight {
> String airplaneId;
> List<String> crewIds;
> Date start;
> Date end;
> }
>
> I want to maintain an alert list that contains all overlaps for each airplane and each crew. So I have rules like:
>
> rule "Overlap Airplane"
> when
> $f1 : Flight($airplaneId : airplaneId)
> $f2 : Flight(this != $1, airplaneId == $airplaneId, ... and periods intersecting ... )
> then
> insertLogical(new Alert(...));
> end
>
> rule "Overlap Crews"
> when
> $f1 : Flight()
> $crew : String from $f1.getCrewIds()
> $f2 : Flight(this != $1, eval($f2.getCrewIds().contains($crew)) , ... and periods intersecting ... )
> then
> insertLogical(new Alert(...));
> end
>
>
> -----------------------------------------
> Ok. So what I do to test all that stuff :
> - create a new session
> - add a first single Flight --> no alerts at all, normal
> - add a second Flight insersecting the first one with same airplane and same crews list --> 3 new alerts inserted (one for airplane, one for each crew) : normal
> - remove this second Flight --> the 3 preivous alerts are retracted : still ok
> - re-add this second Flight --> only the 'airplane' rule triggers, I only get one new alert insteads of the previous same 3 .... The alerts not inserted correspond to the rule having 'from' in it
>
>
> -----------------------------------------
> To test that it is the source of the problem, I add a new explicit association object that I insert in WM :
> class CrewAffectation {
> String idCrew;
> String idFlight;
> }
>
> For each inserted Flight, I also insert corresponding new CrewAffectation objects. (in case of retract, I retract them of course).
> I change the last rule to something like :
>
> rule "Overlap Crews"
> when
> $f1 : Flight($id1 : id
> $f2 : Flight(this != $1, $id2 : id, ... and periods intersecting ... )
> $crewAff1 : CrewAffectation($idCrew : idCrew, idFlight== $id1)
> $crewAff2 : CrewAffectation(idCrew == $idCrew, idFlight== $id2)
> then
> insertLogical(new Alert(...));
> end
> And with this 'no-from' approach, everything is working as expected.
>
> -----------------------------------------
> In addition, I suspect the truth maintenance system to have leaks, and notably in the source kBase.
> Why ? Because I was facing problems by reusing the same kBase to generate multiples kSessions : The first session created reacted well, while all the folowing not.
> And it was in fact the same problem as the one described here : usage of from and insertLogical in the same rule.
> The first created session adds and retract my 3 alerts, the second created session only adds the airplane alert.
>
> With using the explicit association object, I can reuse my kBase and everything is working well.
>
> -----------------------------------------
> Does someone already faced the problem ?
> Does it looks like a real bug to dev team or am I doing something wrong (but as it work once, I guess it is a bug) ?
>
>
> Vincent
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20140828/ccf41041/attachment-0001.html
More information about the rules-users
mailing list