activiti简单介绍

Activiti是由jBPM创建者Tom Baeyens创建的开源工作流引擎,基于BPMN 2.0规范,提供高效、轻量级的流程服务。其特点包括:数据持久化使用MyBatis,引擎服务接口易于开发,原生支持Spring,流程设计器多样,以及运行时与历史数据分离。Activiti适合企业、开发人员和系统管理员,提供了与jBPM的对比和选择依据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Activiti简介

Activiti 是由 jBPM 的创建者 Tom Baeyens 离开 JBoss 之后建立的项目,构建在开发 jBPM 版本 1 到 4 时积累的多年经验的基础之上,旨在创建下一代的 BPM 解决方案。

Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。

Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于Java的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。

Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人员。通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的 BPM 应用程序。

Activiti是一个针对企业用户、开发人员、系统管理员的轻量级工作流业务管理平台,其核心是使用Java开发的快速、稳定的BPMN e 2.0流程引擎。Activiti是在ApacheV2许可下发布的,可以运行在任何类型的Java程序中,例如服务器、集群、云服务等。Activiti可以完美地与Spring集成。同时,基于简约思想的设计使Activiti非常轻量级。



Activiti的特点

1)数据持久化

Activiti的设计思想是简洁、快速。有过应用开发经验的开发人员都知道应用的瓶颈体现在和数据库交换数据的过程中,针对这一点Activiti选择了使MyBatis,从而可以通过最优的SQL语句执行Command,仅凭如此就能让引擎在速度上保持最高的性能。

2)引擎service接口 

Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人员。通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的 BPM 应用程序。



ctiviti.cfg.xml文件为核心配置文件,该配置文件集成在Spring的IOC容器当中,可以产生ProcessEngineConfiguration对象,这个对象就是流程引擎的配置对象,ProcessEngine对象则为流程引擎对象,该对象是工作流业务系统的核心,所有的业务操作都是由这个对象所派生出来的对象实现。

Activiti引擎提供了七大Service接口,均通过ProcessEngine获取,并且支持链式API编程风格。

3)流程设计器

在jBPM4时代有专门的Eclipse插件可以用来设计jPDL,同样Activiti团队也专门设计了用来设计BPMN 2.0规范的流程谩计器-Eclipse Designer。此外还有Signavio公司为Activiti定制的基于Web的Activiti Modeler流程设计器。喜欢用IDEA的,IDEA也有actiBPM插件支持。

4)原生支持Spring

Activiti原生支持Spring,这一点对企业应用来说尤为重要:可以很轻松地进行Spring集成,非常方便管理事务和解析表达式( Expression)。

5)分离运行时与历史数据

Activiti继承自jBPM4,在表结构设计方面也遵循运行时与历史数据的分离,这样的设计可以快速读取运行时数据,仅当需要查询历史数据时再从专门的历史数据表中读取。这种设计方式可以大幅提高数据的存取效率,尤其是当数据日积月累时依然能够快速反应。



Activiti架构与组件



Activiti Engine:

作为最核心的模块,提供针对BPMN 2.0规范的解析、执行、创建、管理(任务、流程实例)、查询历史记录并根据结果生成报表。

Activiti Modeler :

是模型设计器,其并非由Activiti公司所开发,而是由业界认可的Signavio公司赠送的(Signavio e原本是收费的产品,现在被免费授权给Activiti用户使用)。适用于业务人员把需求转换为规范流程定义。

Activiti Designer:

功能和Activiti Modeler类似,同样提供了基于BPMN 2.0规范的可视化设计功能,但是目前还没有完全支持BPMN规范的定义。适用于开发人员,可以把业务需求人员用Signavio设计的流程定义(XML格式)导入到Designer中,从而让开发人员将其进一步加工成为可以运行的流程定义。

Activiti Explorer:

可以用来管理仓库、用户、组,启动流程、任务办理等。此组件使用REST风格API,提供一个基础的设计模型。如果业务简单,也可以直接使用无需开发。还可以作为后台管理员的流程、任务管理系统使用。

Activiti REST:

提供Restful风格的服务,允许客户端以JSON的方式与引擎的REST API交互,通用的协议具有跨平台、跨语言的特性。



Activiti与jBPM5的对比

jBPM5 和 Activiti 同样支持 BPMN2.0 规范,但是实际上jBPM5 已经推翻了 jBPM3 和 jBPM4 的架构,使用了 Drools Flow 作为工作流架构,这对于原来使用 jBPM3 和 jBPM4 的用户来说是非常郁闷的一件事(从零开始重新学习 jBPM5),而 Activiti 更像是原来 jBPM4 的延续,因此对于原来使用 jBPM3 和 jBPM4 的用户来说,更推荐使用 Activiti,但是由于 JBoss 中有一些优秀的项目(例如规则引擎 Drools、Seam 等),jBPM5 与这些项目进行整合具有先天的优势,因此如何进行选择还需要进行权衡。

从技术组成来看,Activiti最大的优势是采用了PVM(流程虚拟机),支持除了BPMN2.0规范之外的流程格式,与外部服务有良好的集成能力,延续了jBPM3、jBPM4良好的社区支持,服务接口清晰,链式API更为优雅;劣势是持久化层没有遵循JPA规范。jBPM最大的优势是采用了Apache Mina异步通信技术,采用JPA/JTA持久化方面的标准,以功能齐全的Guvnor作为流程仓库,有RedHat(jBoss.org被红帽收购)的专业化支持;但其劣势也很明显,对自身技术依赖过紧且目前仅支持BPMN2。

序号

