zeebe内部处理

 

zeebe内部处理

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

1.      {C}命令协议(请求-响应),

2.      {C}记录导出(流)

3.      {C}工作流评估(异步后台任务)

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

 

状态机

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

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

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

划分

{C}{C}{C}

 

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

事件和命令

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

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

1.      {C}客户端远程发送命令。示例:部署工作流,启动工作流实例,创建和完成作业等。

2.      {C}代理本身会生成命令。示例:锁定作业以供工人独占处理等。

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

有状态流处理

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

1.      {C}使用流中的下一个命令。

2.      {C}根据状态生命周期和实体的当前状态确定该命令是否适用。

3.      {C}如果该命令适用:将其应用于状态机。如果命令是由客户端发送的,请发送答复/响应。

4.      {C}如果该命令不适用:拒绝它。如果它是由客户端发送的,请发送错误回复/响应。

5.      {C}发布一个事件,报告实体的新状态。

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

命令触发器

 

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

相关教程