1 概述
jPDL(jBPM Process Define Language,jBPM 流程定义语言)是 jBPM4 独有的、最重要的资产。它的设计目标是尽量精简和尽可能地对开发者友好,即可以很简洁地描述业务流程的定义和图形结构,最终使得业务分析人员和流程开发者能够使用 “同一种语言说话”,极大地减少了他们之间的交流障碍。而且 jPDL 还具有明晰的语义和良好的可扩展性。
一个典型的 jPDL 流程定义文件是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<process name="process" xmlns="http://jbpm.org/4.4/jpdl">
<start g="502,41,48,48" name="start1">
<transition g="-56,-22" name="to state1" to="state1"/>
</start>
<state g="482,113,92,52" name="state1">
<transition g="-52,-22" name="to task1" to="task1"/>
</state>
<end g="504,313,48,48" name="end1"/>
<task assignee="Alex" g="481,211,92,52" name="task1">
<transition g="-50,-22" name="to end1" to="end1"/>
</task>
</process>
注意: g 属性表示的是元素的坐标,它不是必需的,即便不定义坐标,仍然能够被工作流引擎解析与执行。
几乎所有的活动都会包含以下属性和元素。
通用的活动属性:
属性 | 类型 | 默认值 | 是否必需 | 描述 |
---|---|---|---|---|
name | 字符串 | 无 | 必需 | 活动的名称 |
通用的活动元素:
元素 | 个数 | 描述 |
---|---|---|
transition | 0..* | 定义活动的流出转移 |
以后我们会介绍 jPDL 中的各个活动,为了方便识别,我们对活动、属性及元素等名称使用英文原名来描述。
2 process(流程)
在 jPDL 中 process 元素是是每个流程定义文件的顶级元素,即任何流程定义都必须以如下的形式开始和结束:
<process>
...
</process>
process 元素有这些属性:
属性 | 类型 | 默认值 | 是否必需 | 描述 |
---|---|---|---|---|
name | 文本 | 无 | 必需 | 在对最终用户展示和交互时,作为流程显示的标签 |
key | 字母、数字与下划线的组合 | 如果省略,key 会根据 name 自动生成,name 中的非字母以及非数字的字符会被替换为下划线 | 可选 | 用来标识不同的流程定义。拥有同一个 key 的流程定义允许有不同的 version。对于所有已发布的统一流程定义文件的各个版本来说,“key:name” 的组合必须是完全一样的。 |
version | 整型 | 同一个流程定义(即 “key:name” 相同),后部署的会比先部署流程定义的 version 加 1;如果是第一次部署,version 从 1 开始。 | 可选 | 标识同一流程定义的不同版本。 |
process 元素有这些子元素:
元素 | 个数 | 描述 |
---|---|---|
description | 0..1 | 流程的描述 |
activities | 1..* | 活动元素组。流程定义中会有很多种不同类型的活动,例如start、state、decision 等,但至少要有 1 个是 start 类型的活动。 |