【问题标题】:AWS SWF Closure events not being send to deciderAWS SWF 关闭事件未发送到决策者
【发布时间】:2014-05-08 07:07:13
【问题描述】:

我正在使用 AWS PHP 库。我的问题是我的决策者永远不会得到任何关闭事件。调用“pollForDecisionTask”时,我从未收到任何这些完成事件:

工作流执行失败 工作流执行超时 工作流执行已取消 工作流执行终止 工作流执行完成

它们是根据“管理控制台”记录的,但我的决策者永远不会得到它们。所有其他的都工作正常。

有人看过吗?有什么想法吗?

【问题讨论】:

    标签: php amazon-web-services amazon-swf


    【解决方案1】:

    在上面回应 Maxim Fateev。

    根据文档:http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dev-workflow-exec-lifecycle.html

    我们清楚地看到最后一个“事件”是“WorkflowExecutionCompleted”。决策者逻辑上应该接收到此事件,因此它知道工作流已正确完成。 如果我没有收到此事件,如何确保 WF 已正确完成?

    我喜欢你关于“保姆”工作流程的想法,但是当 SWF 可以将事件发送回决策者然后将工作流程标记为关闭时,必须实施这些事情是令人惊讶的。还有谁看“保姆”工作流程?这是一场无休止的战斗......

    Daniel 还指出了一点,即来自 AWS 控制台的操作不会反映在 Decider 中。

    我希望亚马逊的官方消息来源对此发表评论。 AWS 论坛上有一篇关于这个问题的帖子: https://forums.aws.amazon.com/thread.jspa?messageID=542382&#542382

    干杯

    【讨论】:

    • 问题是当收到 WorkflowExecutionCompleted 时决策者应该做什么?根据定义,决策者被允许执行的唯一操作是发出一些决策。但在 WorkflowExecutionCompleted 的情况下,这是不可能的。我不明白在决策者的上下文中“WF 已正确完成”是什么意思。您能否在必要时给出具体的用例?
    【解决方案2】:

    所有这些事件都用于终止工作流,并由决策者通过相应决策发起。因此,将它们送回决策者不会带来任何额外的好处。

    【讨论】:

    • 我不确定这是否准确。该决策使用“respondDecisionTaskCompleted”并发送“FailWorkflowExecution”或“CompleteWorkflowExecution”等命令。当系统处理这些决定时,SWF 确实会创建我的问题中提到的事件。至少在使用 AWS 管理控制台查看它时,它们会出现在历史记录中。我只是在投票时从来没有让他们给我的决策者。
    • 也可以使用管理控制台通过超时或外部取消请求来终止工作流执行。决策者应该收到有关这些的通知,但不会
    • 由SWF设计决策者以respondDecisionTaskCompleted请求的形式做出决策。由于在这种情况下调用决策者的封闭工作流程不接受新决策是没有意义的。我同意某些外部实体想要获得有关工作流终止的通知的用例,但这应该依赖于其他一些机制,而不是决策者。当前,父工作流会收到有关子工作流终止的通知。如此常见的模式是让父“保姆”工作流在子完成时执行操作。
    猜你喜欢
    • 2016-07-12
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2018-11-07
    相关资源
    最近更新 更多