工作流框架还是比较多的,按照语言分类的话,有

Java: jBPM、Activiti、SWF

PHP: Tpflow、PHPworkflow

Go: Cadence(Cadence由Uber开发并开源,Maxim Fateev是Cadence的主架构师)、Temporal(Maxim Fateev为了推广Workflow编排引擎的商业化,另立门户创建了Temporal)、Fastflow 

特点 缺点 可视化界面 语言 开源

jBPM

  • 始祖级
  • 依赖服务差(如持久化-hibernate)
java
Activiti
  • 需掌握Java语言 BPMN XML语法和图形符号
  • 审批等操作都是在一个大的长事务里面去执行,一个审批操作会设计到操作多张表,如果处理不好的话性能会影响比较大
java 开源,star: 9.3k,近2天有更新
liteflow
  • 轻量
  • 逻辑驱动的编排
图形化界面 java 开源,star: 1.7k,近1周有更新

n8n(工作流)

docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n docker.n8n.io/n8nio/n8n

  • 简单,低代码运行
  • 可拓展
  • 节点是黑盒,报错不可观测
  • 官方支持了很多打包节点,但对按业务来看基本不能直接复用
  • 收费
图形化界面,关联节点,事件触发 js

开源,star: 29.1k,近1天有更新

Temporal

Cadence

  • 支持重入、取消、超时控制、等待回调
  • 提供工作流河代码执行状态完整可见
  • 中心化状态机+事件溯源模式

  • 支持横向拓展
  • 社区活跃,生态完善,有不少国外公司在用
  • 提供引擎 + web-ui 平台,可以开箱即用或者做少量的定制
  • 偏底层,需要自己实现DSL和对应的可视化UI
  • 需按固定格式编写代码
图形化界面,可以清楚的知道上下文 golang

开源,star: 6.8k,近1天有更新

Fastflow
  • 轻量、支持水平扩容
  • 开箱即用、低代码
  • DAG 模式
golang 开源,star: 108,近三月有更新

flowable

  • 从 activiti6 中分裂出来的,在其基础上研发了 DMN 支持,BPEL 支持等
  • 大力发展其商业版产品,开源版本维护不及时,部分功能已经不再开源版发布,比如表单生成器(表单引擎)、历史数据同步至其他数据源、ES 等
java 开源版本维护滞留
Camunda
  • 基于 activiti5,保留了 PVM
  • 支持流程实例的迁移
  • bug 较多,维护周期长
  • 开源版本仅支持部分能力且不承诺任何保障

如何选型

针对我们自身的开发效率、支撑能力、稳定性

  • 多异步事件

  • 服务可靠性低

  • 流程长繁杂

  • 复杂状态

工作流通常适用于,有状态的、异步、长时间执行等特性的业务场景,比较典型的场景包括

  1. 视频、音频、图片处理工作流

  2. 订单、审批流程

  3. 数据处理流水线

  4. 自动化运维

Logo

更多推荐