我试图开始两个并行执行具有不同启动参数的子工作流 . 但是,我注意到只运行了其中一个子工作流程执行 . 由于未调度任务导致父工作流执行停止,导致执行历史记录中没有任何进一步的活动,直到超时为止 . 没有抛出异常或错误,它只是停止做任何事情 . 有趣的是,它始终是完成的第二个子工作流程执行 .
如果父级只运行子工作流的一次执行,则子级成功完成,父级工作流继续完成 . 我怀疑它与同时运行子工作流的多个副本有关,并且由于他们轮询相同的任务列表而相互干扰;我只是不知道我应该如何处理这个问题 .
码:
ProcessRunnerClient childWorkflowClient = factory.getClient();
List<Promise<T>> childWorkflowsDone = new ArrayList<Promise<T>>;
switch(condition){
case 1:
childWorkflowsDone.add(childWorkflowClient.method(case1Params));
// Works fine
break;
case 2:
childWorkflowsDone.add(childWorkflowClient.method(case2Params));
// Works fine
break;
case 3:
childWorkflowsDone.add(childWorkflowClient.method(case1Params));
childWorkflowsDone.add(childWorkflowClient.method(case2Params));
// The execution of the child workflow with case2Params completes,
// and parent execution suspends
break;
default:
throw new WorkflowException("Condition " + condition + " not supported");
}
1 回答
确保使用自己生成的客户端实例启动每个子工作流 . 所以将你的例子改为:
这样做是为了支持在子工作流启动后与子工作流的通信 . 例如,可以使用相同的客户端发送信号或检索runId .