diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 48292ad..5c1f111 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -7,14 +7,10 @@ jobs: fail-fast: false matrix: php-version: - - "7.3" - "7.4" + - "8.0" os: [ubuntu-latest] experimental: [false] - include: - - php-version: "8.0" - os: ubuntu-latest - experimental: true runs-on: ${{ matrix.os }} name: PHP ${{ matrix.php-version }} Test on ${{ matrix.os }} continue-on-error: ${{ matrix.experimental }} diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php new file mode 100644 index 0000000..7752a6b --- /dev/null +++ b/.php-cs-fixer.php @@ -0,0 +1,16 @@ +getFinder(); + +$finder->exclude('vendor'); +$finder->in(__DIR__); +$finder->append(['.php_cs']); + +$cacheDir = \getenv('TRAVIS') ? \getenv('HOME') . '/.php-cs-fixer' : __DIR__; + +$config->setCacheFile($cacheDir . '/.php_cs.cache'); + +return $config; diff --git a/.php_cs b/.php_cs deleted file mode 100644 index 363296d..0000000 --- a/.php_cs +++ /dev/null @@ -1,10 +0,0 @@ -getFinder()->in(__DIR__); - -$cacheDir = getenv('TRAVIS') ? getenv('HOME') . '/.php-cs-fixer' : __DIR__; - -$config->setCacheFile($cacheDir . '/.php_cs.cache'); - -return $config; diff --git a/README.md b/README.md index b5890cb..a8a3e46 100644 --- a/README.md +++ b/README.md @@ -12,45 +12,64 @@ $ composer require event-engine/php-inspectio-graph-cody ## Usage -> See unit tests in `tests` folder for comprehensive examples and how a Cody JSON looks like. +> See unit tests (`EventSourcingAnalyzerTest`) in `tests` folder for comprehensive examples and how a Cody JSON looks like. The following example gives a quick overview how to retrieve information from the `EventSourcingAnalyzer`. ```php analyse($node); // analyze the Cody JSON node +// call $analyzer->analyse($anotherNode) again with other nodes to build up the graph -// get a list of all commands -$commands = $eventSourcingAnalyzer->commandMap(); +$identity = $connection->identity(); -// get a list of all domain events -$events = $eventSourcingAnalyzer->eventMap(); +if ($identity->type() === VertexType::TYPE_AGGREGATE) { + // get connected commands of connection, in this case the aggregate + $commands = $connection->from()->filterByType(VertexType::TYPE_COMMAND); -// get a list of all aggregates -$aggregates = $eventSourcingAnalyzer->aggregateMap(); + // get connected events of connection, in this case the aggregate + $events = $connection->to()->filterByType(VertexType::TYPE_EVENT); -foreach ($aggregates as $aggregate) { - // returns the aggregate - $aggregate->aggregate(); + // get parent of identity, could be a feature or bounded context + $parent = $connection->parent(); - // returns the corresponding commands for this aggregate - $aggregate->commandMap(); + if ($parent->type() === VertexType::TYPE_FEATURE) { + // get parent connection to get connected vertices + $parentConnection = $analyzer->connection($parent->id()); - // returns the corresponding domain events for this aggregate - $aggregate->eventMap(); - - // returns commands with corresponding domain event(s) (the connection between command -> domain event(s)) - $aggregate->commandsToEventsMap(); + // cycle through all children (vertices e.g. commands, events, etc) of this parent + foreach ($parentConnection->children() as $child) { + if ($child->type() === VertexType::TYPE_COMMAND) { + // ... + } + } + } } + +// search in graph for first document in forwarding mode (a "to" connection) +$documentConnection = $analyzer->graph()->findInGraph( + $identity->id(), + static function (VertexType $vertex): bool { + return $vertex->type() === VertexType::TYPE_DOCUMENT; + }, + VertexConnectionMap::WALK_FORWARD +); ``` diff --git a/composer.json b/composer.json index 47be072..f526430 100644 --- a/composer.json +++ b/composer.json @@ -30,8 +30,8 @@ } }, "require": { - "php": "^7.3 || ^8.0", - "event-engine/php-inspectio-graph": "^0.3.0", + "php": "^7.4 || ^8.0", + "event-engine/php-inspectio-graph": "^0.4.0", "ext-json": "*" }, "require-dev": { @@ -40,11 +40,10 @@ "phpstan/phpstan": "^0.12.33", "phpstan/phpstan-strict-rules": "^0.12.4", "phpunit/phpunit": "^9.2.6", - "prooph/php-cs-fixer-config": "^0.3", - "roave/security-advisories": "dev-master" + "prooph/php-cs-fixer-config": "^0.5.0", + "roave/security-advisories": "dev-latest" }, "suggest": { - "open-code-modeling/php-code-generator": "To use the static factory methods of Transformator classes for Code Generator workflow configuration", "open-code-modeling/php-filter": "For pre-configured filters for proper class / method / property names etc." }, "conflict": { diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 9bd5aa7..472c64c 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -2,3 +2,4 @@ parameters: level: 5 paths: - src/ + ignoreErrors: diff --git a/src/BoundedContext.php b/src/BoundedContext.php new file mode 100644 index 0000000..7d8051b --- /dev/null +++ b/src/BoundedContext.php @@ -0,0 +1,29 @@ +metadataInstance; + } +} diff --git a/src/Document.php b/src/Document.php index c668b74..b648369 100644 --- a/src/Document.php +++ b/src/Document.php @@ -10,10 +10,10 @@ namespace EventEngine\InspectioGraphCody; -use EventEngine\InspectioGraph\EventType; +use EventEngine\InspectioGraph\DocumentType; use EventEngine\InspectioGraph\Metadata; -final class Document extends Vertex implements EventType +final class Document extends Vertex implements DocumentType { protected const TYPE = self::TYPE_DOCUMENT; diff --git a/src/EventSourcingAnalyzer.php b/src/EventSourcingAnalyzer.php index a9e0a76..bca06a9 100644 --- a/src/EventSourcingAnalyzer.php +++ b/src/EventSourcingAnalyzer.php @@ -10,256 +10,150 @@ namespace EventEngine\InspectioGraphCody; -use EventEngine\InspectioGraph\AggregateConnection; -use EventEngine\InspectioGraph\AggregateConnectionMap; -use EventEngine\InspectioGraph\VertexMap; +use Countable; +use EventEngine\InspectioGraph; +use EventEngine\InspectioGraph\VertexConnection; +use EventEngine\InspectioGraph\VertexConnectionMap; use EventEngine\InspectioGraph\VertexType; -use EventEngine\InspectioGraphCody\Exception\RuntimeException; +use Iterator; -final class EventSourcingAnalyzer implements \EventEngine\InspectioGraph\EventSourcingAnalyzer +final class EventSourcingAnalyzer implements InspectioGraph\EventSourcingAnalyzer, Countable, Iterator { - /** - * @var Node - **/ - private $node; + use InspectioGraph\EventSourcingGraph; - /** - * @var callable - **/ - private $filterName; + private VertexConnectionMap $identityConnectionMap; - /** - * @var VertexMap - */ - private $commandMap; + private EventSourcingGraph $graph; - /** - * @var VertexMap - */ - private $eventMap; + public function __construct(EventSourcingGraph $graph) + { + $this->graph = $graph; + $this->identityConnectionMap = VertexConnectionMap::emptyMap(); + } /** - * @var VertexMap + * @param Node $node + * @return InspectioGraph\VertexConnection|null The vertex with it's connections of provided node or null if not supported */ - private $documentMap; + public function analyse(Node $node): ?InspectioGraph\VertexConnection + { + $this->identityConnectionMap = $this->graph->analyseConnections($node, $this->identityConnectionMap); - /** - * @var AggregateConnectionMap - */ - private $aggregateConnectionMap; + return $this->identityConnectionMap->has($node->id()) + ? $this->identityConnectionMap->connection($node->id()) + : null; + } - /** - * @var callable - */ - private $metadataFactory; - - public function __construct( - Node $node, - callable $filterName, - ?callable $metadataFactory = null - ) { - $this->node = $node; - $this->filterName = $filterName; - $this->metadataFactory = $metadataFactory; + public function remove(Node $node): void + { + $this->identityConnectionMap = $this->graph->removeConnection($node, $this->identityConnectionMap); } - /** - * @param string $type - * @return Node[] - */ - private function filterVerticesByType(string $type): array + public function commandMap(): VertexConnectionMap { - $vertices = []; + return $this->identityConnectionMap->filterByType(VertexType::TYPE_COMMAND); + } - if ($this->node->type() === $type) { - $vertices[] = $this->node; - } + public function eventMap(): VertexConnectionMap + { + return $this->identityConnectionMap->filterByType(VertexType::TYPE_EVENT); + } - foreach ($this->node->sources() as $source) { - if ($source->type() === $type) { - $vertices[] = $source; - } - } + public function aggregateMap(): VertexConnectionMap + { + return $this->identityConnectionMap->filterByType(VertexType::TYPE_AGGREGATE); + } - foreach ($this->node->targets() as $target) { - if ($target->type() === $type) { - $vertices[] = $target; - } - } + public function documentMap(): VertexConnectionMap + { + return $this->identityConnectionMap->filterByType(VertexType::TYPE_DOCUMENT); + } - return $vertices; + public function policyMap(): VertexConnectionMap + { + return $this->identityConnectionMap->filterByType(VertexType::TYPE_POLICY); } - /** - * @param Node $node - * @return Node[] - */ - private function filterCommandsWithConnectionOf(Node $node): array + public function uiMap(): VertexConnectionMap { - $vertices = []; - - switch ($this->node->type()) { - case VertexType::TYPE_AGGREGATE: - foreach ($this->node->sources() as $source) { - if ($source->type() === VertexType::TYPE_COMMAND) { - $vertices[] = $source; - } - } - break; - case VertexType::TYPE_COMMAND: - foreach ($this->node->targets() as $target) { - if ($this->areNodesEqual($target, $node)) { - $vertices[] = $this->node; - } - } - break; - default: - break; - } - - return $vertices; + return $this->identityConnectionMap->filterByType(VertexType::TYPE_UI); } - /** - * @param Node $node - * @return Node[] - */ - private function filterEventsWithConnectionOf(Node $node): array + public function featureMap(): VertexConnectionMap + { + return $this->identityConnectionMap->filterByType(VertexType::TYPE_FEATURE); + } + + public function boundedContextMap(): VertexConnectionMap { - $vertices = []; - - switch ($this->node->type()) { - case VertexType::TYPE_AGGREGATE: - foreach ($this->node->targets() as $target) { - if ($target->type() === VertexType::TYPE_EVENT) { - $vertices[] = $target; - } - } - break; - case VertexType::TYPE_EVENT: - foreach ($this->node->sources() as $source) { - if ($this->areNodesEqual($source, $node)) { - $vertices[] = $this->node; - } - } - foreach ($this->node->targets() as $target) { - if ($this->areNodesEqual($target, $node)) { - $vertices[] = $this->node; - } - } - break; - default: - break; - } - - return $vertices; + return $this->identityConnectionMap->filterByType(VertexType::TYPE_BOUNDED_CONTEXT); } - public function commandMap(): VertexMap + public function externalSystemMap(): VertexConnectionMap { - if (null === $this->commandMap) { - $this->commandMap = VertexMap::fromVertices(...$this->vertexMapByType(VertexType::TYPE_COMMAND)); - } + return $this->identityConnectionMap->filterByType(VertexType::TYPE_EXTERNAL_SYSTEM); + } - return $this->commandMap; + public function hotSpotMap(): VertexConnectionMap + { + return $this->identityConnectionMap->filterByType(VertexType::TYPE_HOT_SPOT); } - public function eventMap(): VertexMap + public function roleMap(): VertexConnectionMap { - if (null === $this->eventMap) { - $this->eventMap = VertexMap::fromVertices(...$this->vertexMapByType(VertexType::TYPE_EVENT)); - } + return $this->identityConnectionMap->filterByType(VertexType::TYPE_ROLE); + } - return $this->eventMap; + public function graph(): VertexConnectionMap + { + return $this->identityConnectionMap; } - public function aggregateMap(): AggregateConnectionMap + public function clearGraph(): void { - if (null === $this->aggregateConnectionMap) { - $this->aggregateConnectionMap = AggregateConnectionMap::emptyMap(); - - $commandMap = $this->commandMap(); - $eventMap = $this->eventMap(); - - /** @var Node $aggregateVertex */ - foreach ($this->filterVerticesByType(VertexType::TYPE_AGGREGATE) as $aggregateVertex) { - $aggregate = Vertex::fromCodyNode($aggregateVertex, $this->filterName, $this->metadataFactory); - $name = $aggregate->name(); - - if (true === $this->aggregateConnectionMap->has($name)) { - continue; - } - // @phpstan-ignore-next-line - $aggregateConnection = new AggregateConnection($aggregate); - - $this->aggregateConnectionMap = $this->aggregateConnectionMap->with($name, $aggregateConnection); - $commandVertices = $this->filterCommandsWithConnectionOf($aggregateVertex); - $eventVertices = $this->filterEventsWithConnectionOf($aggregateVertex); - - $countCommandVertices = \count($commandVertices); - - if ($countCommandVertices > 1) { - throw new RuntimeException( - \sprintf('Multiple command connections to aggregate "%s" found. Can not handle it.', $name) - ); - } - - if ($countCommandVertices === 1) { - $command = Vertex::fromCodyNode(\current($commandVertices), $this->filterName); - - if (true === $commandMap->has($command->name())) { - $events = []; - - foreach ($eventVertices as $eventVertex) { - $event = Vertex::fromCodyNode($eventVertex, $this->filterName); - - if ($eventMap->has($event->name())) { - $events[] = $eventMap->vertex($event->name()); - } - } - // @phpstan-ignore-next-line - $aggregateConnection = $aggregateConnection->withCommandEvents($commandMap->vertex($command->name()), ...$events); - } - } elseif (\count($eventVertices) > 0) { - foreach ($eventVertices as $eventVertex) { - $events = []; - $event = Vertex::fromCodyNode($eventVertex, $this->filterName); - - if ($eventMap->has($event->name())) { - $events[] = $eventMap->vertex($event->name()); - } - } - $aggregateConnection = $aggregateConnection->withEvents(...$events); - } - $this->aggregateConnectionMap = $this->aggregateConnectionMap->with($name, $aggregateConnection); - } - } - - return $this->aggregateConnectionMap; + $this->identityConnectionMap = VertexConnectionMap::emptyMap(); } - public function documentMap(): VertexMap + public function has(string $id): bool { - if (null === $this->documentMap) { - $this->documentMap = VertexMap::fromVertices(...$this->vertexMapByType(VertexType::TYPE_DOCUMENT)); - } + return $this->identityConnectionMap->has($id); + } - return $this->documentMap; + public function connection(string $id): VertexConnection + { + return $this->identityConnectionMap->connection($id); } - private function vertexMapByType(string $type): array + public function count(): int { - return \array_map( - function (Node $vertex) { - return Vertex::fromCodyNode($vertex, $this->filterName, $this->metadataFactory); - }, - $this->filterVerticesByType($type) - ); + return \count($this->identityConnectionMap); } - private function areNodesEqual(Node $a, Node $b): bool + public function rewind(): void + { + $this->identityConnectionMap->rewind(); + } + + public function key(): string + { + return $this->identityConnectionMap->key(); + } + + public function next(): void + { + $this->identityConnectionMap->next(); + } + + public function valid(): bool + { + return $this->identityConnectionMap->valid(); + } + + /** + * @return VertexConnection|false|mixed + */ + public function current() { - return $a->name() === $b->name() - && $a->type() === $b->type(); + return $this->identityConnectionMap->current(); } } diff --git a/src/EventSourcingGraph.php b/src/EventSourcingGraph.php new file mode 100644 index 0000000..cf8e374 --- /dev/null +++ b/src/EventSourcingGraph.php @@ -0,0 +1,152 @@ +filterName = $filterName; + $this->metadataFactory = $metadataFactory; + } + + public function analyseConnections( + Node $node, + InspectioGraph\VertexConnectionMap $vertexConnectionMap + ): InspectioGraph\VertexConnectionMap { + if (! $this->isTypeSupported($node)) { + return $vertexConnectionMap; + } + $resolveMetadataReferences = []; + + $identity = Vertex::fromCodyNode($node, $this->filterName, $this->metadataFactory); + $vertexConnectionMap = $this->addIdentity($identity, $vertexConnectionMap); + $resolveMetadataReferences[] = $identity; + + foreach ($node->targets() as $target) { + if (! $this->isTypeSupported($target)) { + continue; + } + $targetIdentity = Vertex::fromCodyNode($target, $this->filterName, $this->metadataFactory); + $vertexConnectionMap = $this->addConnection($identity, $targetIdentity, $vertexConnectionMap); + $vertexConnectionMap = $this->addParent($target, $targetIdentity, $vertexConnectionMap); + $resolveMetadataReferences[] = $targetIdentity; + } + + foreach ($node->sources() as $source) { + if (! $this->isTypeSupported($source)) { + continue; + } + $sourceIdentity = Vertex::fromCodyNode($source, $this->filterName, $this->metadataFactory); + $vertexConnectionMap = $this->addConnection($sourceIdentity, $identity, $vertexConnectionMap); + $vertexConnectionMap = $this->addParent($source, $sourceIdentity, $vertexConnectionMap); + $resolveMetadataReferences[] = $sourceIdentity; + } + + foreach ($node->children() as $child) { + if (! $this->isTypeSupported($child)) { + continue; + } + $childIdentity = Vertex::fromCodyNode($child, $this->filterName, $this->metadataFactory); + $vertexConnectionMap = $this->addParentConnection( + $childIdentity, + $identity, + $vertexConnectionMap + ); + $resolveMetadataReferences[] = $childIdentity; + } + $vertexConnectionMap = $this->addParent($node, $identity, $vertexConnectionMap); + + if (($parent = $node->parent()) + && $this->isTypeSupported($parent) + && $vertexConnectionMap->has($parent->id()) + ) { + $resolveMetadataReferences[] = $vertexConnectionMap->connection($parent->id())->identity(); + } + + foreach ($resolveMetadataReferences as $resolveMetadataReference) { + $this->resolveReference($resolveMetadataReference, $vertexConnectionMap); + } + + return $vertexConnectionMap; + } + + public function removeConnection( + Node $node, + InspectioGraph\VertexConnectionMap $vertexConnectionMap + ): InspectioGraph\VertexConnectionMap { + if (! $this->isTypeSupported($node)) { + return $vertexConnectionMap; + } + + $identity = Vertex::fromCodyNode($node, $this->filterName, $this->metadataFactory); + + return $this->removeIdentity($identity, $vertexConnectionMap); + } + + private function addParent( + Node $node, + VertexType $nodeIdentity, + InspectioGraph\VertexConnectionMap $vertexConnectionMap + ): InspectioGraph\VertexConnectionMap { + if (($parent = $node->parent()) + && $this->isTypeSupported($parent) + ) { + $parentIdentity = Vertex::fromCodyNode($parent, $this->filterName, $this->metadataFactory); + $vertexConnectionMap = $this->addParentConnection($nodeIdentity, $parentIdentity, $vertexConnectionMap); + + if (($parentParents = $parent->parent()) + && $parentParents->type() !== 'layer' + ) { + $vertexConnectionMap = $this->addParentConnection( + $parentIdentity, + Vertex::fromCodyNode($parentParents, $this->filterName, $this->metadataFactory), + $vertexConnectionMap + ); + } + } + + return $vertexConnectionMap; + } + + private function isTypeSupported(Node $node): bool + { + $type = $node->type(); + + return $type !== 'edge' && $type !== 'image' && $type !== 'layer' && $type !== 'freeText' && $type !== 'text' && $type !== 'icon'; + } + + private function resolveReference(VertexType $vertex, InspectioGraph\VertexConnectionMap $vertexConnectionMap): void + { + $metadataInstance = $vertex->metadataInstance(); + + if ($metadataInstance instanceof InspectioGraph\Metadata\ResolvesMetadataReference) { + $metadataInstance->resolveMetadataReferences($vertexConnectionMap, $this->filterName); + } + } +} diff --git a/src/ExternalSystem.php b/src/ExternalSystem.php new file mode 100644 index 0000000..e11c7de --- /dev/null +++ b/src/ExternalSystem.php @@ -0,0 +1,29 @@ +metadataInstance; + } +} diff --git a/src/Feature.php b/src/Feature.php new file mode 100644 index 0000000..ba8b649 --- /dev/null +++ b/src/Feature.php @@ -0,0 +1,29 @@ +metadataInstance; + } +} diff --git a/src/HotSpot.php b/src/HotSpot.php new file mode 100644 index 0000000..4fe8824 --- /dev/null +++ b/src/HotSpot.php @@ -0,0 +1,29 @@ +metadataInstance; + } +} diff --git a/src/JsonNode.php b/src/JsonNode.php index a3680a3..8b63c83 100644 --- a/src/JsonNode.php +++ b/src/JsonNode.php @@ -13,6 +13,7 @@ final class JsonNode implements Node { public const DEFAULT_DEPTH = 512; + private const DEFAULT_OPTIONS = \JSON_BIGINT_AS_STRING | \JSON_THROW_ON_ERROR; /** @@ -31,6 +32,11 @@ public static function fromJson(string $json): Node return new self($data['node']); } + public static function fromArray(array $json): Node + { + return new self($json); + } + private function __construct(array $data) { $this->node = $data; diff --git a/src/Metadata/Aggregate.php b/src/Metadata/Aggregate.php deleted file mode 100644 index ba26f31..0000000 --- a/src/Metadata/Aggregate.php +++ /dev/null @@ -1,49 +0,0 @@ -schema = NodeJsonMetadataFactory::encodeJson($data['schema']); - } - - return $self; - } - - public function schema(): ?string - { - return $this->schema; - } -} diff --git a/src/Metadata/Command.php b/src/Metadata/Command.php deleted file mode 100644 index c1d7545..0000000 --- a/src/Metadata/Command.php +++ /dev/null @@ -1,61 +0,0 @@ -newAggregate = $data['newAggregate'] ?? false; - - if (! empty($data['schema'])) { - $self->schema = NodeJsonMetadataFactory::encodeJson($data['schema']); - } - - return $self; - } - - public function newAggregate(): bool - { - return $this->newAggregate; - } - - public function schema(): ?string - { - return $this->schema; - } -} diff --git a/src/Metadata/Event.php b/src/Metadata/Event.php deleted file mode 100644 index 3cb0d85..0000000 --- a/src/Metadata/Event.php +++ /dev/null @@ -1,61 +0,0 @@ -public = $data['public'] ?? false; - - if (! empty($data['schema'])) { - $self->schema = NodeJsonMetadataFactory::encodeJson($data['schema']); - } - - return $self; - } - - public function public(): bool - { - return $this->public; - } - - public function schema(): ?string - { - return $this->schema; - } -} diff --git a/src/Metadata/NodeJsonMetadataFactory.php b/src/Metadata/NodeJsonMetadataFactory.php deleted file mode 100644 index 0e2293b..0000000 --- a/src/Metadata/NodeJsonMetadataFactory.php +++ /dev/null @@ -1,50 +0,0 @@ -metadata(); - - switch ($vertex->type()) { - case VertexType::TYPE_COMMAND: - return Command::fromJsonMetadata($metadata); - case VertexType::TYPE_AGGREGATE: - return Aggregate::fromJsonMetadata($metadata); - case VertexType::TYPE_EVENT: - return Event::fromJsonMetadata($metadata); - default: - throw new RuntimeException(\sprintf('Given type "%s" is not supported', $vertex->type())); - } - } - - public static function decodeJson(string $json): array - { - return \json_decode($json, true, 512, \JSON_BIGINT_AS_STRING | \JSON_THROW_ON_ERROR); - } - - public static function encodeJson(array $json): string - { - $flags = \JSON_UNESCAPED_UNICODE | \JSON_UNESCAPED_SLASHES | \JSON_PRESERVE_ZERO_FRACTION | \JSON_THROW_ON_ERROR | \JSON_PRETTY_PRINT; - - return \json_encode($json, $flags); - } -} diff --git a/src/Metadata/Policy.php b/src/Metadata/Policy.php deleted file mode 100644 index e24e030..0000000 --- a/src/Metadata/Policy.php +++ /dev/null @@ -1,46 +0,0 @@ -streams = $data['streams'] ?? null; - } - - return $self; - } - - public function streams(): array - { - return $this->streams; - } -} diff --git a/src/Policy.php b/src/Policy.php new file mode 100644 index 0000000..fee96a8 --- /dev/null +++ b/src/Policy.php @@ -0,0 +1,29 @@ +metadataInstance; + } +} diff --git a/src/Role.php b/src/Role.php new file mode 100644 index 0000000..7b42d8a --- /dev/null +++ b/src/Role.php @@ -0,0 +1,29 @@ +metadataInstance; + } +} diff --git a/src/Transformator/NodeToEventSourcingAnalyzer.php b/src/Transformator/NodeToEventSourcingAnalyzer.php index 1da2017..04e6594 100644 --- a/src/Transformator/NodeToEventSourcingAnalyzer.php +++ b/src/Transformator/NodeToEventSourcingAnalyzer.php @@ -12,6 +12,7 @@ use EventEngine\InspectioGraphCody\Constraint\Exception\RuntimeException; use EventEngine\InspectioGraphCody\EventSourcingAnalyzer; +use EventEngine\InspectioGraphCody\EventSourcingGraph; use EventEngine\InspectioGraphCody\Node; use EventEngine\InspectioGraphCody\Validator; use OpenCodeModeling\CodeGenerator\Workflow; @@ -48,8 +49,11 @@ public function __invoke(Node $node): \EventEngine\InspectioGraph\EventSourcingA if (false === $this->validator->isValid($node)) { throw new RuntimeException('Graph is invalid.'); } + // TODO needs EventSourcingAnalyzer as input argument + $analyzer = new EventSourcingAnalyzer(new EventSourcingGraph($this->filterName, $this->metadataFactory)); + $analyzer->analyse($node); - return new EventSourcingAnalyzer($node, $this->filterName, $this->metadataFactory); + return $analyzer; } public static function workflowComponentDescription( diff --git a/src/Ui.php b/src/Ui.php new file mode 100644 index 0000000..69b72a3 --- /dev/null +++ b/src/Ui.php @@ -0,0 +1,29 @@ +metadataInstance; + } +} diff --git a/src/Vertex.php b/src/Vertex.php index 2e6d716..31b5ae5 100644 --- a/src/Vertex.php +++ b/src/Vertex.php @@ -59,15 +59,47 @@ public static function fromCodyNode( switch ($type) { case VertexType::TYPE_COMMAND: $class = Command::class; + break; case VertexType::TYPE_AGGREGATE: $class = Aggregate::class; + break; case VertexType::TYPE_EVENT: $class = Event::class; + break; case VertexType::TYPE_DOCUMENT: $class = Document::class; + + break; + case VertexType::TYPE_POLICY: + $class = Policy::class; + + break; + case VertexType::TYPE_EXTERNAL_SYSTEM: + $class = ExternalSystem::class; + + break; + case VertexType::TYPE_HOT_SPOT: + $class = HotSpot::class; + + break; + case VertexType::TYPE_ROLE: + $class = Role::class; + + break; + case VertexType::TYPE_UI: + $class = Ui::class; + + break; + case VertexType::TYPE_FEATURE: + $class = Feature::class; + + break; + case VertexType::TYPE_BOUNDED_CONTEXT: + $class = BoundedContext::class; + break; default: throw new RuntimeException(\sprintf('Given type "%s" is not supported', $type)); @@ -131,31 +163,37 @@ public function type(): string return $this->type; } - /** - * Raw vertex label - * - * @return string - */ public function label(): string { return $this->label; } - /** - * Filtered label for name - * - * @return string - */ public function name(): string { return $this->name; } - /** - * @return string - */ - public function metadata(): string + public function metadata(): ?string { return $this->metadata; } + + public function merge(VertexType $vertex): void + { + if ($vertex->id() !== $this->id()) { + throw new RuntimeException( + \sprintf('Can not merge vertex due different ids. Id is "%s" but got "%s"', $this->id, $vertex->id()) + ); + } + if ($vertex->type() !== $this->type()) { + throw new RuntimeException( + \sprintf('Can not merge vertex due different types. Type is "%s" but got "%s"', $this->type, $vertex->type()) + ); + } + + $this->metadataInstance = $vertex->metadataInstance(); + $this->metadata = $vertex->metadata(); + $this->name = $vertex->name(); + $this->label = $vertex->label(); + } } diff --git a/tests/EventSourcingAnalyzerTest.php b/tests/EventSourcingAnalyzerTest.php index 00c83b5..0530a1d 100644 --- a/tests/EventSourcingAnalyzerTest.php +++ b/tests/EventSourcingAnalyzerTest.php @@ -12,8 +12,12 @@ use EventEngine\InspectioGraph\AggregateType; use EventEngine\InspectioGraph\CommandType; +use EventEngine\InspectioGraph\DocumentType; use EventEngine\InspectioGraph\EventType; +use EventEngine\InspectioGraph\FeatureType; +use EventEngine\InspectioGraph\VertexType; use EventEngine\InspectioGraphCody\EventSourcingAnalyzer; +use EventEngine\InspectioGraphCody\EventSourcingGraph; use EventEngine\InspectioGraphCody\JsonNode; use PHPUnit\Framework\TestCase; @@ -21,6 +25,28 @@ final class EventSourcingAnalyzerTest extends TestCase { private const FILES_DIR = __DIR__ . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR; + private const ID_FEATURE = 'stW5qRRPsQbowcqux7M2QX'; + + private const ID_ADD_BUILDING = '9bJ5Y7yuBcfWyei7i2ZSDC'; + + private const ID_ADD_BUILDING_AGGREGATE = 'buTwEKKNLBBo6WAERYN1Gn'; + + private const ID_BUILDING_ADDED = 'tF2ZuZCXsdQMhRmRXydfuW'; + + private const ID_CHECK_IN_USER = 'aKvhibi95v18MKjNjb6tL3'; + + private const ID_CHECK_IN_USER_AGGREGATE = 'eiaS8gtsBemMReTNbeNRXj'; + + private const ID_USER_CHECKED_IN = 'q3thtbbiWsgyRqGadCBLte'; + + private const ID_DOUBLE_CHECKED_IN_DETECTED = '8H79vCoLa3Y2RrpVy7ZMYE'; + + private const ID_CHECK_OUT_USER = 'aKvhibi95v18MKjNjb6tL3'; + + private const ID_CHECK_OUT_USER_AGGREGATE = 'eiaS8gtsBemMReTNbeNRXj'; + + private const ID_USER_CHECKED_OUT = 'q3thtbbiWsgyRqGadCBLte'; + /** * @var callable */ @@ -36,174 +62,467 @@ public function setUp(): void /** * @test */ - public function it_returns_command_map_of_command_node(): void + public function it_removes_nodes(): void { - $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'add_building.json')); + $analyzer = new EventSourcingAnalyzer(new EventSourcingGraph($this->filter)); - $eventSourcingAnalyzer = new EventSourcingAnalyzer($node, $this->filter); - $commandMap = $eventSourcingAnalyzer->commandMap(); - - $this->assertCount(1, $commandMap); - $command = $commandMap->current(); - - $this->assertCommandAddBuilding($command); + // order is important for assertions + $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'add_building.json')); + $identityConnection = $analyzer->analyse($node); + + $this->assertCount(1, $analyzer->commandMap()); + $this->assertCount(1, $analyzer->aggregateMap()); + $this->assertCount(0, $analyzer->eventMap()); + $this->assertCount(0, $analyzer->documentMap()); + $this->assertCount(0, $analyzer->policyMap()); + $this->assertCount(0, $analyzer->uiMap()); + $this->assertCount(0, $analyzer->externalSystemMap()); + $this->assertCount(0, $analyzer->hotSpotMap()); + $this->assertCount(1, $analyzer->featureMap()); + $this->assertCount(1, $analyzer->boundedContextMap()); + $this->assertCommandAddBuilding($identityConnection->identity(), self::ID_ADD_BUILDING); + $this->assertAnalysisAddBuilding($analyzer, false); + + $analyzer->remove($node); + + $this->assertCount(0, $analyzer->commandMap()); + $this->assertCount(1, $analyzer->aggregateMap()); + $this->assertCount(0, $analyzer->eventMap()); + $this->assertCount(0, $analyzer->documentMap()); + $this->assertCount(0, $analyzer->policyMap()); + $this->assertCount(0, $analyzer->uiMap()); + $this->assertCount(0, $analyzer->externalSystemMap()); + $this->assertCount(0, $analyzer->hotSpotMap()); + $this->assertCount(1, $analyzer->featureMap()); + $this->assertCount(1, $analyzer->boundedContextMap()); } /** * @test */ - public function it_returns_aggregate_map_of_command_node(): void + public function it_analysis_nodes(): void { - $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'add_building.json')); + $analyzer = new EventSourcingAnalyzer(new EventSourcingGraph($this->filter)); - $eventSourcingAnalyzer = new EventSourcingAnalyzer($node, $this->filter); - $aggregateMap = $eventSourcingAnalyzer->aggregateMap(); + // order is important for assertions + $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'add_building.json')); + $identityConnection = $analyzer->analyse($node); + + $this->assertCount(1, $analyzer->commandMap()); + $this->assertCount(1, $analyzer->aggregateMap()); + $this->assertCount(0, $analyzer->eventMap()); + $this->assertCount(0, $analyzer->documentMap()); + $this->assertCount(0, $analyzer->policyMap()); + $this->assertCount(0, $analyzer->uiMap()); + $this->assertCount(0, $analyzer->externalSystemMap()); + $this->assertCount(0, $analyzer->hotSpotMap()); + $this->assertCount(1, $analyzer->featureMap()); + $this->assertCount(1, $analyzer->boundedContextMap()); + $this->assertCommandAddBuilding($identityConnection->identity(), self::ID_ADD_BUILDING); + $this->assertAnalysisAddBuilding($analyzer, false); - $this->assertCount(1, $aggregateMap); - $aggregate = $aggregateMap->current(); - $this->assertAggregateBuilding($aggregate->aggregate(), 'o67B4pXhbDvuF2BnBsBy27'); + $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building_user.json')); + $identityConnection = $analyzer->analyse($node); + + $this->assertCount(2, $analyzer->commandMap()); + $this->assertCount(2, $analyzer->aggregateMap()); + $this->assertCount(2, $analyzer->eventMap()); + $this->assertCount(0, $analyzer->documentMap()); + $this->assertCount(0, $analyzer->policyMap()); + $this->assertCount(0, $analyzer->uiMap()); + $this->assertCount(0, $analyzer->externalSystemMap()); + $this->assertCount(0, $analyzer->hotSpotMap()); + $this->assertCount(1, $analyzer->featureMap()); + $this->assertCount(1, $analyzer->boundedContextMap()); + $this->assertAggregateBuilding($identityConnection->identity(), self::ID_CHECK_IN_USER_AGGREGATE); + $this->assertAnalysisAddBuilding($analyzer, false); + $this->assertAnalysisBuildingUser($analyzer); - $commandMap = $aggregate->commandMap(); - $this->assertCount(1, $commandMap); - $this->assertCommandAddBuilding($commandMap->current()); + $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building_added.json')); + $identityConnection = $analyzer->analyse($node); + + $this->assertCount(2, $analyzer->commandMap()); + $this->assertCount(2, $analyzer->aggregateMap()); + $this->assertCount(3, $analyzer->eventMap()); + $this->assertCount(1, $analyzer->documentMap()); + $this->assertCount(0, $analyzer->policyMap()); + $this->assertCount(0, $analyzer->uiMap()); + $this->assertCount(0, $analyzer->externalSystemMap()); + $this->assertCount(0, $analyzer->hotSpotMap()); + $this->assertCount(1, $analyzer->featureMap()); + $this->assertCount(1, $analyzer->boundedContextMap()); + $this->assertEventBuildingAdded($identityConnection->identity()); + $this->assertAnalysisAddBuilding($analyzer, true); + $this->assertAnalysisBuildingUser($analyzer); + $this->assertAnalysisBuildingAdded($analyzer); - $eventMap = $aggregate->eventMap(); - $this->assertCount(0, $eventMap); + $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building.json')); + $identityConnection = $analyzer->analyse($node); + + $this->assertCount(2, $analyzer->commandMap()); + $this->assertCount(2, $analyzer->aggregateMap()); + $this->assertCount(3, $analyzer->eventMap()); + $this->assertCount(1, $analyzer->documentMap()); + $this->assertCount(0, $analyzer->policyMap()); + $this->assertCount(0, $analyzer->uiMap()); + $this->assertCount(0, $analyzer->externalSystemMap()); + $this->assertCount(0, $analyzer->hotSpotMap()); + $this->assertCount(1, $analyzer->featureMap()); + $this->assertCount(1, $analyzer->boundedContextMap()); + $this->assertAggregateBuilding($identityConnection->identity(), self::ID_ADD_BUILDING_AGGREGATE); + $this->assertAnalysisAddBuilding($analyzer, true); + $this->assertAnalysisBuildingUser($analyzer); + $this->assertAnalysisBuildingAdded($analyzer); + $this->assertAnalysisBuilding($analyzer); + + $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'feature_building.json')); + $identityConnection = $analyzer->analyse($node); + + $this->assertCount(3, $analyzer->commandMap()); + $this->assertCount(3, $analyzer->aggregateMap()); + $this->assertCount(4, $analyzer->eventMap()); + $this->assertCount(3, $analyzer->documentMap()); + $this->assertCount(0, $analyzer->policyMap()); + $this->assertCount(0, $analyzer->uiMap()); + $this->assertCount(0, $analyzer->externalSystemMap()); + $this->assertCount(0, $analyzer->hotSpotMap()); + $this->assertCount(1, $analyzer->featureMap()); + $this->assertCount(1, $analyzer->boundedContextMap()); + $this->assertFeature($identityConnection->identity()); + $this->assertAnalysisAddBuilding($analyzer, true); + $this->assertAnalysisBuildingUser($analyzer); + $this->assertAnalysisBuildingAdded($analyzer); + $this->assertAnalysisBuilding($analyzer); + $this->assertAnalyzeFeatureBuilding($analyzer); } - /** - * @test - */ - public function it_returns_aggregate_map_of_event_node(): void - { - $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building_added.json')); + private function assertAnalysisAddBuilding( + EventSourcingAnalyzer $analyzer, + bool $updated + ): void { + $commandMap = $analyzer->commandMap(); + $aggregateMap = $analyzer->aggregateMap(); + $featureMap = $analyzer->featureMap(); - $eventSourcingAnalyzer = new EventSourcingAnalyzer($node, $this->filter); - $aggregateMap = $eventSourcingAnalyzer->aggregateMap(); - - $this->assertCount(1, $aggregateMap); + $command = $commandMap->current(); $aggregate = $aggregateMap->current(); - $this->assertAggregateBuilding($aggregate->aggregate(), 'buTwEKKNLBBo6WAERYN1Gn'); + $feature = $featureMap->current(); + + $this->assertCount(0, $command->from()); + $this->assertCount(1, $command->to()); + $this->assertCount(1, $aggregate->from()); + $this->assertCount($updated ? 1 : 0, $aggregate->to()); - $eventMap = $aggregate->eventMap(); - $this->assertCount(1, $eventMap); - $this->assertEventBuildingAdded($eventMap->current()); + // commands + $this->assertCommandAddBuilding($command->identity(), self::ID_ADD_BUILDING); - $commandMap = $aggregate->commandMap(); - $this->assertCount(0, $commandMap); + // aggregates + $this->assertAggregateBuilding($aggregate->identity(), self::ID_ADD_BUILDING_AGGREGATE); + + // aggregate connections + $this->assertIdenticalVertex($aggregate->identity(), $command->to()->current()); + $this->assertIdenticalVertex($command->identity(), $aggregate->from()->current()); + + // feature connections + $this->assertIdenticalVertex($aggregate->parent(), $feature->identity()); + $this->assertIdenticalVertex($command->parent(), $feature->identity()); + $this->assertIdenticalVertex($feature->children()->filterByType(VertexType::TYPE_COMMAND)->current(), $command->identity()); + $this->assertIdenticalVertex($feature->children()->filterByType(VertexType::TYPE_AGGREGATE)->current(), $aggregate->identity()); } - /** - * @test - */ - public function it_returns_command_map_of_aggregate_node(): void + private function assertAnalysisBuildingUser(EventSourcingAnalyzer $analyzer): void { - $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building.json')); + $commandMap = $analyzer->commandMap(); + $aggregateMap = $analyzer->aggregateMap(); + $eventMap = $analyzer->eventMap(); + $featureMap = $analyzer->featureMap(); - $eventSourcingAnalyzer = new EventSourcingAnalyzer($node, $this->filter); - $commandMap = $eventSourcingAnalyzer->commandMap(); + $commandMap->next(); + $aggregateMap->next(); - $this->assertCount(1, $commandMap); + // commands $command = $commandMap->current(); + $command->from()->rewind(); + $command->to()->rewind(); - $this->assertCommandAddBuilding($command); - } + $this->assertCommandCheckInUser($command->identity()); - /** - * @test - */ - public function it_returns_event_map_of_aggregate_node(): void - { - $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building_user.json')); + // aggregates + $aggregate = $aggregateMap->current(); + $aggregate->from()->rewind(); + $aggregate->to()->rewind(); + + $this->assertAggregateBuilding($aggregate->identity(), self::ID_CHECK_IN_USER_AGGREGATE); - $eventSourcingAnalyzer = new EventSourcingAnalyzer($node, $this->filter); - $eventMap = $eventSourcingAnalyzer->eventMap(); + // events + $eventUserCheckedIn = $eventMap->current(); + $eventUserCheckedIn->from()->rewind(); + $eventUserCheckedIn->to()->rewind(); - $this->assertCount(2, $eventMap); - $event = $eventMap->current(); - $this->assertEventUserCheckedIn($event); + $this->assertEventUserCheckedIn($eventUserCheckedIn->identity()); $eventMap->next(); - $event = $eventMap->current(); - $this->assertEventDoubleCheckInDetected($event); + $eventDoubleCheckInDetected = $eventMap->current(); + $eventDoubleCheckInDetected->from()->rewind(); + $eventDoubleCheckInDetected->to()->rewind(); + + $this->assertEventDoubleCheckInDetected($eventDoubleCheckInDetected->identity()); + + // aggregate connections + $this->assertIdenticalVertex($aggregate->identity(), $command->to()->current()); + $this->assertIdenticalVertex($command->identity(), $aggregate->from()->current()); + + $this->assertIdenticalVertex($aggregate->identity(), $eventUserCheckedIn->from()->current()); + $this->assertIdenticalVertex($aggregate->identity(), $eventDoubleCheckInDetected->from()->current()); + + $this->assertIdenticalVertex($eventUserCheckedIn->identity(), $aggregate->to()->current()); + + $aggregate->to()->next(); + $this->assertIdenticalVertex($eventDoubleCheckInDetected->identity(), $aggregate->to()->current()); + + // feature connections + $feature = $featureMap->current(); + $childrenCommand = $feature->children()->filterByType(VertexType::TYPE_COMMAND); + $childrenCommand->next(); + + $childrenAggregate = $feature->children()->filterByType(VertexType::TYPE_AGGREGATE); + $childrenAggregate->next(); + + $this->assertIdenticalVertex($aggregate->parent(), $feature->identity()); + $this->assertIdenticalVertex($command->parent(), $feature->identity()); + $this->assertIdenticalVertex($childrenCommand->current(), $command->identity()); + $this->assertIdenticalVertex($childrenAggregate->current(), $aggregate->identity()); } - /** - * @test - */ - public function it_returns_aggregate_map_of_aggregate_node(): void + private function assertAnalysisBuilding(EventSourcingAnalyzer $analyzer): void { - $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building_user.json')); + $command = $analyzer->connection(self::ID_ADD_BUILDING); + $aggregate = $analyzer->connection(self::ID_ADD_BUILDING_AGGREGATE); + $event = $analyzer->connection(self::ID_BUILDING_ADDED); + $feature = $analyzer->connection(self::ID_FEATURE); + + $this->assertCount(0, $command->from()); + $this->assertCount(1, $command->to()); + $this->assertCount(1, $aggregate->from()); + $this->assertCount(1, $aggregate->to()); + $this->assertCount(1, $event->from()); + $this->assertCount(1, $event->to()); + + // event + $this->assertDocumentBuilding($event->to()->current(), '4gYkBjXufnkWMN5ybfBvPq'); + + // aggregate connections + $this->assertIdenticalVertex($aggregate->identity(), $command->to()->current()); + $this->assertIdenticalVertex($aggregate->identity(), $event->from()->current()); + $this->assertIdenticalVertex($command->identity(), $aggregate->from()->current()); + $this->assertIdenticalVertex($event->identity(), $aggregate->to()->current()); + + // feature connections + $this->assertIdenticalVertex($aggregate->parent(), $feature->identity()); + $this->assertIdenticalVertex($command->parent(), $feature->identity()); + $this->assertIdenticalVertex($event->parent(), $feature->identity()); + } - $eventSourcingAnalyzer = new EventSourcingAnalyzer($node, $this->filter); - $aggregateMap = $eventSourcingAnalyzer->aggregateMap(); + private function assertAnalysisBuildingAdded(EventSourcingAnalyzer $analyzer): void + { + $commandMap = $analyzer->commandMap(); + $aggregateMap = $analyzer->aggregateMap(); + $eventMap = $analyzer->eventMap(); + $featureMap = $analyzer->featureMap(); - $this->assertCount(1, $aggregateMap); - $aggregate = $aggregateMap->current(); - $this->assertAggregateBuilding($aggregate->aggregate(), 'juqq2zqsYU44UgrAad65Ws'); + $commandMap->next(); + $aggregateMap->next(); - $commandMap = $aggregate->commandMap(); - $this->assertCount(1, $commandMap); + // commands $command = $commandMap->current(); - $this->assertCommandCheckInUser($command); + $command->from()->rewind(); + $command->to()->rewind(); - $eventMap = $aggregate->eventMap(); - $this->assertCount(2, $eventMap); - $event = $eventMap->current(); - $this->assertEventUserCheckedIn($event); + $this->assertCommandCheckInUser($command->identity()); + + // aggregates + $aggregate = $aggregateMap->current(); + $aggregate->from()->rewind(); + $aggregate->to()->rewind(); + + $this->assertAggregateBuilding($aggregate->identity(), self::ID_CHECK_IN_USER_AGGREGATE); + + // events + $eventUserCheckedIn = $eventMap->current(); + $eventUserCheckedIn->from()->rewind(); + $eventUserCheckedIn->to()->rewind(); + + $this->assertEventUserCheckedIn($eventUserCheckedIn->identity()); $eventMap->next(); - $event = $eventMap->current(); - $this->assertEventDoubleCheckInDetected($event); + $eventDoubleCheckInDetected = $eventMap->current(); + $eventDoubleCheckInDetected->from()->rewind(); + $eventDoubleCheckInDetected->to()->rewind(); + + $this->assertEventDoubleCheckInDetected($eventDoubleCheckInDetected->identity()); + + // aggregate connections + $this->assertIdenticalVertex($aggregate->identity(), $command->to()->current()); + $this->assertIdenticalVertex($command->identity(), $aggregate->from()->current()); + + $this->assertIdenticalVertex($aggregate->identity(), $eventUserCheckedIn->from()->current()); + $this->assertIdenticalVertex($aggregate->identity(), $eventDoubleCheckInDetected->from()->current()); + + $this->assertIdenticalVertex($eventUserCheckedIn->identity(), $aggregate->to()->current()); + + $aggregate->to()->next(); + $this->assertIdenticalVertex($eventDoubleCheckInDetected->identity(), $aggregate->to()->current()); + + // feature connections + $feature = $featureMap->current(); + $childrenCommand = $feature->children()->filterByType(VertexType::TYPE_COMMAND); + $childrenCommand->next(); - $commandsToEventsMap = $aggregate->commandsToEventsMap(); + $childrenAggregate = $feature->children()->filterByType(VertexType::TYPE_AGGREGATE); + $childrenAggregate->next(); - $this->assertCount(1, $commandsToEventsMap); - $this->assertTrue($commandsToEventsMap->offsetExists($command)); + $this->assertIdenticalVertex($aggregate->parent(), $feature->identity()); + $this->assertIdenticalVertex($command->parent(), $feature->identity()); + $this->assertIdenticalVertex($childrenCommand->current(), $command->identity()); + $this->assertIdenticalVertex($childrenAggregate->current(), $aggregate->identity()); + } + + private function assertAnalyzeFeatureBuilding(EventSourcingAnalyzer $analyzer): void + { + $commandMap = $analyzer->commandMap(); + $aggregateMap = $analyzer->aggregateMap(); + $eventMap = $analyzer->eventMap(); + $documentMap = $analyzer->documentMap(); + $featureMap = $analyzer->featureMap(); + + $feature = $featureMap->current(); + + foreach ($feature->children()->filterByType(VertexType::TYPE_COMMAND) as $child) { + $command = $commandMap->current(); + $this->assertIdenticalVertex($child, $command->identity()); + $this->assertSame($feature->identity(), $command->parent()); + $commandMap->next(); + } + foreach ($feature->children()->filterByType(VertexType::TYPE_AGGREGATE) as $child) { + $aggregate = $aggregateMap->current(); + $this->assertIdenticalVertex($child, $aggregate->identity()); + $this->assertSame($feature->identity(), $aggregate->parent()); + $aggregateMap->next(); + } + foreach ($feature->children()->filterByType(VertexType::TYPE_EVENT) as $child) { + $event = $eventMap->current(); + $this->assertIdenticalVertex($child, $event->identity()); + $this->assertSame($feature->identity(), $event->parent()); + $eventMap->next(); + } + foreach ($feature->children()->filterByType(VertexType::TYPE_DOCUMENT) as $child) { + $document = $documentMap->current(); + $this->assertIdenticalVertex($child, $document->identity()); + $this->assertSame($feature->identity(), $document->parent()); + $documentMap->next(); + } + } + + private function assertIdenticalVertex(VertexType $a, VertexType $b): void + { + $this->assertSame($a->type(), $b->type(), 'The type does not match'); + $this->assertSame($a->name(), $b->name(), 'The name does not match'); + $this->assertSame($a->id(), $b->id(), 'The ids does not match'); + $this->assertSame(\spl_object_hash($a), \spl_object_hash($b), 'The objects are not identical'); + } - $events = $commandsToEventsMap->offsetGet($command); - $this->assertCount(2, $events); + private function assertFeature(FeatureType $feature): void + { + $this->assertSame(self::ID_FEATURE, $feature->id()); + $this->assertSame('Building', $feature->name()); + $this->assertSame('Building', $feature->label()); + $this->assertSame('feature', $feature->type()); } private function assertAggregateBuilding(AggregateType $aggregate, string $id): void { $this->assertSame($id, $aggregate->id()); $this->assertSame('Building', $aggregate->name()); - $this->assertSame('Building', $aggregate->label()); + $this->assertSame('Building ', $aggregate->label()); + $this->assertSame('aggregate', $aggregate->type()); } - private function assertCommandAddBuilding(CommandType $command): void + private function assertCommandAddBuilding(CommandType $command, string $id): void { - $this->assertSame('i5hHo93xQP8cvhdTh25DHq', $command->id()); + $this->assertSame($id, $command->id()); $this->assertSame('Add Building', $command->name()); - $this->assertSame('Add Building', $command->label()); + $this->assertSame('command', $command->type()); } private function assertEventBuildingAdded(EventType $event): void { - $this->assertSame('ctuHbHKF1pwqQfa3VZ1nfz', $event->id()); + $this->assertSame('tF2ZuZCXsdQMhRmRXydfuW', $event->id()); $this->assertSame('Building Added', $event->name()); $this->assertSame('Building Added', $event->label()); + $this->assertSame('event', $event->type()); } private function assertCommandCheckInUser(CommandType $command): void { - $this->assertSame('i26gh6vK7QCsNwpvW4CuYX', $command->id()); - $this->assertSame('CheckInUser', $command->name()); - $this->assertSame('CheckInUser', $command->label()); + $this->assertSame('aKvhibi95v18MKjNjb6tL3', $command->id()); + $this->assertSame('Check In User', $command->name()); + $this->assertSame('Check In User', \trim($command->label())); + $this->assertSame('command', $command->type()); + } + + private function assertCommandCheckOutUser(CommandType $command): void + { + $this->assertSame('dkNTGinM6VY1Qu8zyGURU1', $command->id()); + $this->assertSame('Check Out User', $command->name()); + $this->assertSame('Check Out User', \trim($command->label())); + $this->assertSame('commmand', $command->type()); } private function assertEventUserCheckedIn(EventType $event): void { - $this->assertSame('ondJmx9Xo19YLYJk1DqFeL', $event->id()); - $this->assertSame('UserCheckedIn', $event->name()); - $this->assertSame('UserCheckedIn', $event->label()); + $this->assertSame('q3thtbbiWsgyRqGadCBLte', $event->id()); + $this->assertSame('User Checked In', $event->name()); + $this->assertSame('User Checked In', $event->label()); + $this->assertSame('event', $event->type()); + } + + private function assertEventUserCheckedOut(EventType $event): void + { + $this->assertSame('5cVD57Gt2HtxPU6zonD5vx', $event->id()); + $this->assertSame('User Checked Out', $event->name()); + $this->assertSame('User Checked Out', $event->label()); + $this->assertSame('event', $event->type()); } private function assertEventDoubleCheckInDetected(EventType $event): void { - $this->assertSame('uNMg3RfYfAsdD7pvzt1zY9', $event->id()); - $this->assertSame('DoubleCheckInDetected', $event->name()); - $this->assertSame('DoubleCheckInDetected', $event->label()); + $this->assertSame('8H79vCoLa3Y2RrpVy7ZMYE', $event->id()); + $this->assertSame('Double Check In Detected', $event->name()); + $this->assertSame('Double Check In Detected ', $event->label()); + $this->assertSame('event', $event->type()); + } + + private function assertDocumentName(DocumentType $document): void + { + $this->assertSame('a4HLmzMb2g2MVQWXy4BKN1', $document->id()); + $this->assertSame('Name', $document->name()); + $this->assertSame('Name', $document->label()); + $this->assertSame('document', $document->type()); + } + + private function assertDocumentBuilding(DocumentType $document, string $id): void + { + $this->assertSame($id, $document->id()); + $this->assertSame('Building', $document->name()); + $this->assertSame('Building ', $document->label()); + $this->assertSame('document', $document->type()); + } + + private function assertDocumentUsersInBuilding(DocumentType $document, string $id): void + { + $this->assertSame($id, $document->id()); + $this->assertSame('Users In Building', $document->name()); + $this->assertSame('Users In Building ', $document->label()); + $this->assertSame('document', $document->type()); } } diff --git a/tests/JsonNodeTest.php b/tests/JsonNodeTest.php index e64bb0f..c0a074a 100644 --- a/tests/JsonNodeTest.php +++ b/tests/JsonNodeTest.php @@ -25,8 +25,8 @@ public function it_can_be_created_from_json(): void { $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building.json')); - $this->assertSame('o67B4pXhbDvuF2BnBsBy27', $node->id()); - $this->assertSame('Building', $node->name()); + $this->assertSame('buTwEKKNLBBo6WAERYN1Gn', $node->id()); + $this->assertSame('Building', \trim($node->name())); $this->assertSame('aggregate', $node->type()); $this->assertFalse($node->isLayer()); $this->assertFalse($node->isDefaultLayer()); @@ -42,6 +42,9 @@ public function it_returns_parent_node(): void $parent = $node->parent(); $this->assertFeatureNode($parent); + $parent = $parent->parent(); + $this->assertBoundedContextNode($parent); + $parent = $parent->parent(); $this->assertBoardLayerNode($parent); } @@ -54,13 +57,16 @@ public function it_returns_sources(): void $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building.json')); foreach ($node->sources() as $source) { - $this->assertSame('i5hHo93xQP8cvhdTh25DHq', $source->id()); - $this->assertSame('Add Building', $source->name()); + $this->assertSame('9bJ5Y7yuBcfWyei7i2ZSDC', $source->id()); + $this->assertSame('Add Building', \trim($source->name())); $this->assertSame('command', $source->type()); $this->assertFalse($source->isLayer()); $this->assertFalse($source->isDefaultLayer()); $parent = $node->parent(); + $this->assertFeatureNode($parent); + + $parent = $parent->parent(); $this->assertBoundedContextNode($parent); $parent = $parent->parent(); @@ -76,13 +82,16 @@ public function it_returns_targets(): void $node = JsonNode::fromJson(\file_get_contents(self::FILES_DIR . 'building.json')); foreach ($node->targets() as $target) { - $this->assertSame('ctuHbHKF1pwqQfa3VZ1nfz', $target->id()); - $this->assertSame('BuildingAdded', $target->name()); + $this->assertSame('tF2ZuZCXsdQMhRmRXydfuW', $target->id()); + $this->assertSame('Building Added', $target->name()); $this->assertSame('event', $target->type()); $this->assertFalse($target->isLayer()); $this->assertFalse($target->isDefaultLayer()); $parent = $node->parent(); + $this->assertFeatureNode($parent); + + $parent = $parent->parent(); $this->assertBoundedContextNode($parent); $parent = $parent->parent(); @@ -103,8 +112,8 @@ private function assertFeatureNode(Node $node): void private function assertBoundedContextNode(Node $node): void { $this->assertInstanceOf(Node::class, $node); - $this->assertSame('stW5qRRPsQbowcqux7M2QX', $node->id()); - $this->assertSame('Building', $node->name()); + $this->assertSame('2FqsFfW5xGzooq2fdFTfaa', $node->id()); + $this->assertSame('Hotel', $node->name()); $this->assertSame('boundedContext', $node->type()); $this->assertFalse($node->isLayer()); $this->assertFalse($node->isDefaultLayer()); diff --git a/tests/_files/add_building.json b/tests/_files/add_building.json index a9e2d86..5b0f98c 100644 --- a/tests/_files/add_building.json +++ b/tests/_files/add_building.json @@ -1,7 +1,7 @@ { "node": { - "id": "i5hHo93xQP8cvhdTh25DHq", - "name": "Add Building", + "id": "9bJ5Y7yuBcfWyei7i2ZSDC", + "name": "Add Building\n", "type": "command", "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=9bJ5Y7yuBcfWyei7i2ZSDC&clicks=1", "tags": [], @@ -16,20 +16,37 @@ "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", - "link": null, + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -37,8 +54,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -656, - "y": -320 + "x": 280.5, + "y": 249 }, "metadata": null }, @@ -46,8 +63,8 @@ "sourcesList": [], "targetsList": [ { - "id": "o67B4pXhbDvuF2BnBsBy27", - "name": "Building", + "id": "buTwEKKNLBBo6WAERYN1Gn", + "name": "Building ", "type": "aggregate", "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=buTwEKKNLBBo6WAERYN1Gn&clicks=1", "tags": [], @@ -62,20 +79,37 @@ "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", - "link": null, + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -83,8 +117,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -656, - "y": -320 + "x": 280.5, + "y": 249 }, "metadata": null }, diff --git a/tests/_files/building.json b/tests/_files/building.json index bf4893a..987707f 100644 --- a/tests/_files/building.json +++ b/tests/_files/building.json @@ -1,32 +1,52 @@ { "node": { - "id": "o67B4pXhbDvuF2BnBsBy27", - "name": "Building", + "id": "buTwEKKNLBBo6WAERYN1Gn", + "name": "Building ", "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=buTwEKKNLBBo6WAERYN1Gn&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { "id": "stW5qRRPsQbowcqux7M2QX", "name": "Building", - "type": "boundedContext", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -34,41 +54,61 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -688, - "y": -416 + "x": 280.5, + "y": 249 }, "metadata": null }, "childrenList": [], "sourcesList": [ { - "id": "i5hHo93xQP8cvhdTh25DHq", - "name": "Add Building", + "id": "9bJ5Y7yuBcfWyei7i2ZSDC", + "name": "Add Building\n", "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=9bJ5Y7yuBcfWyei7i2ZSDC&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { "id": "stW5qRRPsQbowcqux7M2QX", "name": "Building", - "type": "boundedContext", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -76,8 +116,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -688, - "y": -416 + "x": 280.5, + "y": 249 }, "metadata": null }, @@ -85,41 +125,61 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": 264, - "y": 224 + "x": 464, + "y": 319 }, - "metadata": "{\n \"newAggregate\": true,\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"buildingId\",\n \"name\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"buildingId\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 2\n }\n }\n }\n}" + "metadata": "{\n \"newAggregate\": true,\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n } \n}\n" } ], "targetsList": [ { - "id": "ctuHbHKF1pwqQfa3VZ1nfz", - "name": "BuildingAdded", + "id": "tF2ZuZCXsdQMhRmRXydfuW", + "name": "Building Added", "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=tF2ZuZCXsdQMhRmRXydfuW&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { "id": "stW5qRRPsQbowcqux7M2QX", "name": "Building", - "type": "boundedContext", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -127,8 +187,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -688, - "y": -416 + "x": 280.5, + "y": 249 }, "metadata": null }, @@ -136,16 +196,16 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": 728, - "y": 224 + "x": 463, + "y": 768 }, - "metadata": null + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" } ], "geometry": { - "x": 504, - "y": 224 + "x": 464, + "y": 544 }, - "metadata": null + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" } } diff --git a/tests/_files/building_added.json b/tests/_files/building_added.json index ec0f140..0249b25 100644 --- a/tests/_files/building_added.json +++ b/tests/_files/building_added.json @@ -1,6 +1,6 @@ { "node": { - "id": "ctuHbHKF1pwqQfa3VZ1nfz", + "id": "tF2ZuZCXsdQMhRmRXydfuW", "name": "Building Added", "type": "event", "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=tF2ZuZCXsdQMhRmRXydfuW&clicks=1", @@ -16,20 +16,37 @@ "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", - "link": null, + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -37,8 +54,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -656, - "y": -320 + "x": 280.5, + "y": 249 }, "metadata": null }, @@ -46,7 +63,7 @@ "sourcesList": [ { "id": "buTwEKKNLBBo6WAERYN1Gn", - "name": "Building", + "name": "Building ", "type": "aggregate", "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=buTwEKKNLBBo6WAERYN1Gn&clicks=1", "tags": [], @@ -61,20 +78,37 @@ "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", - "link": null, + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -82,8 +116,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -656, - "y": -320 + "x": 280.5, + "y": 249 }, "metadata": null }, @@ -100,7 +134,7 @@ "targetsList": [ { "id": "4gYkBjXufnkWMN5ybfBvPq", - "name": "Building", + "name": "Building ", "type": "document", "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=4gYkBjXufnkWMN5ybfBvPq&clicks=1", "tags": [], @@ -115,20 +149,37 @@ "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", - "link": null, + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -136,8 +187,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -656, - "y": -320 + "x": 280.5, + "y": 249 }, "metadata": null }, @@ -148,7 +199,7 @@ "x": 816, "y": 544 }, - "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n} \n" + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"BuildingId\",\n \"name\": \"Name|ns:Building\"\n }\n} \n" } ], "geometry": { diff --git a/tests/_files/building_user.json b/tests/_files/building_user.json index 9e1c304..8f80b96 100644 --- a/tests/_files/building_user.json +++ b/tests/_files/building_user.json @@ -1,32 +1,52 @@ { "node": { - "id": "juqq2zqsYU44UgrAad65Ws", - "name": "Building", + "id": "eiaS8gtsBemMReTNbeNRXj", + "name": "Building ", "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=eiaS8gtsBemMReTNbeNRXj&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { "id": "stW5qRRPsQbowcqux7M2QX", "name": "Building", - "type": "boundedContext", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -34,41 +54,61 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -688, - "y": -416 + "x": 49, + "y": 201 }, "metadata": null }, "childrenList": [], "sourcesList": [ { - "id": "i26gh6vK7QCsNwpvW4CuYX", - "name": "CheckInUser", + "id": "aKvhibi95v18MKjNjb6tL3", + "name": "Check In User\n", "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=aKvhibi95v18MKjNjb6tL3&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { "id": "stW5qRRPsQbowcqux7M2QX", "name": "Building", - "type": "boundedContext", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -76,8 +116,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -688, - "y": -416 + "x": 49, + "y": 201 }, "metadata": null }, @@ -85,41 +125,61 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": 256, - "y": 592 + "x": 736, + "y": 198.5 }, - "metadata": "{\n \"newAggregate\": false,\n \"schema\": {\n \"type\": \"object\",\n \"required\": [\n \"buildingId\",\n \"name\"\n ],\n \"additionalProperties\": false,\n \"properties\": {\n \"buildingId\": {\n \"type\": \"string\",\n \"pattern\": \"^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$\"\n },\n \"name\": {\n \"type\": \"string\",\n \"minLength\": 2\n }\n }\n }\n}" + "metadata": null } ], "targetsList": [ { - "id": "ondJmx9Xo19YLYJk1DqFeL", - "name": "UserCheckedIn", + "id": "q3thtbbiWsgyRqGadCBLte", + "name": "User Checked In", "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=q3thtbbiWsgyRqGadCBLte&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { "id": "stW5qRRPsQbowcqux7M2QX", "name": "Building", - "type": "boundedContext", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -127,8 +187,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -688, - "y": -416 + "x": 49, + "y": 201 }, "metadata": null }, @@ -136,39 +196,59 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": 728, - "y": 480 + "x": 847, + "y": 617.5 }, "metadata": null }, { - "id": "uNMg3RfYfAsdD7pvzt1zY9", - "name": "DoubleCheckInDetected", + "id": "8H79vCoLa3Y2RrpVy7ZMYE", + "name": "Double Check In Detected ", "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=8H79vCoLa3Y2RrpVy7ZMYE&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { "id": "stW5qRRPsQbowcqux7M2QX", "name": "Building", - "type": "boundedContext", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", "tags": [], "layer": false, "defaultLayer": false, "parent": { - "id": "7fe80d19-d317-4e9d-8296-96c598786d78", - "name": "Board", - "type": "layer", + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", "tags": [], - "layer": true, - "defaultLayer": true, - "parent": null, + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, "childrenList": [], "sourcesList": [], "targetsList": [], "geometry": { - "x": 0, - "y": 0 + "x": -993, + "y": -201 }, "metadata": null }, @@ -176,8 +256,8 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": -688, - "y": -416 + "x": 49, + "y": 201 }, "metadata": null }, @@ -185,16 +265,16 @@ "sourcesList": [], "targetsList": [], "geometry": { - "x": 728, - "y": 704 + "x": 640, + "y": 618 }, "metadata": null } ], "geometry": { - "x": 496, - "y": 592 + "x": 736, + "y": 409.5 }, - "metadata": null + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" } } diff --git a/tests/_files/feature_building.json b/tests/_files/feature_building.json new file mode 100644 index 0000000..01ac7c1 --- /dev/null +++ b/tests/_files/feature_building.json @@ -0,0 +1,3459 @@ +{ + "node": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [ + { + "id": "9bJ5Y7yuBcfWyei7i2ZSDC", + "name": "Add Building\n", + "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=9bJ5Y7yuBcfWyei7i2ZSDC&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [ + { + "id": "buTwEKKNLBBo6WAERYN1Gn", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=buTwEKKNLBBo6WAERYN1Gn&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 80, + "y": 409.5 + }, + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + } + ], + "geometry": { + "x": 80, + "y": 184.5 + }, + "metadata": "{\n \"newAggregate\": true,\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n } \n}\n" + }, + { + "id": "buTwEKKNLBBo6WAERYN1Gn", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=buTwEKKNLBBo6WAERYN1Gn&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "9bJ5Y7yuBcfWyei7i2ZSDC", + "name": "Add Building\n", + "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=9bJ5Y7yuBcfWyei7i2ZSDC&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 80, + "y": 184.5 + }, + "metadata": "{\n \"newAggregate\": true,\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n } \n}\n" + } + ], + "targetsList": [ + { + "id": "tF2ZuZCXsdQMhRmRXydfuW", + "name": "Building Added", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=tF2ZuZCXsdQMhRmRXydfuW&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 79, + "y": 633.5 + }, + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + } + ], + "geometry": { + "x": 80, + "y": 409.5 + }, + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + }, + { + "id": "mtUykv9KSfvQEFbZV2PNk3", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=mtUykv9KSfvQEFbZV2PNk3&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "tF2ZuZCXsdQMhRmRXydfuW", + "name": "Building Added", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=tF2ZuZCXsdQMhRmRXydfuW&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "buTwEKKNLBBo6WAERYN1Gn", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=buTwEKKNLBBo6WAERYN1Gn&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 80, + "y": 409.5 + }, + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + } + ], + "targetsList": [ + { + "id": "4gYkBjXufnkWMN5ybfBvPq", + "name": "Building ", + "type": "document", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=4gYkBjXufnkWMN5ybfBvPq&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 432, + "y": 409.5 + }, + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"BuildingId\",\n \"name\": \"Name|ns:Building\"\n }\n} \n" + } + ], + "geometry": { + "x": 79, + "y": 633.5 + }, + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + }, + { + "id": "vW98moff8Nj9iHZgSY3pDw", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=vW98moff8Nj9iHZgSY3pDw&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "4gYkBjXufnkWMN5ybfBvPq", + "name": "Building ", + "type": "document", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=4gYkBjXufnkWMN5ybfBvPq&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "tF2ZuZCXsdQMhRmRXydfuW", + "name": "Building Added", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=tF2ZuZCXsdQMhRmRXydfuW&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 79, + "y": 633.5 + }, + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + } + ], + "targetsList": [ + { + "id": "aKvhibi95v18MKjNjb6tL3", + "name": "Check In User\n", + "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=aKvhibi95v18MKjNjb6tL3&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 736, + "y": 198.5 + }, + "metadata": null + } + ], + "geometry": { + "x": 432, + "y": 409.5 + }, + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"BuildingId\",\n \"name\": \"Name|ns:Building\"\n }\n} \n" + }, + { + "id": "kxMZffLJbbP48EnjX9hDjh", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=kxMZffLJbbP48EnjX9hDjh&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "aKvhibi95v18MKjNjb6tL3", + "name": "Check In User\n", + "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=aKvhibi95v18MKjNjb6tL3&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "4gYkBjXufnkWMN5ybfBvPq", + "name": "Building ", + "type": "document", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=4gYkBjXufnkWMN5ybfBvPq&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 432, + "y": 409.5 + }, + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"BuildingId\",\n \"name\": \"Name|ns:Building\"\n }\n} \n" + } + ], + "targetsList": [ + { + "id": "eiaS8gtsBemMReTNbeNRXj", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=eiaS8gtsBemMReTNbeNRXj&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 736, + "y": 409.5 + }, + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + } + ], + "geometry": { + "x": 736, + "y": 198.5 + }, + "metadata": null + }, + { + "id": "8S8yYUBXEN9nEX4QUvqxNJ", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=8S8yYUBXEN9nEX4QUvqxNJ&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "6LnFVPkNPVDkK8KTJnLBAi", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=6LnFVPkNPVDkK8KTJnLBAi&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "eiaS8gtsBemMReTNbeNRXj", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=eiaS8gtsBemMReTNbeNRXj&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "aKvhibi95v18MKjNjb6tL3", + "name": "Check In User\n", + "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=aKvhibi95v18MKjNjb6tL3&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 736, + "y": 198.5 + }, + "metadata": null + } + ], + "targetsList": [ + { + "id": "q3thtbbiWsgyRqGadCBLte", + "name": "User Checked In", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=q3thtbbiWsgyRqGadCBLte&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 847, + "y": 617.5 + }, + "metadata": null + }, + { + "id": "8H79vCoLa3Y2RrpVy7ZMYE", + "name": "Double Check In Detected ", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=8H79vCoLa3Y2RrpVy7ZMYE&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 640, + "y": 618 + }, + "metadata": null + } + ], + "geometry": { + "x": 736, + "y": 409.5 + }, + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + }, + { + "id": "cWw9Ebuhn8psgpzAr9Tyi7", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=cWw9Ebuhn8psgpzAr9Tyi7&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "kLpw5wkQHPxMUL9j4imCTB", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=kLpw5wkQHPxMUL9j4imCTB&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "q3thtbbiWsgyRqGadCBLte", + "name": "User Checked In", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=q3thtbbiWsgyRqGadCBLte&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "eiaS8gtsBemMReTNbeNRXj", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=eiaS8gtsBemMReTNbeNRXj&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 736, + "y": 409.5 + }, + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + } + ], + "targetsList": [ + { + "id": "t4mMTjg462VRvMW1L6nSGB", + "name": "Users In Building ", + "type": "document", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=t4mMTjg462VRvMW1L6nSGB&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 1040, + "y": 410 + }, + "metadata": null + } + ], + "geometry": { + "x": 847, + "y": 617.5 + }, + "metadata": null + }, + { + "id": "etdC2m78oWsKbYFYGxkXZn", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=etdC2m78oWsKbYFYGxkXZn&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "8L23QRzy31wpkKhsqqTCHZ", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=8L23QRzy31wpkKhsqqTCHZ&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "t4mMTjg462VRvMW1L6nSGB", + "name": "Users In Building ", + "type": "document", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=t4mMTjg462VRvMW1L6nSGB&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "q3thtbbiWsgyRqGadCBLte", + "name": "User Checked In", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=q3thtbbiWsgyRqGadCBLte&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 847, + "y": 617.5 + }, + "metadata": null + } + ], + "targetsList": [ + { + "id": "dkNTGinM6VY1Qu8zyGURU1", + "name": "Check Out User", + "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=dkNTGinM6VY1Qu8zyGURU1&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 1296, + "y": 210.99999999999997 + }, + "metadata": null + } + ], + "geometry": { + "x": 1040, + "y": 410 + }, + "metadata": null + }, + { + "id": "tqXzpKnBmB1rLpr8R2zqJe", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=tqXzpKnBmB1rLpr8R2zqJe&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "dkNTGinM6VY1Qu8zyGURU1", + "name": "Check Out User", + "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=dkNTGinM6VY1Qu8zyGURU1&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "t4mMTjg462VRvMW1L6nSGB", + "name": "Users In Building ", + "type": "document", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=t4mMTjg462VRvMW1L6nSGB&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 1040, + "y": 410 + }, + "metadata": null + } + ], + "targetsList": [ + { + "id": "jKrpwfkdZnT5xMRKMYrgTF", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=jKrpwfkdZnT5xMRKMYrgTF&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 1296, + "y": 410 + }, + "metadata": null + } + ], + "geometry": { + "x": 1296, + "y": 210.99999999999997 + }, + "metadata": null + }, + { + "id": "9DKYrUaQhvFkwZ4DutK5gZ", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=9DKYrUaQhvFkwZ4DutK5gZ&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "jKrpwfkdZnT5xMRKMYrgTF", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=jKrpwfkdZnT5xMRKMYrgTF&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "dkNTGinM6VY1Qu8zyGURU1", + "name": "Check Out User", + "type": "command", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=dkNTGinM6VY1Qu8zyGURU1&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 1296, + "y": 210.99999999999997 + }, + "metadata": null + } + ], + "targetsList": [ + { + "id": "5cVD57Gt2HtxPU6zonD5vx", + "name": "User Checked Out", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=5cVD57Gt2HtxPU6zonD5vx&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 1296.0000000000002, + "y": 618 + }, + "metadata": null + } + ], + "geometry": { + "x": 1296, + "y": 410 + }, + "metadata": null + }, + { + "id": "etP7ZtNMrpQ6eeVByghvo6", + "name": "", + "type": "edge", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=etP7ZtNMrpQ6eeVByghvo6&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + { + "id": "5cVD57Gt2HtxPU6zonD5vx", + "name": "User Checked Out", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=5cVD57Gt2HtxPU6zonD5vx&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "jKrpwfkdZnT5xMRKMYrgTF", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=jKrpwfkdZnT5xMRKMYrgTF&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 1296, + "y": 410 + }, + "metadata": null + } + ], + "targetsList": [ + { + "id": "f9iDWVAz8qT4j37oNzoU1p", + "name": "Building ", + "type": "document", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=f9iDWVAz8qT4j37oNzoU1p&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 1568, + "y": 410 + }, + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"BuildingId\",\n \"name\": \"Name|ns:Building\"\n }\n} \n" + } + ], + "geometry": { + "x": 1296.0000000000002, + "y": 618 + }, + "metadata": null + }, + { + "id": "f9iDWVAz8qT4j37oNzoU1p", + "name": "Building ", + "type": "document", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=f9iDWVAz8qT4j37oNzoU1p&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "5cVD57Gt2HtxPU6zonD5vx", + "name": "User Checked Out", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=5cVD57Gt2HtxPU6zonD5vx&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 1296.0000000000002, + "y": 618 + }, + "metadata": null + } + ], + "targetsList": [], + "geometry": { + "x": 1568, + "y": 410 + }, + "metadata": "{\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"BuildingId\",\n \"name\": \"Name|ns:Building\"\n }\n} \n" + }, + { + "id": "8H79vCoLa3Y2RrpVy7ZMYE", + "name": "Double Check In Detected ", + "type": "event", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=8H79vCoLa3Y2RrpVy7ZMYE&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [ + { + "id": "eiaS8gtsBemMReTNbeNRXj", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=eiaS8gtsBemMReTNbeNRXj&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -993, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 736, + "y": 409.5 + }, + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + } + ], + "targetsList": [], + "geometry": { + "x": 640, + "y": 618 + }, + "metadata": null + } + ], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 49, + "y": 201 + }, + "metadata": null + } +} diff --git a/tests/_files/name_vo.json b/tests/_files/name_vo.json new file mode 100644 index 0000000..2b54d7c --- /dev/null +++ b/tests/_files/name_vo.json @@ -0,0 +1,141 @@ +{ + "node": { + "id": "a4HLmzMb2g2MVQWXy4BKN1", + "name": "Name", + "type": "document", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=a4HLmzMb2g2MVQWXy4BKN1&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -1680, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 288, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [ + { + "id": "buTwEKKNLBBo6WAERYN1Gn", + "name": "Building ", + "type": "aggregate", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=buTwEKKNLBBo6WAERYN1Gn&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "stW5qRRPsQbowcqux7M2QX", + "name": "Building", + "type": "feature", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=stW5qRRPsQbowcqux7M2QX&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "2FqsFfW5xGzooq2fdFTfaa", + "name": "Hotel", + "type": "boundedContext", + "link": "https://inspect.event-engine.io/inspectio/board/3fc5479e-cf3c-459a-96fd-5b62d002f843?cells=2FqsFfW5xGzooq2fdFTfaa&clicks=1", + "tags": [], + "layer": false, + "defaultLayer": false, + "parent": { + "id": "7fe80d19-d317-4e9d-8296-96c598786d78", + "name": "Board", + "type": "layer", + "link": null, + "tags": [], + "layer": true, + "defaultLayer": true, + "parent": null, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 0, + "y": 0 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": -1680, + "y": -201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 288, + "y": 201 + }, + "metadata": null + }, + "childrenList": [], + "sourcesList": [], + "targetsList": [], + "geometry": { + "x": 528, + "y": 409.5 + }, + "metadata": "{\n \"identifier\": \"buildingId\",\n \"shorthand\": true,\n \"schema\": {\n \"buildingId\": \"string|format:uuid\",\n \"name\": \"string\"\n }\n}" + } + ], + "geometry": { + "x": 224, + "y": 419.5 + }, + "metadata": "{\n \"shorthand\": true,\n \"schema\": \"string|ns:Building\"\n} \n" + } +}