0

フローの条件でより複雑な式を実装するにはどうすればよいですか? 次のような単純な条件:

${i > 0}

便利で素晴らしいですが、次のようなもう少し複雑なことをする必要がある場合もあります。

${deadLine.after(now)}

はプロセス インスタンスで既に定義されているdeadLine型のオブジェクトであり、手段は であると仮定します。フローの条件でそのような式を実装するにはどうすればよいですか? Java では次のことができます。Datenownew Date()

ExpressionFactory factory = new ExpressionFactoryImpl();
SimpleContext context = new SimpleContext(new SimpleResolver());
factory.createValueExpression(context, "${deadLine}", java.util.Date.class).setValue(context, new java.util.Date());
factory.createValueExpression(context, "${now}", java.util.Date.class).setValue(context, new java.util.Date());
ValueExpression expr1 = factory.createValueExpression(context, "${deadLine.after(now)}", boolean.class);
System.out.println("Result = " + expr1.getValue(context));

しかし、フローの条件で同じことを行うにはどうすればよいでしょうか?

4

1 に答える 1

2

deadLineオブジェクトであるという名前のプロセス変数がある場合、次のjava.util.Dateように記述できます。

${deadLine.after(now())}

これが機能するnowのは、Camunda が式コンテキスト[1]で関数を提供するためです。

複雑な決定ロジックを評価するには、他にもいくつかの方法があります。次に例を示します。

  • Java で決定をコーディングする Spring または CDI Bean を呼び出す
  • 条件が評価される前にスクリプト/サービス タスクまたは実行リスナーを使用して、決定ロジックを実行し、結果をブール プロセス変数に格納します。

これを読むことをお勧めします: http://docs.camunda.org/7.3/guides/user-guide/#process-engine-expression-language-variables-and-functions-available-inside-expression-language

于 2015-08-31T07:53:25.773 に答える