当前位置: 首页 > news >正文

流程引擎BPM设计之:流程二开的三种模式

.流程引擎BPM设计之:流程二开的三种模式

摘要

驰骋 BPM 主张:流程可以设计出来,业务却不能写进引擎内核。
流程设计完成后,要用脚本与流程引擎交互,在发送成功、发送前、退回、结束等生命周期点嵌入业务逻辑——这一能力,我们称为流程二开

CCFlow / JFlow 工作流引擎为此提供了三种编写脚本的模式前端外挂、后端外挂、事件配置
团队可按场景复杂度与技术特征选型,三种模式共用同一套事件语义(如SendWhen/SendSuccess),互为补充、互不排斥。

本文说明驰骋 BPM 对「流程二开」的设计思想与主张,重点记录关键设计决策,并以驰骋 BPM(CCFlow / JFlow)为实现对照。


一、什么是流程二开

1.1 定义

流程二开= 流程设计出来之后,用脚本与流程引擎交互,实现相关业务逻辑的过程。

典型场景:在发送成功时做业务同步、在发送前做校验拦截、在流程结束后写台账——不是改引擎源码,而是在固定挂接点嵌入执行一段脚本

对比项改引擎流程二开
改动位置内核发送/退回代码外挂 / 事件脚本
升级成本高,难合并低,核心可独立升级
职责边界引擎与业务缠在一起引擎管流转,二开管业务
可交付性难复用可按流程模板绑定交付

1.2 驰骋的主张

主张一:引擎稳定,业务外挂。
流程引擎只回答「怎么流转」;「流转时业务做什么」交给二开。

主张二:同一套事件时钟,三种写法。
不发明三套事件名;前端外挂、后端外挂、事件配置都认SendWhenSendSuccessFlowOverAfter等同一语义。

主张三:按团队选模式,不按产品逼模式。
前端强、后端强、配置优先——三种路径都合法,按场景与团队技术特征选择。


二、三种模式总览

模式一句话谁写适合什么团队典型载体
前端外挂在浏览器侧挂流程脚本前端 / 全栈Vue/TS 能力强,重交互校验WGFlow_{流程号}、OverrideFiles
后端外挂在服务端挂强类型事件类后端C# / Java 能力强,重事务与集成FlowEventBase子类、DLL/程序集
事件配置在设计器里配执行体实施 / 低代码希望少写代码、快速上线Sys_FrmEvent+ GenerDBSrc(SQL / WebApi / 过程等)

管理端把「前后端外挂」与「事件配置」并置(事件列表工具栏可见「前后端外挂」),产品语义上三者是并列的二开入口,不是互相替代。

运行时分层(设计示意)

用户点击发送 ├─ ① 前端外挂:WGFlow_* / beforeSend ← 可拦截(UI 侧) └─ ② HTTP → 流程引擎发送编排 └─ ExecEvent(统一调度) ├─ OverrideEvent(全局后端拦截) ├─ FlowEventBase(流程级后端外挂) ├─ FrmEvents / GenerDBSrc(事件配置) └─ PushMsgs(消息推送,同事件标记) └─ ③ 前端 SendSuccess / afterSend ← 发送成功后的前端副作用

设计记录 R1:二开挂接点与消息推送共用事件标记,但执行职责分离——消息走PushMsg,业务走外挂/配置,避免「发消息的代码里夹业务」。


三、模式一:前端外挂

3.1 设计意图

前端外挂回答的是:「用户还在页面上时,要不要先校验、先提示、先改交互?」

适合:

  • 发送前的表单完整性、金额/天数等即时校验
  • 发送成功后的前端提示、局部刷新、调用浏览器侧能力
  • 自定义工具栏按钮、打开表单后的 UI 初始化

不适合单独承担:强事务写库、跨系统强一致同步(应交后端外挂或事件配置中的服务端执行体)。

3.2 设计记录

