use word boundaries, i.e. \b to denote "words" \bassistant\b
On Wed, Mar 4, 2009 at 5:56 AM, D1vy@@Ind1@ <[email protected]>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="[email protected]" > >>>> global java.lang.String to="[email protected]" > >>>> global java.lang.String cc="[email protected]" > >>>> > >>>> 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 < > >>>> > [email protected]> 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 > >>>> >> [email protected] > >>>> >> https://lists.jboss.org/mailman/listinfo/rules-users > >>>> >> > >>>> >> > >>>> > > >>>> > _______________________________________________ > >>>> > rules-users mailing list > >>>> > [email protected] > >>>> > https://lists.jboss.org/mailman/listinfo/rules-users > >>>> > > >>>> > > >>>> > >>> > >>> _______________________________________________ > >>> rules-users mailing list > >>> [email protected] > >>> https://lists.jboss.org/mailman/listinfo/rules-users > >>> > >>> > >> > >> > > > > > > -- > View this message in context: > http://www.nabble.com/Help-on-using-Drools-with-embedded-objects-tp22158087p22327495.html > Sent from the drools - user mailing list archive at Nabble.com. > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users >
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
