Problem solved, sort of.  I'd added an implementation of hashCode()  to the
PerDiemEntitlement class.  removing it seems to address the problem, but not
sure why

On Mon, 28 Nov 2005 11:49:55 -0500, erich.oliphant wrote
> I am having a strange problem.  I am getting the following error (debug
> included).  The populate-last-travel-day rule fires based on the 
> presence of facf-5 (among others).  The error is thrown in the rule 
> body where I try to modify f-5.  I am not sure how the fact cannot 
> be in working memory as the rule fired because of it's existence 
> (and I'm not retracting it)  The body of the rule only modifies this 
> fact and asserts a new one.  These rules are driven from Java code 
> and verified that the supporting Java object still exists at the 
> time the exception is thrown.
> 
> rule
> --
> (defrule populate-last-travel-day-entitlement 
>       "first day at perdiem location entitlement" 
>     ?arrlocation <- (com.ngc.dts.domain.common.TripLocation 
>                               (arrivalTripItem ?ati) 
>                     (perDiemLocation ?x&:(eq ?x nil))) 
>     (test (neq (?ati getTravelDate) nil))
>     ?perdiemLocation <- (com.ngc.dts.domain.common.TripLocation 
>                                       (departureTripItem ?dti) 
> 
>                       (perDiemLocation ?pdLocation&:(neq ?pdLocation 
> nil)))    ?entitlement <-
>  (com.ngc.dts.domain.common.PerDiemEntitlement (date ?pddate) )    
>  ;;@todo investigate why same-day is not working as expected   
>  ;;(test (neq (same-day (?dti getTravelDate) ?date) FALSE) ) 
>     (test (call org.apache.commons.lang.time.DateUtils isSameDay 
> (?ati getTravelDate) ?pddate))
>     (test (call org.apache.commons.lang.time.DateUtils isSameDay 
> (?dti getTravelDate) (?ati getTravelDate)))
>     (not (travel-day (date ?pddate)))    =>    ;; get the per 
>     (bind ?mie (ognl-get ?pdLocation "getEffectivePerDiemRate(#date)
> .getMealsAndIncidentalsRate()" "date"
> (fact-slot-value ?entitlement date)))
>     (modify ?entitlement 
>         (perDiemLocation ?pdLocation)
>         (mealsAndIncidentalsAllowed (?mie multiply .75)))
>     (assert (travel-day (date ?pddate)))    )
> 
> --
> debug and error
> --
> 
> MAIN::populate-first-travel-day-entitlement: +1+1+1+2+1+2+1+2+1+2+2+2+t
> MAIN::populate-last-travel-day-entitlement: 
> =1=1=1+2=1+2=1+2+2+2=1+2+t MAIN::populate-full-perdiem-day-
> entitlements: =1=1+1+2+2=1+2+2+2+1+2+t MAIN::assign-cmr: 
> =1+1+1=1+2+2+2+2+a+2+t
> MAIN::assign-pmr: =1=1=1=1=2+2+t
> MAIN::assert-entitlements: +1+1+t
> MAIN::assign-gmr: =1=1=1=1=2+2+2+2+t
> MAIN::zero-allowed-duty-conditions: =1+1+1+1+2+t
> MAIN::actual-lodging: =1=1=1=1+2+t
> MAIN::assert-entitlements: +1+1+t
>  ==> f-0 (MAIN::com.ngc.dts.domain.common.Trip (auth
> <Java-Object:com.ngc.dts.domain.common.Authorization>) (class
> <Java-Object:java.lang.Class>) (documentKey nil) (endDate nil) (endLocation
> nil) (id nil) (startDate nil) (startLocation nil) (taNumber nil)
> (travelOrderComments nil) (tripDescription nil) (tripDuration nil)
> 
> (tripLocations <Java-Object:java.util.ArrayList>) (tripNumber 1) (tripProfile
> nil) (tripPurpose nil) (tripType nil) (OBJECT
> <Java-Object:com.ngc.dts.domain.common.Trip>))
> ==> Activation: MAIN::assert-entitlements :  f-0
> FIRE 1 MAIN::assert-entitlements f-0
>  ==> f-1 (MAIN::com.ngc.dts.domain.common.PerDiemEntitlement
> 
> (acutalLodgingCostLimit nil) (class <Java-Object:java.lang.Class>) (date
> <Java-Object:java.util.GregorianCalendar>) (dutyConditions
> <Java-Object:java.util.HashSet>) (leave nil) (lodgingAllowed nil)
> (lodgingExpense <Java-Object:com.ngc.dts.domain.common.Expense>)
> (mealsAndIncidentalsAllowed nil) (mealsAndIncidentalsExpense
> <Java-Object:com.ngc.dts.domain.common.Expense>) 
> (otherEntitlementType nil)
> (perDiemLocation nil) (OBJECT <Java-
> Object:com.ngc.dts.domain.common.PerDiemEntitlement>)) ent date from 
> code: 01/01/2006 12:00 PM ==> f-2
(MAIN::com.ngc.dts.domain.common.PerDiemEntitlement
> 
> (acutalLodgingCostLimit nil) (class <Java-Object:java.lang.Class>) (date
> <Java-Object:java.util.GregorianCalendar>) (dutyConditions
> <Java-Object:java.util.HashSet>) (leave nil) (lodgingAllowed nil)
> (lodgingExpense <Java-Object:com.ngc.dts.domain.common.Expense>)
> (mealsAndIncidentalsAllowed nil) (mealsAndIncidentalsExpense
> <Java-Object:com.ngc.dts.domain.common.Expense>) 
> (otherEntitlementType nil)
> (perDiemLocation nil) (OBJECT <Java-
> Object:com.ngc.dts.domain.common.PerDiemEntitlement>)) ent date from 
> code: 01/02/2006 12:00 PM ==> f-3
(MAIN::com.ngc.dts.domain.common.PerDiemEntitlement
> 
> (acutalLodgingCostLimit nil) (class <Java-Object:java.lang.Class>) (date
> <Java-Object:java.util.GregorianCalendar>) (dutyConditions
> <Java-Object:java.util.HashSet>) (leave nil) (lodgingAllowed nil)
> (lodgingExpense <Java-Object:com.ngc.dts.domain.common.Expense>)
> (mealsAndIncidentalsAllowed nil) (mealsAndIncidentalsExpense
> <Java-Object:com.ngc.dts.domain.common.Expense>) 
> (otherEntitlementType nil)
> (perDiemLocation nil) (OBJECT <Java-
> Object:com.ngc.dts.domain.common.PerDiemEntitlement>)) ent date from 
> code: 01/03/2006 12:00 PM ==> f-4
(MAIN::com.ngc.dts.domain.common.PerDiemEntitlement
> 
> (acutalLodgingCostLimit nil) (class <Java-Object:java.lang.Class>) (date
> <Java-Object:java.util.GregorianCalendar>) (dutyConditions
> <Java-Object:java.util.HashSet>) (leave nil) (lodgingAllowed nil)
> (lodgingExpense <Java-Object:com.ngc.dts.domain.common.Expense>)
> (mealsAndIncidentalsAllowed nil) (mealsAndIncidentalsExpense
> <Java-Object:com.ngc.dts.domain.common.Expense>) 
> (otherEntitlementType nil)
> (perDiemLocation nil) (OBJECT <Java-
> Object:com.ngc.dts.domain.common.PerDiemEntitlement>)) ent date from 
> code: 01/04/2006 12:00 PM ==> f-5
(MAIN::com.ngc.dts.domain.common.PerDiemEntitlement
> 
> (acutalLodgingCostLimit nil) (class <Java-Object:java.lang.Class>) (date
> <Java-Object:java.util.GregorianCalendar>) (dutyConditions
> <Java-Object:java.util.HashSet>) (leave nil) (lodgingAllowed nil)
> (lodgingExpense <Java-Object:com.ngc.dts.domain.common.Expense>)
> (mealsAndIncidentalsAllowed nil) (mealsAndIncidentalsExpense
> <Java-Object:com.ngc.dts.domain.common.Expense>) 
> (otherEntitlementType nil)
> (perDiemLocation nil) (OBJECT <Java-
> Object:com.ngc.dts.domain.common.PerDiemEntitlement>)) ent date from 
> code: 01/05/2006 12:00 PM ==> f-6 
> (MAIN::com.ngc.dts.domain.common.TripLocation (arrivalTripItem <Java-
> Object:com.ngc.dts.domain.common.TripItem>) (class <Java-
> Object:java.lang.Class>) (departureTripItem <Java-
> Object:com.ngc.dts.domain.common.TripItem>) (endDate <Java-
> Object:java.util.GregorianCalendar>) (perDiemDays <Java-
> Object:java.util.Collections$EmptyList>) (perDiemLocation nil)
> (perDiemRates <Java-Object:java.util.Collections$EmptyList>) 
> (startDate nil)
> (OBJECT <Java-Object:com.ngc.dts.domain.common.TripLocation>)) ==> f-
> 7 (MAIN::com.ngc.dts.domain.common.TripLocation (arrivalTripItem 
> <Java-Object:com.ngc.dts.domain.common.TripItem>) (class <Java-
> Object:java.lang.Class>) (departureTripItem <Java-
> Object:com.ngc.dts.domain.common.TripItem>) (endDate <Java-
> Object:java.util.GregorianCalendar>) (perDiemDays <Java-
> Object:java.util.ArrayList>) (perDiemLocation <Java-
> Object:com.ngc.dts.domain.common.PerDiemLocation>) (perDiemRates 
> <Java-Object:java.util.ArrayList>) (startDate <Java-
> Object:java.util.GregorianCalendar>) (OBJECT <Java-
> Object:com.ngc.dts.domain.common.TripLocation>)) ==> Activation: 
> MAIN::populate-first-travel-day-entitlement :  f-6,, f-7, f-1,,, ==> 
> Activation: MAIN::populate-full-perdiem-day-entitlements :  f-7,,, f-
> 2,,, ==> Activation: MAIN::populate-full-perdiem-day-entitlements :  
> f-7,,, f-3,,, ==> Activation: MAIN::populate-full-perdiem-day-
> entitlements :  f-7,,, f-4,,, ==> f-8 
> (MAIN::com.ngc.dts.domain.common.TripLocation (arrivalTripItem <Java-
> Object:com.ngc.dts.domain.common.TripItem>) (class <Java-
> Object:java.lang.Class>) (departureTripItem <Java-
> Object:com.ngc.dts.domain.common.TripItem>) (endDate nil)
>  (perDiemDays <Java-Object:java.util.Collections$EmptyList>) 
> (perDiemLocation nil)
> (perDiemRates <Java-Object:java.util.Collections$EmptyList>) (startDate
> <Java-Object:java.util.GregorianCalendar>) (OBJECT
> <Java-Object:com.ngc.dts.domain.common.TripLocation>))
> ==> Activation: MAIN::populate-last-travel-day-entitlement :  f-8,,
>  f-7, f-5,,, FIRE 2 MAIN::populate-last-travel-day-entitlement f-8,, 
> f-7, f-5,,, Jess reported an error in routine modify  while 
> executing (modify ?entitlement (perDiemLocation ?pdLocation)
> (mealsAndIncidentalsAllowed (call ?mie multiply 0.75)))       while 
> executing defrule MAIN::populate-last-travel-day-entitlement.  
> Message: Fact object not in working memory
> (MAIN::com.ngc.dts.domain.common.PerDiemEntitlement (acutalLodgingCostLimit
> nil) (class <Java-Object:java.lang.Class>) (date
> <Java-Object:java.util.GregorianCalendar>) (dutyConditions
> <Java-Object:java.util.HashSet>) (leave nil) (lodgingAllowed nil)
> (lodgingExpense <Java-Object:com.ngc.dts.domain.common.Expense>)
> (mealsAndIncidentalsAllowed nil) (mealsAndIncidentalsExpense
> <Java-Object:com.ngc.dts.domain.common.Expense>) 
> (otherEntitlementType nil)
> (perDiemLocation nil) (OBJECT <Java-
> Object:com.ngc.dts.domain.common.PerDiemEntitlement>)).       at 
> jess.an.a(Unknown Source)
> 
> --------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
> in the BODY of a message to [EMAIL PROTECTED], NOT to the list
> 
> (use your own address!) List problems? Notify [EMAIL PROTECTED]
> --------------------------------------------------------------------

--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to