Activiti基礎教程--02(初識Activiti流程設計工具、瞭解Activiti bpmn圖表對應的XML檔案)
一、初識Activiti流程設計工具
我們以後開發流程 首先要做的,就是要設計好流程圖;一個專案可能會包括多個流程圖;
所以我們在src/test/resources原始檔夾下新建一個包diagrams,以後所有的流程圖檔案(bpmn檔案和生成的png檔案)都放在這個包下;然後我們在diagrams上右擊,New - > Other
我們選擇 Activiti下的 Activiti Diagram 我們要開始開發一個Activiti流程圖表;
File name改成helloWorld 然後點選Finish;
這裡 中間區域,是我們用來繪製流程圖示的。右側是繪製流程圖示的工具箱,下面的Properties是屬性檢視,我們目前看到的是整個helloWorld流程圖的屬性;
這裡我們可以把Process(流程)的Id和Name改下(後面我們可以通過程式碼能夠獲取到);
然後我們來畫流程圖,任何流程,都必須有一個開始事件節點和結束事件節點;
我們在右側的工具箱裡會看到有個StartEvent和EndEvent。我們先點下 然後拖到中間的繪圖區域即可;當然每個節點的屬性我們都可以看到,而且可以設定,我們可以點選選中一個節點,然後在屬性檢視上看到所以值;
接下來我們在搞一個使用者任務節點(我們以後開發最常用的節點),我們拖一個到中間繪圖區域;
這裡的任務節點,必須要有一個人去處理這個任務,而且我們在實際開發中,根據實際業務,給這個使用者任務節點取個名字,
當然我們這裡是初識,所以就搞個HelloWorld名字,然後分配給“java1234_小鋒”這個人;
名字修改 我們修改下Name屬性值:
我們再把任務分配給“java1234_小鋒”:
我們這個helloWorld流程比較簡單,就一個任務節點,最後我們就是連線,我們選擇右側下方的Connection下的SequenceFlow 然後只要從兩個地方拉一下即可,大家可以自己摸索下,操作性的東西,不難;即可完整節點之間的連線;
這樣我們就完整了最簡單的流程圖設計,我們這個流程圖是沒有實際意義的,僅僅是初識工具而搞的例項;
我們可以看到設計好後,左上角是有一個未儲存的(*)提示,我們ctrl+s儲存下。這時候,我們會在disgrams包下發現
自動生成了一個對應的png檔案;
我們點開它看下,
我們看到,其實就是流程的一個圖片,還個圖片在流程開發的時候,會用到;
這個自動儲存是前面我們加了設定才會自動生成的;
這地方要大勾,才會自動生成圖片;
OK今天就到這裡。後面我們要來熟悉下Activiti給我們提供的service介面,以及其他開發api。
二、瞭解Activiti bpmn圖表對應的XML檔案
前面我們繪製了一個簡單的流程圖表,這個圖表的本質,其實就是一個xml檔案。我們大體熟悉下結構,不需要做太深入的研究;
我們右擊helloWorld.bpmn檔案,open with -> XML Editor ;
XML如下:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:activiti="http://activiti.org/bpmn"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
typeLanguage="http://www.w3.org/2001/XMLSchema"
expressionLanguage="http://www.w3.org/1999/XPath"
targetNamespace="http://www.activiti.org/test">
<process id="myFirstProcess" name="My First process" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<endEvent id="endevent1" name="End"></endEvent>
<userTask id="usertask1" name="HelloWorld" activiti:assignee="java1234_小鋒"></userTask>
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
<sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_myFirstProcess">
<bpmndi:BPMNPlane bpmnElement="myFirstProcess" id="BPMNPlane_myFirstProcess">
<bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
<omgdc:Bounds height="35.0" width="35.0" x="200.0" y="40.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
<omgdc:Bounds height="35.0" width="35.0" x="200.0" y="200.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
<omgdc:Bounds height="55.0" width="105.0" x="165.0" y="110.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="217.0" y="75.0"></omgdi:waypoint>
<omgdi:waypoint x="217.0" y="110.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="217.0" y="165.0"></omgdi:waypoint>
<omgdi:waypoint x="217.0" y="200.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
這裡definitions是一個總的節點;下面process是流程節點,bpmndi:BPMNDiagram是流程圖表定義節點;
bpmndi:BPMNDiagram這個節點裡面就不用看了。是定義圖示的位置,結構的。
我們重點看下process節點:
這裡我們看到的有三個節點,開始節點,結束節點,使用者任務節點。這裡還有兩根連線,
開始節點- > 使用者任務節點 連線;
使用者任務節點 -> 結束節點 連線;
對應到xml 是5個dom節點;
<startEvent id="startevent1" name="Start"></startEvent>
<endEvent id="endevent1" name="End"></endEvent>
<userTask id="usertask1" name="HelloWorld" activiti:assignee="java1234_小鋒"></userTask>
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="usertask1"></sequenceFlow>
<sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
這裡startEvent對應開始節點; endEvent對應結束節點; userTask對應使用者任務節點; sequenceFlow對應使用者任務節點,sourceRef targetRef 屬性對應從哪裡連線到哪裡去。還有其他的簡單屬性,大家也能猜得出來意思。當然以後流程越複雜,生成的對應XML檔案也越複雜,節點多,屬性也多。