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的值,自动地选择分支了.
除此之外,还可以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的值,自动地选择分支了.
相关文章推荐
- jbpm系列之五--使用decision节点判断分支情况
- jbpm系列之五--使用decision节点判断分支情况
- 关于git中cherry-pick的使用,选择一部分提交的代码合并到另一个分支
- jbpm的例子之四 使用decision
- DEDE模板中如何使用if进行多分支判断
- sklearn学习:使用sklearn进行特征选择(未完)
- 使用后缓冲区进行物体选择
- JBPM(三)——使用JBPM图形化流程设计器设计流程
- 08-jbpm工作流之Decision流程决策(判断活动执行方向)
- opencv3.2——小试牛刀(1):使用鼠标选择ROI进行SURF匹配
- 工作流引擎选择(为何使用activiti而不是jbpm)
- 使用指针方式进行数组排序 选择排序:
- 使用Expression进行查询拼接
- JBPM(五)——使用JBPM4 Service API控制流程
- 使用struts、hibernate、spring进行框架整合流程详细说明
- 使用sharesdk 进行第三方分享的流程
- 使用jenkins进行git多分支项目打包时的一个小问题
- JBoss 系列七十四:使用 BPMN2 Modeler 创建 jBPM 6 流程
- 服务器控件使用js进行验证(选择地调用后台事件)
- Python 文本挖掘:使用机器学习方法进行情感分析(一、特征提取和选择)