浏览 2195 次
锁定老帖子 主题:jBPM4.0的用户指南(五-2)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-24
最后修改:2009-03-24
续第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活动。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |