activiti7的ProcessRuntime用法

本文档展示了如何使用Activiti7的ProcessRuntime API进行流程实例的管理,包括获取、启动、删除、挂起、激活及查询流程实例变量等操作,适合理解Activiti的新版API用法。

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

参考activiti7的repositoryService的用法就行,ProcessRuntime用起来更加方便

import org.activiti.api.model.shared.model.VariableInstance;
import org.activiti.api.process.model.ProcessInstance;
import org.activiti.api.process.model.builders.ProcessPayloadBuilder;
import org.activiti.api.process.runtime.ProcessRuntime;
import org.activiti.api.runtime.shared.query.Page;
import org.activiti.api.runtime.shared.query.Pageable;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;


@SpringBootTest
public class Test08ProcessRuntime {

    @Autowired
    private ProcessRuntime processRuntime;

    @Autowired
    private SecurityUtil securityUtil;

    /**
     * 使用新版api获取流程实例
     */
    @Test
    public void getInfo111() {
        securityUtil.logInAs("bajie");
        //获取前100个分页流程实例
        Page<ProcessInstance> processInstancePage =
                processRuntime.processInstances(Pageable.of(0, 100));
        System.out.println(processInstancePage.getTotalItems());
        List<ProcessInstance> list = processInstancePage.getContent();
        for (ProcessInstance p : list) {
            System.out.println(p.getId());
        }

    }

    /**
     * 启动流程实例
     */
    @Test
    public void getInfo222() {
        securityUtil.logInAs("bajie");
        processRuntime.start(ProcessPayloadBuilder.start()
                .withProcessDefinitionKey("myProcess_runtime")
                .withName("第一个流程实例")
                .withBusinessKey("自定义业务key")
                .build());
    }

    /**
     * 删除流程实例
     */
    @Test
    public void getInfo333() {
        securityUtil.logInAs("bajie");
        processRuntime.delete(ProcessPayloadBuilder
                .delete()
                .withProcessInstanceId("instanceId").build());
    }

    /**
     * 挂起流程实例
     */
    @Test
    public void getInfo444() {
        securityUtil.logInAs("bajie");
        processRuntime.suspend(ProcessPayloadBuilder.suspend()
                .withProcessInstanceId("instanceId")
                .build());
    }

    /**
     * 激活流程实例
     */
    @Test
    public void getInfo555() {
        securityUtil.logInAs("bajie");
        processRuntime.resume(ProcessPayloadBuilder.resume()
                .withProcessInstanceId("instanceId")
                .build());
    }

    /**
     * 流程实例参数
     */
    @Test
    public void getVariable() {
        securityUtil.logInAs("bajie");
        List<VariableInstance> list = processRuntime.variables(ProcessPayloadBuilder
                .variables()
                .withProcessInstanceId("instanceId").build());
        for (VariableInstance vi : list) {
            System.out.println(vi.getName());
        }
    }
}
<think>嗯,用户这次明确询问Activiti7的使用指南、功能特性和安装教程,看来是个需要系统学习的开发者。从引用的片段看,用户应该已经接触过一些零散的配置代码(比如引用1的gradle依赖)和API操作(引用3的TaskService用法),但缺乏完整知识框架。需要特别注意用户引用2里对"官方文档"的强调——这提示我应当优先推荐官方资源。不过中文文档质量参差不齐,activiti官网虽提供中文版,但7.x版本的翻译可能不全,这点要提醒用户。用户没提具体使用场景,但引用3展示了本地流程变量操作,可能正在处理任务审批系统。深层需求或许是:如何快速搭建可维护的工作流系统?所以除了基础安装,还需要强调SpringBoot集成这个主流方案,以及流程图设计器这类提效工具。安装部分要区分两种场景:纯依赖安装(适合已有项目)和全新项目搭建。引用1提供的gradle配置直接可用,但需要补充maven版本方便其他用户。数据库配置是初学者常见坑点,必须单列注意事项。功能特性要突出7.x相对于旧版的突破:Spring原生集成、性能优化、云原生支持。用户可能不知道流程编排引擎选择时Activiti和Camunda的区别,可以埋个钩子放在相关问题里。最后保留API操作示例(如引用3的变量绑定),但改成更常见的任务查询场景。相关问题设计成进阶路径:从安装调试到性能优化,最后引出架构设计思考,这样用户无论处于哪个阶段都能找到延伸点。</think> 以下是Activiti 7 的核心信息整理,结合功能特性、安装配置和使用指南,供您快速上手: --- ### **一、功能特性** 1. **云原生支持** - 默认集成Spring Boot 2.x,支持容器化部署 - 提供`activiti-cloud`子项目(Kubernetes/微服务适配) 2. **性能优化** - 异步任务处理(Async Executor)提升吞吐量 - 轻量级运行时模型(基于Bytecode生成) 3. **API简化** - 抛弃传统`ActivityEngine`,通过`ProcessRuntime`/`TaskRuntime`操作流程 - 示例:启动流程 ```java ProcessRuntime processRuntime = processRuntime(); ProcessInstance instance = processRuntime.start(ProcessPayloadBuilder.start() .withProcessDefinitionKey("invoice_approval") .build()); ``` 4. **安全集成** - 与Spring Security深度整合,自动注入操作用户身份 5. **新增组件** - **Audit Service**:日志审计 - **Query Service**:数据查询优化 - **Event Publisher**:事件驱动架构支持 --- ### **二、安装教程** #### Spring Boot项目集成(Gradle) ```gradle dependencies { implementation "org.activiti:activiti-spring-boot-starter:7.11.0" implementation "org.activiti:activiti-core-dependencies:7.11.0" // 核心库 } ``` #### Maven配置 ```xml <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter</artifactId> <version>7.11.0</version> </dependency> ``` #### 关键配置项(`application.yml`) ```yaml activiti: database-schema-update: true # 自动更新表结构 async-executor-activate: true # 启用异步任务 history-level: full # 开启全量历史记录 ``` --- ### **三、使用指南** #### 1. **流程设计** - 使用 **Activiti Modeler**(Web版)或 **Eclipse插件** 设计BPMN 2.0流程图 - 直接部署BPMN文件: ```java repositoryService.createDeployment() .addClasspathResource("processes/invoice.bpmn20.xml") .deploy(); ``` #### 2. **任务操作** ```java // 查询任务 List<Task> tasks = taskRuntime.tasks(Pageable.of(0, 10)); // 完成任务(带变量) taskRuntime.complete(TaskPayloadBuilder.complete() .withTaskId("taskId") .withVariable("approved", true) .build()); ``` #### 3. **本地流程变量** ```java taskService.setVariableLocal("taskId", "comments", "紧急处理"); // 仅当前任务有效[^3] ``` #### 4. **监听事件** ```java @EventListener public void onProcessEvent(ProcessRuntimeEvent event) { if (event.getEventType() == ProcessRuntimeEvent.ProcessEvents.PROCESS_COMPLETED) { // 流程结束处理 } } ``` --- ### **四、升级注意事项** 1. 表结构兼容性:7.x使用新数据模型,需执行迁移脚本 2. API变更:废弃`IdentityService`,改用Spring Security管理用户 3. 历史数据:启用`ACT_HI_*`表需显式配置`history-level` > 官方资源推荐:[Activiti 7官方文档](https://www.activiti.org/),含中文版用户指南和API详解[^2] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值