bpmn檔案是activiti配置流程定義的檔案,一般一個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>
<bpmndi:BPMNDiagram>
<bpmndi:BPMNPlane>
<bpmndi:BPMNShape>
<omgdc:Bounds></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape>
<omgdc:Bounds></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape>
<omgdc:Bounds></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape>
<omgdc:Bounds></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge>
<omgdi:waypoint></omgdi:waypoint>
<omgdi:waypoint></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
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 |