gpt4 book ai didi

java - 父工作流程完成后,子工作流程会继续运行吗? ( child 政策.放弃)

转载 作者:行者123 更新时间:2023-12-02 04:20:02 24 4
gpt4 key购买 nike

我想从一个工作流程(父工作流程)触发子工作流程。基本上这会在决策程序的循环中发生

@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 will take no action; the child executions will continue to run.

问题:

  1. 当我没有从子工作流程返回任何 Promise 时,父工作流程会在触发所有子工作流程后完成吗?

即)触发 n 个子工作流程后,父工作流程必须完成执行。 child 还会继续跑。 (因为我已经指定了ChildPolicy.ABANDON)。这是正确的吗?

  • 父级的defaultExecutionStartToClosetimeoutSeconds不需要考虑(包括)子级工作流的超时,对吗?
  • 3.子工作流程的触发速率是否有限制? (因为我从循环触发工作流程)

    还有什么需要我注意的吗?

    谢谢..

    最佳答案

    我认为它不会完成。当包括 Activity 和子工作流的所有任务完成或失败时,父工作流退出。内部工作流程在 TryCatchFinally 内调用并且仅在执行 doFinally 时完成。它不依赖于子工作流返回任何结果及其子策略。即使它返回 void,生成的工作流客户端仍然返回 Promise ,并且忽略此 Promise 不会改变行为。添加 workflowClient.detach 方法来断开父级与子级的连接应该非常简单。它将完成 ExternalTask that controls the child workflow completion .

    恕我直言,我不会费心分离客户端,因为在这种情况下,来自客户端的任何错误都会被忽略。保持它们的附加状态可以确保如果子级因任何原因失败,父级会得到异常。

    就起始费率而言,我不会很担心。更重要的限制是单亲 parent 可以生育的 child 数量。由于需要返回每个决策的整个工作流程历史记录,因此拥有太多子项并不是一个好主意。我不建议超过 100 个。如果您需要更多,请创建工作流程树。有 100 个 child 的 parent ,每个人创建自己的 100 个 child ,就会产生 10k 个 child 。

    使用生成的外部客户端从 Activity 启动独立工作流程是一种可能的解决方法。只需确保正确处理可能的故障情况,例如工作流启动,然后由于通信错误而导致 Activity 失败。使用ActivityExecutionContext访问对 SWF 端点的引用和其他相关信息。

    关于java - 父工作流程完成后,子工作流程会继续运行吗? ( child 政策.放弃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32886569/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com