0

MVEL を使用してマルチマップに対してルールを評価するにはどうすればよいのでしょうか。

すなわち:

rule-> "foo" == "200"

fooコンテキスト内の の可能な値[100, 200, 300]

どれが可能な値になるのかわからないので、それらをルールの一部として含めることはできません。

理想的には、次のようなことができるようになりたいです。

List<String> valueList = new ArrayList<String>();
valueList.add("100");
valueList.add("200");

List<String> otherList = new ArrayList<String>();
otherList.add("otherValue");

Map<String, List<String>> context = new HashMap<String, List<String>>();
context.put("foo", valueList);
context.put("other", otherList);

MVEL.eval("foo == 200", context)
4

1 に答える 1

0

プレーンな Java コードを使用することもできます。これを試してみましたが、問題なく実行されます。Java コードを Mvel に渡すだけで、結果が得られます。

実行時に関数を文字列に追加できます。ロジックでルール/条件を作成するだけです。太字部分は私たちが書いたものです。

public Boolean evaluate(Map contextMap){

   **ClassA A = (ClassA) contextMap.get("contextObjectClassA");
    List<ClassB> classb = A.getclassb();
            if(null!=classb  && classb .size()>0){
                    return true;
                }else{
                return false;
            }**
    }
于 2013-01-28T05:10:11.183 に答える