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执行完成之后都会调用流程模板中的自定义监听类, 由监听类对执行结果进行处理并给出结果(主要是继续循环还是结束循环进入下一节点) 。