gpt4 book ai didi

java - amazon simple workflow-并行处理任务,只有在前一阶段的所有并行过程完成后才进入下一阶段

转载 作者:行者123 更新时间:2023-11-29 08:06:21 25 4
gpt4 key购买 nike

我正在努力创建一个应用程序,其中有多个阶段 - 在第一阶段有多个任务要并行执行......一旦该阶段的所有任务都完成,然后处理才应该进入下一个阶段阶段。

根据我对决策者的了解,决策者可以从下一阶段的许多可能选项中选择一个。

但是我想只有当当前阶段的所有并行过程都完成后才能进入下一阶段。

这是否意味着我应该设置每个并行进程来调用下一阶段,并且在初始化下一阶段时,它应该检查前一阶段的所有并行进程是否完成,然后才真正开始处理?这意味着第一阶段的所有并行进程都将调用 corresp。第二阶段的并行进程,其中只有一个会实际进行处理(因为这将是发现前一阶段的所有进程都已完成的进程)。

有没有更好的实现方式?这样下一阶段的流程只调用一次?

最佳答案

这可以使用 flow framework 中的 Activity 返回的 Promise 对象来解决。 .

在您的决策程序代码中,为 stage1 设置一个函数,它将并行执行多个 Activity ,每个 Activity 返回一个 Promise 对象。在 List<Promise<>> 中添加所有这些 promise 对象并将此列表传递给处理阶段 2 的异步方法。

这是一个示例决策程序代码。 stage1()并行执行三个 Activity 并调用异步方法 stage2(@Wait List<Promise<Void>> promiseList) .除非满足 promiseList 中的所有 promise ,即除非 stage1 中的所有三个 Activity 都已完成,否则不会启动 stage2。

private void stage1() {
List<Promise<Void>> promiseList = new ArrayList<Promise<Void>>();
Promise<Void> promise1 = activityClient.activity1();
Promise<Void> promise2 = activityClient.activity2();
Promise<Void> promise3 = activityClient.activity3();

promiseList.add(promise1);
promiseList.add(promise2);
promiseList.add(promise3);

stage2(promiseList);
}

@Asynchronous
private void stage2(@Wait List<Promise<Void>> promiseList) {
activityClient.activity4();
}

关于java - amazon simple workflow-并行处理任务,只有在前一阶段的所有并行过程完成后才进入下一阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952888/

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