一、工作流 Activiti7-12.API新特性TaskRun

2021-04-06  本文已影响0人  那钱有着落吗
image.png
 //获取当前登录用户任务
    @Test
    public void findTasks(){
        securityUtil.logInAs("zhangsan");

        Page<Task> taskPage = taskRuntime.tasks(Pageable.of(0,100));

        List<Task> tasks = taskPage.getContent();

        for(Task task:tasks){
            System.out.println("getId:"+task.getId());
            System.out.println("getName:"+task.getName());
            System.out.println("getStatus:"+task.getStatus());
            System.out.println("getCreatedDate:"+task.getCreatedDate());
            if(task.getAssignee()==null){
                //候选人为当前登录用户,null时任务待拾取
                System.out.println("Assignee:待拾取任务");
            }else{
                System.out.println("Assignee"+task.getAssignee());
            }
        }

    }

可以看到我们并没有传入当前登录用户的id或者name,怎么获取的呢,我们查看下task的api

 public Page<Task> tasks(Pageable pageable) {
        String authenticatedUserId = this.securityManager.getAuthenticatedUserId();
        if (authenticatedUserId != null && !authenticatedUserId.isEmpty()) {
            List<String> userGroups = this.userGroupManager.getUserGroups(authenticatedUserId);
            return this.tasks(pageable, TaskPayloadBuilder.tasks().withAssignee(authenticatedUserId).withGroups(userGroups).build());
        } else {
            throw new IllegalStateException("You need an authenticated user to perform a task query");
        }
    }

发现在安全框架这儿已经做了获取用户的操作了。

在完成任务的时候,我们首先需要拿到任务,如果该任务没有分配给我们需要完成的人,那么久证明该人员是候选人,就要先进行拾取,然后再完成。

//完成任务
    @Test
    public void completeTask(){
        securityUtil.logInAs("zhangsan");
        Task task = taskRuntime.task("");
        if(task.getAssignee()==null){
            taskRuntime.claim(TaskPayloadBuilder.claim().withTaskId("").build());
        }
        taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId()).build());
    }
上一篇 下一篇

猜你喜欢

热点阅读