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}发布一个事件,报告实体的新状态。
例如,处理“创建作业”命令将产生事件“作业已创建”。
命令触发器
一个实体中发生的状态更改可以自动触发另一实体的命令。示例:作业完成后,相应的工作流程实例应继续下一步。因此,事件作业完成触发命令完成活动。
相关教程
- 2021-01-10
- 2021-01-09
- 2021-01-09
- 2021-01-09
- 2021-01-09
- 2021-01-09
- 2021-01-09
- 2021-01-09
- 2020-12-22
- 2020-12-22