You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建同类型父子工作流触发信号报错WorkflowNotFoundError排查

问题描述

需要开发树形结构工作流:父工作流可包含任意数量子工作流,子工作流也可嵌套子工作流,且父子工作流类型完全一致。目前在父工作流中通过信号创建同类型子工作流时出现异常,但创建不同类型子工作流时无任何问题。

实现代码如下:

export async function jobFileWorkflow(
  jobRefId: string,
): Promise<JobFileStatus> {
  // 此处省略部分代码

  setHandler(signals.startChildJobFileWorkflow, async (jobRefId: string) => {
    const jobFIleChildWorkflowId = `wf-job-file-${jobRefId}`;
    executeChild<typeof jobFileWorkflow>(jobFileWorkflow, {
        args: [jobRefId],
        taskQueue: 'job-file-1',
        workflowId: jobFIleChildWorkflowId,
      })
      .then((i) => {
        console.log(' some log');
      })
      .catch((err) => {
        console.log('Error processing child wf: ', err);
      });
  });
}

触发信号时收到错误:

WorkflowNotFoundError: current workflow not found

问题原因与排查思路

可能原因

  1. 工作流注册不匹配:同类型子工作流的定义未正确注册到工作流服务(如Temporal),或者注册的工作流名称与调用时使用的名称不一致。executeChild通过工作流函数调用时,底层依赖函数名作为工作流类型标识,若注册时使用了别名或名称不符,会导致服务找不到对应的工作流定义。
  2. 任务队列无对应监听:子工作流指定的job-file-1任务队列上,没有运行中的Worker注册了jobFileWorkflow工作流。工作流服务无法在指定队列找到能处理该类型工作流的Worker,就会抛出找不到工作流的错误。
  3. 信号处理上下文丢失:信号处理函数中使用then/catch方式调用executeChild,可能导致工作流上下文脱离。工作流API(如executeChild)需要在工作流的执行上下文中运行,异步回调可能会破坏这个上下文。
  4. 工作流ID重复(低概率):若jobRefId存在重复,生成的子工作流ID会重复,但这个情况通常会抛出ID冲突错误,而非找不到工作流,可作为次要排查点。

排查步骤

  1. 检查工作流注册:确认Worker代码中已正确注册jobFileWorkflow,且注册名称与函数名一致。例如在Temporal中,registerWorkflow(jobFileWorkflow)需确保没有自定义别名,或别名与调用时的标识匹配。
  2. 验证任务队列监听:确认处理job-file-1任务队列的Worker,确实注册了jobFileWorkflow工作流。可以查看Worker的启动日志,确认工作流与任务队列的绑定关系。
  3. 修改信号处理的调用方式:将executeChild的调用改为await方式,避免异步回调导致的上下文问题,示例代码如下:
setHandler(signals.startChildJobFileWorkflow, async (jobRefId: string) => {
  const jobFIleChildWorkflowId = `wf-job-file-${jobRefId}`;
  try {
    const result = await executeChild<typeof jobFileWorkflow>(jobFileWorkflow, {
      args: [jobRefId],
      taskQueue: 'job-file-1',
      workflowId: jobFIleChildWorkflowId,
    });
    console.log(' some log', result);
  } catch (err) {
    console.log('Error processing child wf: ', err);
  }
});
  1. 查看服务端日志:查看工作流服务(如Temporal Server)的详细日志,日志中会包含具体的错误细节,比如是找不到工作流类型,还是任务队列无对应Worker。
  2. 独立测试工作流:尝试直接启动一个jobFileWorkflow实例,确认工作流本身能正常运行,排除工作流定义本身的问题。

内容的提问来源于stack exchange,提问作者Ajantha Bandara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 21:08:12