
//获取当前登录用户任务
@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());
}
网友评论