您的位置:首页 > 产品设计 > 产品经理

jBPM Decision中使用Expression来进行流程分支选择

2010-03-09 11:43 330 查看
通常,在Decision中通过实现DecisionHandler接口的Handler类来进行分支选择.
除此之外,还可以Decision中还可以使用Expression(表达式).
Expression类似JSP中的EL表达式,不同之处是EL是${...},而Expression是#{...}的.除了使用在Decision中,还可以使用在
Action,assingments中.具体的语法可以参考这里http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html
在jBPM中,jBPM中的流程变量,任务变量都可以被Expression访问到.这个Expression必须返回一个String类型的值,这个值对应Decision可选的分支中的一个分支的name.
下面通过一个例子来看看如何在Decision中使用Expression表达式
流程定义文件:
<?xml version="1.0" encoding="UTF-8"?>
<process-definition
xmlns="urn:jbpm.org:jpdl-3.1" name="decproc">
<start-state name="start">
<task name="task">
<controller>
<variable name="var1" access="read,write,required" mapped-name="变量1"></variable>
</controller>
</task>
<transition name="" to="判断"></transition>
</start-state>
<decision name="判断" expression="#{var1>10?'tr1':'tr2'}">
<transition name="tr1" to="判断为真"></transition>
<transition name="tr2" to="判断为假"></transition>
</decision>
<task-node name="判断为真">
<task name="task1"></task>
<transition name="" to="end1"></transition>
</task-node>
<task-node name="判断为假">
<task name="task1"></task>
<transition name="" to="end1"></transition>
</task-node>
<end-state name="end1"></end-state>
</process-definition>

expression="#{var1>10?'tr1':'tr2'}"的意思就是如果任务变量的值大于10,则流程从"tr2"分支流向"判断为真"的节点去;如果小于10,则从"tr1"分支流向"判断为假"节点去
启动这个流程,给var1赋一个类型为Integer(或者其他数值类型)的值,decision就可以根据var1的值,自动地选择分支了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: