七款 Java 工作流引擎「二开能力」怎么比项目内容文档定位公开资料 开源实现对照下的二次开发能力对比非性能测试、非商务报价对比对象Flowable、Camunda以 7.x 嵌入式为主并注明 8、Activiti、JFlow、FixFlow、OSWorkflow、Operaton编制原则中肯、公平、公正先统一「二开」定义再按同一维度打分式对照避免「用自家长处量别人短处」JFlow 实证结合工作区源码BP.App/BP.En30/BP.WF/CCFlow/Vue3CCFlow/.NET 与 JFlow/Java 事件模型同源资料性质网络公开文档、官方手册、社区仓库 README、本仓库可核验源码一句话结论「二开」不是改引擎源码而是在不污染内核的前提下把业务逻辑挂到流程生命周期上。Activiti 系Flowable / Camunda 7 / Activiti / Operaton强在BPMN 标准扩展 Java 委托/监听器/外部任务JFlow 强在同一套事件语义下的前端外挂 / 后端外挂 / 事件配置三路并行FixFlow 曾以微内核 SPI 插件见长但开源线停滞OSWorkflow 属于早期 XML FunctionProvider 范式已不适合作为新项目主选。没有「绝对第一」——只有「与团队技能、集成形态、是否要低代码配置」是否匹配。1. 先确认流程引擎「二开」的定义与范围1.1 定义建议统一口径流程引擎二开 流程模板设计完成之后在不修改引擎内核发送/流转代码的前提下用脚本、类、配置或 Worker与引擎在固定生命周期点交互从而完成业务校验、集成、通知、台账等逻辑的过程。对比项改引擎不建议叫二开流程二开本文口径改动位置内核发送、状态机、持久化外挂类 / Listener / Delegate / 事件配置 / Worker升级成本高难合并低业务与内核可分离升级职责边界引擎与业务缠在一起引擎管流转二开管业务可交付性难复用、难评审可按流程模板 / 节点绑定交付1.2 本文「二开」包含什么、不包含什么纳入对比二开能力不纳入或仅作背景生命周期挂接点发送前/后、任务创建/完成、流程结束等纯 BPMN 建模能力、表单 UI 美观度扩展机制Java 类、脚本、SPI、配置、外部 Worker商业授权价格、厂商 SLAAPI / REST / 嵌入式调用面压测 TPS、集群极限吞吐前端/办理页可扩展性若产品提供组织权限、门户美观等周边产品是否可不改核升级生态插件市场丰富度作参考1.3 为公平对比统一成「三层挂接模型」各产品名词不同但二开诉求可映射为同一三层模型层次用户语言典型诉求L1 交互层前端/页面侧发送前校验、按钮定制、提示、字段联动L2 服务层后端/进程内代码强事务、改接收人/跳转、同步 ERP、审计L3 配置/编排层设计器或模型配置SQL/HTTP/脚本/表达式少写代码也能挂业务下文各引擎对照时都尽量落到 L1 / L2 / L3避免「只比 JavaDelegate、不比页面扩展」的偏科。2. 七款引擎速览背景避免误读引擎血统与定位公开信息许可证/现状要点与「二开」最相关的一句话ActivitiAlfresco 系经典开源 BPMN 引擎后续与 Flowable 分叉演进Apache 2.0社区版偏「引擎核心」二开主路径JavaDelegate Listener 表达式FlowableActiviti 核心团队分叉后的活跃引擎强调嵌入与 SpringOSS 商业能力分层二开主路径与 Activiti 同源扩展命名空间更丰富Camunda2013 从 Activiti 分叉7.x 嵌入式8.x 转向 Zeebe 编排7.x CE 已 EOL约 2025-108 为源码可得 商业模块7.xDelegate/Listener/External Task8.x外部 Worker 为主OperatonCamunda 7 CE 社区继承者约 2024 分叉1.0 对齐 7.24 APIApache 2.0社区驱动二开模型 ≈ Camunda 7迁移主要是依赖坐标JFlow驰骋 BPM 的 Java 版与 CCFlow.NET事件模型同源国内开源/商业并存生态前端外挂 后端外挂 事件配置三路并列FixFlow国产 BPMN2 引擎微内核 插件强调中国式流转公开仓库称开源版停更商业线另续SPI 任务命令、连接器、EMF 模型扩展OSWorkflowOpenSymphony 早期 Java 工作流XML 定义历史项目社区基本停滞Function / Condition / 拦截器式扩展非现代 BPMN公平提示Camunda 8 与 Camunda 7 / Operaton 不是同一套二开体验。本文默认对「Java 嵌入式 BPMN 引擎」以Camunda 7 / Operaton为代表对 Camunda 8 单独注明「外部 Worker 优先」。3. 总表二开能力对照同一维度评分说明避免「营销满分」●●● 产品化完整、文档与实践成熟●●○ 可用且常见但需较多自建或工具链配合●○○ 有机制但弱产品化 / 需改较多外围○○○ 基本不具备该层或需改核— 不适用或公开资料不足以公允评价维度FlowableCamunda 7ActivitiJFlowFixFlowOSWorkflowOperatonL2 后端代码挂接●●● Delegate/Listener●●● Delegate/Listener/Plugin●●● Delegate/Listener●●●FlowEventBase 全局拦截●●● Command/SPI/连接器●●○ FunctionProvider●●●同 Camunda 7L3 配置化挂接●●○ 表达式/脚本/模型扩展●●○ 表达式/脚本/Listener 配置●●○ 表达式/脚本●●● 设计器事件 SQL/WebApi/过程等●●○ 连接器/配置扩展●○○ XML 内嵌●●○同 7L1 前端/办理页外挂●○○ 自建 Task UI / 嵌入●●○ Tasklist 可定制偏自建●○○ 自建●●●WGFlow_* OverrideFiles●○○ 自建表单集成○○○●●○同 7事件语义产品化清单●●○ BPMN 事件 引擎扩展●●○ 同上 Cockpit 运维●●○●●● 节点/流程/表单事件清单●●○ 任务命令体系●○○ Step/Action●●○可不改核扩展●●●●●●●●●●●●外挂程序集/包●●●SPI 强调不改 cfg●●○●●●外部 Worker / 解耦集成●●○ Async / 可自建●●● External Task7●●○●●○ WebApi/HttpHandler/API●●○ 连接器●○○●●●同 7低代码实施友好度●○○●●○看是否上商业套件●●○Modeler 脚本●○○●●●事件配置面向实施●●○○○○●●○国际标准BPMN2贴合●●●●●●●●●●●○强审批语义非纯 BPMN 教条●●●○○○非 BPMN●●●社区活跃与资料新鲜度2025–2026●●●●●○7 CE 停更8 活跃●●○●●○国内资料多●○○开源停更○○○●●○新兴继承学习曲线Java 团队●●○●●○●●○●●○事件名友好需学产品约定●●○●○○老范式●●○3.1 读表方式中肯解读Activiti / Flowable / Camunda 7 / Operaton在 L2 几乎同级都是「Java 委托 监听器」成熟范式差异主要在工具链、External Task、运维套件与许可证演进。JFlow的差异化不在「能不能写 Java」而在L1L3 产品化同一事件名可前端拦、后端拦、设计器配且面向中国式审批事件发送、退回、撤销等清单化。FixFlow扩展思想先进SPI、连接器但开源维护状态拖累「能否作为长期二开底座」。OSWorkflow有历史价值不宜与现代 BPMN 引擎做「功能多寡」硬比仅作范式对照。4. 分引擎二开机制怎么挂公开资料口径4.1 Activiti / Flowable同源范式二开手段机制挂在哪里备注Service Task 委托实现JavaDelegate#executeBPMNserviceTask进程内同步执行执行监听器ExecutionListener流程/活动 start、end、take横切逻辑任务监听器TaskListenerUserTask create/assignment/complete…人工任务生命周期表达式 / 脚本JUEL / Groovy 等条件、Listener、ServiceTask轻量 L3自定义 BPMN 扩展flowable:/activiti:命名空间模型扩展元素适合封装可复用任务REST / Spring Boot引擎 API 嵌入应用侧编排「引擎外」业务亦可公平评价L2 极强、生态大L1 通常要自己做任务中心/表单壳L3 依赖模型里写表达式或上商业建模套件不像「设计器勾选事件 选 SQL/WebApi」那样面向实施人员。4.2 Camunda 7 / Operaton二开手段机制说明JavaDelegate / Listener与 Activiti 系同族Operaton 1.0 宣称 API 兼容 Camunda 7.24External TaskTopic Worker 拉取强项业务进程与引擎进程解耦Process Engine Plugin引擎级插件平台级扩展解析器、自定义行为等Script Listener模型内脚本L3 轻量挂接表单 / Tasklist可嵌入、可替换L1 可做但多为项目自建或二次定制Camunda 8 补充避免混比核心是 Zeebe二开主路径变为Job Worker / 外部客户端与 7.x「类路径里丢一个 Delegate」体验不同。选 8 是选编排平台不是简单替换 7 的嵌入式二开习惯。Operaton 补充二开能力本身 ≈ Camunda 7差异在于社区维护连续性与「无开放核心分层」主张而不是发明第三套委托模型。4.3 FixFlow二开手段公开资料要点任务命令扩展自定义 Command/Cmd/Filter6.x 系推荐Java SPI注册强调不改引擎 jar / cfgBPMN 模型扩展EMF 外部注入扩展元素连接器等避免改官方 BPMN Ecore连接器图形化外部系统调用动态语言Groovy / BeanShell 等公平评价扩展点设计对「可升级二开」意识强但开源停更后资料陈旧、人才与补丁风险必须写入选型风险表。4.4 OSWorkflow二开手段说明FunctionProviderJava 方法在 Action 上执行Condition / Validator条件与校验扩展Interceptor / Store存储与拦截定制XML 流程定义非 BPMN学习与协作成本偏高公平评价奠定了「工作流 状态机 可插拔函数」的早期范式不应再作为新 Java BPM 项目的主引擎但理解它有助于读懂后来 Listener/Delegate 的演进。4.5 JFlow专节见第 5 章三路并列前端外挂L1、后端外挂L2、事件配置L3共用SendWhen/SendSuccess/FlowOverAfter等事件语义服务端由ExecEvent统一调度。5. JFlow 三种二开结合代码说明可核验说明工作区以CCFlow.NET Vue3为完整可运行实证JFlowJava与之事件名、分层思想同源公开文档与产品口径长期如此。下表路径以本仓库为准。5.1 运行时分层发送为例用户点击发送 ├─ ① L1 前端外挂WGFlow_* / beforeSend ← UI 侧可拦截 └─ ② HTTP → 流程引擎 └─ ExecEvent统一调度 ├─ OverrideEvent全局后端拦截 ├─ FlowEventBase流程级后端外挂 ├─ FrmEvents / GenerDBSrc事件配置 └─ PushMsgs消息推送同事件标记职责分离 └─ ③ 前端 SendSuccess / afterSend5.2 模式对照总表模式一层谁写关键入口典型载体适合前端外挂L1前端/全栈办理页工具栏加载外挂WGFlow_{流程号}、OverrideFiles交互校验、提示、工具栏后端外挂L2后端ExecEvent→ 外挂实体FlowEventBase子类、OverrideEvent事务、ERP、改跳转人事件配置L3实施/低代码设计器「节点/流程/表单事件」Sys_FrmEvent GenerDBSrcSQL / WebApi / 过程快速挂接5.3 前端外挂L1项内容约定类名必须以WGFlow_开头绑定流程号基类Vue3/src/bp/UIEntity/WaiGuaBaseFlow.ts工厂Vue3/src/WF/Comm/UIEntity/ClassFactoryOfWaiGuaFlow.ts调用Vue3/src/WF/ToolBar.vue→ 发送前SendWhen成功后SendSuccessDemoVue3/src/App/Demo/WGFlow_064.ts、WGFlow_086.ts轻量钩子Vue3/src/DataUser/OverrideFiles/WF_MyFlow.tsbeforeSend/afterSend等拦截协议返回err...阻断钩子可返回false与 Activiti 系公平对比Activiti/Flowable/Camunda并不缺做前端扩展的能力但通常要自建 Task UIJFlow 把「按流程号发现外挂类」做成了产品约定降低「每个项目重做壳」的成本。代价是需接受产品命名约定与前端技术栈Vue3。5.4 后端外挂L2项内容基类CCFlow/Components/BP.WF/WF/FlowEventBase.csJFlow 对应同名思想类绑定FlowMark如,065,绑定一个或多个流程模板全局CCFlow/Components/BP.WF/OverrideEvent.csDemoCCFlow/Components/BP.App/Demo/F065.cs业务例BP.App/QMS/F001.cs可重写SendWhen/SendSuccess/ReturnBefore/FlowOverAfter…上下文HisNode、WorkID、HisEn、SendReturnObjs等可影响跳转人/是否停止发现反射扫描业务程序集/包注释要求进入约定程序集与 JavaDelegate 公平对比对比项Activiti 系JavaDelegateJFlowFlowEventBase挂接方式BPMN 节点上声明 class/表达式流程标记绑定 事件方法重写事件粒度偏「到达某活动」偏「中国式审批动作」清单改流转需ActivityBehavior等更深扩展基类变量可改跳转节点/接收人产品约定内标准化BPMN 可移植性更好审批语义更贴国内实施话术两者都是合格 L2谁更合适取决于你的模型是「国际 BPMN 编排」还是「审批事件驱动」。5.5 事件配置L3项内容落库Sys_FrmEvent实体BP.En30/Sys/FrmEvent.cs执行类型EventDoTypeSQL / SP / WebApi / EventBase / BuessUnit / SFProc …事件源表单 / 节点 / 流程管理端Vue3/.../FrmEvent/GL_Event.ts工具栏可见「前后端外挂」调度顺序全局拦截 → 后端外挂 → 配置事件 → 消息推送与「BPMN 里写表达式」公平对比表达式很灵活但实施友好度通常低于「在属性面板选事件 选执行体」。JFlow 的 L3 更像低代码集成Activiti 系的 L3 更像开发者模型扩展。5.6 BP.App 里常见业务扩展模式不止三种模式示例位置用途流程事件外挂BP.App/Demo/F065.cs、QMS/F001.csL2 主路径EventBaseBP.App/Demo/Event/EventDemo.cs给事件配置EventDoType.EventBase用HttpHandlerBP.App/Demo/Handler_Demo.cs自定义接口类名/方法名Entity 扩展BP.App/Demo/Student.cs业务表/权限实体BuessUnitBP.App/**/BuessUnit_*.cs可被事件配置引用的业务单元程序员 APIBP.WF/Dev2Interface注释明确面向二次开发5.7 JFlow 三种模式怎么选场景表场景更推荐原因发送前弹窗校验、禁用按钮前端外挂反馈即时同步 ERP、写台账、改接收人后端外挂强一致、可调试一条 SQL / 一个 WebApi事件配置实施可配全公司统一审计OverrideEvent一次拦截全流程需要叠加允许三层同时挂同一事件顺序固定先前端 → 后端 → 配置6. 「同一业务需求」七引擎挂法对照便于评审需求示例节点提交前校验金额提交成功后调用外部 WebApi页面上要即时提示。引擎校验服务端成功后调 API页面即时提示FlowableExecutionListener/ 前置 ServiceTaskServiceTaskJavaDelegate或 HTTP Task自建办理页Camunda 7 / OperatonListener / DelegateDelegate 或 External Task WorkerTasklist 定制或自建Activiti同 Flowable 范式同左自建JFlow后端外挂SendWhen或事件配置 SQLSendSuccess外挂或 WebApi 事件配置前端外挂SendWhen/SendSuccessFixFlow自定义命令/连接器/脚本连接器或 Java 扩展自建表单集成OSWorkflowFunction / ValidatorFunction基本自建可以看出差异往往不在「能不能做」而在「几层是产品能力、几层要项目自建」。7. 优劣势清单刻意写「短板」引擎二开优势二开短板 / 风险必须写明Flowable嵌入友好Delegate 生态成熟扩展命名空间清晰L1/低代码实施层需自建或商业版中国式退回/加签等常要自扩展Camunda 7External Task 解耦优秀运维工具全插件机制强CE 已 EOL继续用 7 需迁 Operaton 或买 EE/转 8Camunda 8云原生编排、Worker 模式清晰与传统 Java 嵌入式二开习惯断裂组件多Activiti入门资料多Spring 集成经典相对 Flowable/Camunda 工具链完整度与演进速度常被评价为偏弱Operaton接续 7 的二开资产Apache 社区取向生态与人才仍在积累不能假设「自动等于原 Camunda 商业支持」JFlowL1/L2/L3 产品化并列审批事件清单贴近国内交付BPMN 可移植性弱于 Activiti 系团队需学产品约定国际社区较小FixFlowSPI/连接器/中国式流转扩展意识强开源停更长期二开与安全补丁风险高OSWorkflow概念简单、历史课价值高非 BPMN、生态停滞不适合新项目8. 选型建议按「二开」目标而非品牌你的真实目标更稳妥方向要标准 BPMN、Java 中台编排、国际生态Flowable 或 Camunda 7→Operaton绿场云原生看 Camunda 8要业务与引擎进程强解耦Camunda 7 / Operaton External Task或 Camunda 8 Worker要国内审批交付快、实施也能挂逻辑、前端要按流程外挂JFlow三种二开已有 Camunda 7 代码资产、CE 停更焦虑Operaton迁移评估优先于推倒重来只想「轻量状态机 少量 Java 函数」且遗留系统可理解 OSWorkflow 思想但新项目不建议看中 FixFlow 插件化优先评估其商业续作与维护承诺而非仅看历史开源设计9. 资料与局限公正性声明9.1 主要公开依据类型官方用户手册Camunda Delegation Code、Flowable Service Task / Listener、Operaton 1.0 Release Notes社区对比与演进Capital One BPM 对比、Camunda 7→8 架构说明、Operaton 对 Camunda 7 CE 的继承说明FixFlow / FoxBPM 博客与 GitHub READMESPI、连接器、维护状态OSWorkflow 中文手册FunctionProvider本仓库设计文档与源码doc/BPM-解读/.流程引擎BPM设计之流程二开的三种模式.md以及BP.WF/BP.App/Vue3实证路径9.2 本文不做的事不宣称某一引擎「全面碾压」不把商业版独家能力偷偷算进社区版得分不把「中国式审批好用」偷换成「BPMN 标准更强」不把「BPMN 标准强」偷换成「国内交付一定更快」9.3 可能的偏差来源各产品版本迭代快表格是2026-07 公开信息快照JFlow 章节有本仓库源码优势Activiti 系以公开文档为主——已在总表用「同一 L1/L2/L3」约束降低偏科「社区活跃度」是定性判断不是星标数排行榜10. 附录JFlow/CCFlow 二开源码索引便于落地主题路径二开三种模式设计文档doc/BPM-解读/.流程引擎BPM设计之流程二开的三种模式.md前端外挂基类Vue3/src/bp/UIEntity/WaiGuaBaseFlow.ts前端外挂 DemoVue3/src/App/Demo/WGFlow_*.tsOverrideFilesVue3/src/DataUser/OverrideFiles/后端事件基类CCFlow/Components/BP.WF/WF/FlowEventBase.cs后端外挂 DemoCCFlow/Components/BP.App/Demo/F065.cs统一调度CCFlow/Components/BP.WF/WF/ExecEvent.cs全局拦截CCFlow/Components/BP.WF/OverrideEvent.cs事件配置实体CCFlow/Components/BP.En30/Sys/FrmEvent.cs事件执行类型CCFlow/Components/BP.En30/Sys/EnumLib.cs→EventDoType管理端事件Vue3/src/WF/Admin/FrmLogic/MapData/FrmEvent/GL_Event.ts程序员 APICCFlow/Components/BP.WF/Dev2Interface.cs结语把「二开」先定义清楚再比七款引擎结论会朴素很多Activiti 家族赢在标准委托模型与国际生态JFlow赢在审批场景下 L1/L2/L3 三路产品化且事件语义统一Operaton解决的是 Camunda 7 CE 停更后的「二开资产续命」FixFlow / OSWorkflow分别代表「国产插件化高峰」与「早期函数扩展」——有学习价值新项目需谨慎。好的二开能力 挂得上去 不改内核 团队真的写得动/配得动。选引擎时先问自己缺的是 L1、L2 还是 L3而不是先问品牌。
七款 Java 工作流引擎「二开能力」怎么比
七款 Java 工作流引擎「二开能力」怎么比项目内容文档定位公开资料 开源实现对照下的二次开发能力对比非性能测试、非商务报价对比对象Flowable、Camunda以 7.x 嵌入式为主并注明 8、Activiti、JFlow、FixFlow、OSWorkflow、Operaton编制原则中肯、公平、公正先统一「二开」定义再按同一维度打分式对照避免「用自家长处量别人短处」JFlow 实证结合工作区源码BP.App/BP.En30/BP.WF/CCFlow/Vue3CCFlow/.NET 与 JFlow/Java 事件模型同源资料性质网络公开文档、官方手册、社区仓库 README、本仓库可核验源码一句话结论「二开」不是改引擎源码而是在不污染内核的前提下把业务逻辑挂到流程生命周期上。Activiti 系Flowable / Camunda 7 / Activiti / Operaton强在BPMN 标准扩展 Java 委托/监听器/外部任务JFlow 强在同一套事件语义下的前端外挂 / 后端外挂 / 事件配置三路并行FixFlow 曾以微内核 SPI 插件见长但开源线停滞OSWorkflow 属于早期 XML FunctionProvider 范式已不适合作为新项目主选。没有「绝对第一」——只有「与团队技能、集成形态、是否要低代码配置」是否匹配。1. 先确认流程引擎「二开」的定义与范围1.1 定义建议统一口径流程引擎二开 流程模板设计完成之后在不修改引擎内核发送/流转代码的前提下用脚本、类、配置或 Worker与引擎在固定生命周期点交互从而完成业务校验、集成、通知、台账等逻辑的过程。对比项改引擎不建议叫二开流程二开本文口径改动位置内核发送、状态机、持久化外挂类 / Listener / Delegate / 事件配置 / Worker升级成本高难合并低业务与内核可分离升级职责边界引擎与业务缠在一起引擎管流转二开管业务可交付性难复用、难评审可按流程模板 / 节点绑定交付1.2 本文「二开」包含什么、不包含什么纳入对比二开能力不纳入或仅作背景生命周期挂接点发送前/后、任务创建/完成、流程结束等纯 BPMN 建模能力、表单 UI 美观度扩展机制Java 类、脚本、SPI、配置、外部 Worker商业授权价格、厂商 SLAAPI / REST / 嵌入式调用面压测 TPS、集群极限吞吐前端/办理页可扩展性若产品提供组织权限、门户美观等周边产品是否可不改核升级生态插件市场丰富度作参考1.3 为公平对比统一成「三层挂接模型」各产品名词不同但二开诉求可映射为同一三层模型层次用户语言典型诉求L1 交互层前端/页面侧发送前校验、按钮定制、提示、字段联动L2 服务层后端/进程内代码强事务、改接收人/跳转、同步 ERP、审计L3 配置/编排层设计器或模型配置SQL/HTTP/脚本/表达式少写代码也能挂业务下文各引擎对照时都尽量落到 L1 / L2 / L3避免「只比 JavaDelegate、不比页面扩展」的偏科。2. 七款引擎速览背景避免误读引擎血统与定位公开信息许可证/现状要点与「二开」最相关的一句话ActivitiAlfresco 系经典开源 BPMN 引擎后续与 Flowable 分叉演进Apache 2.0社区版偏「引擎核心」二开主路径JavaDelegate Listener 表达式FlowableActiviti 核心团队分叉后的活跃引擎强调嵌入与 SpringOSS 商业能力分层二开主路径与 Activiti 同源扩展命名空间更丰富Camunda2013 从 Activiti 分叉7.x 嵌入式8.x 转向 Zeebe 编排7.x CE 已 EOL约 2025-108 为源码可得 商业模块7.xDelegate/Listener/External Task8.x外部 Worker 为主OperatonCamunda 7 CE 社区继承者约 2024 分叉1.0 对齐 7.24 APIApache 2.0社区驱动二开模型 ≈ Camunda 7迁移主要是依赖坐标JFlow驰骋 BPM 的 Java 版与 CCFlow.NET事件模型同源国内开源/商业并存生态前端外挂 后端外挂 事件配置三路并列FixFlow国产 BPMN2 引擎微内核 插件强调中国式流转公开仓库称开源版停更商业线另续SPI 任务命令、连接器、EMF 模型扩展OSWorkflowOpenSymphony 早期 Java 工作流XML 定义历史项目社区基本停滞Function / Condition / 拦截器式扩展非现代 BPMN公平提示Camunda 8 与 Camunda 7 / Operaton 不是同一套二开体验。本文默认对「Java 嵌入式 BPMN 引擎」以Camunda 7 / Operaton为代表对 Camunda 8 单独注明「外部 Worker 优先」。3. 总表二开能力对照同一维度评分说明避免「营销满分」●●● 产品化完整、文档与实践成熟●●○ 可用且常见但需较多自建或工具链配合●○○ 有机制但弱产品化 / 需改较多外围○○○ 基本不具备该层或需改核— 不适用或公开资料不足以公允评价维度FlowableCamunda 7ActivitiJFlowFixFlowOSWorkflowOperatonL2 后端代码挂接●●● Delegate/Listener●●● Delegate/Listener/Plugin●●● Delegate/Listener●●●FlowEventBase 全局拦截●●● Command/SPI/连接器●●○ FunctionProvider●●●同 Camunda 7L3 配置化挂接●●○ 表达式/脚本/模型扩展●●○ 表达式/脚本/Listener 配置●●○ 表达式/脚本●●● 设计器事件 SQL/WebApi/过程等●●○ 连接器/配置扩展●○○ XML 内嵌●●○同 7L1 前端/办理页外挂●○○ 自建 Task UI / 嵌入●●○ Tasklist 可定制偏自建●○○ 自建●●●WGFlow_* OverrideFiles●○○ 自建表单集成○○○●●○同 7事件语义产品化清单●●○ BPMN 事件 引擎扩展●●○ 同上 Cockpit 运维●●○●●● 节点/流程/表单事件清单●●○ 任务命令体系●○○ Step/Action●●○可不改核扩展●●●●●●●●●●●●外挂程序集/包●●●SPI 强调不改 cfg●●○●●●外部 Worker / 解耦集成●●○ Async / 可自建●●● External Task7●●○●●○ WebApi/HttpHandler/API●●○ 连接器●○○●●●同 7低代码实施友好度●○○●●○看是否上商业套件●●○Modeler 脚本●○○●●●事件配置面向实施●●○○○○●●○国际标准BPMN2贴合●●●●●●●●●●●○强审批语义非纯 BPMN 教条●●●○○○非 BPMN●●●社区活跃与资料新鲜度2025–2026●●●●●○7 CE 停更8 活跃●●○●●○国内资料多●○○开源停更○○○●●○新兴继承学习曲线Java 团队●●○●●○●●○●●○事件名友好需学产品约定●●○●○○老范式●●○3.1 读表方式中肯解读Activiti / Flowable / Camunda 7 / Operaton在 L2 几乎同级都是「Java 委托 监听器」成熟范式差异主要在工具链、External Task、运维套件与许可证演进。JFlow的差异化不在「能不能写 Java」而在L1L3 产品化同一事件名可前端拦、后端拦、设计器配且面向中国式审批事件发送、退回、撤销等清单化。FixFlow扩展思想先进SPI、连接器但开源维护状态拖累「能否作为长期二开底座」。OSWorkflow有历史价值不宜与现代 BPMN 引擎做「功能多寡」硬比仅作范式对照。4. 分引擎二开机制怎么挂公开资料口径4.1 Activiti / Flowable同源范式二开手段机制挂在哪里备注Service Task 委托实现JavaDelegate#executeBPMNserviceTask进程内同步执行执行监听器ExecutionListener流程/活动 start、end、take横切逻辑任务监听器TaskListenerUserTask create/assignment/complete…人工任务生命周期表达式 / 脚本JUEL / Groovy 等条件、Listener、ServiceTask轻量 L3自定义 BPMN 扩展flowable:/activiti:命名空间模型扩展元素适合封装可复用任务REST / Spring Boot引擎 API 嵌入应用侧编排「引擎外」业务亦可公平评价L2 极强、生态大L1 通常要自己做任务中心/表单壳L3 依赖模型里写表达式或上商业建模套件不像「设计器勾选事件 选 SQL/WebApi」那样面向实施人员。4.2 Camunda 7 / Operaton二开手段机制说明JavaDelegate / Listener与 Activiti 系同族Operaton 1.0 宣称 API 兼容 Camunda 7.24External TaskTopic Worker 拉取强项业务进程与引擎进程解耦Process Engine Plugin引擎级插件平台级扩展解析器、自定义行为等Script Listener模型内脚本L3 轻量挂接表单 / Tasklist可嵌入、可替换L1 可做但多为项目自建或二次定制Camunda 8 补充避免混比核心是 Zeebe二开主路径变为Job Worker / 外部客户端与 7.x「类路径里丢一个 Delegate」体验不同。选 8 是选编排平台不是简单替换 7 的嵌入式二开习惯。Operaton 补充二开能力本身 ≈ Camunda 7差异在于社区维护连续性与「无开放核心分层」主张而不是发明第三套委托模型。4.3 FixFlow二开手段公开资料要点任务命令扩展自定义 Command/Cmd/Filter6.x 系推荐Java SPI注册强调不改引擎 jar / cfgBPMN 模型扩展EMF 外部注入扩展元素连接器等避免改官方 BPMN Ecore连接器图形化外部系统调用动态语言Groovy / BeanShell 等公平评价扩展点设计对「可升级二开」意识强但开源停更后资料陈旧、人才与补丁风险必须写入选型风险表。4.4 OSWorkflow二开手段说明FunctionProviderJava 方法在 Action 上执行Condition / Validator条件与校验扩展Interceptor / Store存储与拦截定制XML 流程定义非 BPMN学习与协作成本偏高公平评价奠定了「工作流 状态机 可插拔函数」的早期范式不应再作为新 Java BPM 项目的主引擎但理解它有助于读懂后来 Listener/Delegate 的演进。4.5 JFlow专节见第 5 章三路并列前端外挂L1、后端外挂L2、事件配置L3共用SendWhen/SendSuccess/FlowOverAfter等事件语义服务端由ExecEvent统一调度。5. JFlow 三种二开结合代码说明可核验说明工作区以CCFlow.NET Vue3为完整可运行实证JFlowJava与之事件名、分层思想同源公开文档与产品口径长期如此。下表路径以本仓库为准。5.1 运行时分层发送为例用户点击发送 ├─ ① L1 前端外挂WGFlow_* / beforeSend ← UI 侧可拦截 └─ ② HTTP → 流程引擎 └─ ExecEvent统一调度 ├─ OverrideEvent全局后端拦截 ├─ FlowEventBase流程级后端外挂 ├─ FrmEvents / GenerDBSrc事件配置 └─ PushMsgs消息推送同事件标记职责分离 └─ ③ 前端 SendSuccess / afterSend5.2 模式对照总表模式一层谁写关键入口典型载体适合前端外挂L1前端/全栈办理页工具栏加载外挂WGFlow_{流程号}、OverrideFiles交互校验、提示、工具栏后端外挂L2后端ExecEvent→ 外挂实体FlowEventBase子类、OverrideEvent事务、ERP、改跳转人事件配置L3实施/低代码设计器「节点/流程/表单事件」Sys_FrmEvent GenerDBSrcSQL / WebApi / 过程快速挂接5.3 前端外挂L1项内容约定类名必须以WGFlow_开头绑定流程号基类Vue3/src/bp/UIEntity/WaiGuaBaseFlow.ts工厂Vue3/src/WF/Comm/UIEntity/ClassFactoryOfWaiGuaFlow.ts调用Vue3/src/WF/ToolBar.vue→ 发送前SendWhen成功后SendSuccessDemoVue3/src/App/Demo/WGFlow_064.ts、WGFlow_086.ts轻量钩子Vue3/src/DataUser/OverrideFiles/WF_MyFlow.tsbeforeSend/afterSend等拦截协议返回err...阻断钩子可返回false与 Activiti 系公平对比Activiti/Flowable/Camunda并不缺做前端扩展的能力但通常要自建 Task UIJFlow 把「按流程号发现外挂类」做成了产品约定降低「每个项目重做壳」的成本。代价是需接受产品命名约定与前端技术栈Vue3。5.4 后端外挂L2项内容基类CCFlow/Components/BP.WF/WF/FlowEventBase.csJFlow 对应同名思想类绑定FlowMark如,065,绑定一个或多个流程模板全局CCFlow/Components/BP.WF/OverrideEvent.csDemoCCFlow/Components/BP.App/Demo/F065.cs业务例BP.App/QMS/F001.cs可重写SendWhen/SendSuccess/ReturnBefore/FlowOverAfter…上下文HisNode、WorkID、HisEn、SendReturnObjs等可影响跳转人/是否停止发现反射扫描业务程序集/包注释要求进入约定程序集与 JavaDelegate 公平对比对比项Activiti 系JavaDelegateJFlowFlowEventBase挂接方式BPMN 节点上声明 class/表达式流程标记绑定 事件方法重写事件粒度偏「到达某活动」偏「中国式审批动作」清单改流转需ActivityBehavior等更深扩展基类变量可改跳转节点/接收人产品约定内标准化BPMN 可移植性更好审批语义更贴国内实施话术两者都是合格 L2谁更合适取决于你的模型是「国际 BPMN 编排」还是「审批事件驱动」。5.5 事件配置L3项内容落库Sys_FrmEvent实体BP.En30/Sys/FrmEvent.cs执行类型EventDoTypeSQL / SP / WebApi / EventBase / BuessUnit / SFProc …事件源表单 / 节点 / 流程管理端Vue3/.../FrmEvent/GL_Event.ts工具栏可见「前后端外挂」调度顺序全局拦截 → 后端外挂 → 配置事件 → 消息推送与「BPMN 里写表达式」公平对比表达式很灵活但实施友好度通常低于「在属性面板选事件 选执行体」。JFlow 的 L3 更像低代码集成Activiti 系的 L3 更像开发者模型扩展。5.6 BP.App 里常见业务扩展模式不止三种模式示例位置用途流程事件外挂BP.App/Demo/F065.cs、QMS/F001.csL2 主路径EventBaseBP.App/Demo/Event/EventDemo.cs给事件配置EventDoType.EventBase用HttpHandlerBP.App/Demo/Handler_Demo.cs自定义接口类名/方法名Entity 扩展BP.App/Demo/Student.cs业务表/权限实体BuessUnitBP.App/**/BuessUnit_*.cs可被事件配置引用的业务单元程序员 APIBP.WF/Dev2Interface注释明确面向二次开发5.7 JFlow 三种模式怎么选场景表场景更推荐原因发送前弹窗校验、禁用按钮前端外挂反馈即时同步 ERP、写台账、改接收人后端外挂强一致、可调试一条 SQL / 一个 WebApi事件配置实施可配全公司统一审计OverrideEvent一次拦截全流程需要叠加允许三层同时挂同一事件顺序固定先前端 → 后端 → 配置6. 「同一业务需求」七引擎挂法对照便于评审需求示例节点提交前校验金额提交成功后调用外部 WebApi页面上要即时提示。引擎校验服务端成功后调 API页面即时提示FlowableExecutionListener/ 前置 ServiceTaskServiceTaskJavaDelegate或 HTTP Task自建办理页Camunda 7 / OperatonListener / DelegateDelegate 或 External Task WorkerTasklist 定制或自建Activiti同 Flowable 范式同左自建JFlow后端外挂SendWhen或事件配置 SQLSendSuccess外挂或 WebApi 事件配置前端外挂SendWhen/SendSuccessFixFlow自定义命令/连接器/脚本连接器或 Java 扩展自建表单集成OSWorkflowFunction / ValidatorFunction基本自建可以看出差异往往不在「能不能做」而在「几层是产品能力、几层要项目自建」。7. 优劣势清单刻意写「短板」引擎二开优势二开短板 / 风险必须写明Flowable嵌入友好Delegate 生态成熟扩展命名空间清晰L1/低代码实施层需自建或商业版中国式退回/加签等常要自扩展Camunda 7External Task 解耦优秀运维工具全插件机制强CE 已 EOL继续用 7 需迁 Operaton 或买 EE/转 8Camunda 8云原生编排、Worker 模式清晰与传统 Java 嵌入式二开习惯断裂组件多Activiti入门资料多Spring 集成经典相对 Flowable/Camunda 工具链完整度与演进速度常被评价为偏弱Operaton接续 7 的二开资产Apache 社区取向生态与人才仍在积累不能假设「自动等于原 Camunda 商业支持」JFlowL1/L2/L3 产品化并列审批事件清单贴近国内交付BPMN 可移植性弱于 Activiti 系团队需学产品约定国际社区较小FixFlowSPI/连接器/中国式流转扩展意识强开源停更长期二开与安全补丁风险高OSWorkflow概念简单、历史课价值高非 BPMN、生态停滞不适合新项目8. 选型建议按「二开」目标而非品牌你的真实目标更稳妥方向要标准 BPMN、Java 中台编排、国际生态Flowable 或 Camunda 7→Operaton绿场云原生看 Camunda 8要业务与引擎进程强解耦Camunda 7 / Operaton External Task或 Camunda 8 Worker要国内审批交付快、实施也能挂逻辑、前端要按流程外挂JFlow三种二开已有 Camunda 7 代码资产、CE 停更焦虑Operaton迁移评估优先于推倒重来只想「轻量状态机 少量 Java 函数」且遗留系统可理解 OSWorkflow 思想但新项目不建议看中 FixFlow 插件化优先评估其商业续作与维护承诺而非仅看历史开源设计9. 资料与局限公正性声明9.1 主要公开依据类型官方用户手册Camunda Delegation Code、Flowable Service Task / Listener、Operaton 1.0 Release Notes社区对比与演进Capital One BPM 对比、Camunda 7→8 架构说明、Operaton 对 Camunda 7 CE 的继承说明FixFlow / FoxBPM 博客与 GitHub READMESPI、连接器、维护状态OSWorkflow 中文手册FunctionProvider本仓库设计文档与源码doc/BPM-解读/.流程引擎BPM设计之流程二开的三种模式.md以及BP.WF/BP.App/Vue3实证路径9.2 本文不做的事不宣称某一引擎「全面碾压」不把商业版独家能力偷偷算进社区版得分不把「中国式审批好用」偷换成「BPMN 标准更强」不把「BPMN 标准强」偷换成「国内交付一定更快」9.3 可能的偏差来源各产品版本迭代快表格是2026-07 公开信息快照JFlow 章节有本仓库源码优势Activiti 系以公开文档为主——已在总表用「同一 L1/L2/L3」约束降低偏科「社区活跃度」是定性判断不是星标数排行榜10. 附录JFlow/CCFlow 二开源码索引便于落地主题路径二开三种模式设计文档doc/BPM-解读/.流程引擎BPM设计之流程二开的三种模式.md前端外挂基类Vue3/src/bp/UIEntity/WaiGuaBaseFlow.ts前端外挂 DemoVue3/src/App/Demo/WGFlow_*.tsOverrideFilesVue3/src/DataUser/OverrideFiles/后端事件基类CCFlow/Components/BP.WF/WF/FlowEventBase.cs后端外挂 DemoCCFlow/Components/BP.App/Demo/F065.cs统一调度CCFlow/Components/BP.WF/WF/ExecEvent.cs全局拦截CCFlow/Components/BP.WF/OverrideEvent.cs事件配置实体CCFlow/Components/BP.En30/Sys/FrmEvent.cs事件执行类型CCFlow/Components/BP.En30/Sys/EnumLib.cs→EventDoType管理端事件Vue3/src/WF/Admin/FrmLogic/MapData/FrmEvent/GL_Event.ts程序员 APICCFlow/Components/BP.WF/Dev2Interface.cs结语把「二开」先定义清楚再比七款引擎结论会朴素很多Activiti 家族赢在标准委托模型与国际生态JFlow赢在审批场景下 L1/L2/L3 三路产品化且事件语义统一Operaton解决的是 Camunda 7 CE 停更后的「二开资产续命」FixFlow / OSWorkflow分别代表「国产插件化高峰」与「早期函数扩展」——有学习价值新项目需谨慎。好的二开能力 挂得上去 不改内核 团队真的写得动/配得动。选引擎时先问自己缺的是 L1、L2 还是 L3而不是先问品牌。