1

現在、独自の製品とフレームワークを構築しています。内部で MVEL API を使用して式を評価するルール エンジンがあります。

最近、1 つの問題が発生しました

ネストされた方法で多くの条件を持つ「ルール」があるとしましょう。

( A && ( B && ( C && ( D && ( E && F ) ) ) )

上記のようなより長い表現があるとしましょう。A、B、C などの代わりに、ognl のようなものがあります (A -> contextObjectLoanApplication.Customer.personinfo.age)

この式をコンパイルすると、式をコンパイルするのにほぼ 3 ~ 4 時間かかります。パーサーまたはコンテキストで何かを設定でき、MVEL がより最適化された方法でそれを処理する方法はありますか。

この式を生成する API 全体を変更してからコンパイルする必要があるかもしれません。

MVELがこれを処理できるかどうか、ただ興味があります.

ありがとう

4

2 に答える 2

1

MVEL のパーサーはナイーブまたは壊れており、かっこの深さに関して指数時間でそのような式を解析します。

(A && (B && (C && (D && (E && F)))))

彼らがパーサーを修正しない限り、あなたにできることは何もありません。

次のネストされた式も指数関数的に解析されます。

(A ? B : (C ? D : (E ? F : (G ? H : (I ? J : K)))))

(MVEL 2.1.7 以降)

于 2014-01-28T15:19:34.003 に答える
0

MVEL-301 で発行されました

于 2014-03-19T15:12:12.817 に答える