工作流
- 什么是工作流
- 工作流是复杂版本的状态机
- Java工作流开源框架
- 工作流对比
-
- Activiti
-
- 设计器
- Flowable
-
- 兼容性
- Camunda
-
- 设计器
- 兼容性:
- 小结:
- 社区活跃度
-
- Flowable
- Activiti
- Camunda
- 总结
什么是工作流
工作流,是指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。
在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。
工作流是复杂版本的状态机
就好比一般的请假流程,小明会先提出请假申请,然后由Leader审批或者Manager进行审批,直至审批通过或者拒接。
如果让我们实现请假单状态的切换,那么用一个字段来标识就可以了。
然而对于复杂的状态或者状态维度增加且状态流转的条件极为复杂,可能单纯用字段记录状态的实现方式就会不那么理想。
工作流解决的痛点在于,解除业务宏观流程和微观逻辑的耦合,让熟悉宏观业务流程的人去制定整套流转逻辑,而让专业的人只需要关心他们应当关心的流程节点,就好比大家要一起修建一座超级体育场,路人甲只需要关心他身边的这一堆砖是怎么堆砌而非整座建筑。
Java工作流开源框架
工作流对比
Activiti
Activiti 是一个针对业务人员、开发人员和系统管理员的轻量级工作流和业务流程管理 (BPM) 平台。 它的核心是一个用于 Java 的超快速和坚如磐石的 BPMN 2 流程引擎。 它是开源的,并在 Apache 许可下分发。 Activiti 可以在任何 Java 应用程序、服务器、集群或云中运行。 它与 Spring 完美集成,非常轻量级,基于简单的概念。
Activiti Cloud 现在是新一代的业务自动化平台,提供一组旨在在分布式基础架构上运行的云原生构建块。
github地址:https://github.com/Activiti/Activiti
主要服务类
调用方式:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
RepositoryService repositoryService = processEngine.getRepositoryService();
TaskService taskService = processEngine.getTaskService();
ManagementService managementService = processEngine.getManagementService();
IdentityService identityService = processEngine.getIdentityService();
HistoryService historyService = processEngine.getHistoryService();
FormService formService = processEngine.getFormService();
DynamicBpmnService dynamicBpmnService = processEngine.getDynamicBpmnService();
设计器
activiti6 官方提供有Web设计器(Modeler设计器)。部署运行activiti-modeler模块即可使用.
activiti7 推荐使用http://bpmn.io提供的bpmn-js设计器,在线使用地址:https://demo.bpmn.io/new
Flowable
Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据
github地址:https://github.com/flowable/flowable-engine
主要服务类:flowable服务类和activiti类似,没有太大的变化
设计器:eclipse插件,支持5.x版本,不支持6.x版本中新增加的节点和属性,online web设计器基于AngularJs1.x版本开发, 如下:
兼容性
● Alfresco Activiti5
● Flowable5
Camunda
Camunda 是一个基于 Java 的框架,支持用于工作流和流程自动化的 BPMN、用于案例管理的 CMMN 和用于业务决策管理的 DMN。
github地址:https://github.com/camunda/camunda-bpm-platform
工作原理:
设计器
兼容性:
● Active BPEL
● Alfresco Activiti
● Appian BPM
● Bonitasoft
● JBoss jBPM
● IBM WPS / IBM BPM / IBM MQ Workflow / IBM Lotus Notes
● Oracle BPM
● Software AG Webmethods
● Pega BPM
小结:
Flowable的核心思想更像是在做一个多彩的工具,它在工作流的基础功能上,提供了很多其他的扩展,使用者可以随心所欲地把Flowable打造成自己想要的样子
Activiti7着重于处理bpmn,它的方向在于云,他的设计会尽量像例如Spring Cloud、Docker、K8S靠拢。
Flowable在功能上比Activiti更加完善,基础轮子也更加全面。所以在开发契合国内特色的工作流系统中,Flowable是更佳的选择。
目前两者陆续都开始了商业化,同时也都支持了分布式和云端部署。
Flowable与Activiti 开发团队都是一个,Activiti先,Flowable后,Flowable底层也是使用的Activiti,进行了一些扩展
社区活跃度
Flowable
Activiti
Camunda
小结:从github活跃度来看, activiti和flowable比较相似,camunda最不活跃(可能是过去国人关注的少,中文文档也欠缺)。
总结
在微服务、云计算、服务编排、LCDP等大环境下,camunda的前景优势会慢慢体现出来,作为下一代的工作流引擎,也会逐渐引起更多人的关注。
Activiti和Flowable作为传统的工作流引擎,其设计思想和理念还是很值得CRUD boy们去学习研究下的。
Activiti和Flowable属于同一个团队开发的,Activiti开发完成以后交接给了另外一个团队维护升级,原团队开始开发Flowable,从代码上看Activiti和Flowable使用没有区别,可能在另外的方面有一些区别,暂时没有进行深入使用、鉴别区分
参考链接:
https://zhuanlan.zhihu.com/p/435249026
https://docs.camunda.org/manual/7.16/
https://github.com/camunda/camunda-bpm-platform
https://www.activiti.org/userguide/
https://activiti.gitbook.io/activiti-7-developers-guide/
https://github.com/Activiti/Activiti
Camunda/Flowable/Activiti技术发展史/盘古BPM框架对比最新版
https://blog.csdn.net/qq_30739519/article/details/105050776?spm=1001.2014.3001.5501
https://documentation.flowable.com/latest/
https://github.com/flowable/flo
---------------------
作者:阿泽java
来源:CSDN
原文:https://blog.csdn.net/weixin_42065235/article/details/125410979
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件