业务流程管理: Business Process Management

主流的业务流程建模符号标准有 BPMN(Business Process Model and Notation) 、CMMN(Case Management Model and Notation) 和 DMN(Decision Model and Notation) 三种,DMN 搭配前两者使用。BPMN 定位于业务人员和技术人员都能看懂,BPMN 2.0 加入了可执行语义。

除了 Bonita Engine,主流的 BPM engine 都是从 jBPM 派生出来的,如下图(PNGVisio),注意除了 Camunda 8,其它都几乎处于维护状态,开发不再活跃了。

jBPM family
  1. Activiti 主要版本是 5 和 6,官方已不再维护,Activiti 开源版本功能很少,已经没落;

  2. jBPM 从 5 开始就逐渐没落,目前由 Redhat 撑着,进入维护状态,截止 2023 年底还不支持 JDK 17,Redhat 已转向发展 Kogito

  3. Flowable 7.0.0 开源版本去掉了 flowable-content, flowable-form, flowable-ui, flowable-crystalball,重心转向了企业版,建模 UI、任务 UI、表单 UI、管理 UI、优化 UI 都只在企业版里;

  4. Camunda 7 开源的很彻底,web UI 齐全,但官方已经切换到基于 ZeebeCamunda 8,这个版本从传统的引擎服务加关系数据库,转向基于 Raft 协议的集群架构,性能和扩展性都好很多,但功能和服务 API 还欠缺,尤其任务列表、管理、优化模块都不能免费使用了,也不再支持 CMMN。

推荐使用 Camunda 7,虽然只支持到 2027 年 4 月,但胜在文档、功能齐全,性能最好,其次 Flowable 6(除非 Flowable 7 把那些功能加回来),最后 Kogito 也值得考虑。建模编辑器除了 Camunda Web Modeler(基于 bpmn-js/cmmn-js/dmn-js)、Camunda Desktop Modeler,Flowable UI 自带,还有 https://bpmn.io (Camunda 开发,推荐使用),Eclipse BPMN2 ModelerDraw.io

微服务编排: Microservice Orchestration

由于 BPM 系统架构一般基于关系数据库,BPM 引擎只适用于并发请求不高的企业应用,对于互联网应用,更适用为了高并发设计的微服务编排引擎,这些引擎抛弃了 BPMN/CMMN/DMN。

  1. Netflix Conductor: 使用文件配置

    1. GitHub - Netflix/conductor: Conductor is a microservices orchestration engine.: 2023-12-14 归档,Netflix 退出维护,实际上 Netflix 里当初开发 Conductor 的核心人员已经出走,创立了 Orkes 公司,发展基于 Conductor 的商业服务。

    2. GitHub - conductor-oss/conductor: Conductor is a microservices orchestration engine.

    3. https://orkes.io/ 基于 Conductor 添加了更多功能以及 web 版管理界面。

  2. Uber Cadence:使用代码配置

    1. GitHub - uber/cadence: Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.

    2. GitHub - temporalio/temporal: Temporal service Cadence 的 fork,提供云服务

  3. https://github.com/indeedeng/iwf : 使用代码配置

参考

  1. [whitepaper] Camunda Platform Compared to Alternatives | Camunda
  2. Camunda 7 Support Announcements