工作流再次启动时,具有相同的工作流ID,但它获得不同的运行ID。有没有办法检索给定工作流 ID 的此类执行(包含不同的 runID)?
我探索了 ListClosedWorkflowExecutionsRequest
API,但它只是列出了所有工作流程执行,而不是特定的工作流程 ID。
我试图解决的问题是:有许多工作流程由于某种原因失败。在重新启动该过程时,我没有包含正确的时间过滤器,其中一些被重新启动,而一些被跳过。因此,我尝试使用 ListClosedWorkflowExecutionsRequest
列出所有失败的工作流程 ID。对于每个工作流程ID,获取所有执行,如果最近一次成功,则跳过它,否则重新启动。
我对 SWF 不太陌生,那么有没有更好的方法来实现相同的目的?
最佳答案
是的,可以按工作流 ID 进行过滤,如中所述 How do you get the state of a WorkflowExecution if all you have is a workflowId in Amazon SWF 。
答案位于示例中的第 [7] 和 [9] 行,即 executions()
方法调用。不过,对于您的用例,由于您想要的只是关闭执行,因此您只需更改方法调用以包含 lated=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 的必要参数。 。
关于java - Amazon Simple Workflow - 给定工作流程ID 列出所有执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18603306/