Skip to content

异步任务节点

异步任务节点用于启动另一个已发布工作流的后台任务。节点创建任务实例并将其加入执行队列后,当前工作流即可继续向下运行,不需要同步等待目标工作流完成。

它适合以下场景:

  • 视频生成、批量内容生产等耗时较长的处理。
  • 批量任务中为每条数据分别启动后台工作流。
  • 数据清洗、文件处理、结果落库等不要求当前工作流立即取得最终结果的操作。
  • 希望通过任务实例独立查看状态、失败原因和最终结果的操作。

例如,需要生成数十个视频并把视频地址写入数据库时,可以把“生成视频并落库”设计成独立工作流,再由批处理中的异步任务节点逐个启动。当前工作流只负责投递任务,视频生成工作流在后台继续执行。

运行机制

异步任务节点的执行过程如下:

  1. 解析目标工作流和输入参数。
  2. 创建一个新的任务运行实例,并立即加入执行队列。
  3. 返回任务实例标识 taskid 和提示信息 msg
  4. 当前工作流继续执行后续节点;目标工作流在后台独立运行。

因此,异步任务节点运行成功只代表任务实例创建并投递成功,不代表目标工作流已经执行完成。目标工作流的结束节点输出也不会同步成为异步任务节点的输出。

准备目标工作流

使用节点前,应先准备一个可独立运行的目标工作流:

  1. 在资源库中创建并发布目标工作流。
  2. 在目标工作流的开始节点中定义清晰、稳定的输入参数。
  3. 单独试运行目标工作流,确认输入、权限和依赖资源均可用。
  4. 如果目标工作流使用会话变量、智能体变量或应用资源,先完成对应的智能体或应用关联。

当前版本与旧版操作有一处重要区别:在资源库工作流中,可以直接在异步任务节点里选择已发布的资源库工作流,不需要先到任务中心手工创建一个异步任务定义。任务中心仍用于查看节点运行时创建的任务实例。

选择异步任务

在工作流画布中单击 + 添加节点,从 业务逻辑节点 中添加 异步任务,然后在节点的 异步任务 区域单击加号。

选择器只列出符合当前使用范围并且已经发布的工作流。资源库工作流中仅支持资源库工作流;在应用模式且系统提供应用资源范围时,还可从当前应用范围中选择工作流。对话流、未发布工作流、无权限资源不会作为可选的异步任务目标。

选择已发布的异步任务工作流

每个异步任务节点只能选择一个目标工作流:

  • 直接单击目标工作流右侧的 添加,使用该已发布工作流。
  • 单击右上角 创建,可以先填写任务名称并选择工作流及发布版本,再应用到当前节点。
  • 选定后,节点会记录目标工作流标识、版本、名称、描述和输入结构。
  • 未显式指定发布版本时,版本标识使用 latest

目标工作流发布新版本后,不要默认当前节点会自动适配输入契约;应重新打开节点,核对版本和输入映射。

配置输入

选定目标工作流后,系统会根据目标工作流开始节点的输入定义生成当前节点的 输入 区域。参数名称和类型由目标工作流决定,不能在异步任务节点中任意新增。

每个输入值可使用:

  • 固定值:直接填写文本、数字、布尔值或其他与参数类型匹配的内容。
  • 引用变量:引用开始节点输入或上游节点输出。

配置时需要注意:

  • 目标工作流的必填参数必须赋值。
  • 引用变量的类型必须与目标参数兼容。
  • 上游输出可能为空时,应在前置节点中提供默认值或进行分支判断。
  • 目标工作流修改、删除或重命名输入参数后,应重新选择目标或修复失效映射。

下图中,异步任务节点选择了已发布工作流 javaGZL,并为它的 input 参数设置了固定值。

异步任务节点的目标、输入、输出和异常配置

输出

异步任务节点固定提供两个业务输出:

字段类型说明
taskidString本次新创建的任务运行实例标识,用于查询和关联任务。当前字段名为全小写,不是旧文档中的 taskId
msgString本次任务创建请求返回的提示信息。

