[rules-users] newbie: update and shallowCache

Piccand, Regis rpiccand at verisign.com
Mon Apr 14 09:11:32 EDT 2008


Hi all,
 
I am evaluating Drools and am stuck with a simple rule that selects
elements which do not correspond to the condition... Since I am updating
objects in the RHD, I guess it has to do with my wrong understanding
(and the cache...?)
 
 
I am trying to allocate lessons to periods (hour). My object model can
be summarize is as follows :
 
Lesson 
    boolean : allocated    // true if the lesson has been allocated to
an hour
    int : session             // a session is a bunch of lessons
    Subject : subject    // an allocated lesson is assigned a subject
 
Subject
    Set<Day> : allocatedDays // days in which this subject is taught -
checked before allocation, as a subject can only be taught once a day
 
Hour
    boolean : allocated // true is this hour has been allocated with a
lesson
    Day : day // the day this hour belongs to - required to check with
subject.allocatedDays
 
 
I put in the workingMemory a bunch of Lesson objects, which have been
set with Subject and Session id. I also put a bunch of Hour object, set
with a Day.
 
 
My rule is as follows:
 
rule "allocate"

when

$lesson : Lesson(allocated == false, session.type == Session.DISTINCT,
$allocatedDays : subject.allocatedDays)

$availableHour : Hour(allocated == false, day not memberOf
$allocatedDays)

then

$lesson.setHour($availableHour ) ;

$lesson.setAllocated(true) ;

update($lesson);

$availableHour.setSubject($lesson.getSubject()) ;

$availableHour.setAllocated(true );

update($availableHour);

end

When I set a debug on the first line of the THEN section, I can see that
sometimes $availableHour.allocated == true ... sometimes
$lesson.allocated == true (although it's an implicit And statement ...)

Therefore, I can see that the update() works, but it seems that the rule
does not use the updated object (due to shallow copy ??)

Any help more than welcome

Regis

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20080414/bf82e50a/attachment.html 


More information about the rules-users mailing list