activiti6+springboot2 的第二个简单demo

上一节提到动态设置流程中的用户,请看流程图所示:

 这里设置的就是 ${user1} ,第一个用户

演示代码:

 @RequestMapping("single_assignee")
    public void setSingleAssignee() {
        //根据bpmn文件部署流程
        repositoryService.createDeployment().addClasspathResource("processes/single_assignee.bpmn").deploy();
        // 设置User Task1受理人变量
        Map<String, Object> variables = new HashMap<>(8);
        variables.put("user1", "007");
        //采用key来启动流程定义并设置流程变量,返回流程实例
        ProcessInstance pi = runtimeService.startProcessInstanceByKey("single_assignee", variables);
        String processId = pi.getId();
        System.out.println("流程创建成功,当前流程实例ID:"+processId);
        // 注意 这里需要拿007来查询,key-value需要拿value来获取任务
        List<Task> list = taskService.createTaskQuery().taskAssignee("007").list();
        if(list!=null && list.size()>0){
            for(org.activiti.engine.task.Task task:list){
                System.out.println("任务ID:"+task.getId());
                System.out.println("任务的办理人:"+task.getAssignee());
                System.out.println("任务名称:"+task.getName());
                System.out.println("任务的创建时间:"+task.getCreateTime());
                System.out.println("流程实例ID:"+task.getProcessInstanceId());
                System.out.println("##################################");
            }
        }
        // 设置User Task2的受理人变量
        Map<String, Object> variables1 = new HashMap<>(8);
        variables1.put("user2", "Kevin");
        // 因为007只有一个代办的任务,直接完成任务,并赋值下一个节点的受理人user2为Kevin办理
        taskService.complete(list.get(0).getId(), variables1);
        System.out.println("User Task1被完成了,此时流程已流转到User Task2");
}

访问:http://localhost:8080/activti/single_assignee

猜你喜欢

转载自www.cnblogs.com/woshuaile/p/11898405.html