2012-02-06 72 views
2

我是JBPM(版本3)的新手,我试图实施(失败)一个决定。jBPM如何实施决策

我意识到,我必须做这样的事情:

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决策GE(的greates还是equals(?))5,然后采取行动A 其他行动B”。”是吗?

和..如何在cenario 3作品???如何处理程序决定哪些行动是正确的

感谢

回答

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> 
1

那么这是什么:?#contextInstance.variables [ 'XPTO决定'] GE 5 ?? 在那种表达式的语言是什么?你应该看看条件节点被解释的jBPM3文档d。如果contextInstance是您正在尝试评估的过程变量,它应该如下所示: $ {contextInstance.variables ['asd']> 5}并且该评估将返回“true”或“false”,这意味着你需要有两个转换,一个叫做“true”,另一个叫做“false”,另一个叫做“false”。我很确定你没有contextInstance对象来评估,所以如果你想直接尝试评估一个流程变量用:$ {ASD> 5} 干杯

+0

我在一些页面中的 'GE' EXPR看到分裂国家。其中一个问题是你说的,我没有一个contextInstance对象来评估。谢谢。 (当我有15个名誉时,我会为你的答案投票)。 – JMarques 2012-05-02 10:08:39