原创

Zeebe Docs翻译:2.6 内部处理

温馨提示:
本文最后更新于 2019年10月08日,已超过 1,035 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

在内部,Zeebe被实现为在记录流(分区)上工作流处理器的集合使用流处理模型是因为它是提供以下功能的统一方法:

  • 命令协议(请求-响应),
  • 记录导出(流),
  • 工作流评估(异步后台任务)

记录导出解决了历史记录问题:流完全提供了工作流引擎需要产生的详尽的审计日志。

状态机

Zeebe管理有状态实体:作业,工作流等。在内部,这些实体被实现为由流处理器管理的状态机

状态机模式的概念很简单:状态机的实例始终处于几种逻辑状态之一。从每个状态开始,一组过渡定义了下一个可能的状态。过渡到新状态可能会产生输出/副作用。

让我们看看作业的状态机。简化后,它看起来如下:

划分

每个椭圆形都是一个状态。每个箭头都是状态转换。注意每个状态转换如何仅适用于特定状态。例如,状态为时无法完成作业CREATED

事件和命令

状态机中的每个状态更改都称为事件Zeebe将每个事件作为记录发布在流中。

可以通过提交命令来请求状态更改Zeebe代理从两个来源接收命令:

  1. 客户端远程发送命令。示例:部署工作流,启动工作流实例,创建和完成作业等。
  2. 代理本身会生成命令。示例:锁定作业以供工人独占处理等。

收到命令后,命令将作为记录发布到所寻址的流上。

有状态流处理

流处理器顺序读取记录流,并根据被寻址实体的生命周期解释命令。更具体地说,流处理器重复执行以下步骤:

  1. 使用流中的下一个命令。
  2. 根据状态生命周期和实体的当前状态确定命令是否适用。
  3. 如果该命令适用:将其应用于状态机。如果命令是由客户端发送的,请发送答复/响应。
  4. 如果该命令不适用:拒绝它。如果它是由客户端发送的,请发送错误回复/响应。
  5. 发布一个事件,报告实体的新状态。

例如,处理“ 创建作业”命令将产生事件“ 作业已创建”

命令触发器

一个实体中发生的状态更改可以自动触发另一个实体的命令。示例:作业完成后,相应的工作流程实例应继续下一步。因此,事件作业完成触发命令完成活动

正文到此结束
本文目录