Activiti7

Activiti7是一个流行的流程引擎,用于定义和管理业务流程。本文涵盖了流程定义、流程实例的概念,详细阐述了使用步骤,包括部署、定义、启动流程及用户如何查询和处理待办任务。还讲解了挂起与激活、流程变量(全局和局部)、不同类型的网关(排他、并行、包含和事件网关)以及组任务分配的机制。最后,提供了一个基于SpringBoot的示例。

Activiti7

概念

流程定义与流程实例

processDefinition
processInstance

使用步骤

  1. 部署activiti:引入activiti,把业务系统和activiti集成到一起。
  2. 定义流程:建模工具定义业务流程.bpmn文件。
  3. 部署流程:保存业务流程。activici是通过数据库将流程持久化的。
  4. 启动流程实例:开始一次业务流程。
  5. 用户查询待办任务:所有业务流程都交由activiti管理,使用activiti提供的api方法可以查询当前流程执行到哪一步了。
  6. 用户处理待办任务:用户处理完待办任务后,activiti会自动推进工作流。
  7. 流程结束:待办任务处理完成,且没有下一个任务节点后,流程实例执行完成。

挂起与激活

只有流程与流程实例可以被挂起或激活,任务不能。
挂起后任务不可再被完成。

流程变量

Global变量

作用域是整个流程实例(public)。变量名称不可重复

Local变量

作用域只针对一个任务或一个实例的某些范围(private)。变量名称在不同作用域中可以重复。

网关

排他网关

根据条件判断,只会走一条分支。如果条件都不满足,会报错;如果条件都满足,会走id小的一条分支。

并行网关

不会解析条件,所有分支都会走,且所有分支都走完之后,才会进行接下来的流程节点。

包含网关

根据条件判断,所有满足条件的分支都会走,所有分支走完后,才会进行接卸来的流程节点。

事件网关

组任务分配

  1. 流程节点设置候选人组
  2. 候选人领取任务,候选人变成责任人
  3. 责任人处理任务
  4. 进行接下来的流程

demo

activiti-springboot

### Activiti 7 使用教程与新特性 #### 一、Activiti 7 简介 Activiti 是一款开源的工作流引擎,基于 BPMN 2.0 标准构建。它提供了强大的工作流管理功能,能够帮助企业实现业务流程自动化。Activiti 7 是该系列的一个重要版本更新,在架构设计和技术支持方面进行了显著改进。 Activiti 7 主要特点包括模块化设计、云原生支持以及对微服务友好的架构调整[^1]。 --- #### 二、Activiti 7 安装指南 为了快速搭建 Activiti 7 开发环境,以下是基本步骤: 1. **引入依赖** 如果使用 Maven 构建项目,则需在 `pom.xml` 文件中添加以下依赖项: ```xml <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>7.x.x</version> <!-- 替换为最新稳定版 --> </dependency> ``` 2. **配置数据库连接** 默认情况下,Activiti 需要一个关系型数据库存储元数据和运行时信息。可以在 `application.properties` 中指定如下参数: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/activiti?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver activiti.database-schema-update=true ``` 3. **初始化 Spring Boot 应用程序** 创建主类并启用 Activiti 功能: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ActivitiApplication { public static void main(String[] args) { SpringApplication.run(ActivitiApplication.class, args); } } ``` 通过以上步骤即可完成基础环境的部署[^1]。 --- #### 三、Activiti 7 新特性概述 1. **Cloud-Native 支持** - Activiti 7 提供了专门针对 Kubernetes 和 Docker 的优化方案,使得其更易于集成到现代容器编排平台中。 - 引入了 Camunda 平台的部分设计理念,增强了分布式事务的支持能力[^1]。 2. **API 层面的变化** - 运行时 API 更加简洁直观,例如启动流程实例的操作可以通过以下方式简化: ```java ProcessInstance instance = runtimeService.startProcessInstanceByKey("Test2"); System.out.println("流程定义ID=" + instance.getProcessDefinitionId()); ``` 上述代码展示了如何利用 `runtimeService` 来触发一个新的流程实例,并打印相关信息[^2]。 3. **增强的任务管理机制** - 用户可以灵活地分配任务给特定人员或候选组成员。当某个用户不再适合继续处理某项任务时,可通过调用 `unclaim()` 方法将其归还至公共池中: ```java taskService.unclaim(task.getId()); ``` 此方法允许其他潜在候选人重新领取此任务[^3]。 4. **事件驱动模型** - Activiti 7 加强了对 CEP(Complex Event Processing)场景的支持,使开发者能够在复杂条件下轻松定义条件分支逻辑。 5. **兼容性提升** - 虽然部分旧接口已被废弃,但官方文档明确指出大部分现有代码仍可无缝迁移至新版环境中[^1]。 --- #### 四、示例代码解析 下面提供一段完整的测试案例用于验证 Activiti 7 是否正常运作: ```java import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngines; import org.activiti.engine.RuntimeService; import org.activiti.engine.runtime.ProcessInstance; import org.junit.Test; public class ActivitiTest { @Test public void testStartProcess() { // 获取默认流程引擎实例 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); // 初始化 Runtime Service 对象 RuntimeService runtimeService = processEngine.getRuntimeService(); // 启动名为 "Test2" 的流程定义 ProcessInstance instance = runtimeService.startProcessInstanceByKey("Test2"); // 输出调试信息 System.out.println("流程定义ID=" + instance.getProcessDefinitionId()); System.out.println("流程实列ID=" + instance.getId()); System.out.println("当前活动的ID=" + instance.getActivityId()); } } ``` 上述代码片段实现了从加载引擎到实际发起流程的核心过程[^2]。 --- #### 五、总结 Activiti 7 不仅保留了前代产品的优势,还在性能表现和服务扩展性等方面做出了突破性的尝试。无论是初学者还是资深工程师都能从中受益匪浅。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值