Spring WebFlow 2 を使用していますが、決定状態とアクション状態の違いを知りたいです。
私は読んでいて、意思決定状態と行動状態の違いを理解していません。ビューステートが入力用の JSP を表示することは理解していますが、意思決定状態とアクション状態の違いは何ですか?
アクション状態よりも意思決定状態を使用する必要があるのはなぜですか? 決定状態よりもアクション状態を使用する必要があるのはなぜですか?
誰かがこれに光を当てることができますか
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>と同様の方法で使用できる場合があります。ドキュメントは、以下の2 つの式が交換可能であることを示しています。
<action-state id="moreAnswersNeeded">
<evaluate expression="interview.moreAnswersNeeded()" />
<transition on="yes" to="answerQuestions" />
<transition on="no" to="finish" / >
</アクション状態>
と:
<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>
状態を覚えている