天天看點

BPMN配置檔案詳解

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