0

再次启动工作流时,具有相同的工作流ID,它会获得不同的运行ID。有没有办法检索给定工作流 ID 的此类执行(包含不同的 runID)?

我探索了ListClosedWorkflowExecutionsRequestAPI,但它只列出了所有工作流执行,而不是特定的工作流ID。

我要解决的问题是:有许多工作流程由于某种原因失败了。在重新启动过程中,我没有包含正确的时间过滤器,其中很少有人重新启动,而很少有人跳过。所以我想做的是,列出所有失败的工作流 ID,使用ListClosedWorkflowExecutionsRequest. 对于每个 workflowID,获取所有执行,如果最近一次成功,则跳过它,否则重新启动。

我对 SWF 不太陌生,所以有更好的方法来完成同样的事情吗?

谢谢

4

1 回答 1

2

是的,如果您拥有的只是 Amazon SWF 中的 workflowId ,则可以按照如何获取 WorkflowExecution 的状态中所述按 workflowId 进行过滤 。

答案在示例中的第 [7] 和 [9] 行,executions()方法调用。但是,对于您的用例,由于您想要的只是封闭执行,因此您只需将方法调用更改为 include closed=True。因此,为了在 24 小时内获得所有关闭的执行(默认):

In [7]: domain.executions(closed=True)

对于按工作流 id 过滤的封闭式执行:

In [9]: domain.executions(workflow_id='my_wf_id', closed=True)

如果您不使用boto.swf而是使用替代库,请参阅 API 文档,了解传递给ListClosedWorkflowExecutions API的必要参数。

于 2013-09-04T09:27:42.603 回答