Zeebe Docs翻译:2.6 内部处理
温馨提示:
本文最后更新于 2019年10月08日,已超过 1,929 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
在内部,Zeebe被实现为在记录流(分区)上工作的流处理器的集合。使用流处理模型是因为它是提供以下功能的统一方法:
- 命令协议(请求-响应),
- 记录导出(流),
- 工作流评估(异步后台任务)
记录导出解决了历史记录问题:流完全提供了工作流引擎需要产生的详尽的审计日志。
状态机
Zeebe管理有状态实体:作业,工作流等。在内部,这些实体被实现为由流处理器管理的状态机。
状态机模式的概念很简单:状态机的实例始终处于几种逻辑状态之一。从每个状态开始,一组过渡定义了下一个可能的状态。过渡到新状态可能会产生输出/副作用。
让我们看看作业的状态机。简化后,它看起来如下:
每个椭圆形都是一个状态。每个箭头都是状态转换。注意每个状态转换如何仅适用于特定状态。例如,状态为时无法完成作业CREATED
。
事件和命令
状态机中的每个状态更改都称为事件。Zeebe将每个事件作为记录发布在流中。
可以通过提交命令来请求状态更改。Zeebe代理从两个来源接收命令:
- 客户端远程发送命令。示例:部署工作流,启动工作流实例,创建和完成作业等。
- 代理本身会生成命令。示例:锁定作业以供工人独占处理等。
收到命令后,命令将作为记录发布到所寻址的流上。
有状态流处理
流处理器顺序读取记录流,并根据被寻址实体的生命周期解释命令。更具体地说,流处理器重复执行以下步骤:
- 使用流中的下一个命令。
- 根据状态生命周期和实体的当前状态确定命令是否适用。
- 如果该命令适用:将其应用于状态机。如果命令是由客户端发送的,请发送答复/响应。
- 如果该命令不适用:拒绝它。如果它是由客户端发送的,请发送错误回复/响应。
- 发布一个事件,报告实体的新状态。
例如,处理“ 创建作业”命令将产生事件“ 作业已创建”。
命令触发器
一个实体中发生的状态更改可以自动触发另一个实体的命令。示例:作业完成后,相应的工作流程实例应继续下一步。因此,事件作业完成触发命令完成活动。
正文到此结束
- 本文标签: 其他
- 本文链接: https://www.v8en.com/article/189
- 版权声明: 本文由SIMON原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权