这可以被认为是在节奏工作流的循环中调用相同活动的后续问题:在活动迭代的情况下,工作流如何恢复?是继续调用第i个活动(跳过已经调用的活动)还是从0重新开始?如果是这样,如何编写工作流以跳过调用的活动(0-'k')?
每个活动调用都有自己的重试策略,因此如果活动i失败,只会重试活动i。
我的理解是,当在救援人员中检索历史时,这些迭代被重放。
因此,迭代 1 具有结果“x”,迭代 2 具有“y”,直到它到达尚未记录其结果的最后一个活动,然后开始实际调用活动。
通过这种方式,您可以确定工作流的状态,以及它的潜在变量,正是它终止时的状态。
所以它们没有被跳过,但也不会重新执行。
如果您不想在失败后重复数百次无操作迭代,您可以考虑使用“continueAsNew”而不是循环。这确保了新的工作流不会累积其他失败迭代的历史。
首先,了解工作流工作线程与活动工作线程之间的区别非常重要。
回到你的问题:当你的“工作流”工作者崩溃、重启、丢失或不知何故一个工作者收到一个它不知道其工作流的决策任务;然后,它将向Cadence服务器请求该工作流的历史记录。它将重放工作流,直到它消耗了它接收的全部历史,然后将基于当前的局部变量安排下一个活动。
因此,它将从相同的循环迭代继续,使用相同的局部变量和参数进行活动。
希望这回答了你的问题
temporal.io如何与cadenceworkflow.io?如果根据节奏工作流服务启动一个新项目,应该使用什么?
可以运行不需要连接到cadence服务器的本地活动。是否有适当的方式在本地运行工作流,以防发生cadence中断?我正在使用Go客户端。
每个工作流都应在单独的工作流类中实现? 是否建议实现一个通用工作流类,在该类中,我们将使用传递给工作流的参数调用活动和触发计时器? 在我们的用例中,我们将从UI创建工作流,它将由最终用户创建。所以我们不能一开始就定义我们的工作流程。 这是推荐的方法吗?
我在节奏工作流中引入了节奏版本控制,之后工作流在版本控制引入时停止执行。我收到以下错误: 2020-10-29T07:23:49.587Z调试内部/内部事件处理程序。go:465执行活动{“域”:“域_1”,“任务列表”:“任务列表_1”、“工作人员ID”:“6@cdnc-5ddb9ccbb5-5dt5j@tasklist“,”WorkflowType“:”do_work_workflow“,”W
假设我们需要在用户完成购物车后生成订单。 这是我们生成订单的步骤: 生成一个处于挂起状态的订单(订单微服务) 授权用户信用(会计微服务) 将购物车的状态设置为关闭(购物车微服务) 批准订单(订单微服务) 为此,我们只需创建一个节奏工作流,为每个步骤调用一个活动。 问题1:如果用户再次打开购物车或刷新页面,客户端如何检测到购物车正在创建订单?(注意:假设我们的工作流还没有被工人执行) 我的问题1解决
我有一个包含多个活动的工作流1,2,3…6,如果我的工作流在活动3之后因某个特定异常而失败,我计划启动一个子工作流,最终修复该异常。之后,我想重试父工作流以完成完整的流程。 我可以在子工作流中使用什么来实现上述场景? 我尝试查看具有< code>ContinueAsNew的工作流界面,该界面将创建一个新的工作流,并再次执行所有活动。