在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用户界面,第三步完成,工作流结束。
到此,就大功告成了!!!呼!长舒一口气!