使用camunda做工作流设计,驳回操作

判断是否驳回,可参照如下表格:

 

 camunda页面表象:

 

具体代码实现:

 ActivityInstance tree = runtimeService.getActivityInstance(processInstanceId);
        List<HistoricActivityInstance> resultList = historyService
                .createHistoricActivityInstanceQuery()
                .processInstanceId(processInstanceId)
                .activityType("userTask")
                .finished()
                .orderByHistoricActivityInstanceEndTime()
                .asc()
                .list();
        //得到任务节点id
        List<HistoricActivityInstance> historicActivityInstanceList = resultList.stream().filter(historicActivityInstance -> historicActivityInstance.getActivityId().equals(rejectTaskDTO.getTaskKey())).collect(Collectors.toList());
        HistoricActivityInstance historicActivityInstance = historicActivityInstanceList.get(0);
        String toActId = historicActivityInstance.getActivityId();
        taskService.createComment(task.getId(), processInstanceId, rejectTaskDTO.getMessage());
        runtimeService.createProcessInstanceModification(processInstanceId)
                .cancelActivityInstance(getInstanceIdForActivity(tree, task.getTaskDefinitionKey()))
                .cancelAllForActivity(currentTaskId)
                .setAnnotation("进行了驳回到指定任务节点操作")
                .startBeforeActivity(toActId)//启动目标活动节点
                .execute();

taskKey :为需要驳回到的活动节点key

currentTaskId:为当前任务id

驳回后要修改ACT_HI_TASKINST status状态,要不与加减签状态重复。

修改逻辑如下:

        actHiTaskInstDao.updateHiTaskInstByIdArray(Arrays.asList(currentTaskId), Constant.DATE_TIME_CODE_FORMATTER.format(LocalDateTime.now()));

@Mapper
public interface ActHiTaskInstDao {

    @Update(" <script> " +
            " update ACT_HI_TASKINST set " +
            " END_TIME_ = #{endTime},  DELETE_REASON_ = 'rejected' " +
            " where ID_ in " +
            " <foreach collection = 'taskIdLit' item = 't' separator = ',' open = '(' close = ')' > " +
            " #{t}" +
            " </foreach> " +
            " </script> ")
    int updateHiTaskInstByIdArray(@Param("taskIdLit") List<String> taskIdLit, @Param("endTime") String endTime);
}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值