bpmn文件是activiti或flowable配置流程定义的文件,一般一个bpmn文件定义一个流程,文件为xml格式,各种元素级别如下:

<?xml version="1.0" encoding="UTF-8"?>
<definitions>
<process>
<startEvent></startEvent>
<endEvent></endEvent>
<userTask>
<extensionElements>
      <activiti:taskListener></activiti:taskListener>
    </extensionElements>
</userTask>
<scriptTask/>
<manualTask/>
<receiveTask/>
<serviceTask/>
<businessRuleTask/>
<exclusiveGateway/>
<parallelGateway/>
<sequenceFlow>
<conditionExpression></conditionExpression>
</sequenceFlow>
<subProcess></subProcess>
<boundaryEvent/></boundaryEvent>
</process>
</definitions>

注意如果是 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