这两个字段描述的是“创建后台任务”这一步,不是目标工作流的最终输出。若业务必须使用目标工作流的最终结果,可采用以下方案:

  • 让目标工作流将结果写入数据库、知识库或对象存储,再由其他流程查询。
  • 通过通知、回调或后续任务触发结果消费流程。
  • 使用 taskid 在任务中心或运行记录中跟踪任务状态和结果。
  • 如果当前工作流必须立即获得结果,应改用同步的 工作流节点,而不是异步任务节点。

异常处理

异步任务节点支持超时、重试和三种异常处理方式。

配置当前规则说明
整体执行超时默认 60 秒;最小 1 毫秒;最大 1 小时限制当前节点创建、投递任务的等待时间,不表示目标工作流只能运行这么久。界面以秒显示。
重试次数0~3 次,默认 0 次节点创建或投递任务失败时重试。
中断流程默认方式节点失败后终止当前执行路径。
返回设定内容可选失败时返回自定义 JSON,让后续节点继续处理。
执行异常流程可选失败时进入节点的异常分支。

选择 返回设定内容执行异常流程 后,节点会在固定输出之外显示以下异常相关输出:

字段类型说明
errorBodyObject异常信息对象。
errorBody.errorMessageString异常说明。
errorBody.errorCodeString异常编码。
isSuccessBoolean当前节点是否成功创建并投递任务。

异步任务节点的重试与异常返回配置

异步任务创建具有副作用。启用重试前,应确认目标操作具备幂等约束或业务去重机制;否则网络超时等情况可能导致重复创建任务实例。可以把业务唯一标识作为目标工作流输入,并在目标工作流中执行去重检查。

查看任务运行结果

试运行或正式运行后,可使用节点返回的 taskid 在任务中心定位对应实例。查看结果时应区分两层状态:

  • 当前工作流中的异步任务节点:表示创建和投递请求是否成功。
  • 后台任务实例:表示目标工作流仍在排队、执行中、已完成、失败或已取消。

任务实例通常可用于查看触发来源、创建时间、执行状态、失败信息和实例结果。即使当前节点已经显示成功,后台工作流仍可能稍后失败,因此需要最终结果的业务必须继续检查任务实例或目标工作流写入的结果。

推荐搭建方式

以“批量生成视频并写入数据库”为例:

  1. 创建并发布“生成单个视频并落库”的目标工作流。
  2. 在目标工作流开始节点中定义 prompt、业务记录 ID 等输入。
  3. 在主工作流中读取待处理数据,并通过批处理逐条处理。
  4. 在批处理内部添加异步任务节点,选择目标工作流并映射当前数据。
  5. 保存每次返回的 taskid,用于后续追踪或问题排查。
  6. 在目标工作流中按业务记录 ID 做幂等校验,避免重试造成重复数据。

这种方式能让主工作流快速完成任务投递,同时把耗时处理拆成可独立追踪的后台实例。

常见问题

为什么选择器里找不到目标工作流?

依次检查目标是否已经发布、类型是否为工作流、当前账号是否有权限,以及资源库或应用资源范围是否匹配。对话流和未发布工作流不会出现在当前异步任务选择列表中。

已经获得 taskid,为什么还没有最终结果?

这是正常的异步行为。taskid 只说明后台任务已创建,目标工作流可能仍在排队或执行。请到任务中心查看实例状态,或查询目标工作流写入的结果。

目标工作流增加了输入参数,节点为什么没有自动出现?

当前节点保存了选择目标时的版本和输入结构。目标发布新版本后,应重新打开或重新选择目标工作流,并修复输入映射。

为什么出现了两个相同任务?

常见原因是创建请求超时后发生重试,而第一次请求实际上已经成功。减少不必要的重试,并在目标工作流中使用业务唯一标识做幂等检查。

应该使用异步任务节点还是工作流节点?

  • 不需要立即取得目标工作流结果、任务耗时较长或需要独立追踪时,使用异步任务节点。
  • 后续节点必须马上使用目标工作流输出时,使用同步的工作流节点。