/** * @test */ function it_set_up_a_new_workflow() { $node = ProcessingNode::initializeAs(NodeName::defaultName()); $workflowId = WorkflowId::generate(); $workflow = $node->setUpNewWorkflow($workflowId, 'Article Export'); $this->assertTrue(NodeName::defaultName()->equals($workflow->processingNodeName())); $this->assertTrue($workflowId->equals($workflow->workflowId())); $this->assertEquals('Article Export', $workflow->name()); }
/** * @param mixed $data * @return mixed|void */ public function create($data) { if (!array_key_exists('name', $data)) { return $this->apiProblem(422, "No name given for the workflow"); } $workflowId = WorkflowId::generate(); try { $command = CreateWorkflow::withName($data['name'], $workflowId); } catch (\Exception $e) { return $this->apiProblem(422, $e->getMessage()); } $this->commandBus->dispatch($command); return $this->location($this->url()->fromRoute('prooph.link/process_config/api/workflow', ['id' => $workflowId->toString()])); }
/** * @test * @dataProvider provideStartScenarios */ function it_determines_one_start_task_managed_by_one_process_as_long_as_message_handler_is_located_on_the_same_processing_node(Workflow\Message $startMessage, MessageHandler $firstMessageHandler, ProcessingMetadata $taskMetadata, $expectedTaskType, $expectedProcessType) { $workflow = Workflow::locatedOn(NodeName::defaultName(), WorkflowId::generate(), 'Article Export'); //Pop the WorkflowWasCreatedEvent $this->extractRecordedEvents($workflow); $tasks = $workflow->determineFirstTasks($startMessage, $firstMessageHandler, $taskMetadata); $this->assertEquals(1, count($tasks)); $this->assertInstanceOf(Task::class, $tasks[0]); $this->assertEquals($expectedTaskType, $tasks[0]->type()->toString()); $this->assertTrue($firstMessageHandler->messageHandlerId()->equals($tasks[0]->messageHandlerId())); $domainEvents = $this->extractRecordedEvents($workflow); $this->assertEquals(3, count($domainEvents)); $this->assertInstanceOf(Workflow\StartMessageWasAssignedToWorkflow::class, $domainEvents[0]); $this->assertInstanceOf(Workflow\ProcessWasAddedToWorkflow::class, $domainEvents[1]); $this->assertInstanceOf(Workflow\TaskWasAddedToProcess::class, $domainEvents[2]); foreach ($domainEvents as $domainEvent) { if ($domainEvent instanceof Workflow\ProcessWasAddedToWorkflow) { $this->assertEquals($expectedProcessType, $domainEvent->processType()->toString()); } } }