decision表达式返回类型为字符串的 向外转移的名字。 表 6.6. 决定属性 属性 类型 默认值 是否必须? 描述 将被运required行的指必须 定 脚本 指定expr中执行的脚本语言的 种类。 expr expression 从脚本引擎配置里得到的默认指定的expression lang 脚本语言language (default-expression-language) 可选 例子:
图 6.4. 流程处理的决定表达式例子
Map
6.2.3.3. Decision handler决定处理器
唯一性管理是继承了DecisionHandler接口的java类。 决定处理器负责选择 向外转移。
public interface DecisionHandler { String decide(OpenExecution execution); } 这个handler被列为decision的子元素。 配置属性和decision的handler的内容元素 可以在第 6.7 节 “用户代码”中找到。 下面是一个决定使用DecisionHandler的流程处理例子:
图 6.5. 流程处理的exclusive管理例子
public class ContentEvaluation implements DecisionHandler { public String decide(OpenExecution execution) { String content = (String) execution.getVariable(\ if (content.equals(\ return \ } if (content.equals(\ return \ } return \ } } 当你启动流程处理实例, 并为变量content提供值you're great时, ContentEvalation就会返回字符串good, 流程处理实例便会到达Submit document活动。
6.2.4. concurrency并发
流程的并发路径可以使用 fork 和 join 活动来建模。下面的表格描述了 join 的属性;fork没有特别的属性。 表 6.7. join属性:
是否默认值 必须? 传入转移的数目 属性 类型 描述 multiplicity 整数或表达式 在这个join活动之前需要到达的执行的数目, 可然后一个执行 会沿着选 join的单独的外向转移向外执行。 lockmode {none, read, upgrade, upgrade_nowait, write} hibernate的锁定模式,应用在上级执行, 来防可upgrade 止两个还没到达join的选 同步事务看到对方, 这会导致死锁。 6.2.4.1. 使用 fork实现并行分支
fork 活动允许将一个单独的流程路径分成 两个或多个分支,这些流程分支可以同步执行。
图 6.6. 流程处理的并发例子