|
I have the following Drools DSL "sentence": [when]The field {field} in the module {module} contains value {value}=$a : {module} ( {field} != null) String( this.equalsIgnoreCase("{value}") ) from $a.{field} where the `field` is a `Set` of Strings. Now, if I have two of these sentences in one rule, it obviously won't work as the variable `$a` occurs twice. So I wanted to improve the rule to make the variable, well, variable: [when]The field {field} in the module {module} contains value {value} as {a}={a} : {module} ( {field} != null) String( this.equalsIgnoreCase("{value}") ) from {a}.{field} This doesn't work, I can't use the part `{a}.`, that breaks. So, my questions are: Is there either a way to rewrite the rules or a way to allow the `{variable}.` notation to work? Alternatively, is there a `contains` operator which works case insensitive? Thanks in advance Dominik _______________________________________________ rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users |
|
Have you checked the expanded DRL? What does this line look like?
-W On 12 June 2012 17:06, Sandjaja, Dominik <[hidden email]> wrote:
_______________________________________________ rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users |
|
There is no expanded DRL. If I take that line into the DSL, I can’t even validate the DSL and if I have the line in it, I can’t select any DSL statements for rules in Guvnor. BTW, I am using Drools and Guvnor 5.4.0. Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Wolfgang Laun Have you checked the expanded DRL? What does this line look like? On 12 June 2012 17:06, Sandjaja, Dominik <[hidden email]> wrote: I have the following Drools DSL "sentence": [when]The field {field} in the module {module} contains value {value}=$a : {module} ( {field} != null) String( this.equalsIgnoreCase("{value}") ) from $a.{field} where the `field` is a `Set` of Strings. Now, if I have two of these sentences in one rule, it obviously won't work as the variable `$a` occurs twice. So I wanted to improve the rule to make the variable, well, variable: [when]The field {field} in the module {module} contains value {value} as {a}={a} : {module} ( {field} != null) String( this.equalsIgnoreCase("{value}") ) from {a}.{field} This doesn't work, I can't use the part `{a}.`, that breaks. So, my questions are: Is there either a way to rewrite the rules or a way to allow the `{variable}.` notation to work? Alternatively, is there a `contains` operator which works case insensitive? Thanks in advance Dominik
_______________________________________________ rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users |
|
There is a bug in the DSL parser: after '=', a couple of variable
references merely separated by a period isn't recognized. As a workaround, use this: [when][]The field {field} in the module {module} contains value {value} as {abc} = {abc}x : {module} ( {field} != null) String( this.equalsIgnoreCase("{value}") ) from {abc}x.{field} -W On 12/06/2012, Sandjaja, Dominik <[hidden email]> wrote: > There is no expanded DRL. If I take that line into the DSL, I can't even > validate the DSL and if I have the line in it, I can't select any DSL > statements for rules in Guvnor. > > > > BTW, I am using Drools and Guvnor 5.4.0. > > > > Von: [hidden email] > [mailto:[hidden email]] Im Auftrag von Wolfgang > Laun > Gesendet: Dienstag, 12. Juni 2012 17:31 > An: Rules Users List > Betreff: Re: [rules-users] Using 'from {x}.field' in DSL > > > > Have you checked the expanded DRL? What does this line look like? > > -W > > On 12 June 2012 17:06, Sandjaja, Dominik <[hidden email]> > wrote: > > I have the following Drools DSL "sentence": > > [when]The field {field} in the module {module} contains value > {value}=$a : {module} ( {field} != null) > > String( this.equalsIgnoreCase("{value}") ) from $a.{field} > > where the `field` is a `Set` of Strings. > > Now, if I have two of these sentences in one rule, it obviously won't > work as the variable `$a` occurs twice. So I wanted to improve the rule > to make the variable, well, variable: > > [when]The field {field} in the module {module} contains value > {value} as {a}={a} : {module} ( {field} != null) > > String( this.equalsIgnoreCase("{value}") ) from {a}.{field} > > This doesn't work, I can't use the part `{a}.`, that breaks. > > So, my questions are: Is there either a way to rewrite the rules or a > way to allow the `{variable}.` notation to work? Alternatively, is there > a `contains` operator which works case insensitive? > > Thanks in advance > > Dominik > > > _______________________________________________ > rules-users mailing list > [hidden email] > https://lists.jboss.org/mailman/listinfo/rules-users > > > > rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users |
|
Hello Wolfgang, hello everybody,
Nice one, thanks for the idea! This one works for now, but is there a way to automatically assign random variable names to the RHS of the DSL? So the user won't have to explicitly set a variable in the DSL which is only needed for internal purposes. Thanks Dominik -----Ursprüngliche Nachricht----- Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Wolfgang Laun Gesendet: Dienstag, 12. Juni 2012 19:46 An: Rules Users List Cc: Edson Tirelli Betreff: Re: [rules-users] Using 'from {x}.field' in DSL There is a bug in the DSL parser: after '=', a couple of variable references merely separated by a period isn't recognized. As a workaround, use this: [when][]The field {field} in the module {module} contains value {value} as {abc} = {abc}x : {module} ( {field} != null) String( this.equalsIgnoreCase("{value}") ) from {abc}x.{field} -W On 12/06/2012, Sandjaja, Dominik <[hidden email]> wrote: > There is no expanded DRL. If I take that line into the DSL, I can't > even validate the DSL and if I have the line in it, I can't select any > DSL statements for rules in Guvnor. > > > > BTW, I am using Drools and Guvnor 5.4.0. > > > > Von: [hidden email] > [mailto:[hidden email]] Im Auftrag von Wolfgang > Laun > Gesendet: Dienstag, 12. Juni 2012 17:31 > An: Rules Users List > Betreff: Re: [rules-users] Using 'from {x}.field' in DSL > > > > Have you checked the expanded DRL? What does this line look like? > > -W > > On 12 June 2012 17:06, Sandjaja, Dominik > <[hidden email]> > wrote: > > I have the following Drools DSL "sentence": > > [when]The field {field} in the module {module} contains value > {value}=$a : {module} ( {field} != null) > > String( this.equalsIgnoreCase("{value}") ) from $a.{field} > > where the `field` is a `Set` of Strings. > > Now, if I have two of these sentences in one rule, it obviously won't > work as the variable `$a` occurs twice. So I wanted to improve the > rule to make the variable, well, variable: > > [when]The field {field} in the module {module} contains value > {value} as {a}={a} : {module} ( {field} != null) > > String( this.equalsIgnoreCase("{value}") ) from {a}.{field} > > This doesn't work, I can't use the part `{a}.`, that breaks. > > So, my questions are: Is there either a way to rewrite the rules or a > way to allow the `{variable}.` notation to work? Alternatively, is > there a `contains` operator which works case insensitive? > > Thanks in advance > > Dominik > > > _______________________________________________ > rules-users mailing list > [hidden email] > https://lists.jboss.org/mailman/listinfo/rules-users > > > > rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users _______________________________________________ rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users |
|
On 13/06/2012, Sandjaja, Dominik <[hidden email]> wrote:
> Hello Wolfgang, hello everybody, > > Nice one, thanks for the idea! This one works for now, but is there a way to > automatically assign random variable names to the RHS of the DSL? So the > user won't have to explicitly set a variable in the DSL which is only needed > for internal purposes. This is one thing I've occasionally missed, too, in my experiments with DSLs. It wouldn't be too difficult to add, and patch/pull requests are always welcome with the Drools team. If at least one of the variables differs between repeated uses of the DSL phrase, you might consider using this text (if its characters are always suitable!) as part of the binding variable name, e.g. [when][]The field {field} in the module {module} contains value {value}= {value}Obj : {module} ( {field} != null) String( this.equalsIgnoreCase( "{value}" ) ) from {value}Obj.{field} BTW, consider defining a custom operator which would let you write the much simpler pattern Module( field spells "value" ) You can make a trivial clone from the implementation of "contains", shouldn't take more than 5 minutes ;-) Some hints can be found at http://members.inode.at/w.laun/drools/CustomOperatorHowTo.html Cheers -W > > Thanks > Dominik > > -----Ursprüngliche Nachricht----- > Von: [hidden email] > [mailto:[hidden email]] Im Auftrag von Wolfgang Laun > Gesendet: Dienstag, 12. Juni 2012 19:46 > An: Rules Users List > Cc: Edson Tirelli > Betreff: Re: [rules-users] Using 'from {x}.field' in DSL > > There is a bug in the DSL parser: after '=', a couple of variable references > merely separated by a period isn't recognized. > > As a workaround, use this: > > [when][]The field {field} in the module {module} contains value {value} as > {abc} = > {abc}x : {module} ( {field} != null) String( > this.equalsIgnoreCase("{value}") ) from {abc}x.{field} > > -W > > > On 12/06/2012, Sandjaja, Dominik <[hidden email]> wrote: >> There is no expanded DRL. If I take that line into the DSL, I can't >> even validate the DSL and if I have the line in it, I can't select any >> DSL statements for rules in Guvnor. >> >> >> >> BTW, I am using Drools and Guvnor 5.4.0. >> >> >> >> Von: [hidden email] >> [mailto:[hidden email]] Im Auftrag von Wolfgang >> Laun >> Gesendet: Dienstag, 12. Juni 2012 17:31 >> An: Rules Users List >> Betreff: Re: [rules-users] Using 'from {x}.field' in DSL >> >> >> >> Have you checked the expanded DRL? What does this line look like? >> >> -W >> >> On 12 June 2012 17:06, Sandjaja, Dominik >> <[hidden email]> >> wrote: >> >> I have the following Drools DSL "sentence": >> >> [when]The field {field} in the module {module} contains value >> {value}=$a : {module} ( {field} != null) >> >> String( this.equalsIgnoreCase("{value}") ) from $a.{field} >> >> where the `field` is a `Set` of Strings. >> >> Now, if I have two of these sentences in one rule, it obviously won't >> work as the variable `$a` occurs twice. So I wanted to improve the >> rule to make the variable, well, variable: >> >> [when]The field {field} in the module {module} contains value >> {value} as {a}={a} : {module} ( {field} != null) >> >> String( this.equalsIgnoreCase("{value}") ) from {a}.{field} >> >> This doesn't work, I can't use the part `{a}.`, that breaks. >> >> So, my questions are: Is there either a way to rewrite the rules or a >> way to allow the `{variable}.` notation to work? Alternatively, is >> there a `contains` operator which works case insensitive? >> >> Thanks in advance >> >> Dominik >> >> >> _______________________________________________ >> rules-users mailing list >> [hidden email] >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> >> >> > _______________________________________________ > rules-users mailing list > [hidden email] > https://lists.jboss.org/mailman/listinfo/rules-users > > _______________________________________________ > rules-users mailing list > [hidden email] > https://lists.jboss.org/mailman/listinfo/rules-users > _______________________________________________ rules-users mailing list [hidden email] https://lists.jboss.org/mailman/listinfo/rules-users |
| Powered by Nabble | Edit this page |
