下載麻煩可以下我這個整理的整包:
鏈接:https://pan.baidu.com/s/1Vgbyxt1PO3Kex1r47pKPlA
提取碼:9r1a
下載zeebe
zeebe發佈頁面,選擇zeebe-distribution-X.Y.Z.tar.gz下載
下載zeebe-modeler
zeebe-modeler發佈頁面,選擇zeebe-modeler-x.x.x-win-x64.zip
下載camunda-operate
zeebe發佈頁面,選擇camunda-operate-X.Y.Z.tar.gz
下載elasticsearch 6.8.1
啓動es
[es@localhost es]$ cd /usr/local/es/
[es@localhost es]$ ./bin/elasticsearch
啓動zeebe borker
放開這三行配置的註解,用來打開elasticsearch exporter:
vi /usr/local/zeebe/conf/zeebe.cfg.toml
... ...
[[exporters]]
id = "elasticsearch"
className = "io.zeebe.exporter.ElasticsearchExporter"
... ...
啓動zeebe borker:
cd /usr/local/zeebe
./bin/broker
啓動operate
cd /usr/local/operate/
./bin/operate
訪問http://192.168.153.138:8080,默認賬號密碼:demo/demo
客戶端使用
zeebe示例源碼:https://gitee.com/tanwubo/zeebe-quickstart-demo
修改zeebe borker的連接信息:
@BeforeEach
public void initZeebeClient(){
client = ZeebeClient.newClientBuilder()
.brokerContactPoint("192.168.153.138:26500")
.usePlaintext()
.build();
System.out.println("connected...");
}
依次執行:
- deployOrderProcessTest
- createOrderPayWorkerTest
- createNoInsuranceWorkerTest
- createHaveInsuranceWorkerTest
- createInstance1Test
執行到這裏,可以去operate查看一下:
工作流阻塞在already paid處,等待pay-received類型的Message消息
繼續執行第6步createPayReceivedMessageTest
其他的組件使用示例都可以在項目中找到。
service task
圖標:
最常見的組件了,可以理解爲一個任務,關鍵的屬性是type,一個完整的service task的屬性如下:
name:能夠見名知意即可,描述任務目的
type:全局唯一,定義任務類型,以次做爲憑證,分發任務給相關的某一個工作人員實例。
receive task
圖標:
工作流實例在執行到receive task時會阻塞在這,直到接受到對應的message實例,屬性列表如下:
message name:全局唯一,指定任務等待接受的message名稱
subscription correlation key:基本可以理解爲工作流實例的主鍵,作用就是通過這個屬性值,匹配到唯一的一個工作流實例
exclusive gateway
圖標:
排他網關類似於JAVA中的多重if else結構,所以本身只有一個name屬性,關鍵在於連接線的condition expression屬性:
condition expression:值可以爲空或者是一個布爾表達式,爲空表示默認執行流程,布爾表達式中可以使用工作流實例所攜帶的參數,結果爲true時執行這條流程,執行任意一條流程,其他的表達式無需再執行。
parallel gateway
圖標:
並行網關會同時執行與網關連線的所有任務,語義簡單明瞭,沒有特殊的屬性,只要注意使用場景即可。
並行網關可以放在倆個位置,如下圖:
放在多個任務流程前表示後面連接的任務並行執行,放在多個任務流程後會等待連接的任務全部執行完成才繼續後面的流程。
event-based gateway
圖標:
事件網關流程後只能連接timer even或者message even,等待某一個事件觸發,則僅僅執行該事件的後續流程。
使用示例如下圖:
none event
可用於無其他含義的開始或結束。
message event
圖標:
與receive task類似,也是會阻塞在message event處,等待對應的message,這是一種使用方法:
還有一種用法叫邊界事件,可以給task添加消息邊界事件,這樣可以實現在任務執行時,通過message event來中斷任務,執行另一條流程,例如:
timer event
timer event可以用於工作流的開始,表示每各一個週期重複做某件事情,像這樣:
也可以放在工作流中間,表示等待一段時間繼續往後執行,像這樣:
還可以用於邊界事件,表示任務執行超時,取消任務,執行另一條超時流程:
error event
error event通常只能用於任務的邊界事件,表示任務出現錯誤時的執行流程:
error event的核心屬性是error code,只有任務拋出的error code匹配的上才能捕獲得到:
embedded subprocess
embedded subprocess是以嵌入的形式存在在主工作流當中:
可以理解爲將一些任務包裹了起來,包裹之後的好處在於可以對整個子流程使用邊界事件。
call activity
call activity是一種將其他工作流引入當前工作流的組件:
call activity的核心屬性是process id:
相較於embedded subprocess的好處在於可重用,例如此處other_process工作流可在多個不同的工作流模型中使用。