摘要
Activiti是一个用Java编写的开源工作流引擎,可以执行BPMN 2.0中描述的业务流程。Activiti是Alfresco的Alfresco Process Services (APS)的基础,而Alfresco是Activiti项目的主要赞助商。
本文旨在帮助读者理解Activiti的工作机制,使其可以迅速上手该框架。本文将从这几个方面简单介绍了Activiti工作流引擎:
1. 为什么要使用工作流引擎
工作流引擎就是为了解决这类问题而生的,我们可以观察当前实体(如支付订单、采购订单)是否具有如下特性,由此来确定是否需要引入工作流引擎。
工作流引擎 vs 规则引擎
2. BPMN2.0规范简介
业务流程模型和标记法(BPMN, Business Process Model and Notation)是一套图形化表示法,用于以图形的方式详细说明各种业务流程。
它最初由业务流程管理倡议组织(BPMI, Business Process Management Initiative)开发,名称为”Business Process Modeling Notation”,即“业务流程建模标记法”。BPMI于2005年与对象管理组织(OMG, Object Management Group)合并。2011年1月OMG发布2.0版本(时至今日,没人会用1.0版本了),同时改为现在的名称。
BPMN2.0规范的实现,实质上是一个按照特定规范编写的XML文件,使用特定的BPMN设计器,即可以图形化的形式查看和编辑该文件。Activiti以代码的形式实现了这套图形化表示法,使任务的流转依赖图形,而非具体的实现代码。
UML vs BPMN
UML和BPMN之间唯一的正式关系是OMG维护两个开放标准。
UML(统一建模语言)作为一种可视化的建模语言,其中的活动图也适用于流程建模,但其支持深度不够。
BPMN诞生时间晚于UML,据称从某种意义上讲,UML Activity Diagrams是BPMN的一个子集,也是BPMN的历史前身。
如上图所示,BPMN2.0规范包含了三个部分Gateway(网关)、Event(事件)、Activities(活动)。
- Gateway(网关):exclusiveGateway-排他网关,在做判断时使用,除了排他网关还有几个其它类型的网关。
- Event(事件):startEvent-开始事件、endEvent-结束事件,规范要求一个完整流程图必须包含这两个部分。
- Activities(活动):task-任务、sequenceFlow-连接线,活动是流程的主体部分,内部包含的类型相对较多。
3. 开源BPMN项目对比
BPMN2.0规范目前已成为流程处理事实上的标准,实现该规范的常见开源项目有这三个:jBPM,Activiti,Camunda。
他们实现的功能比较相似,源头上它们存在递进关系:jBPM –> Activiti –> Camunda。jBPM是最早诞生的,Activiti的发起人是从jBPM项目中脱离出来的,Camunda BPM的发起人是从Activiti项目中脱离出来的。之所以存在三个同源项目,是由于开发者们对工作流引擎的期望存在分歧。
从技术组成来看,Activiti最大的优势是采用了PVM(流程虚拟机),支持除了BPMN2.0规范之外的流程格式,与外部服务有良好的集成能力,延续了jBPM3、jBPM4良好的社区支持,服务接口清晰,链式API更为优雅;劣势是持久化层没有遵循JPA规范。
jBPM最大的优势是采用了Apache Mina异步通信技术,采用JPA/JTA持久化方面的标准,以功能齐全的Guvnor作为流程仓库,有RedHat的专业化支持;但其劣势也很明显,对自身技术依赖过紧且目前仅支持BPMN2。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229011.html原文链接:https://javaforall.net
