欢迎学习Zeebe入门教程。

我们将向您介绍一个端到端的Zeebe示例,包括在Zeebe Modeler中构建和配置工作流模型,部署模型,然后使用Zeebe命令行界面创建和处理实例,然后查看名为Operate的工具中发生了什么。

  1. 创建工作流
  2. 部署工作流
  3. 创建并完成实例
  4. 下一步和资源

如果您对Zeebe有任何疑问,我们加入zeebe qq交流群一起探讨。qq群号:856546010

Zeebe和Operate的入门教程

在本教程中,我们将指导您如何…

  • 使用Zeebe Modeler为工作流建模
  • 将工作流部署到Zeebe
  • 创建工作流实例
  • 使用工人完成由这些工作流实例创建的作业
  • 将消息与工作流实例关联
  • 监控正在发生的事情,并获取有关在Operate中运行工作流实例的详细信息

如果这是你第一次使用Zeebe,那么整个指南需要30-45分钟才能完成。

本教程假设您对Zeebe是什么以及它的用途有一些基本知识。如果你对Zeebe完全陌生,你可能会发现通读 zeebe工作流是个啥这篇文章。

下面是您将在本教程中使用的组件。请下载这些组件的完整发行版,而不是使用Docker运行它们。

  1. ZeebeModeler:一个桌面建模工具,在部署到Zeebe之前,我们将使用它来创建和配置我们的工作流。
  2. Zeebe Distribution::该程序包含我们将在其中部署工作流模型的工作流引擎;该引擎还负责管理活动工作流实例的状态。在这个发行版中包含了zeebe-cli,我们将在整个教程中使用它。请使用Zeebe 0.17.0。
  3. Camunda Operate: :用于监视和排除Zeebe中实时工作流实例故障的操作工具。目前,Operate可用于免费和不受限制的非生产用途。
  4. Elasticsearch 6.7.0: :一个开源的分布式数据存储,可以连接到Zeebe来存储工作流数据,用于审计、可视化、分析等。Camunda Operate使用ElasticSearch作为其基础数据存储,这就是为什么您需要下载ElasticSearch来完成本教程。Operate和Zeebe与ElasticSearch 6.7.0兼容。

如果您对Zeebe有任何疑问,可以加入zeebe qq交流群一起探讨。qq群号:856546010

使用Zeebe Modeler创建工作流

如果对于BPMN不熟悉,那么请在下面的操作开始之前,最好了解一下?这篇博客文章有助于解释这个标准,以及为什么它适合微服务编排。

ZeebeModeler是一个桌面建模工具,允许您使用BPMN 2.0构建和配置工作流模型。在本节中,我们将创建一个工作流模型,并准备将其部署到Zeebe。

我们将创建一个电子商务订单流程作为我们的示例,并且我们将为一个工作流建模,其中包括:

  • 启动订单付款
  • 从外部系统接收付款确认消息
  • 根据订单价值在有或无保险的情况下装运订单中的项目

流程图如下:

付款任务和运输任务由我们将连接到工作流引擎的定时服务执行。“已收到付款”消息将由外部系统发布给Zeebe,然后Zeebe将消息关联到工作流实例。

开始

打开Zeebe Modeler并创建新的BPMN图。

将模型另存为order-process.bpmn,保存并将其放到上文提到的zeebe broker目录的顶层。提醒一下,这个目录叫做zeebe-broker-0.17.0

模型中的第一个元素将是一个开始事件,当您打开建模器时,它应该已经在画布上了。

标记模型中的所有元素是BPMN最佳实践,因此:

双击开始事件将其标记为“已下订单”,表示无论客户何时下订单,我们的流程都将启动。

接下来,我们需要添加一个服务任务:

单击开始事件并选择服务任务图标

将服务任务标记为“启动付款”

接下来,我们将配置“启动支付”服务任务,以便外部微服务可以处理它:

点击“启动付款”任务

展开屏幕右侧的“属性”面板(如果该面板尚不可见)

在“属性”面板的“类型”字段中,输入“启动付款”

这是您现在应该在建模器中看到的。

此类型字段表示Zeebe中的作业类型。在这一点上需要理解的几个重要概念:

  • 作业只是工作流中的一个工作项,需要先完成该工作项,然后工作流实例才能继续执行下一步。
  • 工作流实例是工作流模型的一个正在运行的实例——在我们的例子中,是要完成的单个订单。