编号决策说明
F1约定优于配置注册类名必须以WGFlow_开头,并绑定流程号;工厂扫描发现即可,减少手工注册表
F2前后端事件名对齐前端同样提供SendWhen/SendSuccess/ReturnBefore等,降低「学两套事件」的成本
F3不改核心,改外挂目录外挂与 OverrideFiles 落在应用扩展区,升级引擎不覆盖业务脚本
F4可拦截、可放行返回err@...或钩子返回false可阻断操作;成功路径再触发SendSuccess

3.3 能力边界(宣传口径)

  • 轻量钩子:如beforeSend/afterSend,适合快速嵌入
  • 流程外挂类:继承流程外挂基类,按流程号完整覆盖生命周期
  • 字段级脚本:经典 JSLib / 表单字段脚本,属于更细粒度的前端扩展,可与流程外挂并存

主张四:前端外挂管「人机交互边界」,不管「系统真相边界」。
交互可拦在浏览器;业务真相以服务端事件为准。


四、模式二:后端外挂

4.1 设计意图

后端外挂回答的是:「引擎已经进入服务端生命周期,业务要以强类型、可调试的方式介入。」

适合:

  • 发送前复杂规则、可改跳转节点 / 接收人
  • 发送成功后写第三方待办、同步 ERP/主数据
  • 需要访问引擎运行时变量(当前节点、WorkID、发送返回对象等)
  • 平台级全局拦截(所有流程统一审计、统一组织策略)

4.2 设计记录

编号决策说明
B1一个子类绑定一个(组)流程模板通过FlowMark(如,065,)注册,避免「一个上帝类管全世界」
B2基类暴露引擎变量子类可直接使用当前节点、WorkID、发送对象、系统参数等,降低「自己再查一遍引擎状态」的成本
B3程序集扫描即可用类放入BP.*.dll(CCFlow)或对应包(JFlow),由工厂反射发现,部署即生效
B4全局与流程级分层全局OverrideEvent/ 可重写文件做平台定制;FlowEventBase做流程级二开
B5统一错误协议返回err@...阻止发送;与前端拦截语义一致,运维可读

源码注释中的产品原话(设计思想直述):

集成该基类的子类,可以重写事件的方法与基类交互;一个子类必须与一个流程模版绑定;基类里有很多流程运行过程中的变量,可辅助编写复杂业务逻辑。

4.3 与「改引擎」的本质区别

后端外挂写的是业务程序集,不是改NodeSend内核。
引擎升级时,业务 DLL / 包可独立保留——这是驰骋坚持「可二开而不改核」的技术承诺。


五、模式三:事件配置

5.1 设计意图

事件配置回答的是:「没有专职开发时,实施人员能否在设计器里把业务挂上?」

适合:

  • SQL 校验 / 存储过程
  • WebApi 同步外部系统
  • 指向已有事件类、业务单元(BuessUnit)
  • 节点事件、流程事件、表单事件的快速挂接

5.2 设计记录

编号决策说明
C1配置优先、代码兜底能配就不强制写 DLL;复杂逻辑再落到 EventBase / 后端外挂
C2事件源三分表单 / 节点 / 流程三类EventSource,挂接点与业务对象对齐
C3执行体数据源化现行主路径收敛到 GenerDBSrc(如 SFProc),SQL、WebApi、过程等统一编排
C4与外挂并列入口设计器事件列表提供「前后端外挂」入口,明确:配置与代码二开是同一产品能力的两翼
C5事件清单产品化每个事件有名称与业务说明,实施可按清单勾选,而不是背事件码

5.3 能力边界

事件配置擅长「标准化连接」:查库、调接口、调过程。
当逻辑需要大量分支、强类型重构、深度使用引擎变量时,应升级到后端外挂;当逻辑主要服务页面交互时,应落到前端外挂

主张五:低代码不是弱代码,而是把「简单集成」从程序员日程里解放出来。


六、如何选型(场景 × 团队)

场景更推荐原因
发送前弹窗校验、禁用按钮、字段联动前端外挂反馈即时,无需先打到服务端
发送成功同步 ERP、写业务台账、改跳转人后端外挂强一致、可事务、可调试
一条 SQL / 一个 WebApi 就能完成事件配置实施可配,交付最快
全公司统一审计、统一组织策略后端全局外挂一次拦截,全流程生效
前端团队强、后端人手紧前端外挂 + 事件配置交互前端扛,集成配置扛
后端团队强、要长期演进后端外挂为主可测试、可重构、可版本管理
实施为主、少开发事件配置为主设计器闭环

设计记录 R2:三种模式允许叠加。
同一SendWhen可以:前端先拦 → 后端再拦 → 配置再执行。顺序固定、语义清晰,叠加不是混乱,而是分层。


七、设计思想小结(宣传要点)

  1. 二开是一等公民:流程设计完成不等于项目完成;业务挂接点是产品能力,不是售后补丁。
  2. 事件语义统一:前端、后端、配置认同一套时钟,降低培训与协作成本。
  3. 核心不可污:升级路径建立在「业务在外、引擎在内」之上。
  4. 模式服务团队:不是强迫全员写 DLL,也不是强迫全员只配 SQL。
  5. 消息与业务解耦:同一事件点可推消息,也可跑脚本,二者独立配置。

八、以驰骋 BPM(CCFlow / JFlow)为例

以下用驰骋 BPM 开源引擎CCFlow(.NET)JFlow(Java)说明上述思想如何落地。二者事件模型同源:事件名、二开分层、执行调度思想一致,差异主要在语言与程序集/包机制。

8.1 统一调度:ExecEvent

服务端由ExecEvent统一执行节点/流程/表单事件。节点发送时,大致顺序为:

  1. 全局拦截(如OverrideEvent
  2. 流程事件实体(FlowEventBase后端外挂)
  3. 配置事件(FrmEvents→ GenerDBSrc)
  4. 消息推送(PushMsgs,同事件标记)

这直接对应本文「后端外挂 + 事件配置」的服务端分层。

8.2 前端外挂示例(CCFlow Vue3)

  • 基类:WaiGuaBaseFlow(类名必须以WGFlow_开头)
  • 约定:WGFlow_064绑定流程064
  • 发送链路:工具栏先调SendWhen,服务端成功后再调SendSuccess
  • 轻量替代:DataUser/OverrideFiles下的beforeSend/afterSend等钩子

含义:前端外挂不是「随便写个 onClick」,而是与后端同源的事件协议。

8.3 后端外挂示例(CCFlow)

DemoF065 : FlowEventBase

  • FlowMark = ",065,"绑定流程 065
  • 重写SendWhen/SendSuccess
  • 注释明确标注为「后端外挂」;返回err@...可阻止发送
  • 类需进入BP.*.dll才能被反射解析

JFlow 侧以 Java 包 + 同类FlowEventBase思想对应,事件方法与标记保持一致,便于跨语言团队按同一文档实施。

8.4 事件配置示例(设计器)

  • 节点属性 →「节点事件」;流程属性 →「流程事件」
  • 写入Sys_FrmEvent,执行体走 GenerDBSrc(SQL / WebApi / SFProc / EventBase / BuessUnit 等)
  • 事件列表工具栏提供「前后端外挂」帮助入口,产品上承认:配置与代码二开并存

举例

挂接点配置做法外挂做法
节点发送前SendWhenSQL 校验金额是否超限FlowEventBase.SendWhen复杂规则 + 改接收人
节点发送成功SendSuccessWebApi 同步 ERP后端外挂写第三方待办
流程结束FlowOverAfter过程归档前端外挂提示 + 后端外挂关外部待办

8.5 一句话对照

思想在 CCFlow / JFlow 中的落点
流程二开事件挂接脚本,而不是改发送内核
前端外挂WGFlow_*/ OverrideFiles
后端外挂FlowEventBase+ 程序集/包扫描
事件配置Sys_FrmEvent+ GenerDBSrc
统一语义SendWhen/SendSuccess/FlowOverAfter

结语

驰骋 BPM 对流程二开的态度很明确:

把流程设计好,把业务挂上去;挂的方式可以是前端外挂、后端外挂,或事件配置——按场景选,按团队选,但不要改引擎。

以 CCFlow / JFlow 为证:三种模式不是营销口号,而是源码里可运行、可演示、可交付的工程现实。


附录:关键源码索引(便于二次开发)

主题CCFlow / Vue3 路径(示例)
前端外挂基类Vue3/src/bp/UIEntity/WaiGuaBaseFlow.ts
前端外挂 DemoVue3/src/App/Demo/WGFlow_*.ts
后端事件基类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
管理端事件列表Vue3/src/WF/Admin/FrmLogic/MapData/FrmEvent/GL_Event.ts
节点/流程/表单事件清单EvenListNode/EvenListFlow/EvenListFrm

本文档属于「.流程引擎BPM设计之」系列,侧重设计思想与主张;具体 API 以当期产品帮助与源码为准。

http://www.jsqmd.com/news/1250934/

相关文章:

  • 电瓶车托运找什么物流?慧寄侠整车直发,260元起无忧寄车 - 快递物流资讯
  • 隐私小号中间号技术架构实战:隐私通话、号码保护、AXB中继模式与企业落地避坑
  • 2026年数据分析平台选型参考 - 科技焦点
  • 2026年想采购干辣椒自动去蒂剪把机加工厂怎么联系 - 热点品牌推荐
  • 交通运输数据安全新规落地,灾备成硬性合规要求
  • 基于深度强化学习的电池储能系统优化控制实践
  • 手机证件照自己拍全教程:拍摄技巧、换底色与免费工具盘点 - AI测评专家
  • 2026年7月最新|浪琴香港售后服务中心地址汇总+客户服务电话全解析 - 浪琴官方售后服务中心
  • 2026年热门的世界魔鬼城旅游公司出行选择全攻略 - 热点品牌推荐
  • 东莞卫浴螺丝工厂选购指南 卫浴行业紧固件采购实用参考 - 热点品牌推荐
  • AI病害识别怎么分级?千寻驰观技术解读
  • 从交易到社群:车主服务生态的构建与用户价值延伸
  • 2026年贵阳工伤维权选对=省心 王兴波律师护航赔偿 - 本地品牌推荐
  • 福州CMA甲醛检测公司怎么选:只测不除的专业实验室——安鑫CMA甲醛检测及公共卫生检测 - 信誉隆金银铂奢回收
  • 2026年BI大数据分析平台横向测评 - 科技焦点
  • 《你别回头找我》为何能成为可传播的试听入口
  • 企业短信平台技术架构与合规落地实战:验证码、通知、营销短信底层原理与避坑方案
  • 北京四合院的味道,怎么“搬”进墓园?
  • 低价订阅plus
  • 武汉正规大牌钻石首饰回收实体店 鉴定靠谱,无 GIA 证书钻饰回收好去处 - 大牌深度测评
  • MCP+A2A融合协议落地:Agent协议层标准化,信任层才是最大硬仗
  • 2026去水印小程序隐私安全隐患:免费去水印工具测评与风险提醒 - 免费软件工具方法教程
  • 6本期刊被剔除,WOS更新7月期刊目录
  • 盐城滨海县亨得利名表服务中心电话公示(2026年7月最新) - 亨得利官方
  • AI毕业论文排版工具:10分钟解决格式难题
  • Journal of Neurology:脑结构改变对纯遗传性痉挛性截瘫4型患者运动体征的影响
  • 虹膜VS指纹:2026年,谁才是下一代生物识别的终极答案?
  • 卡地亚香港售后|2026年7月最新网点地址与客户服务电话核验通知 - 卡地亚服务中心
  • 认识VMware与shell图形化工具
  • 2026年AI大数据分析软件盘点 - 科技焦点