weixin_58662786 2023-04-27 17:09 采纳率: 63.6%
浏览 33
已结题

activiti设置驳回节点的问题

最近项目里碰到用activiti工作流来做一个驳回功能,要求驳回到上一个指定的流程,比方说部门职员写申请给部门经理,部门经理审批完给总经理,然后总经理看完不行就驳回给部门经理,我现在写的代码会从总经理这里直接驳回给部门员工,各位看看该怎么写比较好,多谢了

img

  • 写回答

4条回答 默认 最新

  • 喝茶品人生 2023-04-27 17:33
    关注
    
    ``
    public void backToActivity(String taskId, String activityId) {
        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task == null) {
            throw new RuntimeException("任务不存在");
        }
    
        List<HistoricTaskInstance> historicTaskInstances = historyService.createHistoricTaskInstanceQuery()
                .processInstanceId(task.getProcessInstanceId()).orderByHistoricTaskInstanceEndTime().desc().list();
        HistoricTaskInstance lastTask = null;
        for (HistoricTaskInstance historicTaskInstance : historicTaskInstances) {
            if (historicTaskInstance.getTaskDefinitionKey().equals(activityId)) {
                lastTask = historicTaskInstance;
                break;
            }
        }
    
        if (lastTask == null) {
            throw new RuntimeException("没有找到指定节点的任务");
        }
        String lastAssignee = lastTask.getAssignee();
        Map<String, Object> variables = new HashMap<>();
        variables.put("assigneeList", Arrays.asList(lastAssignee));
        runtimeService.createProcessInstanceModification(task.getProcessInstanceId())
                .startBeforeActivity(activityId).setVariables(variables).execute();
    }
    

    ```

    评论

报告相同问题?

问题事件

  • 系统已结题 5月5日
  • 创建了问题 4月27日

悬赏问题

  • ¥50 如何在不能联网影子模式下的电脑解决usb锁
  • ¥20 服务器redhat5.8网络问题
  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码