对于每个到达“启动付款”服务任务的工作流实例,Zeebe将创建类型为“启动付款”的作业。负责支付处理的外部工作人员服务——所谓的定时器——将间歇性地轮询Zeebe,询问发起支付类型的任何工作是否可用。

如果某个作业可用于给定的工作流实例,则定时器将激活该作业,完成该作业,并通知Zeebe。然后,Zeebe会将该工作流实例推进到工作流的下一步。

接下来,我们将向工作流添加一个消息事件:

  • 单击建模器上的“Initiate Payment”任务
  • 选择中间有信封的圆形图标
  • 双击消息事件并将其标记为“Payment Received”

当工作流引擎需要在工作流实例可以前进之前从外部系统接收消息时,我们在Zeebe中使用消息捕获事件(message catch events)。

在我们建模的场景中,我们使用服务任务启动一个支付,但我们需要等待其他外部系统实际确认收到了支付。此确认以消息的形式出现,该消息将由外部服务异步发送给Zeebe。

Zeebe接收到的消息需要与特定的工作流实例相关联。为了实现这一点,我们还有一些配置要做:

  • 选择消息事件并确保您位于屏幕右侧“属性”面板的“常规”选项卡上。
  • 在“属性”面板中,单击+图标以创建新消息。现在,您将在建模器中看到两个字段,我们将使用它们将消息关联到特定的工作流实例:消息名称和订阅关联键。
  • 让我们给这个消息一个不言而喻的名字:收到的付款(payment-received)。

当Zeebe收到消息时,这个名称字段让我们知道消息引用的工作流模型中的哪个消息事件。

但是,我们如何知道消息引用了哪个特定的工作流实例(即,哪个客户订单)?这就是订阅相关密钥的来源。订阅相关键是工作流实例负载和发送给Zeebe的消息中存在的唯一ID。

我们将使用orderID作为相关键。

继续,将orderID添加到订阅相关键字段中。

当我们创建一个工作流实例时,我们需要确保将orderid作为一个变量,并且在发送消息时,我们还需要提供orderid作为一个相关键。

下面是您在Modeler中应该看到的内容:

接下来,我们将向工作流模型添加一个Exclusive(XOR)网关。Exclusive网关用于根据数据决定工作流实例应遵循的路径。在这种情况下,如果总订单价值大于或等于100美元,我们希望带保险装运项目,并且不带保险装运。

这意味着当我们创建一个工作流实例时,我们需要将订单值作为一个实例变量。但我们稍后再谈。

首先,让我们采取必要的步骤来配置我们的工作流模型来做出这个决定。要添加网关:

  • 单击刚才创建的消息事件
  • 选择网关(菱形)符号-将新网关添加到模型时,默认使用专用网关。
  • 双击网关并添加标签“order value?”

我们将添加两个来自这个 Exclusive网关的传出序列流,它们将导致两个不同的服务任务。每个序列流都将具有一个基于数据的条件,该条件在工作流实例负载的上下文中进行评估。

接下来,我们需要:

  • 选择网关并向模型中添加新的服务任务。
  • 将任务标记为“无保险装运(Ship Without Insurance)”
  • 将类型设置为不带保险的装运(ship-without-insurance)

每当我们使用独占(Exclusive)网关时,我们都要确保设置默认流,在这种情况下,将在不保险的情况下进行装运:

  • 选择您刚从网关创建的序列流到“无保险船舶”服务任务
  • 点击扳手图标
  • 选择“默认流”

现在,我们准备从网关添加第二个传出序列流和服务任务:

  • 再次选择网关
  • 向模型中添加其他服务任务
  • 贴上“带保险装运”的标签。
  • 设置要随保险一起装运的类型

接下来,我们将在导致此“带保险的船舶”服务任务的序列流中设置一个条件表达式:

  • 单击序列流并打开属性面板
  • 在“属性”面板的“条件表达式”字段中输入ordervalue>=100
  • 双击序列流添加标签“>100美元”

我们快结束了!总结一下,我们会:

  • 选择“无保险船舶”任务
  • 向模型添加另一个专用网关,以再次将分支合并在一起(类似于此模型中的BPMN最佳实践)。
  • 选择“带保险的船舶”任务
  • 添加一个连接到您刚刚创建的第二个独占网关(Exclusive)的传出序列流

