spring-activiti 一些操作

文章目录

      • 一、bpmn文件部署
      • 二、发起一个流程
      • 三、查找任务
      • 四、提交/完成任务
      • 五、流程定义的查询
      • 六、流程的删除
      • 七、流程历史信息查看
      • 八、指派任务
      • 九、委派任务
      • 十、放回任务
      • 十一、回退任务
      • 十二、终止任务

一、bpmn文件部署

    @AurowardRepositoryService rep;//通过流区创建一个工作流对象rep.createDeployment().addInputStream(filename, is).deploy();//涉及的表act_re_deployment: 流程定义部署表,每部署一次就增加一条记录act_re_procdef :流程定义表,部署每个新的流程定义都会在这张表中增加一条记录act_ge_bytearray :流程资源表,流程部署的 bpmn文件和png图片会保存在该表中

二、发起一个流程

    @AutowiredIdentityService identityservice;@AurowardRuntimeService runtimeservice;//添加与业务之间的关系identityservice.setAuthenticatedUserId(“业务key-连接业务数据和流程数据,一般使用表的主键”);//启动ProcessInstance instance=runtimeservice.startProcessInstanceByKey("业务流程key",“业务key”,“变量”);//涉及的表act_hi_actinst 流程实例执行历史act_hi_identitylink 流程的参与用户的历史信息act_hi_procinst 流程实例历史信息act_hi_taskinst 流程任务历史信息act_ru_execution 流程执行信息act_ru_identitylink 流程的参与用户信息act_ru_task 任务信息

三、查找任务

    @AutowiredTaskService taskservice;@AurowardRuntimeService runtimeservice;//一、添加与业务之间的关系List<Task> tasks=taskservice.createTaskQuery().taskAssignee(“指定用户“).taskName("指定名称").listPage(“第几页”, “每页几条//二、根据taskId查找任务Task task = taskservice.createTaskQuery().taskId(“任务id”).singleResult();/*** task.getProcessInstanceId() 流程实例id*/ProcessInstance process = runservice.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();

四、提交/完成任务

    @AutowiredTaskService taskservice;//声明责任人--如果省略了这一步,任务不回向下走taskservice.claim("要声明的任务", “用户,不可为空“);//完成任务(变量可以为空,一般用于指派下一个人)taskservice.complete("要声明的任务", “变量”);

五、流程定义的查询

    @AutowiredRepositoryService rep;//List<ProcessDefinition> list =  rep.createProcessDefinitionQuery().listPage(“第几页”, “每页几条”)// 输出流程定义的信息for (ProcessDefinition processDefinition : list) {System.out.println("流程定义的ID:" + processDefinition.getId());System.out.println("流程定义的name:" + processDefinition.getName());System.out.println("流程定义的key:" + processDefinition.getKey());System.out.println("流程定义的version:" + processDefinition.getVersion());System.out.println("流程部署的id:" + processDefinition.getDeploymentId());}

六、流程的删除

    @AutowiredRepositoryService rep;// 设置为TRUE 级联删除流程定义,及时流程有实例启动,也可以删除,设置为false 非级联删除操作。rep.deleteDeployment(“流程标识”, true);

七、流程历史信息查看

    @AutowiredHistoryService histiryservice;// 创建一个历史流程实例对象HistoricProcessInstanceQuery his = histiryservice.createHistoricProcessInstanceQuery()//给定idHistoricProcessInstanceQuery process = his.processDefinitionId("");//给定keyHistoricProcessInstanceQuery process = his.processDefinitionKey("");//只选择由给定用户启动的历史流程实例。process = process.startedBy("用户标识");//只选择完成的process = process.finished();//历史流程实例List<HistoricProcessInstance> info = process.listPage(firstrow, rowCount);

八、指派任务

    @AutowiredTaskService taskservice;//  指派的第一种方式taskService.setAssignee(task.getId(), "jack");//  指派的第二种方式taskService.deleteCandidateUser(task.getId(), "tom");taskService.addCandidateUser(task.getId(), "jack");

