我是JBPM(第3版)的新手,我正试图实施(失败)一项决定。
我意识到我必须做这样的事情:
Cenario 1:
<decision name="XPTO Decision" expression="#{contextInstance.variables['XPTO Decision']}">
<transition name="To ActionA" to="ActionA"/>
<transition name="To ActionB" to="ActionB"/>
<transition to="ActionA"/>
</decision>
或者:
Cenario 2:
<decision name="XPTO Decision" >
<transition name="To ActionA" to="ActionA"/>
<transition name="To ActionA" to="ActionA"/>
<transition to="ActionA">
<condition expression="#contextInstance.variables['XPTO Decision'] ge 5"/>
</transition>
</decision>
或者:
Cenario 3:
<decision name="XPTO Decision" >
<handler class="bla.bli.MyDecisionHandler"/>
<transition name="To ActionA" to="ActionA"/>
<transition name="To ActionB" to="ActionB"/>
<transition to="ActionA"/>
</decision>
我做过类似的事情,但我的决定已经采取了同样的行动(ActionB)。
我不确定这个决定是如何运作的。寻找cenario 2我相信这就像是
“如果变量XPTO Decision ge(greates或equals(?))5则为Action A 别的动作B“。”是吗?
而且...... Cenario 3如何运作?处理程序如何确定哪个Action正确?
感谢。
答案 0 :(得分:1)
那是什么:#contextInstance.variables ['XPTO Decision'] ge 5 ?? 那种表达方式在哪种语言中起作用?您应该查看解释条件节点的jBPM3文档。如果contextInstance是您尝试评估的流程变量,它应该类似于: $ {contextInstance.variables ['asd']&gt; 5}并且该评估将返回“true”或“false”,这意味着您需要进行两次转换,一次称为“true”,另一次称为“false”
我很确定您没有要评估的contextInstance对象,因此如果您想直接评估流程变量,请尝试使用:$ {asd&gt; 5} 干杯
答案 1 :(得分:0)
我使用了以下代码:
<decision name="XPTODecision">
<description>
XPTO decision.
</description>
<transition to="XX" name="xx">
<condition> #{ body.Success} </condition>
</transition>
<transition to="YY" name="yy">
<condition> <![CDATA[#{body.NumberXX <= body.Maximum && theBody.Success}]]></condition>
</transition>
</decision>
<node name="XX">
...
</node>
<node name="YY">
...
</node>