springboot与flowable(7):流程变量

news2024/11/25 11:00:10

 一、启动时添加流程变量

        拿第一个流程图举例,创建一个新的流程定义。

@Test
    void contextLoads() {
        DeploymentBuilder deployment = repositoryService.createDeployment();
        deployment.addClasspathResource("process01/FirstFlow.bpmn20.xml");
        deployment.name("流程变量演示");
        Deployment deploy = deployment.deploy();
        System.out.println("deploy.getId() = " + deploy.getId());
    }

        查看流程定义。

        启动时为流程添加全局变量。

    /**
     * 发起流程
     */
    @Test
    public void startProcess() {
        String id = "FirstFlow:2:1aaa5203-2aed-11ef-b004-644ed7087863";
        // 在启动流程实例时为流程添加全局变量
        Map<String, Object> variables = new HashMap<>();
        variables.put("var1", "test1");
        variables.put("var2", "test2");
        variables.put("var3", "test3");
        // 根据流程定义ID启动流程
        ProcessInstance processInstance = runtimeService.startProcessInstanceById(id, variables);
    }

        在act_ru_variable表中可以看到添加的变量信息。

        根据执行实例ID获取流程变量

    /**
     * 获取定义的流程变量
     */
    @Test
    void getVariables() {
        // 通过执行实例ID获取,ID可以在act_ru_variable表中查看到
        String executionId = "f1d7ec2c-2aed-11ef-9790-644ed7087863";
        Map<String, Object> variables = runtimeService.getVariables(executionId);
        System.out.println(variables);
        // 也可以通过taskService获取
        // taskService.getVariables(taskId);
    }

二、启动后添加流程变量

    /**
     * 在流程启动后添加流程变量
     */
    @Test
    void setVariables() {
        // 通过执行实例ID获取,ID可以在act_ru_variable表中查看到
        String executionId = "f1d7ec2c-2aed-11ef-9790-644ed7087863";
        runtimeService.setVariable(executionId, "var4", "test4");
        // 添加局部变量
        runtimeService.setVariableLocal(executionId, "varLocal5", "test5");
        // 也可以通过taskService添加
        // taskService.setVariable();
    }

        查看添加结果

        当流程审批结束所有的变量将全部移除。

三、局部变量

  • taskService添加的局部变量,只作用于当前节点,当前节点审批后,数据会消失。
  • runtimeService添加的局部变量,作用于当前执行实例I,当出现不同的执行分支时,数据将消失。

四、历史变量

        在act_hi_varinst表中查看到所有使用过的流程变量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1827692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MFC工控项目实例之三theApp变量传递对话框参数

承接专栏《MFC工控项目实例之二主菜单制作》 用theApp变量传递对话框参数实时改变iPlotX坐标轴最小值、最大值。 1、新建IDD_SYS_DATA对话框&#xff0c;类名SYS_DATA。 三个编辑框IDC_EDIT1、IDC_EDIT2、IDC_EDIT3变量如图 2、SEAL_PRESSURE.h中添加代码 #include "re…

【单片机毕业设计选题24008】-基于单片机的寝室系统设计

系统功能: 1. 采用STM32最小系统板控制&#xff0c;将采集到温湿度光照等传感器数据显示在OLED上 2. 通过离线语音模块开关灯&#xff0c;风扇&#xff0c;门。 3. 监测到MQ2烟雾后触发报警。 4. 语音&手动&定时控制窗帘。 5. 按键开启布防模式&#xff0c;布防后…

java课设

项目简介:射击生存类小游戏 项目采用技术: 游戏引擎: Unity编程语言: Java图形处理: NVIDIA PhysX (物理引擎), HDRP (High Definition Render Pipeline)音效与音乐: FMOD, Wwise版本控制: Git 功能需求分析: 角色控制&#xff1a;玩家能够使用键盘和鼠标控制角色移动、瞄准…

【python基础实例】从文件命名中提取特定信息(数字、字母等)

【python基础实例】从文件命名中提取特定信息&#xff08;数字、字母等&#xff09; 在处理文件和数据时&#xff0c;我们经常需要从文件名中提取特定的信息&#xff0c;如日期、序号或项目标识符。Python提供了强大的字符串处理功能&#xff0c;可以轻松完成这些任务。本文将…

HttpOpenRequest 函数偶尔会引起崩溃的坑

通常我们会像下面一样调用&#xff1a; HINTERNET HttpOpenRequestA([in] HINTERNET hConnect,[in] LPCSTR lpszVerb,[in] LPCSTR lpszObjectName,[in] LPCSTR lpszVersion,[in] LPCSTR lpszReferrer,[in] LPCSTR *lplpszAcceptTypes,[in] DWORD dwFlags,[…

linux 部署瑞数6实战(维普,药监局)第一部分

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx 本文章未经许可禁止转载&…

