春季 Webflow - 决策状态与操作状态
我正在使用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
因此,与实际上必须决定某些事情的a相反,an可以简单地用于执行一些代码。decision-state
action-state
<action-state id="myActionState">
<evaluate expression="myFunction()" />
<transition on="success" to="myNextState" />
</action-state>
我希望这能清除一些东西。
1. 令人困惑的情况
在Webflow中,在某些情况下,<决策状态>可以以类似于<操作状态>的方式使用。文档显示以下两个表达式是可互换的。
<action-state id=“moreAnswersRequired”>
<evaluate expression=“interview.moreAnswersRequired()” />
<transition on=“yes” to=“answerQuestions” />
<transition on=“no” to=“finish” />
</action-state>
和:
<decision-state id=“moreAnswersRequired”>
<if test=“interview.moreAnswersRequired()” then=“answerQuestions” else=“finish” />
</decision-state>
2. 何时使用什么?
鉴于<决策状态>只能处理<行动状态>处理的子集 - 我们在考虑两个候选人时应该从前者开始。
希望这有帮助。