前言众所周知,NodeJS作为一种后端开发语言和运行环境,无所不能,唯独没有NodeJS工作流引擎。CabloyJS4.0专注于NodeJS工作流引擎的开发,作为内置的基础核心模块,进一步拓展NodeJS在后端的应用场景,为深入研发各类业务提供基础支撑逻辑。NodeJS工作流引擎的特性更方便配置:使用JSON进行流程定义配置,告别XML配置文件复杂的流程定义:支持历史版本,支持启用/禁用更清晰的架构:使用三个核心模块实现架构工作流引擎的分层机制,让工作流不再神秘,源码不再重叠模块名称描述a-flow流程定义,流程实例a-flownode流程节点(主动节点)a-flowtask流程任务支持businessprocessandapprovalprocessandAtomthree-generation结合三代,内置了一套基于Atom的审批工作流。参见:原子阶段(三生三世)与表单验证的结合,支持配置读取字段权限和修改不同流程节点的字段权限。参见:FormValidationWorkflow逻辑可通过AOP机制自定义Workflow逻辑可通过Listener机制自定义开放架构支持自定义开发更多流程节点包含大量测试驱动代码,可快速上手使用Workflow工作流demo新建一个Draft:选择要用于采购订单的流程定义,然后提交。草稿进入相应的审批流程签署任务,处理任务流程。草稿被转换为存档最小工作流定义src/module/test-flow/backend/src/config/static/flowDef/set00_simple.js{listener:null,process:{nodes:[{id:'startEvent_1',name:'开始',类型:'startEventNone',},{id:'endEvent_1',名称:'End',类型:'endEventNone',},],边缘:[{id:'edge_1',来源:'startEvent_1',target:'endEvent_1',},],},}名称描述监听器,可以监听流/节点/任务process.nodes的各种事件process.nodes.typeprocessnodetypeprocess.edgesprocesstransferlineprocess.edges.sourcesourceprocess.edges.targetdestination审批流程定义src/module/test-flow/backend/src/config/static/flowDef/set01_atomUserTask.js{listener:null,process:{nodes:[{id:'startEvent_1',名称:'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:{写:['atomName',{名称:'描述',属性:{类型:'字符串',ebType:'文本',ebTitle:'描述',},},]],},},},{id:'endEvent_1',名称:'End',类型:'endEventNone',},],边缘:[{id:'edge_1',source:'startEvent_1',target:'activity_1',},{id:'edge_2',source:'activity_1',target:'endEvent_1',},],},}process.nodes.typenamedescriptionstartEventAtom启动事件节点(起草):通过options.atom和options.conditionExpression绑定指定的Atom类型,当指定的Atom提交时,自动启动匹配的工作流定义activityUserTask用户任务节点:可以指定参与人、是否出价、完成条件、读字段权限、写字段权限等endEventNone结束事件节点相关链接官网:https://cabloy.com/GitHub:https://github.com/zhennann/cabloy
