jBPM如何实施决策

时间:2012-02-06 12:39:51

标签: jbpm

我是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正确?

感谢。

2 个答案:

答案 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>