3

droolsのwhen部分でinbuildキーワードmatchesを使用して、文字列と一致させたい。

例えば

rule "test"
when Foo( fooid : id )
     Bar( barid : id, barid not matches "ID=" + fooid + ", " + name )
then ...

"ID =" + fooid + "、" + nameについて文句を言っているため、機能していないようです。

しかし、すべてのパラメーターを削除すると、実行されます。つまり、「ID=」のみが残ります。

問題は、マッチングパターンにさらに多くのパラメータを含める方法にあるようですが、これをどのように解決しますか?

ありがとうございました

4

2 に答える 2

2

ルールを確認する前に、fooidとbaridの両方を保存できますか。可能かどうかわからない場合は、試してみてください。

string fooid = Food id // use correct syntax
string barid = Bar id // use correct syntax
string checkstring = "ID=" + fooid + "," + name

rule "test"  
    when   
        barid: String(this not matches "(?i)." + checkstring)  
    then  
        System.out.println(checkstring);  
    end  

ノート:

(?i)-大文字と小文字を区別しない

于 2012-12-13T06:57:36.480 に答える
0

ルール「PuneUser_Rule」

no-loop true
ruleflow-group "EvalLoopcondition"
when
    m:HelloProcessModel(userlocation in ("PuneUser"), count < 4)
then
    m.setLoopcondition(6);update(m);

終わり

ここでルールを確認します。PuneUserとcountが4未満の場合、ループはcountから6までのloopconditionまで実行されます。

このルールは、文字列がPuneUserであるかどうかを確認する場合にのみ適用されます。

于 2013-01-24T10:21:31.680 に答える