В консоли управления SWF я вижу, что в рабочем процессе содержится около 18 событий, а 16-е — мое ActivityTaskCompleted
Событие, однако, всякий раз, когда я голосую за решения, я получаю только до 15-го события, поэтому я никогда не получаю RespondDecisionTaskCompleted
с типом решения CompleteWorkflowExecution
поэтому мои рабочие процессы всегда находятся в активном состоянии до истечения времени ожидания.
Поток, который я использую, взят из PHP SWF-файла, который я нашел некоторое время назад, но, к сожалению, у меня больше нет ссылки на него.
$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
}
Где HistoryEventIterator выглядит так
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
это не будет называться в этом сценарии.
Я вывел next_page_token
из HistoryEventIterator
и обнаружил, что это всегда NULL
,
Если RespondDecisionTaskCompleted
призвал из деятельности достичь решающего? Если это так, что может быть причиной для моего нет? Конечно, после 15 событий он не будет пейджинговым и просто не будет корректным.
Я могу проверить, что домен, список задач действия и список задач принятия решения являются точными, так как рабочий процесс отображается в консоли управления SWF, как и решения и действие (действие даже имеет статус «Завершено»). Попробуйте / поймать блоки и ни в коем случае нет никаких исключений.
Задача ещё не решена.
Других решений пока нет …