商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > CabloyJS也有工作流引擎了,是你想要的吗?

CabloyJS也有工作流引擎了,是你想要的吗?

  发布于2026-08-20 阅读(0)

扫一扫,手机访问

前言

大家都知道,NodeJS作为后端开发语言和运行环境,在高并发支持和开发效率方面有口皆碑,但大多用于数据CRUD管理、中间层聚合和中间层代理等工具场景,很少深入到业务领域的核心。不少采用NodeJS开发的最小可用产品(MVP)最终都要另起炉灶重构,这也是其中一个原因。深究起来,NodeJS作为业务开发平台,还缺不少核心的基础构件,其中就包括NodeJS工作流引擎。CabloyJS 4.0重点开发了NodeJS工作流引擎,并将其作为内置的基础核心模块(同样开源、免费),进一步拓展了NodeJS在后端的应用场景,为深入研发各类商业业务逻辑提供了基础支撑。

NodeJS工作流引擎的特点

  1. 更简便的配置:采用JSON进行流程定义的配置,告别XML配置文件的冗杂
  2. 流程定义:支持历史版本、支持启用/禁用
  3. 更清晰的架构:采用三个核心模块用分层的机制实现工作流引擎的架构,让工作流不再神秘,源码也不再叠床架屋

|模块名称|说明||-|-||a-flow|流程定义、流程实例||a-flownode|流程节点(活动节点)||a-flowtask|流程任务|

  1. 支持业务流程审批流程
  2. Atom三生三世结合,内置了一套基于Atom的审批工作流。参见:原子阶段(三生三世)
  3. 表单验证结合,支持分别配置不同流程节点的读取字段权限修改字段权限。参见:表单验证
  4. 可通过AOP机制定制工作流逻辑
  5. 可通过Listener机制定制工作流逻辑
  6. 开放式的架构,支持更多流程节点的定制开发
  7. 包含大量测试驱动代码,可快速上手使用工作流

工作流演示

  1. 新建一个草稿:采购订单
  2. 选择要使用的流程定义,然后提交,草稿进入相应的审批流程
  3. 签收任务、并处理任务
  4. 流程结束,草稿转为归档

一个最简工作流定义

src/module/test-flow/backend/src/config/static/flowDef/set00_simple.js

  {
listener: null,
process: {
nodes: [
{
id: 'startEvent_1',
name: 'Start',
type: 'startEventNone',
},
{
id: 'endEvent_1',
name: 'End',
type: 'endEventNone',
},
],
edges: [
{
id: 'edge_1',
source: 'startEvent_1',
target: 'endEvent_1',
},
],
},
}

一个审批流程定义

src/module/test-flow/backend/src/config/static/flowDef/set01_atomUserTask.js

  {
listener: null,
process: {
nodes: [
{
id: 'startEvent_1',
name: 'Drafting',
type: 'startEventAtom',
options: {
atom: {
module: moduleInfo.relativeName,
atomClassName: 'purchaseOrder',
},
conditionExpression: 'atom._flowDefKey==='set01_atomUserTask'',
},
},
{
id: 'activity_1',
name: 'Review',
type: 'activityUserTask',
options: {
assignees: {
// users: '1,2',
// roles: '1,2',
vars: 'flowUser',
},
confirmation: false,
bidding: false,
completionCondition: {
// passed: 1,
// rejected: '100%',
},
// rejectedNode:null,
// allowRejectTask: true,
// allowCancelFlow: false,
schema: {
write: [
'atomName',
{
name: 'description',
property: {
type: 'string',
ebType: 'text',
ebTitle: 'Description',
},
},
],
},
},
},
{
id: 'endEvent_1',
name: 'End',
type: 'endEventNone',
},
],
edges: [
{
id: 'edge_1',
source: 'startEvent_1',
target: 'activity_1',
},
{
id: 'edge_2',
source: 'activity_1',
target: 'endEvent_1',
},
],
},
}
  • process.nodes.type

|名称|说明||-|-||startEventAtom|开始事件节点(起草):通过options.atom和options.conditionExpression与指定的Atom类型绑定,当指定的Atom提交时,会自动启动与之匹配的工作流定义||activityUserTask|用户任务节点:可对参与人、是否竞签、完成条件、读字段权限、写字段权限等进行指定||endEventNone|结束事件节点|

相关链接

  • 官网: https://cabloy.com/
  • GitHub: https://github.com/zhennann/cabloy
本文转载于:https://apiv1.oschina.net/oschinapi/blog/detail?id=4817177 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注