[rules-users] String.format question in the RHS

Dean Whisnant dean at basys.com
Fri Aug 19 15:46:14 EDT 2011


Joe and Wolfgang,

Thanks for both of the suggestions.  I am initially going with the curly brace solution as I have users entering their rules through Guvnor and changing to from mvel is a bit more of a pain than teaching them to use the braces.

Not that my application is super-intense, but would I expect better performance from either method?

Again, Thank you guys for the rapid response and great solution

Dean

From: rules-users-bounces at lists.jboss.org [mailto:rules-users-bounces at lists.jboss.org] On Behalf Of Joe White
Sent: Friday, August 19, 2011 1:54 PM
To: Rules Users List
Subject: Re: [rules-users] String.format question in the RHS

I got it to work in mvel. You need to pass the second argument as an mvel array (note the curly braces) for it to recognize the method signature.

Here is a rule that works for me:

import java.util.Map;
import java.util.ArrayList;
import java.util.List;
import java.lang.String;
import com.recondotech.droolsTest.TestInput;
import com.recondotech.droolsTest.TestConts;
import com.recondotech.droolsTest.TestMap;

dialect "mvel"


rule "map list test rule"
    salience 155
    when
      TestInput(val : val!=null)
    then


      String result = String.format("%010d",{val});
      System.out.println(result);
    end

From: rules-users-bounces at lists.jboss.org<mailto:rules-users-bounces at lists.jboss.org> [mailto:rules-users-bounces at lists.jboss.org]<mailto:[mailto:rules-users-bounces at lists.jboss.org]> On Behalf Of Wolfgang Laun
Sent: Friday, August 19, 2011 9:34 AM
To: Rules Users List
Subject: Re: [rules-users] String.format question in the RHS

Do not use dialect "mvel".
-W
2011/8/19 Dean Whisnant <dean at basys.com<mailto:dean at basys.com>>
Hello,

Can anyone see an issue with the following RHS?  The String.format is failing.  I've copied it straight into java to verify my intentions and it works there.

What I'm trying to accomplish is to concatenate the string UH005 with a sequence number that is a fixed 10 digits, zero filled.  So if CurrentClaimSeq_48 is the number 123, then I expect that TRN02_Check...  would be populated with UH0050000000123.

Again, this is working fine in straight java, but not in a rule.  What am I missing?  Is there a better way to try to accomplish this in a rule?

rule "L1000_TRN02_UHC_BPA"
    dialect "mvel"
    when
        CLM_835_SUPP( seq : currentClaimSeq_48 != ( null ) )
        CLM_DET_LOAD( )
        trn : x221TransactionHeader_TRN_ReassociationTraceNumber( )
    then
        trn.setTRN02_CheckOrEftTraceNumber( "UH005" + String.format ("%010d", seq) );
end


Here are the data types of the two fields involved.

private Integer CurrentClaimSeq_48;

public String TRN02_CheckOrEftTraceNumber;

Thank you!

Dean

_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org<mailto:rules-users at lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/rules-users

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


More information about the rules-users mailing list