我已在spring web-flow 2中编写了如下流程。但是我收到错误无效内容。
<on-entry>
<decision-state="check">
<if test="some condition" then="x state" else="y state"/>
</decision-state>
</on-entry>
<view-state id="x state">
<evaluate expression="...."/>
</view-state>
是否有任何替代方法可以在入境时使用标签? 我们可以在入境时使用决策状态吗?
如果条件为真,我必须评估<on-entry>
状态下的方法。否则,它不应在<on-entry>
状态进行评估。
答案 0 :(得分:7)
首先,<on-entry>
只在一个州内有意义
第二,您无法在<on-entry>
您应该做的只是定义您的decision-state
,并且网络流将自动将其用作切入点。
<decision-state id="check">
<if test="some condition" then="xState" else="yState"/>
</decision-state>
<view-state id="xState">
<evaluate expression="...."/>
</view-state>
<view-state id="yState">
<evaluate expression="...."/>
</view-state>
让我们看看这个流程,输入点显然是check
,这是您的决策状态,因为x state
和y state
都被它调用。
所以你的流程图是
x状态
/
校验
\
y州
因为没有其他办法。我想这就是你想要的行为
[编辑]
这是一个有2个动作状态的例子:
<decision-state id="check">
<if test="some condition" then="xState" else="yState"/>
</decision-state>
<action-state id="xState">
<evaluate expression="expr1"/>
<transition on="success" to="zState"/>
</action-state>
<action-state id="ySate">
<evaluate expression="expr2"/>
<transition on="success" to="zState"/>
</action-state>
<view-state id="zState">
</view-state>
x动作状态
/(评估expr1)\
检查视图状态
\ /
y action-state
(评估expr2)
答案 1 :(得分:1)
是的,如果条件使用lambda x = y? “真实结果”:“虚假结果”
<view-state id="viewId">
<on-entry>
<evaluate expression="flowScope.varx == x ? Bean.dosomethingX() : Bean.somethingY()" result="flowScope.varResult" />
</on-entry>
</view-state>
或开始时
<on-start>
<evaluate expression="flowScope.varx == x ? Bean.somethingX(): Bean.somethingY() " result="flowScope.varResult" />
</on-start>