/** * @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())); }
/** * 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_can_be_a_linear_messaging_type() { $type = ProcessType::linearMessaging(); $this->assertTrue($type->isLinearMessaging()); $this->assertEquals(ProcessType::TYPE_LINEAR_MESSAGING, $type->toString()); }