[rules-users] Working with dates in rules
Anstis, Michael (M.)
manstis1 at ford.com
Thu Jan 29 06:57:51 EST 2009
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
________________________________
From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of David Siefert
Sent: 29 January 2009 11:31
To: Rules Users List
Subject: Re: [rules-users] Working with dates in rules
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 at ford.com> wrote:
Hi,
I wonder whether Drools 5 "Complex Event Processing
Support (Temporal Reasoning)" might be what you're looking for?
http://blog.athico.com/2008/07/drools-50-m1-new-and-noteworthy.html
With kind regards,
Mike
________________________________
From: rules-users-bounces at lists.jboss.org
[mailto:rules-users-bounces at lists.jboss.org] On Behalf Of David Siefert
Sent: 29 January 2009 09:40
To: Rules Users List
Subject: [rules-users] Working with dates in
rules
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 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/20090129/eae13a6d/attachment.html
More information about the rules-users
mailing list