Activiti 介绍

Activiti是一个强大的BPM(业务流程管理)和工作流系统,专注于与Spring的无缝集成。它遵循BPMN2.0标准,提供流程部署、实例管理、任务服务等关键对象及接口。通过RepositoryService、RuntimeService、TaskService等,实现流程的创建、监控和维护,适合开发人员和系统管理员使用。

http://activiti.org/download.html
介绍
Activiti 是一个业务流程管理(BPM)和工作流系统,适用于开发人员和系统管理员。其核心是超快速,稳定的BPMN2流程引擎。他易于Spring的集成。

工作流与工作流引擎
工作流(workflow)就是工作流程的计算模型,即将工作流程中的工作如何前后组织在一起的逻辑和规则在计算机中以恰当的模型进行表示并对其实施计算。它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。(理解:将部分或者全部的工作流程、逻辑让计算机帮你来处理,实现自动化)

BPMN2.0规范
BPMN(Business Process Model and Notation)–业务流程模型与符号。
BPMN是一套流程建模的标准,主要目标是被所有业务用户容易理解的符号,支持从创建流程轮廓的业务分析到这些流程的最终实现,知道最终用户的管理监控。
通俗一点其实就是一套规范,画流程模型的规范。流程模型包括:流程图、协作图、编排图、会话图。详细信息请google。

关键对象
1. Deployment:流程部署对象,部署一个流程时创建。
2. ProcessDefinitions:流程定义,部署成功后自动创建。
3. ProcessInstances:流程实例,启动流程时创建。
4. Task:任务,在Activiti中的Task仅指有角色参与的任务,即定义中的UserTask。
5. Execution:执行计划,流程实例和流程执行中的所有节点都是Execution,如UserTask、ServiceTask等。

服务接口
1. ProcessEngine:流程引擎的抽象,通过它我们可以获得我们需要的一切服务。
2. RepositoryService:Activiti中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据(例如BPMN2.0 XML文件,表单定义文件,流程定义图像文件等),这些文件都存储在Activiti内建的Repository中。RepositoryService提供了对 repository的存取服务。
3. RuntimeService:在Activiti中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。RuntimeService提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。
4. TaskService: 在Activiti中业务流程定义中的每一个执行节点被称为一个Task,对流程中的数据存取,状态变更等操作均需要在Task中完成。TaskService提供了对用户Task 和Form相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。
5. IdentityService: Activiti中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的Task。IdentityService提供了对Activiti 系统中的用户和组的管理功能。
6. ManagementService: ManagementService提供了对Activiti流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于Activiti系统的日常维护。
7. HistoryService: HistoryService用于获取正在运行或已经完成的流程实例的信息,与RuntimeService中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。

### 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 提供了丰富的网关类型来适应不同业务场景的需求。无论是简单的一对一流程还是复杂的多路分支情况都可以灵活应对。合理运用各类网关可以使整个业务过程更加清晰可控。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值