use word boundaries, i.e. \b to denote "words"
\bassistant\b
On Wed, Mar 4, 2009 at 5:56 AM, D1vy@@Ind1@ <divya.rajendranath(a)gmail.com>wrote:
Thanks every one, I found a solution to this. I created an utility class
used
it in setGlobal of the drools session. Thus, I could call even non static
methods from the utility class.
Could any one help me with regular expressions in Drools.
I want to check the existance of any one of the keywords 'assistant',
'temp', 'intern' in a position field of an object. To be more clear I
wanted
to get the correct match if these keywords exist as a subword of its own
and
not as a part of a word. For eg., intern exists in internship and Systems
:
Intern, here I should get a successful match only for the second one. How
can I achieve that ?
My sampl drl file looks like:
rule "Form the "
salience 20
no-loop true
when
$s:Form(details.position matches
"^.*[_-:/](assistant|intern|temp)$");
then
$s.setRecipients((ArrayList)utilities.toArrayList((String)myRecipientsMap.get("Recipients")));
update($s);
end
If would be very helpful if anyone could help me solve this.
thanks
-D
D1vy@@Ind1@ wrote:
>
> I have still not found a solution to the problem.
>
> The problem is that I have a non static function in my service class and
i
> have to call thhat from my drools rule file.
>
> The function basically accepts a mail id and if a mailing list returns an
> arraylist of the individual mail ids in the mailing list.
>
> my drl file looks like this:
>
> ========================================================
> package com.test.ams.rule
>
> dialect "java"
>
> import java.util.ArrayList;
> import org.json.JSONArray;
> import java.net.HttpURLConnection;
> import java.net.URL;
> import java.io.InputStream;
> import java.io.InputStreamReader;
> import java.io.BufferedReader;
>
> import com.test.domobjects.StaffingForm;
> import com.test.domobjects.StaffingFormOfferDetails;
> import com.test.domobjects.OfferResponseType;
> import function
> com.test.serviceImpl.StaffingFormMailingServiceImpl.expandTheMailingList;
>
> global java.util.HashMap myOSFRecipientsMap;
>
> rule "Part A"
> salience 20
> no-loop true
> when
> $s:StaffingForm(staffingFormOfferDetails.offerValue== true
&&
>
staffingFormOfferDetails.offerResponseType.offerResponseTypeName ==
> "Accepted")
> then
>
>
$s.setPartARecipients((ArrayList<String>)expandTheMailingList((String)myOSFRecipientsMap.get("PART_A_EXEC_COMMITTEE")));
>
>
$s.setPartARecipients((String)myOSFRecipientsMap.get("PART_A_CONFIDENTIAL"));
>
$s.setPartARecipients((String)myOSFRecipientsMap.get("PART_A_PAYROLL"));
> update($s);
> end
> ========================================================
>
>
> This gives me an exception -- java.lang.RuntimeException: Unable to
> compile "the.drl".
>
> Please let me know what is the problem here.
>
>
> Thanks
> -D
>
>
>
> D1vy@@Ind1@ wrote:
>>
>> A couple of more questions,
>>
>> I am calling my rules engine from a service and into the session i am
>> inserting the business object.
>>
>> In my service class, I have a few helper functions, which I need to call
>> from my drl file.
>>
>> How can I do that ?
>>
>> Thanks
>> -D
>>
>>
>>
>> Corneil du Plessis 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(a)gmail.com"
>>>> global java.lang.String to="xyz(a)yahoo.com"
>>>> global java.lang.String cc="abc(a)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(a)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(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
>>>
>>>
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/Help-on-using-Drools-with-embedded-objects-tp221580...
Sent from the drools - user mailing list archive at
Nabble.com.
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users