1. 程式人生 > >Activiti基礎教程--02(初識Activiti流程設計工具、瞭解Activiti bpmn圖表對應的XML檔案)

Activiti基礎教程--02(初識Activiti流程設計工具、瞭解Activiti bpmn圖表對應的XML檔案)

一、初識Activiti流程設計工具

    我們以後開發流程 首先要做的,就是要設計好流程圖;一個專案可能會包括多個流程圖;

    所以我們在src/test/resources原始檔夾下新建一個包diagrams,以後所有的流程圖檔案(bpmn檔案和生成的png檔案)都放在這個包下;

a.jpg

然後我們在diagrams上右擊,New - > Other

b.jpg

我們選擇 Activiti下的 Activiti Diagram 我們要開始開發一個Activiti流程圖表;

c.jpg

File name改成helloWorld 然後點選Finish;

d.jpg

這裡 中間區域,是我們用來繪製流程圖示的。右側是繪製流程圖示的工具箱,下面的Properties是屬性檢視,我們目前看到的是整個helloWorld流程圖的屬性;

這裡我們可以把Process(流程)的Id和Name改下(後面我們可以通過程式碼能夠獲取到);

e.jpg

然後我們來畫流程圖,任何流程,都必須有一個開始事件節點和結束事件節點;

f.jpg

    我們在右側的工具箱裡會看到有個StartEvent和EndEvent。我們先點下 然後拖到中間的繪圖區域即可;
    當然每個節點的屬性我們都可以看到,而且可以設定,我們可以點選選中一個節點,然後在屬性檢視上看到所以值;

g.jpg

    我們會看到這裡外掛都給我們設定了初識屬性值,我們可以改 ,也可以不改,都行;
    接下來我們在搞一個使用者任務節點(我們以後開發最常用的節點),我們拖一個到中間繪圖區域;

g.jpg

這裡的任務節點,必須要有一個人去處理這個任務,而且我們在實際開發中,根據實際業務,給這個使用者任務節點取個名字,

當然我們這裡是初識,所以就搞個HelloWorld名字,然後分配給“java1234_小鋒”這個人;

名字修改 我們修改下Name屬性值:

h.jpg

我們再把任務分配給“java1234_小鋒”:

i.jpg

    我們這個helloWorld流程比較簡單,就一個任務節點,最後我們就是連線,
    我們選擇右側下方的Connection下的SequenceFlow 然後只要從兩個地方拉一下即可,大家可以自己摸索下,操作性的東西,不難;即可完整節點之間的連線;

j.jpg

這樣我們就完整了最簡單的流程圖設計,我們這個流程圖是沒有實際意義的,僅僅是初識工具而搞的例項;

我們可以看到設計好後,左上角是有一個未儲存的(*)提示,我們ctrl+s儲存下。這時候,我們會在disgrams包下發現

自動生成了一個對應的png檔案;

l.jpg

我們點開它看下,

m.jpg

我們看到,其實就是流程的一個圖片,還個圖片在流程開發的時候,會用到;

這個自動儲存是前面我們加了設定才會自動生成的;

n.jpg

這地方要大勾,才會自動生成圖片;

OK今天就到這裡。後面我們要來熟悉下Activiti給我們提供的service介面,以及其他開發api。

二、瞭解Activiti bpmn圖表對應的XML檔案

前面我們繪製了一個簡單的流程圖表,這個圖表的本質,其實就是一個xml檔案。我們大體熟悉下結構,不需要做太深入的研究;

我們右擊helloWorld.bpmn檔案,open with -> XML Editor ;

aa.jpg

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節點:

bb.jpg

這裡我們看到的有三個節點,開始節點,結束節點,使用者任務節點。這裡還有兩根連線,
    開始節點- > 使用者任務節點 連線;
    使用者任務節點 -> 結束節點 連線;
對應到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檔案也越複雜,節點多,屬性也多。