You've answered your own question. The method is non-static. You must call it on a particular instance. You can pass the instance in as a global variable or match on it in the rule.
global com.test.serviceImpl.StaffingFormMailingServiceImpl foo; or when $s:StaffingForm(...) $f:StaffingFormMailingServiceImpl() then ... end Unless you have multiple StaffingFormMailingServiceImpl instances, the first option is best. --- On Mon, 3/2/09, D1vy@@Ind1@ <[email protected]> wrote: > From: D1vy@@Ind1@ <[email protected]> > Subject: Re: [rules-users] Help on using Drools with embedded objects > To: [email protected] > Date: Monday, March 2, 2009, 3:07 AM > 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-tp22158087p22283483.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
