续第5章 JPDL
5.2.3. exclusive唯一性
在多个选择中选择一条路径。也可以当做是一个决定。一个外挂活动拥有很多个向外的跳转。当一个流向到达一个外挂活动时,会自动评估并决定交给哪个向外的跳转。
5.2.3.1. exclusive唯一性条件
exclusive中会运行并判断每一个transition里的判断条件。当遇到一个嵌套条件是true或者没有设置判断条件的跳转,那么跳转就会被运行。
表 5.5. exclusive.transition.condition 属性
属性 类型 默认值 是否必须? 描述
expr expression required必须 将被运行的指定脚本
lang expression language 从第 7 章 Scripting脚本配置里得到的默认代表性语言(default-expression-language) 可选 指定expr中执行的脚本语言的种类
例子:
流程处理的唯一性条件例子
图 5.3. 流程处理的唯一性条件例子
<process name="ExclusiveConditions" xmlns="http://jbpm.org/4/jbpdl">
<start>
<transition to="evaluate document" />
</start>
<exclusive name="evaluate document">
<transition to="submit document">
<condition expr="#{content=="good"}" />
</transition>
<transition to="try again">
<condition expr="#{content=="not so good"}">
</transition>
<transition to="give up" />
</exclusive>
<state name="submit document" />
<state name="try again" />
<state name="give up" />
</process>
5.2.3.2. exclusive expression唯一性表达式
exclusive表达式返回类型为字符串的向外跳转的名字。
表 5.6. 外挂属性
属性 类型 默认值 是否必须? 描述
expr expression required必须 将被运行的指定脚本
lang expression language 从第 7 章 Scripting脚本配置里得到的默认指定的脚本语言(default-expression-language) 可选 指定expr中执行的脚本语言的种类
例子:
流程处理的外挂代表例子
图 5.4. 流程处理的外挂代表例子
<process name="Poolcar" xmlns="http://jbpm.org/4/jpdl">
<start>
<transition to="How far?" />
</start>
<exclusive name="How far?" expr="#{distance}">
<transition name="far" to="Big car" />
<transition name="nearby" to="Small car" />
</exclusive>
<state name="Big car" />
<state name="Small car" />
</process>
当你启动一个新的流程实例,代码如下:
Map<String,Object> variables = new HashMap<String,Object>();
variables.put("distance","far");
Execution execution = executionService.startProcessInstanceByKey("Poolcar", variables);
然后流向会执行Big car
5.2.3.3. Exclusive handler唯一性管理
唯一性管理是继承了ExclusiveHandler接口的java类。唯一性管理负责向外跳转的选择。
public interface ExclusiveHandler{
String select(OpenExecution execution);
}
这个handler被列为exclusive的子元素。
表 5.7. exclusive.handler 属性
属性 类型 默认值 是否必须? 描述
class classname required必须 handler的完整类名
下面是一个唯一性使用ExclusiveHandler的流程处理例子:
流程处理的exclusive管理例子
图 5.5. 流程处理的exclusive管理例子
<process name="Exclusive Handler" xmlns="http://jbpm.org/4/jpdl">
<start>
<transition to="exclusive document" />
</start>
<exclusive name="exclusive document">
<handler class="org.jbpm.examples.exclusive.handler.ContentEvaluation" />
<transition name="good" to="submit document" />
<transition name="bad" to="try again" />
<transition name="ugly" to="give up" />
<state name="submit document" />
<state name="try again" />
<state name="give up" />
</exclusive>
</process>
下面是ContentEvalation类:
public class ContentEvalation implement ExclusiveHandler {
public select(OpenExecution execution) {
String content = execution.getVariable("content");
if (content.equals("you're great")) {
return "good";
} else if (content.equals("you gotta improve")) {
return bad;
}
return "ugly";
}
}
当你启动流程处理实例,并为变量content提供值you're great时,ContentEvalation就会返回字符串good,流程处理实例便会到达Submit document活动。
分享到:
相关推荐
《JBPM4.0用户指南》-电子文档下载PDF.zip《JBPM4.0用户指南》-电子文档下载PDF.zip《JBPM4.0用户指南》-电子文档下载PDF.zip
jBPM4.0用户指南--绝对的中文版--好不容易打包制作的,希望对大家有帮助
jbpm4.0 中文手册-用户指南 绝对真实
jbpm4.0用户指南(中文版),最新的,值的一看
JBPM4.0用户指南(中文).pdf JBPM是一个可扩展、灵活的流程引擎,它可以运行在独立的服务器上或者嵌入任何应用Java中
是我花了好久才找到的资源,开源工作流产品JBPM的开发指南,是本人在学习JPBM过程中所使用的资料,希望能给各位开发者在使用JBPM过程中带来帮助. 想要了解jbpm的不可多得的资料,也是我很多同事都看过的。从配置开发...
jbpm4.0 中文手册-开发者指南 绝对真实
jBPM4.0用户指南中文版。最好使用firefox浏览这份教程。 在使用internet explorer的时候会有一些问题。
jBPM-4.0中文开发指南 jBPM-4.0中文开发指南 jBPM-4.0中文开发指南
这个文件是可以打开的,下载后,把文件名中类似这样的:“%E7%94%A8%” 去掉,打开的时候,把“是否每次打开都询问”的勾取消掉。然后文件类容就出来了。
这个文件是可以打开的,收集了网上有关jBPM4、jBPM3的资料,是比较完整的
jBPM-4.0中文开发指南,jbpm开发必备
java,JBPM工作流开发指南,jboss不错
JBPM4.4工作流用户手册(适合于初始学JBPM4的人),本用户下还有JBPM4.4开发指南(适合于有点经验的人),2011-03-28参考自http://www.family168.com/tutorial/jbpm4.0/html/index.html,可直接浏览网站, ...
Drools4.0官方使用手册中文 jBPM4_0的用户指南