import lombok.extern.slf4j.Slf4j;
import org.activiti.engine.*;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.runtime.ProcessInstance;
import org.junit.Test;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class SingupProcesses {
/**
* 会默认按照Resources目录下的activiti.cfg.xml创建流程引擎
*/
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**
* 测试暂停【【流程实例】】
* 1,通过流程定义的key或者id启动一个流程实例
* 2,根据流程实例的id来挂起这个流程实例
* 3,得到下一个节点的对应的任务的id,调用taskService来完成这个任务观察效果
* 4,重新激活这个流程实例
* 5,继续完成这个流程实例
*/
@Test
public void singupProcessInstance(){
RuntimeService runtimeService = processEngine.getRuntimeService();
String processInstanceBusinessKey ="C2022相城0002";
ProcessInstance leavelProcessInstance = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(processInstanceBusinessKey).singleResult();
boolean suspended = leavelProcessInstance.isSuspended();
if(suspended){
//解挂
runtimeService.activateProcessInstanceById(leavelProcessInstance.getId());
log.info("=======解挂");
}else{
//挂起
runtimeService.suspendProcessInstanceById(leavelProcessInstance.getId());
log.info("=======挂起");
}
}
/**
* 测试暂停【【流程定义】】
*/
@Test
public void singupProcessDefinition(){
RepositoryService repositoryService = processEngine.getRepositoryService();
String processDefinitionKey ="leave";
ProcessDefinition leaveDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(processDefinitionKey).singleResult();
//流程状态是否是挂起
boolean suspended = leaveDefinition.isSuspended();
if(suspended){
//解挂
repositoryService.activateProcessDefinitionById(leaveDefinition.getId(),true,null);
log.info("=======解挂");
}else{
//挂起
//repositoryService.suspendProcessDefinitionByKey(leaveDefinition.getKey());
repositoryService.suspendProcessDefinitionById(leaveDefinition.getId(),true,null);
log.info("=======挂起");
}
}
/**
* 启动流程
* RuntimeService
*/
@Test
public void startProcess() {
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance leaveInstance = runtimeService.startProcessInstanceByKey("leave");
System.out.println("流程id: "+leaveInstance.getId());
}
/**
* 办理任务
*/
@Test
public void handleTask() {
TaskService taskService = processEngine.getTaskService();
Map<String, Object> variables = new HashMap<>();
variables.put("day", 1); // 写申请流程变量
variables.put("action","pass"); //审批流程变量 (驳回/同意)
//根据上一步生成的taskId执行任务
String taskId = "32505";//5005
taskService.complete(taskId, variables);
System.out.println("任务完成");
}
}
【activiti】挂起、解挂
最新推荐文章于 2024-04-24 20:30:11 发布