Php AWS SWF关闭事件未发送给决策者

Php AWS SWF关闭事件未发送给决策者,php,amazon-web-services,amazon-swf,Php,Amazon Web Services,Amazon Swf,我正在使用AWS PHP库。我的问题是,我的决策者从未得到任何关闭事件。调用“pollForDecisionTask”时,我从未收到以下任何完成事件: WorkflowExecution失败 WorkflowExecutionTimedOut 工作流执行已取消 WorkflowExecutionTerminated WorkflowExecutionCompleted 它们是按照“管理控制台”记录的,但我的决策者从未得到它们。其他的都很好 有人看到这个吗?有什么想法吗?所有这些事件都用于终止工作

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

WorkflowExecution失败 WorkflowExecutionTimedOut 工作流执行已取消 WorkflowExecutionTerminated WorkflowExecutionCompleted

它们是按照“管理控制台”记录的,但我的决策者从未得到它们。其他的都很好


有人看到这个吗?有什么想法吗?

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

对马克西姆·法特耶夫的回应

根据文件:

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

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

Daniel还指出,AWS控制台的操作不会反映在决策器中

我希望亚马逊的官方消息来源对此发表评论。AWS论坛上有一篇关于这个问题的帖子:


干杯

我不确定这是否准确。决策使用“respondDecisionTaskCompleted”并发送“FailWorkflowExecution”或“CompleteWorkflowExecution”等命令。当系统处理这些决策时,SWF确实会创建我问题中提到的事件。至少在使用AWS管理控制台查看时,它们会出现在历史记录中。当我投票时,我从来没有让他们进入我的决策者。也可以通过超时或外部取消请求,使用管理控制台终止工作流执行。决策者应得到这些通知,但SWF设计决策者不会以响应决策任务完成请求的形式做出决策。由于关闭的工作流不接受新的决策,因此在这种情况下调用decider是毫无意义的。我同意当一些外部实体想要得到工作流终止的通知时,会有一些用例,但这应该依赖于其他机制,而不是决策者。当前父工作流收到关于子工作流终止的通知。所以,常见的模式是让父级“保姆”工作流在子级完成时执行操作。问题是当接收到WorkflowExecutionCompleted时,决策者应该做什么?根据定义,决策者可以做的唯一动作就是发布一些决策。但在WorkflowExecutionCompleted的情况下,这是不可能的。我不明白在决策者的上下文中,“WF已正确完成”是什么意思。你能在必要时给出具体的用例吗?