令 结果 、分支和连接 , , 无条件结果
对于每一个动作来讲 , 必须存在一个 。一个 是一系 列指令 , 这些指令将告诉 下一个任务要做什么 。这包括使工作流从 一个状态切换到另一个状态 。
有条件结果
是 的一个扩 展 。它 需要 一个 或 多个 子标签 。第一个 为 的 使用 或 类型 , 会指 明发生 切换 的步骤 , 这个切换步骤 的发生是 由于某个用户执行 了某个动作 的结果 导致 的 。
三种不 同的 或
一个新 的 、单一的步骤和状态的组合 。 一个分裂成两个或多个步骤和状态的组合 。
将两个不 同的组合合成一个新 的 、单一的步骤和状态 的组合 。
每种不同的 对应了不同的 描述 。注意 通常一个 或一七 不会
再导致一个 药 的发生 。令 自动步骤
有 的时候 ,需要一些动作可 以基于一些条件 自动地执行 。为 了达到这个 目的, 可 以在 中加入 “ ’’属性 。流程将考察这个动作 的条件和 限制 , 如果 条件符合 , 那么将执行这个动作 。 是 由当前的调用者执行的, 所 以将 对该动作 的调用者执行权 限检查 。
令 整合抽象实例 城
在核心实体 中 , 例如 “ ”或 “ ”, 在 内部创建一个新 的属性
。这样 , 当新 的 “ ”或 “ ”被创建 的时候 , 它能够和 一个 实例关联起来 。那么, 应用系统可 以通过 查找到
这个 实例并且得到这个 的信 息和动作 。 令 工作流实例状态
为整个 实例指定一个状态是很有帮助 的, 它独立于流程 的执行步 骤 。 提供一些 实例 中可 以包含 的“ 二 ” ,
, , 和 。当一个工作流实例被
创建的时候 , 它将处于 状态 。然后 , 只要一个动作被执行 , 它就会 自 动的变成 状态 。如果调用者没有 明确地改变实例的状态 , 工作流将 一直保持这个状态直到工作流结束 。当工作流不可能再执行任何其他 的动作 的时 候 , 工作流将 自动 的变成 状态 。然而 , 当工作流处于
状态 的时候 , 调用者可 以终止或挂起这个工作流 设置工作流 的状态为
或 。一个终止 了的工作流将不能再执行任何动作 , 而且将永远保 持着终止状态 。一个被挂起 了的工作流会被冻结, 也不能执行任何的动作 , 除非
它的状态再变成 。
的持久化方式
提供 了一种可灵活配 置的持久化机制 , 这保证 了存储工作流相 关数据时可 以有多种选择 。 提供 了以下 内置的存储方法 内存 默
认 , , , , 以及 。还可 以通过实
现 丫 接 口来实现你 自己的工作流存
储方式 。
的配置方式
关于配置 , 试 图做到尽可 能的灵活 。在 中只需要一个文
件 。这个文件指定持久化方法 , , 以及用
来 读 取 工 作 流 定 义 的 。 默 认 的 是
叩 卿 仃 。这个 从
依 次装 入文件 , 每个文件包含 到任意 的工作流 定义文件 的连接 , 所有这些都是 形式 的 。
包用途分析
,
叮该 包 为 整 个 引 擎 提 供 核 心 接 口 。 例 如 叩 ” 接 口, 可 以说 , 实际开发中的大部分工作 都是围绕该接 口展开的,该接 口有 , ,
三个实现类 。
,
叮该包有两个类 , 与 。
不支持事务 , 尽管依赖持久实现 , 事务也不能包裹它 。 在 实际开发 中很少使用 。
叩 卿
该包有一个接 口和两个该接 口的实现类 。在 以前, 状态 由 多个地方的静态字段维护 , 这种方式很方便 ,但是有很多缺 陷和约束 。最主要 的 缺 点是无法通过不 同配置运行多个 实例 。实现类
用于一般 的配置文件载入 。而 则是让 容器管理配置信 息 。
” 叮
该包有两个接 口 和 。该包 的若干类 中, 最重 要 的是 ,该类和 的作用一样 ,是 的核心 , 并利用 容器管理事务, 也作为工作流 的包装器 。
”叮
该包有若干类 , 用得最多的是火沐 , 如果在工作流 引擎运行 时需 要 了解指定的动作 、步骤的状态 、名字等信息时, 这些描述符会起到很大作用 。
丫 叮 几
和 在很多方面非常相似 , 除了需要调用
的 来包装事务 。
丫
该包 主要 为查询 而设计 , 但 不是所 有 的工作流存储 都支 持 查询 。通 常 , 和 都 支 持 查 询 , 而 内存 工 作 流 存 储 则 不 支 持 。值 得 注 意 的是
存储不支持混合型查询 例如 , 一个查询 同时包含 了 上下文
和 上下文 。执行一个查询 , 需要创建 竹实例 ,
接着调用 对象 的 方法来得到最终查询结果 。 卿
通过 来支持远端调用 。这种调用借助 实现 。
该包可 以说是 与持久层打交道 的途径 , 如 当前工作流 的实体 , 其 中包括 , , , 仔 , , , 盯 。
卿
该 包 是 的工 具 包
,
包 括 了对, , ,
, 州 的支持 。表结构分析
工作流主表 , 存放工作流名称和状态 , 见表 一 。
表 一 工作流主表