/** * @return ProcessType */ public function processType() { if (is_null($this->processType)) { $this->processType = ProcessType::fromString($this->payload['process_type']); } return $this->processType; }
/** * @test */ function it_can_be_reconstituted_with_a_task_list() { $task1 = TaskId::generate(); $task2 = TaskId::generate(); $process = Process::withTaskList([$task1, $task2], ProcessId::generate(), ProcessType::linearMessaging()); $this->assertTrue($task1->equals($process->tasks()[0])); $this->assertTrue($task2->equals($process->tasks()[1])); $this->assertTrue(ProcessType::linearMessaging()->equals($process->type())); }
/** * @param ProcessType $other * @return bool */ public function equals(ProcessType $other) { return $this->toString() === $other->toString(); }
/** * Determine the required process type based on given message and the message handler which will receive the message. * * @param Message $message * @param MessageHandler $messageHandler * @return ProcessType * @throws Workflow\Exception\MessageIsNotManageable */ private function determineProcessType(Message $message, MessageHandler $messageHandler) { if ($messageHandler->canHandleMessage($message)) { if ($message->processingMetadata()->shouldCollectionBeSplitIntoChunks()) { $processType = ProcessType::parallelChunk(); } else { $processType = ProcessType::linearMessaging(); } } else { //We create the error before trying the foreach alternative to provide the client with the original error message //if the alternative fails too. $originalError = MessageIsNotManageable::byMessageHandler($messageHandler, $message); //Check if we can use a foreach process to avoid the rejection of the message if ($this->isForeachProcessPossible($message, $messageHandler)) { $processType = ProcessType::parallelForeach(); } else { throw $originalError; } } return $processType; }
/** * @test */ function it_is_equal_to_a_similar_type() { $type1 = ProcessType::parallelChunk(); $type2 = ProcessType::parallelChunk(); $this->assertTrue($type1->equals($type2)); }