[rules-users] Help on using Drools with embedded objects

David Sinclair dsinclair at chariotsolutions.com
Mon Feb 23 11:51:34 EST 2009


I would suggest that you assert all of your objects into working memory. For
example, if you have the object A with an embedded B and C, you need to do
the following

insert(A);
insert(A.B);
insert(A.C);

than within your rules, join the objects where needed

rule

    A(b$ : b != null)
    B(this == b$)

etc.

On Mon, Feb 23, 2009 at 10:39 AM, Corneil du Plessis <corneil at tsctech.com>wrote:

>  You should initialise your globals and then pass them into the session.
> Your rule file will have:
>
> global java.lang.String recipients
> global java.lang.String to
> global java.lang.String cc
>
>
> On Mon, 2009-02-23 at 06:23 -0800, D1vy@@Ind1@ wrote:
>
> Thanks for your help , Sudhir,
>
> I used
>
> rule
> when $a:A(b.z.s=="test");
> then
> end
>
> And that solved my problem.
>
> But I would like to know one more information about global variables.
>
> package...
> dialect java
> import ..,
>
> global java.lang.String recipients="divya at gmail.com"
> global java.lang.String to="xyz at yahoo.com"
> global java.lang.String cc="abc at gmail.com"
>
> rule
> when when $a:A(b.z.s=="divya");
> then
> $a.setRecipients(recipients);
> $a.setTo(to);
> $a.setCC(cc);
> update($a)
> end
>
> Is this feasible with Drools. I get
>
> unable to comile myfile.drl file
> [9,40]: unknown:9:40 mismatched token: [@49,201:201='=',<71>,9:40];
> E
>
> exception. Could you please help me with this too.
>
>
> Thanks
> -D
>
>
>
>
>
>
>
>
> Sudhir M-2 wrote:
> >
> > Hi D,
> > I don't know which version of drools are you using. If u are using drools
> > 4
> > or higher you can use 'from'  to write rules on nested objects. All u need
> > to do is insert the root pbject in the working memory
> >
> > Regards,
> > sudhir.
> >
> > On Mon, Feb 23, 2009 at 2:56 PM, Divya Rajendranath <
> > divya.rajendranath at gmail.com> wrote:
> >
> >> Hi,
> >>
> >> I am planning to use Drools - JBoss Rules Engine. My requirement is to
> >> disburse mails from my application to different groups based on various
> >> criteria. I want to use Drools here.
> >>
> >> My object structure is as follows:
> >>
> >> class A{
> >>
> >> String B = "";
> >>
> >> B b;
> >>
> >> C c;
> >> }
> >>
> >> Hence Obj A has embedded objects within it, and obj B and C further has
> >> embedded objects.
> >>
> >> class B {
> >>
> >> String X;
> >>
> >> Z z;
> >>
> >> }
> >>
> >> class Z{
> >>
> >> String t;
> >>
> >> String s;
> >>
> >> }
> >>
> >> The decision on sending the mails based on the fields in embedded objects
> >> of A. I pass instance of A to Drools
> >>
> >> Format of drl file:
> >>
> >> package...;
> >>
> >> import ..;
> >>
> >> rule "Test"
> >>
> >> when $a:A(B(Z(s == "testvalue")))
> >>
> >> then
> >>
> >> $a.setSomething();
> >>
> >> update($a);
> >>
> >> end
> >>
> >> I wanted to know if this (accessing fields in embedded/child object) is
> >> feasible with Drools.
> >>
> >> I get an error saying "UNable to compile myfile.drl when i try to fo
> >> this.
> >>
> >> Could some one look into this issue and let me know the reason for this ?
> >>
> >>
> >>
> >> Thanks
> >>
> >> -D
> >>
> >> _______________________________________________
> >> 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
> >
> >
>
>
>
> _______________________________________________
> 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/20090223/92e66007/attachment.html 


More information about the rules-users mailing list