[rules-users] using homemade Date in Drools
Maxime Catelin
mcatelin at perinfo.com
Tue May 22 03:27:56 EDT 2007
Thanks Mark, I had not thought about that. Great idea.
Mark Proctor a écrit :
> Why not just make your class implement Comparable, and then it will
> work with > and <.
>
> Mark
> Edson Tirelli wrote:
>>
>> 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 at gmail.com
>> <mailto:shahad.ahmed2 at 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 at perinfo.com
>> <mailto:mcatelin at 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 at lists.jboss.org
>> <mailto:rules-users-bounces at lists.jboss.org>
>> > [mailto:rules-users-bounces at lists.jboss.org
>> <mailto:rules-users-bounces at 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 at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>> > https://lists.jboss.org/mailman/listinfo/rules-users
>> <https://lists.jboss.org/mailman/listinfo/rules-users>
>> >
>> > _______________________________________________
>> > rules-users mailing list
>> > rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>> > https://lists.jboss.org/mailman/listinfo/rules-users
>> <https://lists.jboss.org/mailman/listinfo/rules-users>
>> >
>> >
>> >
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>> https://lists.jboss.org/mailman/listinfo/rules-users
>> <https://lists.jboss.org/mailman/listinfo/rules-users>
>>
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org <mailto:rules-users at 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 @ www.jboss.com <http://www.jboss.com>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
> ------------------------------------------------------------------------
>
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.467 / Virus Database: 269.7.6/813 - Release Date: 20/05/2007 07:54
>
More information about the rules-users
mailing list