【工作流引擎】Activiti的使用03

news2024/11/19 18:21:02

流程定义查询

  // 获取部署时的信息
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        RepositoryService repositoryService = processEngine.getRepositoryService();
        ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
        //根据表 act_re_procdef 表中的key查询部署的流程定义
        List<ProcessDefinition> myEvection = processDefinitionQuery.processDefinitionKey("MyEvection").orderByProcessDefinitionVersion().desc().list();
        for (ProcessDefinition pro :
                myEvection) {
            System.out.println(pro.getId());
            System.out.println(pro.getName());
            System.out.println(pro.getKey());
        }

流程定义删除


    @Test
    public void deleteProcess() {
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();


        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();

        //先获取已经部署的;
        ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
        List<ProcessDefinition> myEvection = processDefinitionQuery.processDefinitionKey("MyEvection").orderByProcessDefinitionVersion().desc().list();
        for (ProcessDefinition pro :
                myEvection) {
            System.out.println(pro.getDeploymentId());//1
        }
        repositoryService.deleteDeployment("1");
    }

当流程没走完的时候,这种方式是不可以的,我们可以用级联删除的方式
repositoryService.deleteDeployment("1",true);

流程资源文件下载


    /**
     * 流程资源文件下载
     */

    @Test
    public void downloadProcessSource() {
        ProcessEngine defaultProcessEngine = ProcessEngines.getDefaultProcessEngine();
        RepositoryService repositoryService = defaultProcessEngine.getRepositoryService();
        //获得流程定义的服务
        ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery();
        //获得流程定义实例
        ProcessDefinition myEvection = processDefinitionQuery.processDefinitionKey("MyEvection").singleResult();
        //获得流程部署id
        String deploymentId = myEvection.getDeploymentId();
        //获得流程部署资源名称
        String pngName = myEvection.getDiagramResourceName();
        //读取数据---获得一个流
        InputStream pngStream = repositoryService.getResourceAsStream(deploymentId, pngName);
//        获得bpmn资源信息
        String bpmnName = myEvection.getResourceName();
        InputStream bpmnStream = repositoryService.getResourceAsStream(deploymentId, bpmnName);

//将流输出到本地

        File pngFile = new File("d:/evePng.png");
        File bpmnFile = new File("d:/eveBpmn.bpmn");
        try {
            FileOutputStream pngFileStream = new FileOutputStream(pngFile);
            FileOutputStream bpmnFileStream = new FileOutputStream(bpmnFile);

            IOUtils.copy(pngStream, pngFileStream);
            IOUtils.copy(bpmnStream, bpmnFileStream);
            bpmnFileStream.close();
            pngFileStream.close();
            pngStream.close();
            bpmnStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

在这里插入图片描述

历史记录查询

    /**
     * 流程历史信息查看
     */
    @Test
    public void SeeHistory() {
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        //获取历史服务service
        HistoryService historyService = processEngine.getHistoryService();
        //创建历史查询实例
        HistoricActivityInstanceQuery historicActivityInstanceQuery = historyService.createHistoricActivityInstanceQuery();
        //查询条件
        List<HistoricActivityInstance> list = historicActivityInstanceQuery.processInstanceId("2501").orderByHistoricActivityInstanceStartTime().asc().list();
        for (HistoricActivityInstance his : list
        ) {
            System.out.println(his.getActivityId());
            System.out.println(his.getActivityName());
            System.out.println(his.getAssignee());
        }
    }

demo部分差不多就这些,我们实际运用中要运用activiti表与实际业务表进行关联以满足复杂的业务需求;

在这里插入图片描述

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

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

相关文章

直观全面解释Transformer模型;上海人工智能实验室推出首个图文混合创作大模型浦语灵笔

&#x1f989; AI新闻 &#x1f680; 上海人工智能实验室推出首个图文混合创作大模型浦语灵笔 摘要&#xff1a;上海人工智能实验室推出了一款名为浦语灵笔的图文混合创作大模型&#xff0c;并宣布其开源。浦语灵笔基于书生・浦语大语言模型&#xff0c;具备强大的多模态性能…

LabVIEW开发卫星测试平台

LabVIEW开发卫星测试平台 已经有不少的大学和研究机构经常使用立方体卫星。它们的广泛使用通常归因于使用廉价零件、无偿学生劳动和简单的设计。科学、技术、工程和数学学生已被证明可以通过参与实际工作宇宙飞船系统的规划、开发和测试而从中受益。通过鼓励来自不同学术领域的…

Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的1.26版本的Kubernetes集群环境

【原文链接】Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的1.26版本的Kubernetes集群环境 文章目录 一、虚拟机环境准备1.1 准备三台CentOS操作系统的虚拟机1.2 修改主机名1.3 确认CentOS的版本符合要求1.4 配置地址解析1.5 配置时间同步1.6 关闭防火墙…

【jmeter的使用】【性能测试1】

jmeter的使用笔记2 线程并发的设置定时器1&#xff09;同步定时器2&#xff09;准确的吞吐量定时器3&#xff09;常数吞吐量定时器 用户自定义变量设置响应断言聚合报告查看聚合报告参数详解&#xff1a; 前言&#xff1a;使用jmeter进行简单性能测试实践&#xff0c;以百度搜索…

Java中的错误和异常有什么区别和联系?

​ 概述 错误 该错误表示大多数情况是由于系统资源不足而发生的。系统崩溃和内存错误就是错误的例子。它主要发生在运行时。 错误是用户执行意外操作时产生的严重情况&#xff1b;错误大多发生在编译时&#xff0c;如语法错误&#xff0c;但它也可能发生在运行时&#xff1…

UE5:如何解决背景图片被拉伸的问题?

1.在图片外围包裹一个Scale Box组件 2.将图片的尺寸修改为原始尺寸就可解决问题

北美”闲鱼”Poshmark,如何销售提高成单率?附防封养号攻略

Poshmark 是一款美国的社交商务应用程序&#xff0c;被称为北美的”咸鱼“。该平台提供女性、男性、儿童时尚和家居装饰品。目前在美国、加拿大、澳洲、印度均可开通&#xff0c;其余地区暂不支持。 在平台上&#xff0c;用户可以自由上传和销售产品。Poshmark提供安全的支付解…

【Zookeeper专题】Zookeeper选举Leader源码解析

目录 前言阅读建议课程内容一、ZK Leader选举流程回顾二、源码流程图三、Leader选举模型图 学习总结 前言 为什么要看源码&#xff1f;说实在博主之前看Spring源码之前没想过这个问题。因为我在看之前就曾听闻大佬们说过【JavaCoder三板斧&#xff1a;Java&#xff0c;Mysql&a…

设计模式_责任链

责任链模式 介绍 设计模式定义案例责任链模式问题 传给 多个可处理人 这多个处理人做成一个链表学生请假条审核 上课老师&#xff08;3天权限&#xff09; 班主任 &#xff08;5天权限&#xff09; 校长 &#xff08;30天权限&#xff09; 问题堆积在哪里解决办法进一步优…

目标检测新思路:DETR

Transformer是一种基于自注意力机制的神经网络架构&#xff0c;它能够从序列中提取重要信息&#xff0c;已被广泛应用于自然语言处理和语音识别等领域。随着Transformer的提出和发展&#xff0c;目标检测领域也开始使用Transformer来提高性能。 DETR是第一篇将Transformer应用于…

点击弹窗页面右侧缩小问题

主页面是由header和下面的tabel&#xff0c;2个组件构成&#xff0c;需要在css里使用flex布局&#xff0c; 就解决了弹窗导致的页面右侧缩小问题。 display: flex; flex-direction: column; <template><div class"main"><div class"header"…

局域网远程控制

被控制端电脑设置 1开启服务 Romate Desktop Services 2设置允许远程控制&#xff0c;并且添加被控制的用户 3检查用户组管理用户名是否一致 我的电脑>管理>本地用户和组>用户 4在控制电脑端WinR 输入 mstsc出现如下界面 输入被控制电脑IP和用户名 然后输入被控制端…

第十届蓝桥杯省赛C++C/研究生组,第十届蓝桥杯省赛JAVAC/研究生组——扫地机器人题解(二分)

题目描述 小明公司的办公区有一条长长的走廊&#xff0c;由 N个方格区域组成&#xff0c;如下图所示。 走廊内部署了 K台扫地机器人&#xff0c;其中第 i台在第 A i A_i Ai​ 个方格区域中。 已知扫地机器人每分钟可以移动到左右相邻的方格中&#xff0c;并将该区域清扫干净…

Android组件通信(二十四)

1. Activity生命周期 1.1 知识点 &#xff08;1&#xff09;掌握Activity的生命周期及操作方法&#xff1b; 1.2 具体内容 范例&#xff1a; 第一个配置文件 <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http…

C语言常见题目(1)交换两个变量的值,数的逆序输出,猜数游戏,两个数比较大小等

我的个人主页&#xff1a;☆光之梦☆的博客_CSDN博客-C语言基础语法&#xff08;超详细&#xff09;领域博主 欢迎各位 &#x1f44d;点赞 ⭐收藏 &#x1f4dd;评论 特别标注&#xff1a;本博主将会长期更新c语言的语法知识&#xff0c;初学c语言的朋友们&#xff0c;可以收藏…

面试经典 150 题 3 —(双指针)— 167. 两数之和 II - 输入有序数组

167. 两数之和 II - 输入有序数组 方法一 class Solution { public:vector<int> twoSum(vector<int>& numbers, int target) {unordered_map<int,int> hashtable;for(int i 1; i < numbers.size(); i){auto item hashtable.find(target - numbers[…

Allegro基本规则设置指导书之Spacing规则设置

进入规则设置界面 1.设置Line 到其他的之间规则: 2.设置Pins 到其他的之间规则: 3.设置Vias 到其他的之间规则:

微软开源 windows-drivers-rs,用 Rust 开发 Windows 驱动程序

Microsoft Azure 首席技术官兼著名 Windows 软件开发人员 Mark Russinovich 在社交平台上宣布&#xff0c;启动了一个名为 windows-drivers-rs 的新开源项目。 该项目可帮助开发人员使用 Rust 开发 Windows 驱动程序&#xff0c;旨在支持 WDM (Windows Driver Model) 和 WDF (…

Pandas将两个Excel表格找出不同之处-对比两个文件-merge合并查询

Demo示例&#xff1a; 现有两个Excel表格&#xff0c;SKU不同&#xff0c;需要找出不同之处 代码结果演示&#xff1a; 代码&#xff1a; import pandastest1_path rC:\Users\Administrator\Desktop\新建文件夹 (2)\test1.xlsx test2_path rC:\Users\Administrator\Deskto…

pyqt 划线标注工具

效果图: 代码: import osfrom PyQt5.QtWidgets import QWidget, QApplication, QVBoxLayout, QPushButton, QLabel from PyQt5.QtGui import QPainter, QPen, QColor, QImage, QPixmap from PyQt5.QtCore import Qt, QPoint import sys import jsonclass ImageLabel(QLabel)…