技术组成        Activiti        jBPM5
1

数据库持久层ORM        MyBatis3        Hibernate3
2

持久化标准



EJB JPA规范

3

事务管理

MyBatis机制/Spring事务控制

Bitronix,基于JTA事务管理

4

数据库连接方式

Jdbc/DataSource

Jdbc/DataSource

5

支持数据库

Oracle、SQL Server、MySQL、H2、内存数据库等

Oracle、SQL Server、MySQL、内存数据库等

6

设计模式

命令(Command)模式、观察者模式等

7

内部服务通讯

Service间通过API调用

基于Apache Mina异步通讯

8

集成接口

SOAP、Mule、RESTful

消息通讯

9

支持的流程格式

BPMN2、xPDL、jPDL等(由PVM实现)

目前仅只支持BPMN2 xml

10

引擎核心

PVM(流程虚拟机)

Drools

11

技术前身

jBPM3、jBPM4

Drools Flow

12

所属公司

Alfresco

jBoss.org

jBPM5 和 Activiti的主要相似之处:

1)都是BPMN2过程建模和执行环境。

2)都是BPM系统(符合BPM规范)。

3)都是开源项目-遵循ASL协议( Apache的 软件许可)。

4)都源自JBoss(Activiti5是jBPM4的衍生,jBPM5则基于Drools Flow)。

5)都很成熟,从无到有,双方开始约始于2年半前。

6)都有对人工任务的生命周期管理。 Activiti5和jBPM5唯一的区别是jBPM5基于WebService - HumanTask标准来描述人工任务和管理生命周期。 如有兴趣了解这方面的标准及其优点,可参阅WS - HT规范介绍 。

7)都使用了不同风格的 Oryx 流程编辑器对BPMN2建模。 jBPM5采用的是 Intalio 维护的开源项目分支。 Activiti5则使用了Signavio维护的分支。

更多免费技术资料可关注:annalin1203

### Activiti 网关功能与使用教程 Activiti 是一种开源的工作流引擎,用于管理业务流程自动化。其中,网关是控制流程走向的核心组件之一,能够实现条件判断、分支处理以及多路径并发等功能。 #### 一、Activiti 网关的主要功能 Activiti 的网关主要用于定义流程中的决策点和分叉/汇合逻辑。以下是几种常见的网关及其功能: 1. **排他网关 (Exclusive Gateway)** 排他网关允许基于条件表达式的单一路径选择。如果多个条件满足,则只会选取第一个符合条件的路径执行[^2]。如果没有条件匹配,默认会抛出异常或停止流程。 2. **并行网关 (Parallel Gateway)** 并行网关支持同时启动多个后续任务,并等待所有分支完成后再继续下一步操作。它不会涉及任何条件判断,而是直接激活所有的流出路径[^3]。 3. **包容网关 (Inclusive Gateway)** 包容网关类似于排他网关,但它允许多条路径被激活。也就是说,只要某个条件为真,对应的路径都会被执行。这种类型的网关适用于复杂场景下的多重分支需求。 4. **事件网关 (Event-based Gateway)** 事件网关依据发生的外部事件决定流程方向。例如,在接收到特定消息或其他触发器后才进入某一分支。 #### 二、Activiti 网关的使用方法 为了更好地理解如何在实际项目中应用这些网关,以下提供了一个简单的代码示例展示如何配置和调用它们。 ##### 绘制工作流图 首先需要借助 BPMN 工具(如 Activiti Designer 或其他兼容工具)设计好包含所需网关节点的工作流模型文件 `.bpmn` 。例如创建一个具有排他网关的任务流转结构如下所示: ```xml <process id="exclusiveGatewayProcess"> <!-- 起始事件 --> <startEvent id="startEvent"/> <!-- 排他网关 --> <exclusiveGateway id="decisionPoint" name="Decision Point"/> <!-- 条件分支A --> <sequenceFlow sourceRef="decisionPoint" targetRef="taskA"> <conditionExpression xsi:type="tFormalExpression">${variableName == 'valueA'}</conditionExpression> </sequenceFlow> <!-- 用户任务 A --> <userTask id="taskA" name="Task A"/> <!-- 默认分支B --> <sequenceFlow sourceRef="decisionPoint" targetRef="taskB"> <conditionExpression xsi:type="tFormalExpression">${true}</conditionExpression> <!-- Default condition --> </sequenceFlow> <!-- 用户任务 B --> <userTask id="taskB" name="Task B"/> </process> ``` ##### 部署与运行流程实例 接着可以通过 Java API 将上述定义好的 bpmn 文件加载至数据库表中形成可执行版本;随后发起新流程实例时传入必要的参数供网关判定具体走哪条线路。 ```java // 初始化 ProcessEngine 和 RepositoryService 对象 RepositoryService repositoryService = processEngine.getRepositoryService(); RuntimeService runtimeService = processEngine.getRuntimeService(); // 部署流程定义 repositoryService.createDeployment() .addClasspathResource("diagrams/exclusive_gateway_process.bpmn20.xml") // 替换为你自己的资源名称 .deploy(); // 启动流程实例并设置流程变量 Map<String, Object> variables = new HashMap<>(); variables.put("variableName", "valueA"); // 设置条件所需的值 runtimeService.startProcessInstanceByKey("exclusiveGatewayProcess", variables); ``` #### 总结 通过以上介绍可以看出,Activiti 提供了丰富的网关类型来适应不同业务场景的需求。无论是简单的一对一流程还是复杂的多路分支情况都可以灵活应对。合理运用各类网关可以使整个业务过程更加清晰可控。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值