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

Patricia Bogoevici patriciabogoevici at yahoo.com
Thu Aug 26 22:15:30 EDT 2010


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



      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100826/19a70cd9/attachment.html 


More information about the rules-users mailing list