1.22 LeetCode总结(基本算法)_位运算

进制的概念 进制即进位计数制&#xff0c;是利用固定的数字符号和统一的规则的带进位的计数方法。 任何一种进位计数制都有一个基数&#xff0c;基数为 X 的进位计数制称为 X 进制&#xff0c;表示每一个数位上的数运算时都是逢 X 进一。 504. 七进制数 手法1&#xff1a;当…

Qt自定义日志输出

Qt自定义日志输出 简略版&#xff1a; #include <QApplication> #include <QDebug> #include <QDateTime> #include <QFileInfo> // 将日志类型转换为字符串 QString typeToString(QtMsgType type) {switch (type) {case QtDebugMsg: return "D…

20240613日志:COPAL

Location: Beijing 1 大模型剪枝 Fig. 1.1大模型压缩-剪枝 剪枝的分类&#xff1a;结构化修剪对于简化大型语言模型和提高其效率尤其相关。非结构化修剪关注的是选择性地去除单个权重&#xff0c;旨在消除网络中不那么关键的连接。 修剪的基于阶段的分类&#xff1a;修剪可以在…

微软OneDrive简介:特点、应用场景、使用方法、注意事项

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

热门开源项目ChatTTS: 国内语音技术突破,实现弯道超车

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

Cesium入门学习(一)

下载cesium源代码 安装依赖 npm install注册账户&#xff0c;申请一个token 没有这个token&#xff0c;会导致地图中只能看到一个宇宙&#xff0c;没有办法看到地球 cesium的官网&#xff1a;cesium官网 替换token 替换对应位置的token 启动 运行 npm run build npm r…

西门子学习笔记15 - 位逻辑操作的学习

1、点动操作&#xff08;按下按钮就启动松开就停止&#xff09; 2、自锁电路&#xff08;可以自己保持的状态除非常闭停止按下&#xff09; 3、取反操作&#xff08;顾名思义就是反过来1就变成0&#xff0c;0就变成1&#xff09; 4、置为复位&#xff08;置位之后如果不复位的话…

注解(Annotation)(一)

Java 注解&#xff08; Annotation &#xff09;又称 Java 标注&#xff0c;是 JDK5.0 引入的一种注释机制。 Java 语言中的类、 构造器、 方法、成员变量、参数等都可以被注解进行标注。 自定义注解 --- 格式 自定义注解就是自己做一个注解来使用。 public interface …

Python自然语言处理的力量:NLTK库介绍

文章目录 Python自然语言处理的力量&#xff1a;NLTK库介绍1. NLP的魔法&#xff1a;为什么选择NLTK&#xff1f;2. 什么是NLTK&#xff1f;3. 快速安装NLTK4. 8个NLTK的基本函数使用方法4.1 分词4.2 词性标注4.3 命名实体识别4.4 频率分布4.5 停用词过滤4.6 词形还原4.7 句子分…

PySide(PyQt)实现鼠标画框局部放大

按住鼠标左键画框&#xff0c;裁切画面并局部放大&#xff0c;可以用来生成ROI 1、在QtDesigner中创建ui文件&#xff0c;命名为crop.ui&#xff1a; 2、自定义脚本ImageLabel.py &#xff1a; from PySide6.QtCore import Qt, QRect, Signal, QPoint from PySide6.QtGui impo…

cmake构建Qt项目

cmake构建Qt项目 项目结构 一、添加头文件 # 添加头文件目录&#xff0c;还需要在add_executable中添加头文件&#xff01;&#xff01;&#xff01; include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) add_executable(landlardsinclude/test.h)二、添加源文件 aux…

如何从印刷体的图片中把手写体部分统统去掉?--免费途径

AI图像处理技术 我是从国外某个网站上找到在线AI免费credit的处理方式的。国内的基本没有全功能试用、或者即使收费也不好用。 国内的差距主要是&#xff1a;1、对图片分辨率和大小有更多限制&#xff0c;即使收费用户也是&#xff1b;2、需要安装app之类&#xff0c;然后连线…

深入探讨限流算法:固定窗口、滑动窗口、漏桶与令牌桶原理及应用场景

固定窗口算法 简单粗暴&#xff0c;但有临界问题&#xff1a; 滑动窗口算法 滑动窗口通俗来讲是一种流量控制技术&#xff0c;描述接收方TCP数据报缓冲区大小的数据。发送方根据这个数据计算最大可发送的数据量。滑动窗口协议是TCP使用的一种流量控制方法&#xff0c;允许发送…

英语学习笔记37——Making a bookcase

Making a bookcase 做书架 词汇 Vocabulary work v. 工作 ing形式&#xff1a;working 搭配&#xff1a;work on 工作 做……工作    work for 人 为……而工作 例句&#xff1a;我正在做我的家庭作业。    I am working on my homework.    我正在为Bobby工作。 …