我们需要添加的唯一bpmn元素是结束事件:

  • 单击第二个独占网关
  • 添加结束事件
  • 双击它,将其标记为“订单已完成”

最后,我们将把流程ID更改为比您在建模器中看到的默认流程“1”更具描述性的内容:

  • 单击画布的空白部分
  • 打开“属性”面板
  • 将ID更改为订单流程

在最后几次更新之后,您应该在Modeler中看到以下内容:

这就是我们的建模步骤。请记住再次保存该文件,以准备将工作流部署到Zeebe、创建工作流实例并完成它们。

zeebe qq交流群群号:856546010

Zeebe入门教程1相关推荐

  1. Kafka入门教程与详解

    1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件负责处理连接服务.消息的路由和传送.持久 ...

  2. 【CV】Pytorch一小时入门教程-代码详解

    目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...

  3. python tornado教程_Tornado 简单入门教程(零)——准备工作

    前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...

  4. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  5. mysql query browswer_MySQL数据库新特性之存储过程入门教程

    MySQL数据库新特性之存储过程入门教程 在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用 ...

  6. python tensorflow教程_TensorFlow入门教程TensorFlow 基本使用T

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 TensorFlow入门教程 TensorFlow 基本使用 TensorFlow官方中文教程 TensorFlow 的特点: 使用图 (graph) 来 ...

  7. air调用java,AIR2.0入门教程:与Java应用交互

    在之前的一篇文章中,我介绍了如何使用AIR2.0新增的NativeProcess类与本地进程进行交互和通讯,在那个例子里面我们使用了C++ 的代码,实际上只要是基于命令行的标准输入输出,AIR2.0的 ...

  8. 【Arduino】开发入门教程【一】什么是Arduino

    Arduino Arduino 是一款便捷灵活.方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE).它适用于艺术家.设计师.爱好者和对于"互动 ...

  9. python 三分钟入门_Cython 三分钟入门教程

    作者:perrygeo 译者:赖勇浩(http://laiyonghao.com) 原文:http://www.perrygeo.net/wordpress/?p=116 我最喜欢的是Python,它 ...

最新文章

  1. 大白话聊聊 Kafka 的架构原理和网络设计,它的性能高在什么地方?
  2. JS 总结之原型继承的几种方式
  3. Xshell-密钥登录
  4. 特征工程——categorical特征 和 continuous特征
  5. Outlook 与 Outlook Express 的区别
  6. Python 3.8.0 发布!
  7. php把时间戳改为时间格式,php怎么把时间格式转换为时间戳?
  8. 【Kafka】kafka zk下注册的信息 get /brokers/ids/1 “host“:null “port“:-1
  9. 深入理解Java:SimpleDateFormat安全的时间格式化 ;
  10. Scrapy选择器和持久化
  11. MMDetection2.XX-Necks之FPN源码解析
  12. 怎么快速学习App后台开发
  13. 惠普打印机USB安装成功,但断开USB重新连接时显示脱机无法打印问题(上一版本的驱动程序还在内存中,因此无法加载驱动程序)
  14. 买卖股票的最佳时机(第一版)
  15. adb 查看固件版本
  16. c语言中shift f12组合建,C++学习1-(C语言基础、VS快捷键)
  17. 嵌入式Linux自学笔记(二)——文件IO
  18. git拉取代码出现Unpacking objects
  19. oracle获取字符串最后一个逗号后面的字符
  20. [HYSBZ - 3252] 攻略

热门文章

  1. 编译原理:高级程序设计语言的语法描述
  2. 怎样用SharePoint创建网站?
  3. 伯朗特机器人编程语言_机器人的最佳编程语言是什么?机器人十大流行编程语言汇总...
  4. 服务器(linux)磁盘挂载nfs
  5. 快速把数据转换成excel
  6. 易车腾讯先投资,汽车之家重金再跟进,天天拍车到底怎么了?
  7. php灵云翻译,灵云维汉友谊桥:业界领先维汉翻译技术
  8. 【U8+】用友U8同一个账套使用了好多年,需要将以前年度进行分离、删除。
  9. unity结合MMD发布android不显示模型不播放动画问题解决方法
  10. 22类高频场景词汇-1