在zeebe學習(一)中,我們在Linux虛擬機上安裝了zeebe並部署了官方提供的工作流程,最后創建了工作流實例並運行。
但在本篇的學習中,將會把Zeebe與Docker結合起來使用,不僅可以實現部署工作流程,創建工作流實例並運行,還可以通過operate+ Elasticsearch讓我們可以在瀏覽器上更加直觀地看到工作流實例的運行的過程。
首先,先來簡單了解一下以下的幾個組件:
-
Zeebe Modeler:一個桌面建模工具,在將其部署到Zeebe之前,我們將使用它來創建和配置工作流。
-
Zeebe發行版:Zeebe發行版包含工作流引擎,我們將在其中部署工作流模型。該引擎還負責管理活動工作流程實例的狀態。發行版中包括Zeebe CLI,我們將在整個教程中使用它。請使用Zeebe 0.20.0。
-
Camunda Operate:一種操作工具,用於監控Zeebe中的實時工作流實例並進行故障排除。Operate當前可免費且不受限制地用於非生產用途。
-
Elasticsearch 6.8.0:一個開放源代碼的分布式數據存儲,可以連接到Zeebe以存儲工作流數據以進行審計,可視化,分析等。CamundaOperate使用Elasticsearch作為其基礎數據存儲,這就是為什么您需要下載Elasticsearch才能完成本教程。Operate和Zeebe與Elasticsearch 6.8.0兼容。
但是,我們使用Docker運行的話並不需要下載這幾個組件,只需要使用https://github.com/zeebe-io/zeebe-docker-compose存儲庫中的docker-compose.yml配置文件。
好的,簡單地了解之后,就開始在虛擬機上實踐吧!
一、安裝好Docker環境
這里就不再重復安裝的過程,直接查看一下Docker的版本信息。
二、將zeebe-docker-compose存儲庫克隆到本地計算機
git clone https://github.com/zeebe-io/zeebe-docker-compose
三、apt安裝docker-compose
sudo apt-get install docker-compose
安裝好之后,可以查看一下docker-compose的版本信息
docker-compose version
補充:
docker的版本過低(<5:0)會導致安裝失敗!
四、移動到zeebe-docker-compose/operate目錄下(與docker-compose.yml配置文件同級目錄),並創建容器
cd ../zeebe-docker-compose/operate
docker-compose up -d #創建守護式容器
執行上述的命令后,docker會拉取配置文件中指定的鏡像,並創建容器,輸出信息如下圖所示:
補充報錯信息:
1、我剛開始docker-compose使用的是1.25.5版本,執行docker-compose up -d 命令是會報錯,報錯信息如下:
配置文件是存在是的,但是還是報錯了,沒搞明白,然后再另一個虛擬機上換成1.17.1版本之后就沒有這個問題了,還不確定是不是版本問題導致的。
2、拉取鏡像超時
多執行幾次這個命令,就可以了。如果沒有配置/etc/docker/daemon.json,則需要配置一下加速鏡像。參考https://www.cnblogs.com/zrs123/p/14073507.html
好了,這時候就可以查看一下容器是否已經創建完成:
可以看到容器已經成功創建並運行!
若想停止容器在后台運行,則可以在這個目錄下運行以下命令:
docker-compose down
如果您還想清除持久性數據,請改用以下命令:
docker-compose down -v
五、在瀏覽器使用operate
地址輸入虛擬機的IP地址和operate映射的端口號(8080),會出現登錄界面,用戶名/密碼(demo/demo),如下圖如所示:
可以看到此時還沒有部署工作流程。
六、部署工作流程
打開另一個終端,查看zeebe代理的的狀態
./bin/zbctl --insecure status
部署官方提供的order-process.bpmn工作流程
./bin/zbctl --insecure deploy order-process.bpmn
這時候,到瀏覽器上看一下Operate用戶界面(忘記截圖了):
應該會出現如下的工作流程:
七、創建工作流實例
部署工作流后,我們可以創建它的新實例。工作流的每個實例都是工作流的單個執行。要創建一個新實例,我們必須從BPMN文件中指定流程ID
./bin/zbctl --insecure create instance order-process --variables '{"orderId": 1234}'
查看一下operate界面,發現工作流程已經開始,開始等待第一步collect money
八、完成工作流實例
./bin/zbctl --insecure create worker payment-service --handler cat &
查看operate用戶界面,第一步完成
./bin/zbctl --insecure create worker inventory-service --handler cat &
再查看一下operate用戶界面,第二步完成
./bin/zbctl --insecure create worker shipment-service --handler cat &
查看operate用戶界面,第三步完成,工作流結束。
到此,就大功告成了!!!呼!長舒一口氣!