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]
--------------------------------------------------------------------

Reply via email to