Spring WebFlow 2を使用していますが、決定状態とアクション状態の違いを知りたいです。
私は読んでいて、決定状態と行動状態の違いを理解していません。ビューステートが入力用のjspを表示することを理解していますが、決定ステートとアクションステートの違いは何ですか?
アクション状態よりも決定状態を使用する必要があるのはなぜですか?決定状態よりもアクション状態を使用する必要があるのはなぜですか?
誰かがこれに光を当てることができますか
通常、_decision-state
_はブール条件付きでのみ使用されます。それが何が起こるかについては、より明確で簡潔です。
例えば、
_<decision-state id="myDecisionState">
<if test="myBooleanFunction()" then="resultIsTrueState" else="resultIsFalseState" />
</decision-state>
_
これは、次のように_action-state
_を使用して複製できます。
_<action-state id="myActionState">
<evaluate expression="myBooleanFunction()" />
<transition on="yes" to="resultIsTrueState" />
<transition on="no" to="resultIsFalseState" />
</action-state>
_
ただし、違いは、_action-state
_がブール値で動作するだけでなく、String (string value)
、Boolean (yes/no)
、Enum (enum name)
で遷移をトリガーして他の結果をもたらす可能性があることです。 success
と見なされます。
したがって、実際には何かを決定する必要があるである_decision-state
_とは対照的に、_action-state
_は単にコードを実行するために使用できます。
_<action-state id="myActionState">
<evaluate expression="myFunction()" />
<transition on="success" to="myNextState" />
</action-state>
_
私はそれが物事をクリアすることを願っています。
1。紛らわしいケース
Webflowでは、<decision-state>を<action-state>と同様に使用できる場合があります。 documentation は、以下の2つの式が交換可能であることを示しています。
<action-state id = "moreAnswersNeeded">
<evaluate expression = "interview.moreAnswersNeeded()" />
<transition on = "yes" to = "answerQuestions" />
<transition on = "no" to = "finish" />
</ action-state>
そして:
<decision-state id = "moreAnswersNeeded">
<if test = "interview.moreAnswersNeeded()" then = "answerQuestions" else = "finish" />
</ decision-state>
2。いつ何を使うの?
<decision-state>が処理できるのは<action-state>のサブセットのみであるとすると、2つの候補を検討するときは、前者から始める必要があります。
お役に立てれば。
それらは非常に似ています。任意の決定状態をアクション状態として記述できます。決定状態は、条件付き遷移に便利で簡潔な構文を提供するだけです(if
要素を使用)。結果に応じて1つの式と遷移のみを評価する必要がある場合は、決定状態を使用します。それ以外の場合(たとえば、評価する式が複数ある場合)、アクション状態を使用します。
HTH
ラムダ条件を使用できます
例:x = y? 「真の結果」:「偽の結果」
<view-state id="viewname">
<on-entry>
<evaluate expression="flowScope.varx == x ? Bean.somethingX : Bean.somethingY " result="flowScope.varResult" />
</on-entry>
</view-state>
状態を覚えている