SpringBoot整合Activiti7——实战之出差流程(分支)
文章目录
- 代码实现
- 部署流程
- 启动流程
- 查询任务
- 填写出差审批单
- 经理审批
- xml文件
出差流程:开始 - 填写出差表单 - 判断(出差天数大于等于5)- 副经理审批 - 否则总经理审批 - 完成
代码实现
部署流程
@Test public void testDeployProcess() throws IOException { ClassPathResource classPathResource = new ClassPathResource("/processes/businessTrip.bpmn20.xml"); // 部署流程 act_re_procdef Deployment deploy = repositoryService.createDeployment() .addInputStream(classPathResource.getPath(), classPathResource.getInputStream()) .deploy(); System.out.println("deploy = " + deploy); }
启动流程
@Test public void testStartProcess() { //启动流程时传递的参数列表 这里根据实际情况 也可以选择不传 Map variables = new HashMap(); variables.put("userId", "654321"); // 获取流程定义的Key String processDefinitionKey = "businessTrip"; // 定义businessKey String businessKey = processDefinitionKey + ":" + "10001"; // 假设模拟出差业务id为1001 // 设置启动流程的人 Authentication.setAuthenticatedUserId("admin"); // 启动流程 act_hi_procinst act_ru_variable act_ru_task ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables); System.out.println("processInstance = " + processInstance); System.out.println("流程实例ID:" + processInstance.getId()); }
查询任务
将启动流程后的流程实例ID更换到下面
@Test public void queryTaskList() { // 查询任务 act_ru_task TaskQuery taskQuery = taskService.createTaskQuery() .processInstanceId("eb12004e-35cc-11ee-86ca-18c04dcd4aee") // 流程实例ID .orderByTaskCreateTime().asc(); List taskList = taskQuery.list(); System.out.println("taskList = " + taskList); }
填写出差审批单
将任务ID更换到下面,businessTripDay天数决定是副经理还是总经理审批,这里演示副经理审批
@Test public void completeBusinessTripFormTask() { // 根据id查询任务 act_ru_task Task task = taskService.createTaskQuery().taskId("eb1534a5-35cc-11ee-86ca-18c04dcd4aee").singleResult(); Map hashMap = new HashMap(); hashMap.put("userId", "654321"); hashMap.put("businessTripDay", 6); hashMap.put("businessTripReason", "工作要求"); hashMap.put("businessTripTime", new Date()); // 完成任务,填写任务则更新为审核任务,任务ID改变 taskService.complete(task.getId(), hashMap); }
经理审批
将启动流程后的流程实例ID更换到下面
@Test public void managerAudit() { Task task = taskService.createTaskQuery().processInstanceId("eb12004e-35cc-11ee-86ca-18c04dcd4aee").singleResult(); // 添加备注 Map hashMap = new HashMap(); hashMap.put("remark", "好的好的"); // 部门审批完成任务,任务列表为空 taskService.complete(task.getId(), hashMap); }
xml文件
模拟出差审批流程 5}]]>
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。