一、开源项目简介
JDEasyFlow
JDEasyFlow是一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景。它的特点是简单、灵活、易扩展。开发人员30分钟可入门上手,半天可掌握其原理。
二、开源协议
使用Apache-2.0开源协议
三、界面展示
支持的场景功能
节点流转类型
支持顺序流转、条件流转、循环流转等。
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-1 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-119.png)
节点功能类型
支持脚本节点、用户节点和消息节点。
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-2 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-120.png)
- 脚本节点:
节点执行时运行一段代码脚本 - 用户节点:
根据用户的操作指令触发节点执行 - 消息节点:
接收消息后触发节点执行
节点串并类型
支持串行执行、并行执行、串并组合执行等。
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-3 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-121.png)
流程交互场景
支持单次交互一次执行多节点、多次交互一次执行一节点、多次交互一次执行多节点等。
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-4 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-122.png)
子流程场景
JDEasyFlow支持子流程的场景,可将把复杂的流程节点拆分为子流程,便于业务逻辑抽象。
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-5 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-123.png)
审批流程场景
JDEasyFlow提供了流程任务审批的能力;常用的审批、撤销、驳回、会签、加签等功能都可支持;内置了简单的动态表单。既支持从页面发起和操作流程任务,也支持API的方式,京东OA审批系统也有对接。
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-6 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-124.png)
四、功能概述
JDEasyFlow是企业金融研发部自研的通用流程编排技术组件,适用于服务编排、工作流、审批流等场景,目前在部门的内部业务系统和科技输出系统中广泛应用,其他部门也有使用。
它的特点是简单、灵活、易扩展,开发人员一般30分钟可入门上手,半天可掌握其原理。它分为一个核心模块和若干扩展模块,模块之间松耦合,开发使用时可按需选择、快速集成、渐进式应用,同时支持JSON内置规范和BPMN规范。它的实现原理也有其特色,后面有介绍。
JDEasyFlow整体的特色为简单:
-
模型简单:核心模型概念就是节点的流转 -
扩展简单:提供了监听器、过滤器功能,方便横向切面;节点支持自定义实现 -
定义简单:只需要通过JSON进行节点流转逻辑配置便可,也支持BPMN格式 -
运行简单:代码调用流程引擎,传入流程ID和业务参数便可 -
使用简单:引入组件包便可使用,比较轻量
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-7 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-125.png)
适用场景和对接使用说明
适用场景
理论上JDEasyFlow可满足任何流程场景,它主要可解决三类问题:
- 流程可编排:
将业务流程抽象为软件流程,保证软件是现实的真实反映;不同场景可定义不同流程,且流程易修改 - 功能松耦合:
将业务节点抽象为软件流程节点,一方面实现功能的松耦合,另一方面实现节点的可复用 - 流程可视化:
所见即所得,方便业务产品人员和软件研发人员基于同一语言的交流,也便于流程监控
在实际软件系统开发过程中,如果有如下诉求,可考虑使用流程编排:
-
业务流程是有明显的多个节点组成 -
希望流程可灵活变更 -
业务流程级别比程序流程高一层,在编程语言级别难以聚合和治理(如一个流程即需要前台操作,又有外系统参与,又有后台操作,在实现上入口分散)
五、技术选型
整体功能架构
JDEasyFlow的功能架构如下图,功能模块之间松耦合, 开发时可按需选择、快速集成、渐进式应用。最简单的使用方式为只在业务应用端引入jar包使用流程引擎。如果需要流程可视化功能,可集成BPMN规范模块,如果还需要流程实例持久化、流程定义持久化等更丰富功能,则可以集成其他相关模块。
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-8 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-126.png)
整体系统架构
JDEasyFlow的完整系统架构如下,主要有三个端:业务应用端、流程服务端、流程管理端,三个端可部署在单体应用中,也可分开部署。
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-9 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-127.png)
软件架构
JDEasyFlow底层为流程引擎/状态机模块(使用时选一便可,建议优先使用流程引擎),此模块提供了基于JSON格式的JDEasyFlow规范进行流程编排的能力。
BPMN模块提供了基于BPMN规范进行流程定义和可视化的能力,流程可视化基于bpmn-js,其本质为提供了将BPMN格式流程定义转换为JDEasyFlow格式的能力。
![[开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景-10 [开源]一款通用流程编排组件, 适用于服务编排、工作流、任务审批等场景](https://www.baicxx.com/wp-content/uploads/2025/10/640-128.png)