Do you have any comments ("#..." or "//...") between when and then? If so, please remove and try again.
If this doesn't fix it, please post completely and exactly - the rule from the DSLR - the full DSL - Drools version. Thanks -W 2011/1/4 maverik j <maverikj...@gmail.com> > > > 2011/1/4 Wolfgang Laun <wolfgang.l...@gmail.com> > > >> >> 2011/1/4 maverik j <maverikj...@gmail.com> >> >> is there any restriction in terms of using custom function in condition >>> etc. >>> If I add function evaluation to conditions its messing up with dsl. For >>> pattern matching if I use custom function defined in drl then its not able >>> to parse that properly >>> >>> [when][] {attr:\S+} follows pattern {pattern:\S+} = >>> funcToEvalPattern({attr},( {pattern} ) >>> >> >> Is this exactly what you have in the DSL definition? It's syntactically >> incorrect. >> > > >> Sorry for that, it is actually >> > > >> [when][] {*attr*} follows pattern {pattern} = startsWithFunction( {*attr >> *}, {pattern} ) >>> >>> and is being added as last statement in DSL (for testing purpose I am >>> using same dsl as you have shown) >>> >> > >> in this case it is getting translated to >>> exists(Person:Person(subordinate != null , startsWithFunction( *eval*( >>> name, "I" ) ) ) >>> where as I was hoping this to be >>> exists(Person:Person(subordinate != null , *eval *(startsWithFunction( >>> name, "I" ) ) ) >>> >>> >> >> I cannot reproduce this. But it may depend on the order of your entries in >> you DSL file. >> >> Actually I tried changing order as well but didnt worked. I have actually > defined these common functions in drl and added that to knowledgebase along > with these DSL and DSLR. > > > >> -W >> >> >> >>> Regards, >>> -Maverik >>> >>> On Tue, Jan 4, 2011 at 12:24 PM, maverik j <maverikj...@gmail.com>wrote: >>> >>>> cool...this was of great help, I will try this out I think it shoudl >>>> solve the purpose. >>>> >>>> Thanks once again, >>>> Maverik >>>> >>>> 2011/1/3 Wolfgang Laun <wolfgang.l...@gmail.com> >>>> >>>> Try using eval as a last resort. A better (smaller, more robust) DSL can >>>>> be designed around facts and their attributes. >>>>> >>>>> "||" (and "OR") can be used, but setting parentheses in order to get >>>>> the priority right is difficult. In constraints, you may have to resort to >>>>> "memberof" or "not memberof". >>>>> >>>>> Your sample isn't self-contained. But I think that the following DSL >>>>> and the DSLR might give you some ideas how to proceed. >>>>> >>>>> [keyword][]check that {conditions}= eval( {conditions} ) >>>>> [keyword][]AND = && >>>>> [keyword][]OR = || >>>>> >>>>> [when][][Tt]here is an? {entity}= {entity}: {entity}() >>>>> [when][][Tt]here is at least one {entity}= exists {entity}: {entity}() >>>>> >>>>> [when][]the {entity:\w+}'s {attr:\w+} = {entity}.get{attr}() >>>>> >>>>> [when][]- with a valid {attr} = {attr}: {attr} != null >>>>> [when][]- with {attr} not equal to {value} = {attr} != {value} >>>>> [when][]- eval\( {whatever} \)=eval( {whatever} ) >>>>> >>>>> [when][] {attr:\S+} follows pattern {pattern:\S+} = {attr}.matches( >>>>> {pattern} ) >>>>> [when][] {attr:\S+} not equals? {value:\S+} = ! {attr}.equals( {value} >>>>> ) >>>>> [when][] {attr:\S+} is valid = {attr} != null >>>>> >>>>> rule "Rule 5" >>>>> when >>>>> There is a Department >>>>> There is at least one Person >>>>> - with name not equal to "xxx" >>>>> - with a valid subordinate >>>>> - check that the Person's Id is valid AND the Department's Id >>>>> follows pattern "I" AND the Department's HeadOfDpt not equal name >>>>> then >>>>> end >>>>> >>>>> Notice that "-check that..." must be written as a single line. >>>>> >>>>> -W >>>>> >>>>> >>>>> >>>>> >>>>> 2011/1/3 maverik j <maverikj...@gmail.com> >>>>> >>>>>> Hi, >>>>>> >>>>>> We are planning to use DSL/DSRL approach with generic DSL template >>>>>> like say >>>>>> >>>>>> [condition][]The {object} has valid {field}={object}({field} != null ) >>>>>> >>>>>> [condition][]there is object {*obj*} that = {*obj*}() >>>>>> >>>>>> [condition][]- has {*attr*} equal {*val*} = {*attr*} == {*val*} >>>>>> >>>>>> [condition][]- has valid {*attr*} = {*attr*} != null >>>>>> >>>>>> [condition][]- and has {*attr*} equal {value}= && {*attr*} == {value} >>>>>> >>>>>> But there are quite few of requirements like to have DSL rules that >>>>>> can generate expression as follows: >>>>>> exists Employee( >>>>>> attribute name not equals "xxx" >>>>>> && the attribute subOrdinate is not null >>>>>> && eval( >>>>>> the attribute $dept.getId() is not null >>>>>> && attribute $dept.getId() follows pattern "I" >>>>>> && ( ! (the attribute $dept.getHeadOfDpt() equals name) >>>>>> ) >>>>>> ) >>>>>> >>>>>> I am not sure if this is possible with DSL. Using '-' operator we >>>>>> cannot really add '&&', '||' conditions it by-default expands to ',' >>>>>> separated and conditions. And wirtting generic rules with and/or is not >>>>>> really dynamic to allow any number of expressions in evaluation. >>>>>> >>>>>> i am struggling to get this run since long time so any help/thoughts >>>>>> on this would be highly appriciable !!! >>>>>> >>>>>> Thanks & Regards, >>>>>> -Maverik >>>>>> >>>>>> _______________________________________________ >>>>>> rules-users mailing list >>>>>> rules-users@lists.jboss.org >>>>>> https://lists.jboss.org/mailman/listinfo/rules-users >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> rules-users mailing list >>>>> rules-users@lists.jboss.org >>>>> https://lists.jboss.org/mailman/listinfo/rules-users >>>>> >>>>> >>>> >>> >>> _______________________________________________ >>> rules-users mailing list >>> rules-users@lists.jboss.org >>> https://lists.jboss.org/mailman/listinfo/rules-users >>> >>> >> >> _______________________________________________ >> rules-users mailing list >> rules-users@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> > > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users > >
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users