[rules-users] Guvnor and drools implementation - questions

ioda100 eddyhautot at gmail.com
Thu Mar 3 11:26:19 EST 2011


Yes thanks it's working with enum like explained previously by Esteban. I
won't do it dynamic for now i think.

It's not always of the form <string>.<string>, i have some in <string>.<int>
or <string>.<long> but for these i can make a separate DSL that will cast
the string to int or long. Except if there is a better solution.

Another thing is that i will have for this DSL :
*[when]The property {key:ENUM:Map.properties} of the map is
{value}=Map((this["{key}"] == "{value}"))

The property 'prop1' of the map is 'val1'

But if i want to have a second rule : **"The property 'prop1' of the map is
'val1'" and the map is different of the first map found above. Let's say i
have an attribute ID in the Maps, i could check that (ID1 != ID2)*. But with
DSL i am a little lost of how to do that. With DRL i did like this :
$m1 : Map(this["prop1"] == "val1")
$m2 : Map((this["prop1"] == "val1") && (this["id"] != $m1["id"]))
*
i could do
**[when]The property {key:ENUM:Map.properties} of the map is {value} = $m1 :
Map((this["{key}"] == "{value}"))
but it will always be stored in $m1 so if i do : **"The property 'prop1' of
the map is 'val1'*" twice, the second will override the value of $m1.


I have to put my rules in 4 drl files separate (i know which rules go in
which drl file), is the only way to create a different package for each drl
file i want? And to put the Enum and DSL part in Global if i have to use it
for the 4 files? If i want a precise name for my drl file, i have to give
this exact name to the package?


