[rules-users] Test if String endsWith()

Wolfgang Laun wolfgang.laun at gmail.com
Tue Nov 13 03:02:15 EST 2012


Which version are you using?

5.4.0 works for me, using either
   Message(  message.endsWith( "World" ) )
or
   Message(  message str[endsWith] "World"  )

-W

On 13/11/2012, Omar Baqueiro <baqueiro at ooyala.com> wrote:
> Follow up from my question. I have read more from the Drools expert
> guide (
> http://docs.jboss.org/drools/release/5.2.0.Final/drools-expert-docs/html_single
> ), and in Section 5.8.3.3.10.9 it talks about the str operator:
>
> Message( routingValue str[endsWith] "R2" )
>
>
> However, when I try to use the str operator I get an error:
>
> no viable alternative at input 'str' in rule "Check the items of the
> list and remove the ones that satisfy the condition" in pattern
> OfferWrapper[19,26]: [ERR 102] Line 19:26 mismatched input '
> "endsWith" ' expecting ']'
>
> I tried both using endsWith with quotes and without quotes and I get a
> similar error in both cases.
>
> Mu rule is:
>> import java.lang.String
> rule "Check the items of the list and remove the ones that satisfy the
> condition"
>      lock-on-active
>  when
>      $wrapper : Wrapper(
>                  id == "itemId",
>                  email str[endsWith] "@email.com",
>                  $items : list)
>      $item    : Map() from $items
>  then
>      $items.remove($item)
>  end
>
>
> Any clue on why am I getting an error?
> Thanks.
> O.
>
> On Mon, Nov 12, 2012 at 4:44 PM, Omar Baqueiro <baqueiro at ooyala.com> wrote:
>>
>> Hello,
>>
>> I am trying to evaluate certain data with Drools based on the end of a
>> string. So far, I have got the following mvel based DRL ( My Wrapper class
>> has the fields (with all their accessors) id, email and list):
>>
>> ---
>> rule "Check the items of the list and remove the ones that satisfy the
>> condition"
>>     lock-on-active
>> when
>>     $wrapper : Wrapper(
>>                 id == "itemId",
>>                 email.endsWith("@email.com") == true,
>>                 $items : list)
>>     $item    : Map() from $items
>> then
>>     $items.remove($item)
>> end
>> ----
>>
>>
>> However, when trying to apply this rule, I get the  error: no viable
>> alternative at input '"@gmail.com"' in rule ...".
>>
>> What is the correct way to test whether a string ends with certain text
>> (i.e, using the String.endsWith function using MVEL)
>>
>> Thanks for any help!
>>
>>
>> --
>> --
>> Omar Baqueiro Espinosa
>> Software Engineer |
>> baqueiro at ooyala.com | +52 (33) 3817-0861
>> www.ooyala.com | blog | @ooyala
>>
>
>
>
> --
> --
> Omar Baqueiro Espinosa
> Software Engineer |
> baqueiro at ooyala.com | +52 (33) 3817-0861
> www.ooyala.com | blog | @ooyala
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>


More information about the rules-users mailing list