0

MVEL を使用して、数式である式を実行しています。式はこの形式です

10 *利用可能SI

ゲッターとセッターを持つパラメーターとして availableSI を持つ DataObject があります。

MVEL.eval(expression,DataObject) と言うと、dataobject から availableSI の値を見つけて式を実行し、最終結果を返します。

ただし、使用可能なSIのランタイム値を持つ式が必要です(avaiableSIが1000の場合)、10 * 1000

助けが必要。

4

1 に答える 1

0

コンストラクターで関数を呼び出して、動的な値を取得します。

public class Rules extends SimpleVariableResolverFactory
{    
    public Rules()
    {
            super(new HashMap());
            String newValue = callToYourFunction();
            super.createVariable("availableSI" , newValue);
    } 

    public static void main(String[] argv)
    {
          Rules arf = new Rules();
          String expression="avaiableSI * 10"; //Your expression
          Serializable compiledExpression = MVEL
                            .compileExpression(expression);

          System.out.println(expression + " == "
                            + MVEL.executeExpression(compiledExpression, arf)
    }
}
于 2012-09-24T13:52:00.713 に答える