[rules-users] using "contains" against a List<BigInteger>

Wolfgang Laun wolfgang.laun at gmail.com
Wed Feb 16 11:44:55 EST 2011


It's Java, after all...

The "contains" operator requires a Collection (or array) and an
Object. A plain numeric literal won't result in a BigInteger without
you providing a hint.

You can write
        $performance : Performance( calcScore contains (BigInteger.valueOf(6)) )
or
    dialect "mvel"
    when
        $performance : Performance( calcScore contains (6I) )   # capital "i"

All of these (and your eval) use magic numbers, so my preferred way of
dealing with this would be s.th. like this, using a singleton
Parameter fact for this and other values:

   when
       Parameter( $bis: bigIntSix )
       $performance : Performance( calcScore contains $bis )

-W


2011/2/16  <Travis_Smith at bnz.co.nz>:
>
> Hi,
>
> A newbie question I'm afraid. I've been unsuccessful searching the
> mailing-list archive (and google) for this.
>
> I'm trying to simplify rule-writing for Statistical Analysts to be able to
> write rules. I'm hoping to achieve this without resort to DSLR files and a
> DSL if possible as we currently need them for nothing else
>
> One of the situations I have is the following:
> --------------------
> when
> $performance : Performance(
>         eval(calcScore.contains(BigInteger.valueOf(6)))
> )
> then
> [...]
> --------------------
>
> That works absolutely fine: CustAccPerf being a having several members,
> including an ArrayList<BigInteger> called calcScore
>
> Howwever I'd like to rewrite it like:
> --------------------
> when
>
> $performance : Performance( calcScore contains 6 )
> then
> [...]
> --------------------
>
> Given the support for BigInteger & BigDecimal type comparison, and the
> structure of the 'contains' operator, I couldn't see why this wouldn't work.
>
> If someone could explain this would be excellent - for now I'm gong ahead
> with the eval, but from a non-technical usability POV the latter form would
> be far preferable: I'd prefer that the users don't have to worry about eval
> or BigInteger, and while I realize it's not possible (currently) to
> eliminate that altogether, I would like to eliminate as many of the (to
> quote) "meaningless tech stuff" questions as possible.
>
> Alternately if some kind person wants to tell me a better way of structuring
> that rule so I can use it as a template, then that'd be welcome also.
>
> Unfortunately we're dealing with a feed from a 3rd party system so
> restructuring the data is not a desirable option.
>
> Thank you for your time,
> -Trav
>
> Travis Smith
> Analyst Programmer
> Development Centre
> BNZ
>
> CAUTION - This message may contain privileged and confidential information
> intended only for the use of the addressee named above. If you are not the
> intended recipient of this message you are hereby notified that any use,
> dissemination, distribution or reproduction of this message is prohibited.
> This email was sent by the Bank of New Zealand. You can contact us on
> 0800 ASK BNZ (0800 275 269). Any views expressed in this message are those
> of the individual sender and may not necessarily reflect the views of Bank
> of New Zealand.
>
> _______________________________________________
> 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