Hi David,
Sorry it was of little help.
A rule of thumb is to stay away from "eval" as it kills
performance (the patterns can't be indexed).
I'm not sure if Drools can handle Date variables (the docs
state it handles Data literals formatted as "dd-mmm-yyyy" so Cheese( date ==
"27-Oct-2008") works).
I guess you could look at something like this (gees, this
is going to show how "green" I am with Drools now):-
rule "yuck"
when
DateFactory($today :
today )
$c : CreditCard( $expires :
expirationDate )
ArrayList( size
>= 0 ) from collect( Day( date >= $today, date <= $expires
))
then
//Difference between "today"
and "expiry date" is more than zero days
end
This does require the insertion of (possibly) huge amounts
of Day facts. Yuck. There must be a better way (in fact your eval looks soooo
much cleaner). I'm just throwing out ideas.
Good luck with your adventures with
Drools.
Mike
Not sure--Drools 5 temporal reasoning looks like it would be the
answer. Only problem is that I need a solution now, so I am stuck with
Drools 4.
This did give me some ideas though. I created myself a class called
TemporalReasoner. This has a few methods, namely to roll a date (so I
can tell it x amount of time from now), and then compare it to another
date.
So in my rule, lets say I have a fact CreditCard with property
expiration:Date (speaking uml-ishly for "a property named 'expiration' of
type Date"):
rule "Fires when expiration less than
today"
when
$c:
CreditCard($expires : expirationDate)
eval(new
TemporalReasoner(Calendar.getInstance()).lessThan($expires))
then
// do something for
when credit card is still valid
end
Now, I'm still generally a noob with BRs, so I'm not sure how this will
affect performance. Any advice?
Thanks,
David
On Thu, Jan 29, 2009 at 3:50 AM, Anstis, Michael (M.)
<manstis1@ford.com> wrote:
Hi,
I wonder
whether Drools 5 "Complex Event Processing Support (Temporal Reasoning)"
might be what you're looking for?
With
kind regards,
Mike
Hi-
I'm wondering how it would be possible to compare a part of a date in
the lhs condition of a rule in a Drool. In other words, I need to
compare a date to see if it is x days from the current
date, n hours from current time, etc. Would anyone be
kind enough to provide an example? I'm thinking I may have to
implement something of my own to offer that functionality?
Big thanks,
David
_______________________________________________
rules-users
mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users