《Activiti/Flowable 深入BPM工作流》- 如何进行任务的归还?

 

 

 《Activiti/Flowable  深入BPM工作流》- 如何进行任务的归还?

 

 

一. 问题

    之前小编小结过任务的交接, 组任务的执行(参考:组任务的办理流程 ) ,但是如果候选人不想处理,想归还任务, 问题就出来了,那

该怎么任务的规划呢?

 

二. 详情

     如果个人不想办理该组任务,可以归还组任务,归还后该用户不再是该任务的负责人

1. 部署流程

2. 启动流程ac_hiactinst 就会有值了

3.  部门经理 执行完成任务

4. 查询候选用户的组任务(主要是查询任务)

5. 拾取任务,将候选用户转换成执行者.

6.  注意: 目前zhangsan 已经拾取任务, 要将任务归还到组任务中,这步怎么实现?

方法: 重新将 Assignee的值设置为null即可

 

// 如果设置为null,归还组任务,该 任务没有负责人
taskService.setAssignee(taskId, null);

 

完整代码:

// 归还组任务,由个人任务变为组任务,还可以进行任务交接
@Test
public void setAssigneeToGroupTask() {
    // 查询任务使用TaskService
    TaskService taskService = processEngine.getTaskService();
    // 当前待办任务
    String taskId = "6004";
    // 任务负责人
    String userId = "zhangsan2";
    // 校验userId是否是taskId的负责人,如果是负责人才可以归还组任务
    Task task = taskService.createTaskQuery().taskId(taskId)
    .taskAssignee(userId).singleResult();
    if (task != null) {
    // 如果设置为null,归还组任务,该 任务没有负责人
    taskService.setAssignee(taskId, null);
    }
}

 

说明:建议归还任务前校验该用户是否是该任务的负责人

也可以通过 setAssignee 方法将任务委托给其它用户负责,注意被委托的用户可以不是候选人(建议

不要这样使用)

 

 

问题:如何进行任务交接?

解答:在已经设置候选人的Assignee中重新设置另一个人就是任务的交接

// 才可以交接
taskService.setAssignee(taskId, candidateuser);

 

完整代码如下:

@Test
public void setAssigneeToCandidateUser() {
    // 查询任务使用TaskService
        TaskService taskService = processEngine.getTaskService();
    // 当前待办任务
    String taskId = "6004";
    // 任务负责人
    String userId = "zhangsan2";
    // 校验userId是否是taskId的负责人,如果是负责人才可以归还组任务
    Task task = taskService.createTaskQuery().taskId(taskId)
    .taskAssignee(userId).singleResult();
    if (task != null) {
    // 将此任务交给其它候选人办理该 任务
    String candidateuser = "zhangsan";
    // 根据候选人和组任务id查询,如果有记录说明该 候选人有资格拾取该 任务
    Task task2 = taskService.createTaskQuery().taskId(taskId)
    .taskCandidateUser(candidateuser).singleResult();
    if (task2 != null) {
        // 才可以交接
        taskService.setAssignee(taskId, candidateuser);
        }
    }
}

 

 

 

 

 

你可能感兴趣的:(activiti7)