package com.lxzn.activiti; import org.activiti.engine.ProcessEngine; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.repository.Deployment; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.HashMap; import java.util.List; import java.util.Map; @RunWith(SpringRunner.class) @SpringBootTest public class TestActiviti { @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; @Autowired private ProcessEngine processEngine; /** * 流程定义的部署 * activiti表有哪些? * act_re_deployment 部署信息 * act_re_procdef 流程定义的一些信息 * act_ge_bytearray 流程定义的bpmn文件及png文件 */ @Test public void testDeployment() { //ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); RepositoryService repositoryService = processEngine.getRepositoryService(); Deployment deployment = repositoryService.createDeployment().addClasspathResource("processes/assign_nc_to_device.bpmn") //添加bpmn资源 .name("指派NC文档到设备") .deploy(); System.out.println(deployment.getName()); System.out.println(deployment.getId()); } /** * 启动流程实例: * 前提是先已经完成流程定义的部署工作 * * 背后影响的表: * ACT_HI_ACTINST 已完成的活动信息 * ACT_HI_DETAIL 历史详情 * ACT_HI_IDENTITYLINK 参与者信息 * ACT_HI_PROCINST 流程实例 * ACT_HI_TASKINST 任务实例 * ACT_HI_VARINST 历史变量 * ACT_RU_IDENTITYLINK 执行时 参与者信息 * ACT_RU_EXECUTION 执行表 * ACT_RU_TASK 当前任务 * ACT_RU_VARIABLE 执行时 参数信息 */ @Test public void testStartInstance() { //3.创建流程实例 流程定义的key需要知道 holiday String applyUser = "1255172650880737281"; //String[] approveUsers = {"1254773336467689474", "1254966905669160962"}; String approveUsers = "1254773336467689474, 1254966905669160962"; String businessKey = "111111"; String key = "assign_nc_to_device"; Map map = new HashMap<>(); map.put("apply_user", applyUser); map.put("approve_users", approveUsers); ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(key, businessKey, map); //4.输出实例的相关信息 System.out.println("流程部署ID"+processInstance.getDeploymentId());//null System.out.println("流程定义ID"+processInstance.getProcessDefinitionId());//holiday:1:4 System.out.println("流程实例ID"+processInstance.getId());//2501 System.out.println("活动ID"+processInstance.getActivityId());//null } /** * 从ACT_RU_TASK表中获取当前用户的任务列表 * 从ACT_RU_TASK表中获取taskId的任务 */ @Test public void testCompleteTask() { //获取用户的任务列表 //List taskList = taskService.createTaskQuery().taskAssignee("1255172650880737281").list(); Task task = taskService.createTaskQuery().taskId("7509").singleResult(); if(task != null) { //4.任务列表的展示 System.out.println("流程实例ID:"+task.getProcessInstanceId()); System.out.println("任务ID:"+task.getId()); //5002 System.out.println("任务负责人:"+task.getAssignee()); System.out.println("任务名称:"+task.getName()); taskService.complete(task.getId()); } } @Test public void testCandidateUser() { String key = "assign_nc_to_device"; String candidate_user = "1254773336467689474"; // List taskList = taskService.createTaskQuery().processDefinitionKey(key).taskCandidateUser(candidate_user)//设置候选用户 // .list(); // taskList.forEach(System.out::println); Task task = taskService.createTaskQuery().processDefinitionKey(key) .taskCandidateUser(candidate_user).singleResult(); if(task != null) { taskService.claim(task.getId(), candidate_user); System.out.println("拾取任务成功"); taskService.complete(task.getId()); System.out.println("完成任务成功"); } } }