工单并发流程
2021-06-17 17:41:39 1 举报
工单并发流程
作者其他创作
大纲/内容
TaskNodeStatus:工单任务的状态,枚举类init:初始化状态running:运行状态success:成功状态front_fail:前置任务失败状态fail:失败状态
TaskNode:工单,实现Callable<TaskNodeResult>接口TaskNodeListener taskNodeListener:任务监听器AtomicInteger retryNum:工单重试次数String parentId:所属订单号String workOrderId:工单IdWorkOrderEntity workOrderEntity:工单实体Set<TaskNode> dependOnTaskSet:依赖工单TaskNodeStatus taskNodeStatus:工单任务状态TaskNodeResult taskNodeResult:工单任务执行的结果方法:1. call方法:将工单号通过Mq发送到流程图模块,流程通过之后,会发送发送到执行任务的资源模块执行该任务。获取到该对象的任务监听器,将当前线程设置到任务监听器的currentThread属性,判断任务是否执行完毕,如果没有则让该线程进入阻塞状态(LockSupport.park(taskNodeListener.getCurrentThread));执行成功后返回TaskNodeResult的实体,实例中包含工单号和执行的结果。
创建ParentNodeScheduleManager,开始调度parentNode
从数据库中获取订单,订单中存放有子订单List<SubOrderBO> subOrders(订单可以拆分为多个子订单,例如创建虚机时,可以分为开通虚机和创建磁盘两个子订单。每个子订单还可以拆分为多个工单,例如创建磁盘可以分为开通磁盘和挂载磁盘这两个工单。工单属性中有dependon可以得出依赖的资源Id,之后再从资源Id和工单No的Map中获取到依赖的工单号)
TaskNodeListener:工单任务监听器String taskNodeNo:工单号boolean isSuccess:是否成功boolean isOverExecute:是否结束执行Thread currentThread:当前执行的线程
订单拆分工单
将工单实体以MQ消息的形式发送给workflow模块
TaskNodeResult:工单任务执行结果String taskNodeId:工单号Object result:执行结果
创建parentNode对象,根据子订单List分别创建TaskNode,创建TaskNode时,将任务监听器进行初始化
0 条评论
下一页