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(a)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>(c...
"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-imp...
>>> To unsubscribe from Guvnor and drools implementation - questions, click
>>>
here<http://drools-java-rules-engine.46999.n3.nabble.com/template/Naml...;.
>>>
>>>
>>>
>>> ------------------------------
>>> View this message in context: Re: Guvnor and drools implementation -
>>>
questions<http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-a...
>>>
>>> Sent from the Drools - User mailing list
archive<http://drools-java-rules-engine.46999.n3.nabble.com/Drools-Use...
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-imp...
>>
>
>
> ------------------------------
> View this message in context: Re: Guvnor and drools implementation -
>
questions<http://drools-java-rules-engine.46999.n3.nabble.com/Guvnor-a...
> Sent from the Drools - User mailing list
archive<http://drools-java-rules-engine.46999.n3.nabble.com/Drools-Use...
Nabble.com.
>
>
> _______________________________________________
> rules-users mailing list
> [hidden email]
<
http://user/SendEmail.jtp?type=node&node=2625046&i=1&by-user=...
>
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-imp...
To unsubscribe from Guvnor and drools implementation - questions, click
here<http://drools-java-rules-engine.46999.n3.nabble.com/template/Naml...;.