与Activiti
的对比
流程定义
是工作流引擎
的灵魂,一个合理的流程定义
规范,既要考虑使用的便利性,又要考虑功能特性的可扩展性
Activiti
无疑是Java语言领域工作流引擎的标杆,依据BPMN2.0
规范采用XML
格式来定义工作流
1. JAVA + BPMN + XML
BPMN + XML
的优点是标准统一,与JAVA
语言的开发调性相匹配。当然,缺点是繁琐
,如果脱离了图形化编辑工具
,采用手写XML定义,非常不便利
2. JS + 类BPMN + JSON
CabloyJS经过反复的评估与权衡,决定仍然参考BPMN规范
的特性集,但是采用JSON
格式进行定义。虽然属于自定义格式,但符合JS
语言的调性,优点是简约、易写、易读
,同样具备优秀的可迁移性
流程定义
CabloyJS通过原子
的概念对所有业务数据进行抽象,并提供了丰富的特性和管理页面。因此,流程定义
也是一个原子类型。我们可以像一般的原子数据一样,对流程定义
进行管理
对于原子
数据而言,既可以通过管理页面动态创建流程定义
,也可以通过静态原子
的方式创建流程定义
。在系统启动时,会自动读取静态原子
,并写入数据库
- 相关文章
流程部署
当创建流程定义
并入库后,系统会自动对流程定义进行部署
启用/禁用
可以通过管理界面
和API
两种方式启用/禁用
流程定义
副产品:版本控制
当启动一个流程实例
,还未结束时,流程定义
可以再次编辑。那么,运行中的流程实例
仍然引用启动时的版本,从而保持流程的一致性
这是采用原子
概念的副产品,因为原子本身就具备草稿->正式->历史
的生命周期管理
,采用atomStaticKey + atomRevision
的组合可以唯一引用一个历史版本的原子数据
副产品:流程定义的审批工作流
由于可以给原子
数据附加审批工作流,而流程定义
本身也是原子
,因此,我们也可以给流程定义
附加审批工作流,让流程定义
的管理也更加可控、可追溯。因此,这个特性也是采用原子
概念的副产品
更多副产品
采用原子
的概念来管理流程定义
带来的副产品还有很多,比如我们可以对流程定义
进行分类管理
。这一切都源于原子
特性的丰富和功能的强大,请参见:原子基本概念
评论: