Activiti6.0中流程的暂停、重启与指定人或组执行

注意:如果不是与spring整合使用,则使用activitiRule进行测试,原理相同

1、流程的暂停

		Deployment deploy = repositoryService.createDeployment().name("部署实例暂停启动")
				.addClasspathResource("my-process.bpmn20.xml")
				.deploy();
		ProcessDefinition processDefinition = 
				repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult();

		LOGGER.info("processDefinition.getId() = {}", processDefinition.getId());

		//暂停
		repositoryService.suspendProcessDefinitionById(processDefinition.getId());

		//启动
		try {
			LOGGER.info("启动");
			runtimeService.startProcessInstanceById(processDefinition.getId());
			LOGGER.info("启动成功");
		} catch (Exception e) {
			LOGGER.info("启动失败, 原因 {}", e.getMessage());
//			暂停之后的流程不激活的会报错
//			Cannot start process instance. Process definition null (id = my-process:1:127503) is suspended
		}

		//重新激活再启动
		repositoryService.activateProcessDefinitionById(processDefinition.getId());
		LOGGER.info("启动");
		runtimeService.startProcessInstanceById(processDefinition.getId());
		LOGGER.info("启动成功");
	}

2、指定候选人或组(删除候选人或组)

Deployment deploy = repositoryService.createDeployment().name("部署实例暂停启动")
				.addClasspathResource("my-process.bpmn20.xml")
				.deploy();
		ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult();

		LOGGER.info("processDefinition.getId() = {}", processDefinition.getId());

		repositoryService.addCandidateStarterUser(processDefinition.getId(), "user");
		repositoryService.addCandidateStarterGroup(processDefinition.getId(), "manager");

		List<IdentityLink> identityList = repositoryService.getIdentityLinksForProcessDefinition(processDefinition.getId());

		identityList.forEach(identityLink -> {
			LOGGER.info("identityLink =  {}", identityLink);
		});

		repositoryService.deleteCandidateStarterGroup(processDefinition.getId(), "manager");
		repositoryService.deleteCandidateStarterUser(processDefinition.getId(), "user");
	}

猜你喜欢

转载自blog.csdn.net/qq_42046342/article/details/100863049