/** * @param LogMessage|WorkflowMessage $message * @param WorkflowEngine $workflowEngine */ public function receiveMessage($message, WorkflowEngine $workflowEngine) { if (!$this->taskList->isStarted()) { parent::receiveMessage($message, $workflowEngine); return; } $this->assertTaskEntryExists($message->processTaskListPosition()); $taskListEntry = $this->taskList->getTaskListEntryAtPosition($message->processTaskListPosition()); if ($message instanceof WorkflowMessage) { if (!MessageNameUtils::isProcessingEvent($message->messageName())) { $this->receiveMessage(LogMessage::logWrongMessageReceivedFor($taskListEntry->task(), $taskListEntry->taskListPosition(), $message), $workflowEngine); return; } $this->recordThat(MultiPerformTaskSucceed::at($taskListEntry->taskListPosition())); } if ($message instanceof LogMessage) { $this->recordThat(LogMessageReceived::record($message)); if ($message->isError()) { $this->recordThat(MultiPerformTaskFailed::at($taskListEntry->taskListPosition())); } } $this->checkFinished($taskListEntry); }
private function informParentProcessAboutSubProcess(Process $subProcess, $succeed, $lastAnswerReceivedForSubProcess) { $event = SubProcessFinished::record($this->nodeName, $subProcess->processId(), $succeed, $lastAnswerReceivedForSubProcess, $subProcess->parentTaskListPosition()); $this->workflowEngine->dispatch($event); }