I tried to use the test scenario to test all that so i have created a simple
Test Scenario.
In the Given part, i have selected Map. Then keySet, i put prop1, prop2...
and for entrySet, i put test1, test2... and i have made a simple rules that
check that prop1 is equal to "test1" but when i run the scenario, i got :
[Error: unable to find constructor for: java.util.Map] [Near : {... new
java.util.Map( ....}] ^ [Line: 1, Column: 0] . Is there something special to
do to test with Map?


I tried to put some drools code in a function but it seems to not work. For
example :
WorkingMemory wm = drools.getWorkingMemory();
wm.setGlobal("resultValue", "OK");
It's not a problem since i use DSL for this but i suppose it's normal.


Sorry for all these problems, a little lost with all functionnality of this
tool and manual doesn't talk a lot about this.

thanks

On Thu, Mar 3, 2011 at 2:22 PM, Esteban [via Drools - Java Rules Engine] <
ml-node+2625046-28794131-237284 at n3.nabble.com> wrote:

> "Maps.properties" is just a name I choose for the enumeration. You can use
> whatever identifier you want, but..... The identifier has to be of the form
> <string>.<string>. It has to have a dot (.). I think this is because
> enumeration were created for bind a fact type attribute to a list of values.
>
> Best Regards,
>
> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
>
> Esteban Aliverti
> - Developer @ http://www.plugtree.com
> - Blog @ http://ilesteban.wordpress.com
>
>
> 2011/3/3 Vincent Legendre <[hidden email]<http://user/SendEmail.jtp?type=node&node=2625046&i=0&by-user=t>
> >
>
>>  I don't think that enums needs to be linked to a Pojo attribute. To me it
>> is just an identifier used in ENUM DSL constraints. The 'properties' is not
>> an attribute of a Map. I think you could set it to whatever you like
>> (something more linked to your problem).
>>
>> For making that dynamic, it is explained in the guvnor doc<http://drools.herod.net/drools-guvnor/html_single/index.html>(chapter "1.4.2.4.8. Data enumerations (drop down list configurations)" )
>>
>> 'Person.age' : (new com.yourco.DataHelper()).getListOfAges()
>>
>>
>> But I never tried that.
>>
>>
>> Le 02/03/2011 14:06, ioda100 a écrit :
>>
>> Really thank you, it's working fine. I will see if it's working for my
>> more difficult case.
>>
>>
>> On Tue, Mar 1, 2011 at 11:28 PM, Esteban [via Drools - Java Rules Engine]
>> <[hidden email]<http://user/SendEmail.jtp?type=node&node=2613230&i=0&by-user=t>
>> > wrote:
>>
>>>  You need to create the DSL first.
>>> Follow these steps:
>>> 1.- Add java.util.Map to package imports (I think you already did this)
>>> 2.- Create a new Enumeration with the following content:
>>> *'Map.properties': ['prop1', 'prop2', 'prop3']*
>>> 3.- Create a new DSL with this content:
>>> *[when]The property {key:ENUM:Map.properties} of the map is
>>> {value}=Map((this["{key}"] == "{value}"))*
>>> 4.- Create a new Rule and add the DSL sentence to the WHEN part. You
>>> should see the drop down.
>>>
>>> Note the name of the enumeration and how the variable {key} is defined in
>>> the DSL. I think you can also read the enumerations from a Java Enum present
>>> on your model, but I'm not sure about it. Does anyone know about this?
>>>
>>>  Best Regards,
>>>
>>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
>>>
>>> Esteban Aliverti
>>> - Developer @ http://www.plugtree.com
>>> - Blog @ http://ilesteban.wordpress.com
>>>
>>>
>>>  2011/3/1 ioda100 <[hidden email]<http://user/SendEmail.jtp?type=node&node=2607065&i=0>
>>> >
>>>
>>>> Yes but for this i will be obliged to create a POJO of an object. And
>>>> for attributes of that object in DSL i can define values that can take this
>>>> attribute?
>>>>
>>>> Maybe i don't understand but i don't see how to do with this.
>>>>
>>>> My case :
>>>> I have Maps in the session. Each Map has for example 5 properties
>>>> ("prop1", "prop2", "prop3", "prop4", "prop51") and the value is a string.
>>>> The Map is Map<String, Object> but generally Object is a String.
>>>> So in the When clause i have something like that :
>>>>     $m  : Map((this["prop1"] == "test1"))
>>>> I have included java.utils.Map in Guvnor. So when i add a when clause i
>>>> can choose Map in the list but impossible to have "prop1" to "prop5" in a
>>>> drop down list for attributes of the Map.
>>>> Would it be possible to create a Pojo for Map or would it be in conflict
>>>> with the Map of Java?
>>>>
>>>> Thank you for your time
>>>>
>>>>
>>>> Le 1/03/2011 17:55, Vincent Legendre [via Drools - Java Rules Engine] a
>>>> écrit :
>>>>
>>>>  Le 01/03/2011 15:39, ioda100 a écrit :
>>>>
>>>> Thanks for your quick answer Esteban.
>>>>
>>>> 1) Ok i will have a look at DSL. In fact in my map i know all the
>>>> properties (about 200). It would be cool to be able to have a drop down list
>>>> with all these attributes as when we do it with objects for which we gave
>>>> Pojo to Guvnor.
>>>>
>>>> You can define enumerations for a particular attribute.
>>>> Inside a DSL you can constrain a placeholder with that enumeration.
>>>> And finally, enums can be static, or dynamic (a interface to implement
>>>> that returns a list of values).
>>>>
>>>> search the Guvnor's doc in these chapters
>>>> 1.4.2.4.8. Data enumerations (drop down list configurations)
>>>>
>>>>   _______________________________________________
>>>> rules-users mailing list
>>>> [hidden email]<http://user/SendEmail.jtp?type=node&node=2604255&i=0&by-user=t>
>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>> ------------------------------
>>>>   If you reply to this email, your message will be added to the
>>>> discussion below:
>>>>
>>>> http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-and-drools-implementation-questions-tp2602641p2604255.html<http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-and-drools-implementation-questions-tp2602641p2604255.html?by-user=t&by-user=t&by-user=t&by-user=t>
>>>>  To unsubscribe from Guvnor and drools implementation - questions, click
>>>> here<http://drools-java-rules-engine.46999.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=2602641&code=ZWRkeWhhdXRvdEBnbWFpbC5jb218MjYwMjY0MXwtMTEzMzMwMzAxNA==&by-user=t&by-user=t&by-user=t&by-user=t>.
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>> View this message in context: Re: Guvnor and drools implementation -
>>>> questions<http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-and-drools-implementation-questions-tp2602641p2606843.html?by-user=t&by-user=t&by-user=t>
>>>>
>>>> Sent from the Drools - User mailing list archive<http://drools-java-rules-engine.46999.n3.nabble.com/Drools-User-f47000.html?by-user=t&by-user=t&by-user=t>at Nabble.com.
>>>>
>>>> _______________________________________________
>>>>
>>>> rules-users mailing list
>>>> [hidden email] <http://user/SendEmail.jtp?type=node&node=2607065&i=1>
>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> [hidden email] <http://user/SendEmail.jtp?type=node&node=2607065&i=2>
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>> ------------------------------
>>>   If you reply to this email, your message will be added to the
>>> discussion below:
>>>
>>> http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-and-drools-implementation-questions-tp2602641p2607065.html<http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-and-drools-implementation-questions-tp2602641p2607065.html?by-user=t&by-user=t>
>>>
>>
>>
>> ------------------------------
>> View this message in context: Re: Guvnor and drools implementation -
>> questions<http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-and-drools-implementation-questions-tp2602641p2613230.html?by-user=t>
>> Sent from the Drools - User mailing list archive<http://drools-java-rules-engine.46999.n3.nabble.com/Drools-User-f47000.html?by-user=t>at Nabble.com.
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> [hidden email] <http://user/SendEmail.jtp?type=node&node=2625046&i=1&by-user=t>
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>>
>> --
>> Vincent LEGENDRE
>> *Consultant Sénior*
>>
>>  EURODECISION
>> 9A rue de la Porte de Buc 78000 VERSAILLES
>> Tél. : +33 (0)1 39 07 12 40
>> Direct : +33 (0)1 39 07 26 16
>> www.eurodecision.com
>>  [image: EURODECISION] <http://www.eurodecision.com/>
>> <http://www.eurodecision.com/>
>>
>> _______________________________________________
>> rules-users mailing list
>> [hidden email]<http://user/SendEmail.jtp?type=node&node=2625046&i=2&by-user=t>
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
> _______________________________________________
> rules-users mailing list
> [hidden email]<http://user/SendEmail.jtp?type=node&node=2625046&i=3&by-user=t>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-and-drools-implementation-questions-tp2602641p2625046.html
>  To unsubscribe from Guvnor and drools implementation - questions, click
> here<http://drools-java-rules-engine.46999.n3.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=2602641&code=ZWRkeWhhdXRvdEBnbWFpbC5jb218MjYwMjY0MXwtMTEzMzMwMzAxNA==>.
>
>


--
View this message in context: http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-and-drools-implementation-questions-tp2602641p2626460.html
Sent from the Drools - User mailing list archive at Nabble.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20110303/6f7d0c8f/attachment.html 


More information about the rules-users mailing list