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@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@gmail.com"
global java.lang.String to="xyz@yahoo.com"
global java.lang.String cc="abc@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@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@lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
> 
> _______________________________________________
> rules-users mailing list
> rules-users@lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> 


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users