九、委派任务

    @AutowiredTaskService taskservice;//  将任务进行委派taskService.delegateTask(task.getId(), "rose");//被委派人办理任务后,委派人标记任务已完成taskService.resolveTask(task.getId());

十、放回任务

    @AutowiredTaskService taskservice;//  重新放回去taskService.setAssignee(task.getId(), null);taskService.unclaim(task.getId());

十一、回退任务

1. 找到任务
2. 找到当前实例历史执行记录
3. 拿到上一步任务节点
4. 记录当前节点的流转方向
5. 清除当前节点的流转方向
6. 将当前节点指向回退的节点
7. 完成当前节点任务
8. 查询此任务,将回退节点的执行人重新赋值到该节点
9. 恢复当前节点的流转方向

十二、终止任务

流程基本与回退任务一致,只是把回退节点换成结束节点即可

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

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

相关文章

什么是 PowerShell

什么是 PowerShell&#xff1f; PowerShell 是一种跨平台的任务自动化解决方案&#xff0c;由命令行 shell、脚本语言和配置管理框架组成。 PowerShell 在 Windows、Linux 和 macOS 上运行。 命令行 Shell ​ PowerShell 是新式命令 shell&#xff0c;其中包括其他常用 shel…

(接上一篇linux rocky 搭建DNS高阶版)实现不同网段访问解析不同的服务器并加域

上一篇链接&#xff1a;linux rocky 搭建DNS服务和禁止AD域控DNS&#xff0c;做到独立DNS并加域-CSDN博客文章浏览阅读417次&#xff0c;点赞13次&#xff0c;收藏7次。使用linux rocky 搭建DNS服务&#xff0c;用于独立AD域控DNS存在&#xff0c;并且实现加域。https://blog.c…

【算法刷题day53】Leetcode:1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和

文章目录 Leetcode 1143. 最长公共子序列解题思路代码总结 Leetcode 1035. 不相交的线解题思路代码总结 Leetcode 53. 最大子数组和解题思路代码总结 草稿图网站 java的Deque Leetcode 1143. 最长公共子序列 题目&#xff1a;1143. 最长公共子序列 解析&#xff1a;[代码随想录…

数字集成电路物理设计[陈春章]——知识总结与精炼01

第一章 集成电路物理设计方法 1.1 数字集成电路设计挑战 1.2 数字集成电路设计流程 前两节内容讲述的是数字集成电路发展与流程&#xff0c;知识体系比较宏观和简单&#xff0c;请读者自行了解即可。 1.3 数字集成电路设计收敛 实现设计收敛任务&#xff1a;①数据系统;②优…

Flume 的安装和使用方法(Spark-2.1.0)

一、Flume的安装 1.下载压缩包 https://www.apache.org/dyn/closer.lua/flume/1.7.0/apache-flume-1.7.0-bin.tar.gz 2.上传到linux中 3.解压安装包 cd #进入加载压缩包目录sudo tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr/local # 将 apache-flume-1.7.0-bin.tar.g…

夯实spring(二十一):@Scope、@DependsOn、@ImportResource、@Lazy

本文问题: 1. Scope是做什么的&#xff1f;常见的用法有几种&#xff1f;2. DependsOn是做什么的&#xff1f;常见的用法有几种&#xff1f;3. ImportResource干什么的&#xff1f;通常用在什么地方&#xff1f;4. Lazy做什么的&#xff0c;通常用在哪些地方&#xff1f;常见的…

leetcode-15. 三数之和

题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组…

有哪些值得买的开放式耳机推荐?2024年开放式运动耳机选购指南

开放式耳机因其独特设计&#xff0c;能在一定程度上保护听力。相较于传统封闭式耳机&#xff0c;开放式设计允许周围环境声音自然流入耳内&#xff0c;降低了耳内共振和声压&#xff0c;减少了耳道的不适感&#xff0c;从而减轻了对听力的潜在损害。对于追求音质与听力保护并重…

iOS git创建与合并分支

