扫码阅读
手机扫码阅读

Flowable 设置流程变量的四种方式

9 2024-11-27

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:Flowable 设置流程变量的四种方式
文章来源:
江南一点雨
扫码关注公众号

松哥正在录制TienChin项目视频,该项目采用Spring Boot+Vue3技术栈,并将涉及多种技术。这次他将重点介绍Flowable中流程变量的玩法及其数据表详情。

1. 流程变量的必要性

流程变量在流程中扮演重要角色,例如在请假流程中,需要携带诸如请假人、请假天数、开始时间和理由等信息,以供审批参考,这些信息通过流程变量传递。

2. 流程变量的分类

流程变量分为三种类型:

  • 全局流程变量:在整个流程期间有效。
  • 本地流程变量:仅对流程中的特定任务有效,任务完成后失效。
  • 临时流程变量:临时性的,不存入数据库。

3. 全局流程变量的使用

以请假流程为例,可以在流程启动时设置全局流程变量。示例代码展示了如何在启动流程时设置变量,其中变量的值可以是可序列化的对象。

    @Test
    void test01() {
        Map variables = new HashMap();
        variables.put("days", 10);
        variables.put("reason", "休息一下");
        variables.put("startTime", new Date());
        ProcessInstance pi = runtimeService.startProcessInstanceByKey("demo01", variables);
        logger.info("id:{},activityId:{}", pi.getId(), pi.getActivityId());
    }
  

在流程启动日志中,可查询到相关的SQL语句,涉及到ACT_HI_VARINST和ACT_RU_VARIABLE两张表,分别存储流程的历史信息和运行时信息。

使用流程实例ID,可以查询到属于某个流程实例的变量:

    @Test
    void test01() {
        List list = runtimeService.createExecutionQuery().list();
        for (Execution execution : list) {
            Object reason = runtimeService.getVariable(execution.getId(), "reason");
            logger.info("reason:{}", reason);
        }
    }
  

这些查询演示了如何在实际流程中获取和使用流程变量。

想要了解更多内容?

查看原文:Flowable 设置流程变量的四种方式
文章来源:
江南一点雨
扫码关注公众号