AWS SWF响应活动任务已完成

时间:2016-10-03 00:29:37

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

我可以在SWF管理控制台中看到,工作流有大约18个事件,第16个事件是我的ActivityTaskCompleted事件,但每当我查看决定时,我只能到达第15个事件,所以我永远不会打电话具有决策类型RespondDecisionTaskCompleted的{​​{1}}因此我的工作流始终处于活动状态,直到超时。

我正在使用的流程来自我之前发现的PHP SWF git,但遗憾的是我不再拥有它的链接了。

CompleteWorkflowExecution

HistoryEventIterator的位置如此

$response = $this->swf->PollForDecisionTask($opts);
$decision_list = self::_decide(new HistoryEventIterator($this->swf, $opts, $response), $this->swf);
if(count($decision_list) > 0)
{
    //Some decisions
}
else
{
    //No decisions
}

我省略了在这种情况下不会调用的public function __construct(Aws\Swf\SwfClient $swf_client, $original_request, $original_response) { $this->swf = $swf_client; $this->events = array(); $this->event_index = 0; $this->next_page_token = null; $this->original_poll_request = $original_request; $this->_process_poll_response($original_response); $this->workflow_id = $original_response->get('workflowExecution')['workflowId']; $this->run_id = $original_response->get('workflowExecution')['runId']; } protected function _process_poll_response($response) { if ($response->hasKey("nextPageToken")) { $this->next_page_token = (string) $response->get("nextPageToken"); } else { $this->next_page_token = null; } $next_events = $response->get("events"); $next_events_object = new ArrayObject($next_events); $next_events_copy = $next_events_object->getArrayCopy(); $this->events = array_merge($this->events, $next_events); } 错误检查和函数。 我输出HistoryEventIterator的{​​{1}},发现它总是next_page_token

来自活动的HistoryEventIterator是否应该达到决策者?如果是这样,我的原因可能不是什么?当然,它不会在15个事件之后进行分页,而只是不能正确分页。

我可以验证域,活动任务列表和决策器任务列表是否准确,因为工作流程显示在SWF管理控制台中,决策和活动(活动甚至具有已完成状态)也是如此错误检查和Try / Catch块,在任何情况下都没有例外。

0 个答案:

没有答案