【发布时间】:2015-09-18 16:21:10
【问题描述】:
我正在尝试使用不同的启动参数启动子工作流的两个并行执行。但是,我注意到只有其中一个子工作流执行在运行。由于未安排任务,父工作流执行暂停,这导致执行历史记录中没有任何进一步的活动,直到超时。没有抛出异常或错误,它只是停止做任何事情。有趣的是,完成的总是第二个子工作流执行。
如果父级仅运行子工作流的一次执行,则子工作流成功完成,父工作流继续完成。我怀疑这与同时运行子工作流的多个副本有关,并且它们相互干扰,因为它们轮询同一个任务列表;我只是不知道我应该如何解决这个问题。
代码:
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");
}
【问题讨论】:
-
您查看过父子工作流的历史吗?它们应包含准确描述所有这些事件处于何种状态的事件。
-
你能分享你在哪里启动子工作流的代码 sn-p。怀疑有什么不对的地方
-
@MaximFateev 我看过历史。父历史显示一个子执行开始和完成,然后在最后一个事件是 DecisionTaskCompleted 的地方发生父工作流的另一次重播,仅此而已。它会一直保持这种状态,直到父级超时。子工作流历史正是我所期望的,所有活动都完成了,最后一个事件是子工作流完成。
标签: java amazon-web-services amazon-swf