Acitiviti7基本使用-3、流程实例挂起与激活

简介: Acitiviti7基本使用-3、流程实例挂起与激活

在实际场景中可能由于流程变更需要将当前运行的流程暂停而不是删除,流程暂停后将不能继续执

行。

一、全部流程挂起激活

流程定义为挂起状态,该流程定义将不允许启动新的流程实例,同时该流程定义下的所有的流程实例都将全部挂起暂停执行。

    /**
     * 全部流程挂起实例与激活
     */
    @Test
    public void test02() {
        //    获取ProcessEngine对象
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        //    获取RepositoryServie对象
        RepositoryService repositoryService = engine.getRepositoryService();
        //    查询流程定义的对象
        ProcessDefinition definition = repositoryService.createProcessDefinitionQuery()
                .processDefinitionKey("evection").list().get(0);
        //获取当前流程定义状态是否挂起
        boolean suspended = definition.isSuspended();
        String id = definition.getId();
        //    如果挂起就激活,如果激活就挂起
 
        if (suspended) { 
            // 挂起->激活流程
            repositoryService.activateProcessDefinitionById(id, true, null);
            System.out.println("流程定义:" + id + ",已激活");
        } else { 
            //激活->挂起流程
            repositoryService.suspendProcessDefinitionById(id, true, null);
            System.out.println("流程定义:" + id + ",已挂起");
        }
 
    }


二、单个实例挂起

操作流程实例对象,针对单个流程执行挂起操作,某个流程实例挂起则此流程不再继续执行,当前流程 定义的其他流程实例是不受干扰的。完成该流程实例的当前任务会抛异常。

    /**
     * 单个流程实例挂起与激活
     */
    @Test
    public void test03() {
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
 
        RuntimeService runtimeService = engine.getRuntimeService();
 
        ProcessInstance definition = runtimeService.createProcessInstanceQuery()
                .processInstanceId("22501").list().get(0);
        //获取当前流程定义状态是否挂起
        boolean suspended = definition.isSuspended();
        String id = definition.getId();
        //    如果挂起就激活,如果激活就挂起
        if (suspended) {
            //  挂起->激活流程
            runtimeService.activateProcessInstanceById(id);
            System.out.println("流程定义:" + id + ",已激活");
        } else {
            //激活->挂起流程
            runtimeService.suspendProcessInstanceById(id);
            System.out.println("流程定义:" + id + ",已挂起");
        }
    }

关键SQL

SELECT DISTINCT
  RES.*,
  P.KEY_ AS ProcessDefinitionKey,
  P.ID_ AS ProcessDefinitionId,
  P.NAME_ AS ProcessDefinitionName,
  P.VERSION_ AS ProcessDefinitionVersion,
  P.DEPLOYMENT_ID_ AS DeploymentId 
FROM
  ACT_RU_EXECUTION RES
  INNER JOIN ACT_RE_PROCDEF P ON RES.PROC_DEF_ID_ = P.ID_ 
WHERE
  RES.PARENT_ID_ IS NULL 
  AND RES.ID_ = ? 
  AND RES.PROC_INST_ID_ = ? 
ORDER BY
  RES.ID_ ASC 
  LIMIT ? OFFSET ?
 
 
UPDATE ACT_RU_EXECUTION 
SET REV_ = ?,
BUSINESS_KEY_ = ?,
PROC_DEF_ID_ = ?,
ACT_ID_ = ?,
IS_ACTIVE_ = ?,
IS_CONCURRENT_ = ?,
IS_SCOPE_ = ?,
IS_EVENT_SCOPE_ = ?,
IS_MI_ROOT_ = ?,
PARENT_ID_ = ?,
SUPER_EXEC_ = ?,
ROOT_PROC_INST_ID_ = ?,
SUSPENSION_STATE_ = ?,
NAME_ = ?,
IS_COUNT_ENABLED_ = ?,
EVT_SUBSCR_COUNT_ = ?,
TASK_COUNT_ = ?,
JOB_COUNT_ = ?,
TIMER_JOB_COUNT_ = ?,
SUSP_JOB_COUNT_ = ?,
DEADLETTER_JOB_COUNT_ = ?,
VAR_COUNT_ = ?,
ID_LINK_COUNT_ = ? 
WHERE
  ID_ = ? 
  AND REV_ = ?
 25001(String), 25001(String), 2147483647(Integer), 0(Integer)

相关文章
|
关系型数据库 MySQL API
|
Java 调度 开发工具
Java处理并发编程工具集合(JUC)详解 1
Java处理并发编程工具集合(JUC)详解
920 1
|
消息中间件 JSON Java
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
36538 1
|
7月前
|
存储 弹性计算 Linux
阿里云服务器购买配置选择攻略:地域、实例、带宽与操作系统选择注意事项
云服务器已成为个人博客、企业官网、APP后端支持以及小程序运行等场景不可或缺的基础设施。然而,对于初次接触云服务的新手用户来说,如何选择适合自己的阿里云服务器配置,尤其是地域、实例、带宽与操作系统等方面,可能会感到困惑。本文将为大家解析阿里云服务器购买的各个环节的注意事项,为新手用户提供详尽的选购指南。
296 3
|
人工智能 调度 UED
这个AI能把PSD变视频!人物/场景/道具任意组合!SkyReels-A2:昆仑万维推出的可控多元素视频生成框架
SkyReels-A2是昆仑万维推出的创新视频生成框架,通过扩散模型和图像-文本联合嵌入技术,实现多元素精准组合与高质量视频输出。
743 25
这个AI能把PSD变视频!人物/场景/道具任意组合!SkyReels-A2:昆仑万维推出的可控多元素视频生成框架
|
数据可视化 Java
探索Drools:Java世界的规则引擎
探索Drools:Java世界的规则引擎
2062 1
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
639 12
|
存储 网络协议 安全
Epoll的实现原理
Epoll的实现原理
|
JavaScript 前端开发
【Vue 3】如何实现动态表单生成器的拖拽功能?
【Vue 3】如何实现动态表单生成器的拖拽功能?
|
NoSQL Java 中间件
springboot整合常用中间件框架案例
该项目是Spring Boot集成整合案例,涵盖多种中间件的使用示例,每个案例项目使用最小依赖,便于直接应用到自己的项目中。包括MyBatis、Redis、MongoDB、MQ、ES等的整合示例。
705 1

热门文章

最新文章