[rules-users] Drools Guvnor: DSL with multiple fact fields conditions using "-" and eval

Mauricio Salatino salaboy at gmail.com
Thu Aug 26 22:43:46 EDT 2010


can you try with this:
[when] There is an Asset=asset:Asset()
[when] -name is empty=eval(StringUtils.isBlank(name))
[when] -tag is empty=eval(StringUtils.isBlank(tag))

2010/8/26 Patricia Bogoevici <patriciabogoevici at yahoo.com>

> Hi all,
>
> I am using the latest Guvnor release (5.1), and I have the following DSL
> expression where I use "-" to have conditions on multiple lines:
>
> [when] There is an Asset=asset:Asset()
> [when]- name is empty=eval(StringUtils.isBlank(name))
> [when]- tag is empty=eval(StringUtils.isBlank(tag))
>
> Having these DSL expressions, I wanted to create a rule, but I ran into
> some issues.
> To summarize: There seems to be a parsing error, when conditions are added
> in DSL using "-".  Did anybody else run into this problem? I wonder if I do
> something wrong, but, re-creating the DSL to have the 2 conditions into one
> expression, is all working fine. It may be a combination of "-" and eval?
>
> Below, is the description of rules created, and error I got.
>
> First, I created a rule using the above DSL expressions in the BRL editor.
> While the rule looked ok in the editor, and it validated fine, only when I
> checked the source I noticed is wrong. So, the rule source looks like this:
> rule "test_dsl"
>         dialect "mvel"
>         when
>             asset:Asset( eval(StringUtils.isBlank(name,
> eval(StringUtils.isBlank(tag)) )) )
>         then
>             asset.setStatus("INVALID")
>     end
>
> It looks that the conditions are parsed incorrectly, and the second eval
> condition is added as a parameter to the StringUtils.isBlank from the first
> eval. Also, all the right parenthesis are added at the end of the
> expression. If I add one condition at a time, it all works fine. The error
> is when I have more than 1 condition.
>
> So, I created a new DSL, that contains both conditions into one line,
> eliminating the hyphen between conditions:
>
> [when] There is an asset with name empty AND tag empty
> =asset:Asset(eval(StringUtils.isBlank(name)),eval(StringUtils.isBlank(tag)))
>
> Using  BRL editor, I created a second rule using the DSL above. The rule
> validated ok, and the rule source looks fine:
>
> rule "test_dsl_1"
>         dialect "mvel"
>         when
>
> asset:Asset(eval(StringUtils.isBlank(name)),eval(StringUtils.isBlank(tag)))
>         then
>             asset.setStatus("INVALID")
>     end
>
> I created a test for this rule, that ran correctly.
>
>
> Thanks,
> Patricia
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
 - CTO @ http://www.plugtree.com
 - MyJourney @ http://salaboy.wordpress.com
 - Co-Founder @ http://www.jbug.com.ar

 - Salatino "Salaboy" Mauricio -
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100826/eb92be2b/attachment.html 


More information about the rules-users mailing list