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

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

也会记录导出依次解决了历史问题:流提供了工作流引擎需要生成的详尽的审计日志。

State Machines

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

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

让我们来看看状态机的工作情况。 简化,看起来如下:

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

Events and Commands

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

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

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

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

Stateful Stream Processing

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

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

例如,处理“创建作业”命令会生成“创建作业”事件。

Command Triggers

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

zeebe qq交流群群号:856546010

zeebe内部实现机制相关推荐

  1. 浅谈SQL Server内部运行机制

    原文:浅谈SQL Server内部运行机制 对于已经很熟悉T-SQL的读者,或者对于较专业的DBA来说,逻辑的增删改查,或者较复杂的SQL语句,都是非常简单的,不存在任何挑战,不值得一提,那么,SQL ...

  2. 图解HashMap和HashSet的内部工作机制

    转载自 图解HashMap和HashSet的内部工作机制 HashMap 和 HashSet 内部是如何工作的?散列函数(hashing function)是什么? HashMap 不仅是一个常用的数 ...

  3. ActiveSupport::Concern 和 gem 'name_of_person'(300✨) 的内部运行机制分析

    理解ActiveRecord::Concern: 参考:include和extend的区别: https://www.cnblogs.com/chentianwei/p/9408963.html 传统 ...

  4. 飞鸽传书联系企业内部管理机制

    IM飞鸽能使企业内部管理机制联系起来,能从一个全新的视角看到IM飞鸽(飞鸽传书)软件对于企业用户的意义.同时IM飞鸽(飞鸽传书)软件的突出优势不是去追求差异化和个性化,而在于发挥局域网特有的效率优势, ...

  5. Vue.js 内部运行机制之总结 常见问题解答

    Vue.js 内部运行机制之总结 & 常见问题解答 总结 在本小册的第一节中,笔者对 Vue.js 内部运行机制做了一个全局的概览,当时通过下面这张图把 Vue.js 拆分成一个一个小模块来介 ...

  6. VC++的学习(基于VS2008)——windows程序内部运行机制

    昨天和今天都在学习windows程序的内部运行机制,再次学习这一章,我明显感到条理清晰了,原来这一章是讲我们所用的电脑,这样一个windows平台下程序运行的内部机制的.windows应用程序下最重要 ...

  7. ICCV 2019 | Adobe 无需大量数据训练,内部学习机制实现更好的视频修补

    点击我爱计算机视觉标星,更快获取CVML新技术 今天跟大家分享一篇 ICCV 2019 的文章An Internal Learning Approach to Video Inpainting,该文在 ...

  8. javasrcipt的作用域和闭包(二)续篇之:函数内部提升机制与Variable Object

    一个先有鸡还是先有蛋的问题,先看一段代码: a = 2; var a; console.log(a); 通常我们都说JavaScript代码是由上到下一行一行执行,但实际这段代码输出的结果是2.但这段 ...

  9. Redis 处理客户端连接的一些内部实现机制

    本文主要介绍了 Redis 处理客户端连接的一些内部实现机制,包括连接处理.超时.缓冲区等一系列内容. 注:本文所述内容基于 Redis2.6 及以上版本. 连接的建立 Redis 通过监听一个 TC ...

最新文章

  1. Oracle Database 10g:删除表
  2. 使用JSLint提高JS代码质量
  3. 使用网络TCP搭建一个简单文件下载器
  4. python模型预测结果 取整_一日一技:Python里面的//并不是做了除法以后取整
  5. 电子烟行业的十大进销存软件app,强推第一个
  6. android麦克风消回音处理,【技术帖】解决麦克风回音重的难题
  7. ubuntu 查找opencv安装路径_ubuntu 查找opencv安装路径_Ubuntu安装opencv详细步骤
  8. 项目2胖子不想说体重
  9. 微信小程序 云开发 图片内容安全 珊瑚图片内容安全 api
  10. 得知大熊哥最后一天在岗位工作今天离开有感而发
  11. linux系统硬件信息文本在哪里,Hardinfo在Linux上查看硬件信息
  12. MATLAB火灾自动报警与消防控制系统开题报告
  13. 一个时代的印记:还记得那些年我们逃课去的网吧
  14. 华为开发者大赛-昇腾AI初创大赛决赛暨星火计划Online第二期来啦!
  15. mysql 创建 innodb_MySQL创建数据表时设定引擎MyISAM/InnoDB操作
  16. SpringBoot写配置文件报错“The elements [xxx,xxx] were left unbound.“
  17. CAD软件中怎么定制线图案?
  18. html转pdf(总结五种方法Java)
  19. 【OpenGL ES】绘制圆形
  20. java 解析http返回的xml_java – 从httppost响应中解析xml

热门文章

  1. 计算机网络期末考试简答题
  2. 步步高向腾讯、京东转让股份,共同发展“智慧零售”、“无界零售”
  3. 如何使用“网上邻居”
  4. SqlServer数据库使用SQL脚本进行定时备份+异机备份
  5. STM32---FLASH编程
  6. 最新版浏览器报错net::ERR_INSECURE_RESPONSE原因
  7. 亚马逊全球站点之中东站
  8. fiddler-电脑端抓包
  9. 英语一 英语二 大小作文高分作文模板来啦!
  10. windowsXP黑屏解决办法