【发布时间】:2015-10-01 11:33:11
【问题描述】:
我想从一个工作流程(父)触发子工作流程。基本上这会在决策者的循环中发生
@Workflow
@WorkflowRegistrationOptions(defaultExecutionStartToCloseTimeoutSeconds = 240,
defaultTaskStartToCloseTimeoutSeconds = 60)
public interface W1{
@Execute(version = "1.0")
void fn();
}
public class W1Impl implements W1{
ChildClientFactory factory = new ChildClientFactoryImpl();
@Override
public void fn() {
int i;
/*
I'll call activity1 that returns me a list(size = n)
I trigger n child worflows(Each takes the content in the list and operates)
*/
for(i = 0; i < n; i++) {
ChildClient childWorkflowClient = factory.getClient();
childWorkflowClient.someMethod(params);//TRIGGERING CHILD WORKFLOW
}
}
}
父工作流无需等待子工作流完成。即)子工作流将根据对它们的输入进行一些处理,并将结果放入持久存储中。
所以我不会从子工作流返回promise。
注意:子工作流的决策者返回类型是void。
WorkflowRegistrationOptions 上的ChildPolicy 选项具有ABANDON 选项
来自文档:
ABANDON:Amazon SWF 将不采取任何措施;子执行将继续运行。
问题:
- 当我没有从子工作流返回任何 Promise 时,父工作流会在触发所有子工作流后结束吗?
即)在触发n 子工作流后,父级必须完成执行。孩子会继续跑。 (因为我指定了ChildPolicy.ABANDON)。这是正确的吗?
- 父级的
defaultExecutionStartToClosetimeoutSeconds不需要考虑(包括)子工作流的超时时间,对吧?
3. 子工作流的触发频率是否有任何限制? (因为我从循环中触发工作流)
还有什么需要我注意的吗?
谢谢..
【问题讨论】:
标签: java amazon-web-services workflow amazon-swf