Yes, Shahad's suggestion shall work, but answering your first question, a
predicate would be like:
rule XXX
when
obj1 : A( $date1: mydate)
obj2 : A( $date2: mydate -> ( $date1.isBefore($date2) ) )
then
// something
obj1.doSomething();
End
Remember that predicates and evals use plain java code inside it.
[]s
Edson
2007/5/21, Shahad Ahmed <shahad.ahmed2(a)gmail.com>:
How about a slight modification on Mike's solution:
rule XXX
when
obj1 : A( $date1: mydate)
obj2 : A( $date2: mydate)
eval($date1.isBefore($date2))
then
// something
obj1.doSomething();
End
I think eval allows you access to the methods in your custom Date class so
you can call isBefore in there after binding $date1 and $date 2 to any
custom date objects. I still new to Drools, so this may not be correct.
Regards
Shahad
On 5/21/07, Maxime Catelin <mcatelin(a)perinfo.com > wrote:
>
> Thanks for your input. That seems to involve some modifications, on our
> Date class and all the classes that have Date members. That's not
> exactly what i thought of doing but maybe that's the only way.
>
> What I meant was to to find a way to compare those dates eventually
> using the date methods we have (isAfter() or isBefore() for exemple) and
>
> to "keep" only the object with the latest date. So if there are several
> A objects in the working memory, we will only fire the one with the
> latest date.
>
> rule XXX
>
> when
> obj : A( $date : mydate)
> not A( $date.isBefore(mydate)) // does not work but that what i was
> thinking
> then
> // something
> obj.doSomething();
> end
>
>
>
> Anstis, Michael (M.) a écrit :
> > The simplest way could be to have your Date expose a "Time" type
> member
> > (like java.util.Date.getTime()) that represents the number of
> > seconds\milliseconds etc since a given point in time ("your absolute
> > zero" for example; being day * month * year * H * M * s * ms). This
> > could then be used as a simple predicate condition:-
> >
> > rule XXX
> > when
> > obj1 : A( $time : myTime)
> > obj2 : A( myTime < $time )
> > then
> > // something
> > obj.doSomething();
> > End
> >
> > Thanks,
> >
> > Mike
> >
> > -----Original Message-----
> > From: rules-users-bounces(a)lists.jboss.org
> > [mailto:rules-users-bounces@lists.jboss.org] On Behalf Of Maxime
> Catelin
> > Sent: 21 May 2007 14:34
> > To: Rules Users List
> > Subject: [rules-users] using homemade Date in Drools
> >
> > Hi,
> >
> > We are using a lot of Dates in our application but we use a homemade
> > Date class for that. Therefore, we cannot use > and < provided by
> > Drools. I looked through the mailing list but could not find any
> > examples using Dates in Drools other than in the documentation. What
> > interested me in particular in the documentation was "If more control
> is
> >
> > required, use the predicate constraint."
> >
> > Could someone give some examples of using predicate constraint with
> > dates?
> >
> > Something I would like to do, for example, is the following :
> >
> > If there is an obj1 of class A with field of type Date d1 and another
> > obj2 of class A with field Date d2, where d1 is before d2, obj2 should
>
> > be used to fire something.
> >
> > rule XXX
> > when
> > obj : A( $date : mydate)
> > // do not know how to use constraint on date here.
> > then
> > // something
> > obj.doSomething();
> > end
> >
> > Thanks for your input.
> > _______________________________________________
> > rules-users mailing list
> > rules-users(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/rules-users
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users(a)lists.jboss.org
> >
https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
> >
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @