FlowAble流程UserTask执行

这个部分过于简单, 都不知道写什么了。demo项目飞机 流程引擎Demo项目 Git clone飞机 Clone Https


一、Task执行

当Flowable作为审批流的时候, 每个用户审批执行的都是执行的一次Task任务,执行任务入参可定义为:

/**
 * @author smile
 */
@Data
public class CompleteTaskParams {
    /**
     * 任务ID
     */
    private String taskId;

    /**
     * 任务执行结果(true-通过, false-拒绝)
     */
    private boolean approved;

    /**
     * 执行结果描述
     */
    private String comments;
}

Task任务执行可参考一下代码:

 // 使用任务id,获取任务对象,获取流程实例id
 Task task = taskService.createTaskQuery().taskId(params.getTaskId()).singleResult();
 if (Objects.isNull(task)) {
     throw new RuntimeException("任务不存在或已执行");
 }
 //创建返回对象
 RunFlowVO vo = new RunFlowVO();
 //利用任务对象,获取流程实例id
 String instancesId = task.getProcessInstanceId();
 vo.setInstanceId(instancesId);
 //查询该流程节点下其他待执行任务的用户
 QueryTaskUserParams taskParams = new QueryTaskUserParams();
 taskParams.setTaskId(params.getTaskId());
 Map<String, TaskUserVO> taskMap = taskUserService.getMap(taskParams);
 //写审核操作意见 arc_hi_comment
 taskService.addComment(params.getTaskId(), instancesId, params.getComments());
 //任务执行参数对象
 Map<String, Object> variables = new HashMap<>(2);
 variables.put("approved", params.isApproved());
 variables.put("comments", params.getComments());
 try {
     taskService.complete(params.getTaskId(), variables);
     vo.setState(AuditStatusEnum.AUDITING.getCode());
     vo.setStateDescribe(AuditStatusEnum.AUDITING.getDescribe());
 } catch (Exception e) {
     //TODO 任务执行异常,挂起流程
     throw new RuntimeException("任务执行失败,请检查后重试");
 } 

以上为流程UserTask实例化之后的Task执行办法, 每个Task执行完成之后都会调用流程模板中的自定义监听类, 由监听类对执行结果进行处理并给出结果(主要是继续循环还是结束循环进入下一节点) 。