参考文章 Git – 创建与合并分支 相关命令行解释 1. 创建并切换到该分支&#xff1a; 2.0.0是新建的分支的名字 git checkout -b 2.0.0 相当于下面这两句 创建分支 git branch 2.0.0 切换到某个分支 git checkout 2.0.0 2. 查看当前所有分支&#xff1a; git branch 如何提…

国外新闻媒体推广:多元化媒体分发投放-大舍传媒

前言 &#xff1a;随着全球化的进程&#xff0c;国外新闻市场呈现出快速发展的趋势。在这个趋势下&#xff0c;国外新闻媒体推广成为了各行业企业宣传业务的重要一环。本文将重点介绍大舍传媒的多元化媒体分发投放服务&#xff0c;以及对国外新闻媒体推广的意义。 1. 多元化媒…

阿赵UE引擎C++编程学习笔记——解决中文乱码问题

大家好&#xff0c;我是阿赵。   在UE编写C的时候&#xff0c;可能有些朋友发现&#xff0c;在C里面如果打印输出或者赋值一些中文的字符串的时候&#xff0c;会出现各种的报错&#xff0c;要么乱码&#xff0c;要么直接编译不过。   这个问题&#xff0c;其实和UE本身没什…

OSEK应用模式

1 前言 应用模式&#xff08;Application modes)用于区分不同的场景&#xff0c;以便在系统运行时&#xff0c;组织各自相互独立的OS相关的资源集合&#xff0c;是一种分而治之的思想体现。不同的应用模式是互斥的&#xff0c;即系统当前必须在一种应用模式&#xff08;且只能在…

Java面试八股之反射慢在哪里

Java反射慢在哪里 动态类型检查&#xff1a; 在反射过程中&#xff0c;Java需要在运行时确定类、方法、字段等的类型信息。这与编译时已经确定类型信息的常规对象访问不同&#xff0c;反射需要额外的类型查询和验证&#xff0c;增加了性能开销。 安全检查&#xff1a; 反射…

重生之我在地球当程序员-SpringMVC篇

重生之我在地球当程序员-SpringMVC篇 本篇主要讲述了SpringMVC框架的使用&#xff0c;以及SpringMVC相关知识点的介绍 SpringMVC 是应用web层的 基于MVC设计模式的轻量级的web框架。 对Servlet封装&#xff0c;支持restful风格 MVC概念和三层架构 MVC Spring MVC中&#xff…

高亚科技签约山东亿海兰特,打造合同及项目一体化管理平台!

近日&#xff0c;中国企业管理软件资深服务商高亚科技与山东亿海兰特通信科技有限公司&#xff08;以下简称“山东亿海兰特”&#xff09;正式签约&#xff0c;依托8Manage PM业务项目管理软件&#xff0c;打造集客户、合同、项目、交付于一体的运营平台&#xff0c;提升企业全…

对文本框做字数限制

效果图 实现步骤 其中绝对布局根据需求自行调整 <!--单文本输入框--> <div class"form-group"><label class"col-sm-2 control-label is-required">面试公司&#xff1a;</label><div class"col-sm-9"><input …

前端崽的java study笔记

文章目录 basic1、sprint boot概述2、sprint boot入门3、yml 配置信息书写和获取 持续更新ing~ basic 1、sprint boot概述 sprint boot特性&#xff1a; 起步依赖&#xff08;maven坐标&#xff09;&#xff1a;解决配置繁琐的问题&#xff0c;只需要引入sprint boot起步依赖的…

对关系型数据库管理系统的介绍

1.数据库的相关介绍 关系型数据库管理系统&#xff1a;&#xff08;英文简称&#xff1a;RDBMS&#xff09; 为我们提供了一种存储数据的特定格式&#xff0c;所谓的数据格式就是表&#xff0c; 在数据库中一张表就称为是一种关系. 在关系型数据库中表由两部分组成&#xf…

大企业总部与分部组网方案

在全球化的经济环境中&#xff0c;大企业往往设有总部和多个地理分散的分部。为了确保信息的快 速流通、资源的优化配置以及管理的高效运作&#xff0c;构建一个稳定、安全且高效的组网方案显 得尤为重要。本文将探讨大企业如何通过技术手段和管理策略&#xff0c;实现总部与分…