项目地址

​https://gitee.com/lwj/flowable.git​

代码分支

flowable-base

视频讲解地址

​https://www.bilibili.com/video/av78294766/​

用户名

密码

0000001

test

0000002

test

0000003

test

0000004

test

文章目录

场景分析

解释:委派
A由于某些原因不能处理该任务,可以把任务委派给用户B代理,当B处理完成之后再次回到用户A这里,在这个过程中A是任务的所有者,B是该任务的办理人
A->B->A

1. 演示

工作流实战_19_flowable 任务委派_用户名


工作流实战_19_flowable 任务委派_Flowable_02

2. 代码分享

 public ReturnVo<String> delegateTask(DelegateTaskVo delegateTaskVo) {
ReturnVo<String> returnVo = null;
TaskEntityImpl currTask = (TaskEntityImpl) taskService.createTaskQuery().taskId(delegateTaskVo.getTaskId()).singleResult();
if (currTask != null) {
//1.添加审批意见
this.addComment(delegateTaskVo.getTaskId(), delegateTaskVo.getUserCode(), delegateTaskVo.getProcessInstanceId(), CommentTypeEnum.WP.toString(), delegateTaskVo.getMessage());
//2.设置审批人就是当前登录人
taskService.setAssignee(delegateTaskVo.getTaskId(), delegateTaskVo.getUserCode());
//3.执行委派
taskService.delegateTask(delegateTaskVo.getTaskId(), delegateTaskVo.getDelegateUserCode());
returnVo = new ReturnVo<>(ReturnCode.SUCCESS, "委派成功");
} else {
returnVo = new ReturnVo<>(ReturnCode.FAIL, "没有运行时的任务实例,请确认!");
}
return returnVo;
}

3. 委派的执行处理

//2.委派处理
if (DelegationState.PENDING.equals(taskEntity.getDelegationState())) {
//2.1生成历史记录
TaskEntity task = this.createSubTask(taskEntity, params.getUserCode());
taskService.complete(task.getId());
taskId = task.getId();
//2.3执行委派
taskService.resolveTask(params.getTaskId(), params.getVariables());
}