SpringBoot整合Activiti7——实战之出差流程(分支)

2024-03-23 1952阅读

文章目录

    • 代码实现
      • 部署流程
      • 启动流程
      • 查询任务
      • 填写出差审批单
      • 经理审批
      • xml文件

        出差流程:开始 - 填写出差表单 - 判断(出差天数大于等于5)- 副经理审批 - 否则总经理审批 - 完成

        代码实现

        SpringBoot整合Activiti7——实战之出差流程(分支)

        部署流程

        	@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}]]>
            
            
              
            
            
            
            
            
            
          
          
            
              
                
              
              
                
              
              
                
                
              
              
                
              
              
                
              
              
                
                
              
              
                
                
              
              
                
              
              
                
                
              
              
                
              
              
                
                
              
              
                
                
              
            
          
        
        
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]