Skip to main content

任务状态管控

平台中的任务状态可以区分为:

实例状态 Case Status

标识当前运行实例的运行状态,可能状态有:

实例状态备注
NotStart通过init_exec_case方法初始化实例后,创建的实例的状态
Processing当前实例处于运行中,即隶属于它的子任务中有处于运行状态 (Processing) ,且没有失败 (Failed) 或被取消 (Cancelled) 的子任务
Pending隶属的子任务中含有需要用户在界面进行交互的任务,运行暂停且等待用户交互的状态
Cancelling当前实例正在被取消,且部分子任务还没完成取消操作
Cancelled当前实例被取消了,且所有子任务都已经停止运行
Failed隶属的子任务中含有执行失败 (Failed) ,数据校验失败 (ValidationFailed) ,人工审核失败 (AuditFailed),当前实例任务将不再继续运行
Completed所有隶属子任务均运行成功 (Completed) 或忽略 (Cancelled),实例运行结束

任务状态 Task Status

标识当前实例中包含的任务的运行状态,可能包含的状态有:

任务状态备注
(blank)通过initiate_exec_case方法初始化任务清单时的初始化状态,或case被cancel后的状态 (清空)
NotStart任务通过get_next_task_list方法获取任务清单后的状态,说明当前任务准备好了,可以交由slaver进行执行
Processing正在运行的任务状态 (执行中)
Ready需要用户界面交互的任务状态,如等待用户文件上传
Pending需要用户界面交互的任务状态,如等待用户审批
Cancelling标识当前子任务正在取消中,具体的Slaver服务还没有完成响应和停止运行的处理过程
Cancelled当前任务被取消,或隶属的实例被取消,且当前slaver服务已经确实完成取消处理
ValidationFailed当前任务结果未通过数据逻辑校验,校验失败了
AuditFailed当前任务未能通过人工审核,或当前结果被人工拒绝。(不同于审批里面的Reject)
Failed当前任务失败了,多因为slaver在支持中产生了执行失败任务。
Ignore当前任务未满足预置前提,但又允许被忽略,或和逻辑跳转功能 (LogicSwitch) 配合时,跳过当前任务不需要执行,该状态被认为是完成状态
Completed当前任务顺利执行完成了 (执行成功)

状态操作 Task Operation

  1. 启动实例时 SpecialCase:

    • 初次启动时,所有隶属子任务状态为 (blank) ,即为空状态
    • 随着任务定义的序列,依次运行。(NotStart) -> (Ready) / (Processing) -> (Completed) / (Failed) / (Ignore) / (ValidateFailed)
    • 同时,实例本身的状态为 (Processing)
  2. 取消实例运行 Cancel:

    • 取消一个正在运行的实例时,不影响已经完成 (Completed) 或失败 (Failed) 子任务的状态
    • 正在运行的子任务,会先设置为 (Cancelling) 状态,然后等待该任务真实取消或完成该任务的执行后,由该任务将当前自己的任务状态修改成 (Completed) 或 (Cancelled)
    • 实例本身的状态也会转变成失败状态 (Cancelled)
  3. 重新运行实例 Re-run

    • 重新运行一个已完成 (Completed) 或 已失败 (Failed)的实例时,会区别对待。
    • 针对已完成的实例,重新运行时,会重置所有非系统任务(用户自定义任务),即状态由 (Completed) / (Ignore) -> (blank)
    • 针对一个已经失败 (Failed) 的实例时,已经完成的子任务状态将不受影响,仅仅将失败的 (Failed) 或取消的 (Cancelled) 的子任务进行重置 (blank) 。
    • 重置子任务状态后,将转由调度 (Schedule Service)调度运行。同时,实例任务状态切换为 (Processing)