前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CabloyJS自带工作流引擎的文档清单

CabloyJS自带工作流引擎的文档清单

原创
作者头像
zhennann
修改2021-01-18 14:33:07
4050
修改2021-01-18 14:33:07
举报
文章被收录于专栏:CabloyJS全栈开发CabloyJS全栈开发
代码语言:javascript
复制
## 文档清单

CabloyJS自带`工作流引擎`文档已经整理出来,欢迎大家围观、拍砖

- 介绍
  - [介绍](https://cabloy.com/zh-cn/articles/flow-introduce.html)
  - [演示:CMS审批工作流](https://cabloy.com/zh-cn/articles/ddda3ea8638d4d2b88fb57df7ed67107.html)
  - [单元测试用例集](https://cabloy.com/zh-cn/articles/b8887f42a6bd4da8a6f1f1b299beefe7.html)
- 流程定义
  - [基本概念](https://cabloy.com/zh-cn/articles/7fe5e138dd514e4987826cd498bc3913.html)
  - [JSON规范](https://cabloy.com/zh-cn/articles/fe296ad2d9d741d0b7001ed74d43633e.html)
  - [listener规范](https://cabloy.com/zh-cn/articles/09f72f0d29e34ff1a3c8cef868c6668d.html)
  - [listener规范-用户任务](https://cabloy.com/zh-cn/articles/1021fdd4ab174226a616f060c480f7d4.html)
- 流程实例
  - [外观Bean组件](https://cabloy.com/zh-cn/articles/d4254a2c7a624015b4418f88baf5e7eb.html)
  - [安全沙箱](https://cabloy.com/zh-cn/articles/a7b64dea056f4e02a745be4834e16584.html)
  - [流程检索](https://cabloy.com/zh-cn/articles/7ee5d2c03f6b44859f6213f1bbdb4f05.html)
  - [环境对象](https://cabloy.com/zh-cn/articles/24eefd1767ec41719fdac61c84cec567.html)
- 转移线
  - [环境对象](https://cabloy.com/zh-cn/articles/58a7ea022bcc4a989c998278d8148231.html)
  - [顺序流](https://cabloy.com/zh-cn/articles/7de9fbf49f794cee90fe62a544ee9791.html)
- 活动节点
  - 基本概念
    - [环境对象](https://cabloy.com/zh-cn/articles/3b08cfc69dfe4776a6d536283e5bb41f.html)
  - 开始事件
    - [空开始事件](https://cabloy.com/zh-cn/articles/75c0b584a1d546fba930d9185a95fadf.html)
    - [定时开始事件](https://cabloy.com/zh-cn/articles/162edbd052c54fe89c6828d22480b723.html)
    - [原子起草开始事件](https://cabloy.com/zh-cn/articles/ed28d24df228468a9c4d9b675d207003.html)
  - 结束事件
    - [空结束事件](https://cabloy.com/zh-cn/articles/bd7ff950ad1d4a9aa9a93df409faad97.html)
  - 活动
    - [空活动](https://cabloy.com/zh-cn/articles/42852c94708d473ba99a9f0689d4dbf0.html)
    - [服务活动](https://cabloy.com/zh-cn/articles/962ed51ed0b44245b3e1a40f3e32fa7f.html)
    - [用户任务活动](https://cabloy.com/zh-cn/articles/52f8e206b6e342a98c0afd57b34f8453.html)
- 用户任务
  - [JSON规范](https://cabloy.com/zh-cn/articles/e7a47fa53d5d4d909de22fa7654b81fc.html)
  - [外观Bean组件](https://cabloy.com/zh-cn/articles/3d2ffe6d14a94cf293ba5c60d46d6b24.html)
  - [任务检索](https://cabloy.com/zh-cn/articles/ae92829d783943eba63afb93a46810e6.html)
  - [环境对象](https://cabloy.com/zh-cn/articles/9678ca4df98341d38d7dd5ee47343348.html)
- 进阶篇(待续...) 
  
## 什么是CabloyJS自带工作流引擎
 
众所周知,NodeJS作为后端开发语言和运行环境,样样都好,就差一个`NodeJS工作流引擎`。CabloyJS 4.0重点开发了`NodeJS工作流引擎`,并作为内置的基础核心模块,近一步拓展了NodeJS在后端的应用场景,为深入研发各类商业业务逻辑,提供了基础支撑

## NodeJS工作流引擎的特点

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

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

4. 支持`业务流程`和`审批流程` 
5. 与`原子数据生命周期`结合,内置了一套基于原子数据的`审批工作流`。参见:[原子阶段(数据生命周期)](https://cabloy.com/zh-cn/articles/atom-stage.html)	
6. 与`表单验证`结合,支持分别配置不同流程节点的`读取字段权限`和`修改字段权限`。参见:[表单验证](https://cabloy.com/zh-cn/articles/form-validation.html)
7. 可通过`AOP`机制定制工作流逻辑。参见:[AOP](https://cabloy.com/zh-cn/articles/aop.html)
8. 可通过`Listener`机制定制工作流逻辑。参见:[listener规范](https://cabloy.com/zh-cn/articles/09f72f0d29e34ff1a3c8cef868c6668d.html)
9. 开放式的架构,支持更多`流程节点`的定制开发
10. 包含大量`测试驱动`代码,可快速上手使用工作流

## 与`Activiti`的对比

`流程定义`是`工作流引擎`的灵魂,一个合理的`流程定义`规范,既要考虑使用的便利性,又要考虑功能特性的可扩展性

`Activiti`无疑是Java语言领域工作流引擎的标杆,依据`BPMN2.0`规范采用`XML`格式来定义工作流

### 1. JAVA + BPMN + XML

`BPMN + XML`的优点是标准统一,与`JAVA`语言的开发调性相匹配。当然,缺点是`繁琐`,如果脱离了`图形化编辑工具`,采用手写XML定义,非常不便利

### 2. JS + 类BPMN + JSON

CabloyJS经过反复的评估与权衡,决定仍然参考`BPMN规范`的特性集,但是采用`JSON`格式进行定义。虽然属于自定义格式,但符合`JS`语言的调性,优点是`简约、易写、易读`,同样具备优秀的`可迁移性`

## 相关链接

* [官网: https://cabloy.com/](https://cabloy.com/)
* [GitHub: https://github.com/zhennann/cabloy](https://github.com/zhennann/cabloy)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档