全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<流程挂起与激活篇>

Posted DT辰白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<流程挂起与激活篇>相关的知识,希望对你有一定的参考价值。


前言

某些情况可能由于流程变更需要将当前运行的流程暂停而不是直接删除,流程暂停后将不会继续执行。默认当我们部署了一个流程,是激活状态:(SUSPENSION_STATE_ = 1)

流程定义数据表( act_re_procdef )

在这里插入图片描述

运行时任务节点表( act_ru_task )

在这里插入图片描述


一、单个流程实例挂起

操作流程实例对象,针对单个流程执行挂起操作,某个流程实例挂起则此流程不再继续执行,完成该流程实例的当前任务将报异常。

1.1 部署流程

在这里插入图片描述

1.2 启动流程

在这里插入图片描述
当我们开启了出差申请实例之后:
在这里插入图片描述
在这里插入图片描述

1.3 挂起流程(suspendProcessInstanceById)

runtimeService.suspendProcessInstanceById(instance.getId());

@PostMapping("setState")
public Map<String, Object> SuspendSingleProcessInstance(String processDefinitionId) {
	Map<String, Object> map = new HashMap<>();
	// 查询流程定义的对象
	ProcessInstance instance = runtimeService.createProcessInstanceQuery().processDefinitionId(processDefinitionId)
			.singleResult();
	System.out.println("流程id:" + instance.getProcessDefinitionId());
	System.out.println("流程状态:" + instance.isSuspended());

	if(instance.isSuspended()) { // 为true则为暂停状态,可以设置激活
		runtimeService.activateProcessInstanceById(instance.getId()); 
		map.put("流程定义:"+instance.getId(),"已激活");
	}else { 
		// 为false则为激活状态,可以设置暂停 
		runtimeService.suspendProcessInstanceById(instance.getId());
		map.put("流程定义:"+instance.getId(),"已挂起"); 
	}
	return map;
}

在这里插入图片描述
在这里插入图片描述

1.4 执行任务

在这里插入图片描述
在这里插入图片描述

1.5 激活流程(activateProcessInstanceById)

runtimeService.activateProcessInstanceById(instance.getId());

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

当然走到这步我们再去挂起流程,不让李四去审批:

在这里插入图片描述

在这里插入图片描述

二、全部流程实例挂起

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

1.1 激活

repositoryService.activateProcessDefinitionById(instance.getId(),true,null)
参数1 :流程定义id ,参数2:是否暂停,参数3:暂停时间

1.2 挂起

repositoryService.suspendProcessDefinitionById(instance.getId(),true,null)
参数1 :流程定义id ,参数2:是否暂停,参数3:暂停时间

1.3 代码

@PostMapping("setStates")
public Map<String, Object> SuspendSingleProcessInstances(String processDefinitionKey) {
	Map<String, Object> map = new HashMap<>();
	// 查询流程定义的对象
	ProcessInstance instance = runtimeService.createProcessInstanceQuery().processDefinitionKey(processDefinitionKey)
			.singleResult();
	System.out.println("流程id:" + instance.getProcessDefinitionId());
	System.out.println("流程状态:" + instance.isSuspended());

	if(instance.isSuspended()) { 
		//为true则为暂停状态,可以执行激活操作 ,参数1 :流程定义id ,参数2:是否激活,参数3:激活时间
           repositoryService.activateProcessDefinitionById(instance.getId(),
                   true,
                   null
           );
		map.put("流程定义:"+instance.getId(),"已激活");
	}else { 
		//为false则为激活状态,可以暂停,参数1 :流程定义id ,参数2:是否暂停,参数3:暂停时间
           repositoryService.suspendProcessDefinitionById(instance.getId(),
                   true,
                   null);
		map.put("流程定义:"+instance.getId(),"已挂起"); 
	}
	return map;
}

总结

关于Activiti的东西很多,需要进下心来,慢慢品尝,下一篇马上到进阶篇,关注吧!关注吧!关注吧!关注吧!关注吧!关注吧!关注吧!关注吧!。

熬夜干货,创作不易,动动小手点赞吧!!!!后面会继续输出更多干货给大家,喜欢的请关注小编CSDN:https://blog.csdn.net/qq_41107231 以及掘金:https://juejin.cn/user/3940246036699848

以上是关于全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<流程挂起与激活篇>的主要内容,如果未能解决你的问题,请参考以下文章

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<入门篇>

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<流程挂起与激活篇>

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<监听器篇>

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<监听器篇>

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<流程挂起与激活篇>

全网最新Spring Boot2.5.1整合Activiti5.22.0企业实战教程<指定任务委派人篇>