bpmn文件是activiti或flowable配置流程定义的文件,一般一个bpmn文件定义一个流程,文件为xml格式,各种元素级别如下:
注意如果是 flowable, 部分配置需改动。 如:
activiti:taskListener 需改为 flowable:taskListener
process: 流程定义根元素,代表了一个流程定义的开始,属性如下
属性名 | 含义 |
id | 流程唯一id,启动流程时需要 |
isExecutable | 流程是否可执行 |
name | 流程名称 |
type | 流程类型 |
isClosed | 流程是否已关闭,关闭不能执行 |
startEvent: 流程启动事件,一个process只能有一个,且必须为流程起始元素
属性名 | 含义 |
id | 启动节点id |
name | 启动节点名称 |
endEvent: 流程结束事件,一个process只能有一个,且必须为流程结束元素
属性名 | 含义 |
id | 结束节点id |
name | 节点名称 |
userTask: 流程中间用户任务,夹在startEvent与endEvent之间的节点
属性名 | 含义 |
id | 任务id,使用id操作任务 |
name | 任务名称 |
activiti:assignee | 任务所属用户,只能指定用户完成这个任务,即任务办理人 |
activiti:candidateUsers | 多个任务办理人 |
activiti:candidateGroups | 任务处理人候选组,处理人必须在这个组内 |
activiti:exclusive | 独家的,好像是在排它性网关中使用,意思应该是在有并行分支情况下,只会走其中一条 |
activiti:dueDate | 设置用户任务到期日期 |
activiti:priority | 用户任务优先级,0-100 |
extensionElements: userTask的子元素,用于扩展元素
activiti:taskListener: 扩展元素之一,用于监听某个任务的运行
属性名 | 含义 |
event | 监听的任务事件名,create、assignment(分配任务)、complete |
class | 任务监听器类,需要实现TaskListener |
sequenceFlow: 顺序流分为两种:标准顺序流 条件顺序流,其实就是连接两个节点的一条线
属性名 | 含义 |
id | 顺序流id |
sourceRef | 连线的起始节点id,即接近startEvent的节点 |
targetRef | 连线结束节点id,即接近endEvent的节点 |
conditionExpression: sequenceFlow子元素,根据表达式确定是否执行这一顺序流,一条顺序流只能联系两个节点
属性名 | 含义 |
xsi:type | 含义不知道,值为tFormalExpression |
子元素 | 表达式,${days <= 3} |
如果需要表达式判断,有多条顺序流连接了同一开始节点,一般这样的开始节点都是网关
exclusiveGateway: 排它性网关,即多个sequenceFlow以网关节点开始时,只根据条件执行其中一条流,其他流不再判断
虽然与userTask同属于节点,但是其不作为任务执行
属性名 | 含义 |
id | 节点id |
name | 节点名称 |
gatewayDirection | 网关方向,Unspecified |