From 049c18f80fae7eeca45ac1c5d8329f1c92cb27c6 Mon Sep 17 00:00:00 2001 From: Arthur Daussy Date: Mon, 18 May 2026 19:00:21 +0200 Subject: [PATCH] [2194] Properly report feedback messages while moving elements in GV Bug: https://github.com/eclipse-syson/syson/issues/2194 Signed-off-by: Arthur Daussy --- CHANGELOG.adoc | 1 + .../general/view/GVForbiddenMoveTests.java | 178 ++++++++++++++++ .../DropNodesWithMessageMutationRunner.java | 60 ++++++ .../testers/EdgeReconnectionTester.java | 19 +- .../data/GVWithReadOnlyNodesProjectData.java | 44 ++++ .../SysMLv2-WithReadOnlyNode.sql | 100 +++++++++ .../services/DiagramMutationMoveService.java | 47 ++++- .../DiagramMutationMoveServiceTest.java | 106 ++++++++++ .../services/api/ISysONExplorerService.java | 105 +++++++++ .../common/view/services/ViewToolService.java | 42 +++- .../view/services/ViewToolServiceTest.java | 199 ++++++++++++++++++ .../view/handlers/DropTreeItemHandler.java | 22 +- .../pages/release-notes/2026.7.0.adoc | 1 + 13 files changed, 902 insertions(+), 22 deletions(-) create mode 100644 backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVForbiddenMoveTests.java create mode 100644 backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/DropNodesWithMessageMutationRunner.java create mode 100644 backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/GVWithReadOnlyNodesProjectData.java create mode 100644 backend/application/syson-application/src/test/resources/scripts/database-content/SysMLv2-WithReadOnlyNode.sql create mode 100644 backend/services/syson-diagram-services/src/test/java/org/eclipse/syson/diagram/services/DiagramMutationMoveServiceTest.java create mode 100644 backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/services/ViewToolServiceTest.java diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 63db67bd6..a3bfa9d1e 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -17,6 +17,7 @@ === Improvements - https://github.com/eclipse-syson/syson/issues/2198[#2198] [diagrams] Improve diagram-to-diagram drag and drop to support dropping multiple graphical nodes at once, leveraging Sirius Web's `droppedNodes` and `droppedElements` variables. +- https://github.com/eclipse-syson/syson/issues/2194[#2194] [diagrams] Properly report feedback messages to user when using _ISysMLMoveElementService_. === New features diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVForbiddenMoveTests.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVForbiddenMoveTests.java new file mode 100644 index 000000000..ed3a64160 --- /dev/null +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/general/view/GVForbiddenMoveTests.java @@ -0,0 +1,178 @@ +/******************************************************************************* + * Copyright (c) 2026 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.application.controllers.diagrams.general.view; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.eclipse.sirius.components.diagrams.tests.DiagramEventPayloadConsumer.assertRefreshedDiagramThat; + +import com.jayway.jsonpath.Configuration; +import com.jayway.jsonpath.DocumentContext; +import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.TypeRef; +import com.jayway.jsonpath.spi.json.JacksonJsonProvider; +import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider; + +import java.time.Duration; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Consumer; + +import org.eclipse.sirius.components.collaborative.diagrams.dto.DiagramEventInput; +import org.eclipse.sirius.components.collaborative.diagrams.dto.DiagramRefreshedEventPayload; +import org.eclipse.sirius.components.collaborative.diagrams.dto.DropNodesInput; +import org.eclipse.sirius.components.diagrams.Diagram; +import org.eclipse.sirius.components.diagrams.events.ReconnectEdgeKind; +import org.eclipse.sirius.components.diagrams.layoutdata.Position; +import org.eclipse.sirius.components.graphql.tests.api.GraphQLResult; +import org.eclipse.sirius.components.representations.Message; +import org.eclipse.sirius.components.representations.MessageLevel; +import org.eclipse.sirius.web.tests.services.api.IGivenInitialServerState; +import org.eclipse.syson.AbstractIntegrationTests; +import org.eclipse.syson.GivenSysONServer; +import org.eclipse.syson.application.controllers.diagrams.checkers.CheckDiagramElementCount; +import org.eclipse.syson.application.controllers.diagrams.testers.DropNodesWithMessageMutationRunner; +import org.eclipse.syson.application.controllers.diagrams.testers.EdgeReconnectionTester; +import org.eclipse.syson.application.data.GVWithReadOnlyNodesProjectData; +import org.eclipse.syson.services.diagrams.DiagramComparator; +import org.eclipse.syson.services.diagrams.api.IGivenDiagramSubscription; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; + +import reactor.core.publisher.Flux; +import reactor.test.StepVerifier; + +/** + * Tests the feedback messages returned after forbidden move or edge reconnection resulting in a move operation. + * + * @author Arthur Daussy + */ +@Transactional +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class GVForbiddenMoveTests extends AbstractIntegrationTests { + + @Autowired + private IGivenInitialServerState givenInitialServerState; + + @Autowired + private IGivenDiagramSubscription givenDiagramSubscription; + + @Autowired + private EdgeReconnectionTester edgeReconnectionTester; + + @Autowired + private DropNodesWithMessageMutationRunner dropRunner; + + @Autowired + private DiagramComparator diagramComparator; + + @BeforeEach + public void setUp() { + this.givenInitialServerState.initialize(); + } + + @DisplayName("GIVEN composite edge, WHEN when reconnecting to a read only source, THEN no new edge is created and a feedback message is reported") + @GivenSysONServer({ GVWithReadOnlyNodesProjectData.SCRIPT_PATH }) + @Test + public void reconnectCompositeEdgeSourceToReadOnlyObject() { + var flux = this.givenSubscriptionToDiagram(GVWithReadOnlyNodesProjectData.EDITING_CONTEXT_ID); + + AtomicReference diagram = new AtomicReference<>(); + Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); + + Runnable reconnectEdgeRunnable = this.buildReconnectRunnable( + GVWithReadOnlyNodesProjectData.GraphicalIds.PART_ID, + ReconnectEdgeKind.SOURCE, + diagram, + List.of(new Message("Unable to move part2 in Part: Unable to move a Element to a read only Element", MessageLevel.WARNING))); + + Consumer newEdgeConsumer = assertRefreshedDiagramThat(newDiagram -> { + new CheckDiagramElementCount(this.diagramComparator) + .hasNewEdgeCount(0) + .check(diagram.get(), newDiagram, true); + }); + + StepVerifier.create(flux) + .consumeNextWith(initialDiagramContentConsumer) + .then(reconnectEdgeRunnable) + .consumeNextWith(newEdgeConsumer) + .thenCancel() + .verify(Duration.ofSeconds(10)); + + } + + @DisplayName("GIVEN a part and a read only package, WHEN when dropping the part on the read only package, THEN the drop should be prevented and a feedback message should be sent") + @GivenSysONServer({ GVWithReadOnlyNodesProjectData.SCRIPT_PATH }) + @Test + public void moveElementToReadOnlyElement() { + var flux = this.givenSubscriptionToDiagram(GVWithReadOnlyNodesProjectData.EDITING_CONTEXT_ID); + + AtomicReference diagram = new AtomicReference<>(); + Consumer initialDiagramContentConsumer = assertRefreshedDiagramThat(diagram::set); + + Runnable dropPartOnPartsRunnable = () -> { + GraphQLResult response = this.dropRunner.run(new DropNodesInput(UUID.randomUUID(), + GVWithReadOnlyNodesProjectData.EDITING_CONTEXT_ID, + GVWithReadOnlyNodesProjectData.GraphicalIds.DIAGRAM_ID, + List.of(GVWithReadOnlyNodesProjectData.GraphicalIds.PART1_ID), + GVWithReadOnlyNodesProjectData.GraphicalIds.PARTS_PKG_ID, + List.of(new Position(0, 0)))); + + assertThat(this.readDropNodesMessages(response.data())) + .isEqualTo(List.of(new Message("Unable to move part1 in Parts: Unable to move a Element to a read only Element", MessageLevel.WARNING))); + }; + Consumer newEdgeConsumer = assertRefreshedDiagramThat(newDiagram -> { + new CheckDiagramElementCount(this.diagramComparator) + .hasNewEdgeCount(0) + .hasNewNodeCount(0) + .check(diagram.get(), newDiagram, true); + }); + + StepVerifier.create(flux) + .consumeNextWith(initialDiagramContentConsumer) + .then(dropPartOnPartsRunnable) + .consumeNextWith(newEdgeConsumer) + .thenCancel() + .verify(Duration.ofSeconds(10)); + + } + + private List readDropNodesMessages(String responseData) { + Configuration conf = Configuration.builder() + .jsonProvider(new JacksonJsonProvider()) + .mappingProvider(new JacksonMappingProvider()) + .build(); + DocumentContext ctx = JsonPath.using(conf).parse(responseData); + return ctx.read("$.data.dropNodes.messages", new TypeRef>() { + }); + } + + private Runnable buildReconnectRunnable(String newTarget, ReconnectEdgeKind reconnectionKind, AtomicReference diagram, List expectedMessages) { + return () -> + assertThat( + this.edgeReconnectionTester.reconnectEdge(GVWithReadOnlyNodesProjectData.EDITING_CONTEXT_ID, + diagram, + GVWithReadOnlyNodesProjectData.GraphicalIds.NESTED_USAGE_EDGE, + newTarget, + reconnectionKind)).isEqualTo(expectedMessages); + } + + private Flux givenSubscriptionToDiagram(String editingContextId) { + var diagramEventInput = new DiagramEventInput(UUID.randomUUID(), editingContextId, GVWithReadOnlyNodesProjectData.GraphicalIds.DIAGRAM_ID); + return this.givenDiagramSubscription.subscribe(diagramEventInput); + } +} diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/DropNodesWithMessageMutationRunner.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/DropNodesWithMessageMutationRunner.java new file mode 100644 index 000000000..bfcc9825d --- /dev/null +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/DropNodesWithMessageMutationRunner.java @@ -0,0 +1,60 @@ +/******************************************************************************* + * Copyright (c) 2026 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.application.controllers.diagrams.testers; + +import java.util.Objects; + +import org.eclipse.sirius.components.collaborative.diagrams.dto.DropNodesInput; +import org.eclipse.sirius.components.graphql.tests.api.GraphQLResult; +import org.eclipse.sirius.components.graphql.tests.api.IGraphQLRequestor; +import org.eclipse.sirius.components.graphql.tests.api.IMutationRunner; +import org.springframework.stereotype.Service; +/** + * Same as {@link org.eclipse.sirius.components.diagrams.tests.graphql.DropNodesMutationRunner} but with feedback messages. + * + * @author Arthur Daussy + */ +@Service +public class DropNodesWithMessageMutationRunner implements IMutationRunner { + private static final String DROP_NODE_MUTATION = """ + mutation dropNodes($input: DropNodesInput!) { + dropNodes(input: $input) { + __typename + ... on SuccessPayload { + messages { + body + level + } + } + ... on ErrorPayload { + message + messages { + body + level + } + } + } + } + """; + + private final IGraphQLRequestor graphQLRequestor; + + public DropNodesWithMessageMutationRunner(IGraphQLRequestor graphQLRequestor) { + this.graphQLRequestor = Objects.requireNonNull(graphQLRequestor); + } + + @Override + public GraphQLResult run(DropNodesInput input) { + return this.graphQLRequestor.execute(DROP_NODE_MUTATION, input); + } +} diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/EdgeReconnectionTester.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/EdgeReconnectionTester.java index 45d31cbb3..87e5a8de5 100644 --- a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/EdgeReconnectionTester.java +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/controllers/diagrams/testers/EdgeReconnectionTester.java @@ -14,8 +14,14 @@ import static org.assertj.core.api.Assertions.assertThat; +import com.jayway.jsonpath.Configuration; +import com.jayway.jsonpath.DocumentContext; import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.TypeRef; +import com.jayway.jsonpath.spi.json.JacksonJsonProvider; +import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider; +import java.util.List; import java.util.UUID; import java.util.concurrent.atomic.AtomicReference; @@ -24,6 +30,7 @@ import org.eclipse.sirius.components.diagrams.Diagram; import org.eclipse.sirius.components.diagrams.events.ReconnectEdgeKind; import org.eclipse.sirius.components.diagrams.tests.graphql.ReconnectEdgeMutationRunner; +import org.eclipse.sirius.components.representations.Message; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -38,7 +45,7 @@ public class EdgeReconnectionTester { @Autowired private ReconnectEdgeMutationRunner reconnectEdgeMutationRunner; - public void reconnectEdge(String projectId, AtomicReference diagram, String edgeId, String newEdgeEnd, ReconnectEdgeKind reconnectEdgeKind) { + public List reconnectEdge(String projectId, AtomicReference diagram, String edgeId, String newEdgeEnd, ReconnectEdgeKind reconnectEdgeKind) { var reconnectEdgeInput = new ReconnectEdgeInput( UUID.randomUUID(), projectId, @@ -51,6 +58,16 @@ public void reconnectEdge(String projectId, AtomicReference diagram, St var createEdgeResult = this.reconnectEdgeMutationRunner.run(reconnectEdgeInput); var typename = JsonPath.read(createEdgeResult.data(), "$.data.reconnectEdge.__typename"); assertThat(typename).isEqualTo(SuccessPayload.class.getSimpleName()); + + // Return feedback messages + Configuration conf = Configuration.builder() + .jsonProvider(new JacksonJsonProvider()) + .mappingProvider(new JacksonMappingProvider()) + .build(); + DocumentContext ctx = JsonPath.using(conf).parse(createEdgeResult.data()); + return ctx.read("$.data.reconnectEdge.messages", new TypeRef>() { + }); + } } diff --git a/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/GVWithReadOnlyNodesProjectData.java b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/GVWithReadOnlyNodesProjectData.java new file mode 100644 index 000000000..aa47e5a34 --- /dev/null +++ b/backend/application/syson-application/src/test/java/org/eclipse/syson/application/data/GVWithReadOnlyNodesProjectData.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2026 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.application.data; + +/** + * Project data for project "SysMLv2-WithReadOnlyNode". + * + * @author Arthur Daussy + */ +public class GVWithReadOnlyNodesProjectData { + + public static final String SCRIPT_PATH = "/scripts/database-content/SysMLv2-WithReadOnlyNode.sql"; + + public static final String EDITING_CONTEXT_ID = "6e261505-a9ee-49df-8695-20c43a748d51"; + + /** + * Ids of graphical elements. + */ + public static final class GraphicalIds { + + public static final String DIAGRAM_ID = "032613cb-2bbb-41be-857a-2687a3901b91"; + + public static final String PART_ID = "d4c076f3-8158-39e5-849d-39ab4e6e9e1a"; + + public static final String PART1_ID = "7b744096-f831-3aa8-8728-c2f61bc52f73"; + + public static final String PARTS_PAR_ID = "34c0a2e2-6bf4-3e76-8cf6-8bbaea855a3a"; + + public static final String PARTS_PKG_ID = "592ab045-03de-3f13-9812-5541588848c8"; + + public static final String NESTED_USAGE_EDGE = "5755ae43-957a-3513-b64a-cc2776759a7b"; + + } +} diff --git a/backend/application/syson-application/src/test/resources/scripts/database-content/SysMLv2-WithReadOnlyNode.sql b/backend/application/syson-application/src/test/resources/scripts/database-content/SysMLv2-WithReadOnlyNode.sql new file mode 100644 index 000000000..eacf51091 --- /dev/null +++ b/backend/application/syson-application/src/test/resources/scripts/database-content/SysMLv2-WithReadOnlyNode.sql @@ -0,0 +1,100 @@ +-- +-- PostgreSQL database dump +-- + +-- Dumped from database version 18.3 (Debian 18.3-1.pgdg13+1) +-- Dumped by pg_dump version 18.0 + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET idle_in_transaction_session_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET xmloption = content; +SET client_min_messages = warning; +SET row_security = off; + +-- +-- Data for Name: semantic_data; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.semantic_data (id, created_on, last_modified_on) VALUES ('6e261505-a9ee-49df-8695-20c43a748d51', '2026-05-18 12:29:47.80198+00', '2026-05-18 12:34:01.460469+00'); + + +-- +-- Data for Name: document; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.document (id, semantic_data_id, name, content, created_on, last_modified_on, is_read_only) VALUES ('e3f6d6ae-95f9-448a-9803-3fe88f5280ff', '6e261505-a9ee-49df-8695-20c43a748d51', 'SysMLv2-WithOnlyNode.sysml', '{"json":{"version":"1.0","encoding":"utf-8"},"ns":{"sysml":"http://www.eclipse.org/syson/sysml"},"migration":{"lastMigrationPerformed":"none","migrationVersion":"2026.5.0-202603171430"},"content":[{"id":"e41b89b6-85ed-47f0-9962-53a187c51031","eClass":"sysml:Namespace","data":{"elementId":"1a5e540a-2e76-4fea-ab3d-bfeb7ba7b97b","ownedRelationship":[{"id":"47f5429e-7bb0-4e1d-a083-a26e75a67acd","eClass":"sysml:OwningMembership","data":{"elementId":"4cb2823f-4f04-4d27-968c-0526e3987aa2","ownedRelatedElement":[{"id":"a9391bc9-6cfc-4c7f-82cb-e45525e4832a","eClass":"sysml:Package","data":{"declaredName":"Package1","elementId":"665fd519-2702-486d-bcb4-575f45dc05fc","ownedRelationship":[{"id":"8f9ec64c-9171-465c-8503-778e6427b0e2","eClass":"sysml:OwningMembership","data":{"elementId":"4a34183a-bb84-45a6-92ad-3663469e49e3","ownedRelatedElement":[{"id":"1cffc5b0-0da8-4eaa-b7c0-d6c6519ebfcf","eClass":"sysml:ViewUsage","data":{"declaredName":"view1","elementId":"662592f8-43ed-4ba0-84db-33ce74ce1a9e","ownedRelationship":[{"id":"06e68137-6c0a-4017-ad5f-e5396dbd5a64","eClass":"sysml:FeatureTyping","data":{"elementId":"d449bfb9-ef59-4e75-a161-b2eea730a994","type":"sysml:ViewDefinition sysmllibrary:///faf517ae-dbcd-30a4-b3b9-3d9cb3bbf5c1#03904fdf-d6f2-57b1-92d5-95d36b8208dc","typedFeature":"1cffc5b0-0da8-4eaa-b7c0-d6c6519ebfcf"}},{"id":"4274d3b8-acf4-4083-afab-a647e716c40e","eClass":"sysml:MembershipExpose","data":{"elementId":"d6126bdc-a579-4bbf-9e31-001779e966c1","isImportAll":true,"visibility":"protected","importedMembership":"sysml:OwningMembership sysmllibrary:///aaa2616e-4ab8-307b-8c03-04cd78bf022d#620595d0-953a-58eb-a0e6-1ec5ced81c7a"}},{"id":"2dcbcb10-c157-4bfd-b7f9-47f0fbb4145c","eClass":"sysml:MembershipExpose","data":{"elementId":"07ba06d8-fa88-42bf-96e3-e4bbfec5c4b2","isImportAll":true,"visibility":"protected","importedMembership":"sysml:OwningMembership sysmllibrary:///aaa2616e-4ab8-307b-8c03-04cd78bf022d#7d4fe0b6-2f19-5aab-b809-2cba36089e64"}},{"id":"1eccdf72-72cc-4e8f-afb2-205a058e9361","eClass":"sysml:MembershipExpose","data":{"elementId":"58b202c9-06a5-4450-871a-2a2b4df320c5","isImportAll":true,"visibility":"protected","importedMembership":"sysml:OwningMembership sysmllibrary:///aaa2616e-4ab8-307b-8c03-04cd78bf022d#f5f213ed-4f88-534e-b47d-248f9e9709b7"}},{"id":"addb5945-8f45-49cf-a707-409688c4a9a5","eClass":"sysml:MembershipExpose","data":{"elementId":"575aa958-184a-4534-9988-3ebfdf6ab894","isImportAll":true,"visibility":"protected","importedMembership":"88d50770-e812-4098-bcf6-e6793e6c0c8d"}},{"id":"4ee57719-c1a8-49e3-8929-ed1e496bb9a9","eClass":"sysml:MembershipExpose","data":{"elementId":"8cfd8249-6cc8-4fac-8df8-7e205be25d1e","isImportAll":true,"visibility":"protected","importedMembership":"9220e029-13a1-42e8-b496-953b327598c1"}}]}}]}},{"id":"9220e029-13a1-42e8-b496-953b327598c1","eClass":"sysml:OwningMembership","data":{"elementId":"a2e4d57f-2855-49db-945e-e7aeab1eb8c1","ownedRelatedElement":[{"id":"178a6e91-1e23-450f-a080-41a5b7a34885","eClass":"sysml:PartUsage","data":{"declaredName":"part2","elementId":"e0eeecba-6180-4e01-b685-2ce27789885a","ownedRelationship":[{"id":"88d50770-e812-4098-bcf6-e6793e6c0c8d","eClass":"sysml:FeatureMembership","data":{"elementId":"62dcdf7f-46db-4857-9fc7-e91776143eed","ownedRelatedElement":[{"id":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","eClass":"sysml:PartUsage","data":{"declaredName":"part1","elementId":"aad0506b-dc8f-46a9-b4db-e94dd3c6e6a3","isComposite":true}}]}}],"isComposite":true}}]}}]}}]}}]}}]}', '2026-05-18 12:34:01.460469+00', '2026-05-18 12:34:01.460469+00', false); + + +-- +-- Data for Name: image; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: library; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: project; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.project (id, name, created_on, last_modified_on) VALUES ('f59b20ab-6ffb-4105-9001-1deddfe11e32', 'SysMLv2-WithOnlyNode', '2026-05-18 12:29:47.785569+00', '2026-05-18 12:29:47.785569+00'); + + +-- +-- Data for Name: nature; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: project_image; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: project_semantic_data; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.project_semantic_data (id, project_id, semantic_data_id, name, created_on, last_modified_on) VALUES ('36789662-0f45-4836-8c7a-32dfcf9af47b', 'f59b20ab-6ffb-4105-9001-1deddfe11e32', '6e261505-a9ee-49df-8695-20c43a748d51', 'main', '2026-05-18 12:29:47.825101+00', '2026-05-18 12:29:47.825101+00'); + + +-- +-- Data for Name: representation_metadata; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.representation_metadata (id, target_object_id, description_id, label, kind, created_on, last_modified_on, documentation, semantic_data_id, representation_metadata_id) VALUES ('6e261505-a9ee-49df-8695-20c43a748d51#032613cb-2bbb-41be-857a-2687a3901b91', '1cffc5b0-0da8-4eaa-b7c0-d6c6519ebfcf', 'siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089', 'view1', 'siriusComponents://representation?type=Diagram', '2026-05-18 12:29:48.231647+00', '2026-05-18 12:29:48.231647+00', '', '6e261505-a9ee-49df-8695-20c43a748d51', '032613cb-2bbb-41be-857a-2687a3901b91'); + + +-- +-- Data for Name: representation_content; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.representation_content (id, content, last_migration_performed, migration_version, created_on, last_modified_on, semantic_data_id, representation_metadata_id) VALUES ('6e261505-a9ee-49df-8695-20c43a748d51#032613cb-2bbb-41be-857a-2687a3901b91', '{"id":"032613cb-2bbb-41be-857a-2687a3901b91","kind":"siriusComponents://representation?type=Diagram","targetObjectId":"1cffc5b0-0da8-4eaa-b7c0-d6c6519ebfcf","descriptionId":"siriusComponents://representationDescription?kind=diagramDescription&sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=db495705-e917-319b-af55-a32ad63f4089","nodes":[{"id":"592ab045-03de-3f13-9812-5541588848c8","type":"customnode:sysmlpackage","targetObjectId":"6890ef7c-3613-5738-88c2-483f356d3ee5","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=LibraryPackage","targetObjectLabel":"Parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c0ac286a-69c6-389a-9635-a559ec3e942d","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"1436c617-972a-3f98-999e-b697b9e8e908","text":"Parts","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/LibraryPackage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"ELLIPSIS","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[{"id":"d4c076f3-8158-39e5-849d-39ab4e6e9e1a","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=52de5719-4873-3c76-8e5b-8d94900d4b7f","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"3a3dbac9-47b3-3cea-97fc-c454d4217086","text":"«abstract»\n«part def»\nPart :> Items::Item","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartDefinition.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"IF_CHILDREN","overflowStrategy":"WRAP","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":false,"topGap":0,"bottomGap":0,"growableNodeIds":["siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5"],"kind":"List"}},"borderNodes":[{"id":"da23c900-98c0-38ae-a4f0-fe1d7ab425d2","type":"node:rectangle","targetObjectId":"f369e0d6-4bba-5d84-8d3c-abda5e337f89","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PortUsage","targetObjectLabel":"ownedPorts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c86ab75a-b52a-3e59-ae85-1327f3ed8d7a","borderNode":true,"initialBorderNodePosition":"EAST","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":null,"outsideLabels":[{"id":"96424af6-6735-317b-92b7-63a644cb0f1a","text":"ownedPorts : Ports::Port :> Ports::ports","outsideLabelLocation":"BOTTOM_MIDDLE","style":{"color":"#000000","fontSize":12,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"overflowStrategy":"NONE","textAlign":"LEFT","customizedStyleProperties":[]}],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":10,"defaultHeight":10,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"childNodes":[{"id":"beb4fba9-7ba8-3570-9ecc-4b0003c99f2b","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=32da1a41-7187-3da3-ae52-f3cfc927b133","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"e66706f9-47c8-3c3c-bdcb-0a497434945f","text":"doc","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"de8fa0fe-a1f9-3f4a-a3ee-024b7f7d5e1c","type":"node:icon-label","targetObjectId":"5814f068-4f5b-56ff-9794-301b8f4aeb52","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=Documentation","targetObjectLabel":"Documentation","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=23973f7a-2187-3580-a836-28dd7fa6e5a4","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"1bcbf913-b4e1-363d-a539-2a5da0aece3e","text":"Part is the most general class of objects that represent all or a part of a system.\nPart is the base type of all PartDefinitions.\n","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/Documentation.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"f1b85eb4-38b3-3cd4-a2bc-9767195fc2a2","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=1d4e3253-3981-3d8a-9887-b887114e3a3e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"04f528f2-08ee-37fd-878d-43c6f138516d","text":"attributes","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"51da9f03-0c2b-3ae4-adcd-91eee074ebce","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a677fbe5-68e8-3949-beab-d96b632c4cc0","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"449156fc-e3a5-308f-9d61-634afe48c88e","text":"ports","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"ae4d82e7-d7b6-30ff-bc67-a8c29766d74e","type":"node:icon-label","targetObjectId":"f369e0d6-4bba-5d84-8d3c-abda5e337f89","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PortUsage","targetObjectLabel":"ownedPorts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a00860fb-f304-3ed8-ab86-c9f1bbfdf671","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"9f8d8c4f-c84a-3071-a5b1-8824a15e456f","text":"abstract ref ownedPorts [0..*] : Ports::Port :> Ports::ports","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PortUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"5bc7f3f5-876e-38f5-bdc6-13a4dc8d09da","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=d1db77ad-fee0-3c33-bfe1-db84f9fbd027","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"97f9724f-ce38-3ccd-8276-ff2c5a0c7934","text":"actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"55e15e75-8a6e-3fb7-98fa-9941d4d4ec4c","type":"node:icon-label","targetObjectId":"0856ed9f-5115-58b3-a51f-ba54aca3dce5","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=ActionUsage","targetObjectLabel":"performedActions","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=b33ffdab-3544-346b-835f-a6c1f9912254","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"e88a9b07-fced-3778-822c-b2087666b41c","text":"abstract ref performedActions [0..*] : Actions::Action :> Actions::actions","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/ActionUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"8990d79b-cf0a-3454-880d-2b2f66a9f1b8","type":"node:icon-label","targetObjectId":"bfd5fb0e-e87b-51ea-a438-6a93d18b05a1","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=ActionUsage","targetObjectLabel":"ownedActions","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=b33ffdab-3544-346b-835f-a6c1f9912254","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"a81d2531-0d87-3877-9ffc-7581b381d900","text":"abstract ownedActions [0..*] : Actions::Action :> Actions::actions","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/ActionUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"17d962df-f15a-32f8-b3f7-67e83f9982eb","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=9777340c-1189-3b0c-a56c-be11ea9f7a9e","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"5bb46356-5e00-31c9-8101-0efe341ecc98","text":"parts","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"5e65ab70-45f5-3e36-8663-6f378e526dd5","type":"node:icon-label","targetObjectId":"ed80d442-d498-5236-96ae-71a8a52531d2","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"start","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=ffbd7493-0c66-37a4-8f65-553909e72712","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"c64bc44c-a4c4-301b-8bb6-f4bff6b2dcd2","text":"start : Parts::Part :>> Items::Item::start","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"60b30a3b-85bd-3aa9-b37b-e3f3493545e3","type":"node:icon-label","targetObjectId":"dd677401-a352-5fe3-846a-dad08d3eab06","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"done","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=ffbd7493-0c66-37a4-8f65-553909e72712","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"8f8c8f3f-1501-31b6-b1b7-eee1b714eb54","text":"done : Parts::Part :>> Items::Item::done","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"9dd628f8-9f57-318a-93b8-05fa232e92be","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=55d4b9e8-0e72-318b-9548-34ed7657c16c","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"03a7d155-b391-3579-bb7f-14a5ccd7f7f2","text":"action flow","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"0edc343e-d9f8-33d5-8d1a-76d615436499","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bbf5f364-e67f-3e69-9918-9eb94cc9d724","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"426d2da2-ac82-3b73-b557-ca6cc8f59043","text":"state transition","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"e935a19d-5de5-34df-991a-5a76c55768ce","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=ba122573-ae0d-378c-9949-7622f6057511","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"dbf0bd2d-476f-322f-9458-9411e75f87fd","text":"states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"9a2f68ce-e9f3-3db1-a21b-0a2136143ee8","type":"node:icon-label","targetObjectId":"4e03b9fa-285a-54dd-8378-40c5e90d0e00","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=StateUsage","targetObjectLabel":"exhibitedStates","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=b195672d-4bc0-37e2-aef9-bdca65fceb4d","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"3a1b2c89-cee7-30b8-a9bc-677ae6f1db1d","text":"abstract ref exhibitedStates [0..*] : States::StateAction :> States::stateActions","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/StateUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"23db765a-8e93-3b77-8b8b-9f0158d2aea9","type":"node:icon-label","targetObjectId":"8917eb36-28b8-5dfe-8880-663f5bc02c10","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=StateUsage","targetObjectLabel":"ownedStates","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=b195672d-4bc0-37e2-aef9-bdca65fceb4d","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"4246c73e-363a-3556-b1fc-dc37ccf6fe3b","text":"abstract ownedStates [0..*] : States::StateAction :> States::stateActions","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/StateUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"bbbb13d8-e5a7-3679-8cca-784bd638abb8","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=cbf68c65-4d8f-32ca-ac84-92fec0dbb646","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"7ec5a3aa-9b87-31d9-a3b9-94c7741704d7","text":"exhibit states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"c0f63aff-173d-3027-929d-a1c277dfac1a","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=3868c242-24f7-3a1d-956f-21bd7488b2b6","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"a47364df-8bf6-3a15-a5d6-668144f31ce4","text":"perform actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"8c52d6cc-4540-3da9-96d9-343ed6b8c1ca","type":"node:rectangle","targetObjectId":"0774a545-39e3-5bc1-9607-63beabc6bf65","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartDefinition","targetObjectLabel":"Part","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=29c432fc-0cf3-3758-aa94-cedab4551f5d","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"a5c6dd85-c363-3498-8f99-5261241a720c","text":"satisfy requirements","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":208,"defaultHeight":70,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"34c0a2e2-6bf4-3e76-8cf6-8bbaea855a3a","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bd119f62-45c5-3868-9727-9f954e05e4fa","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"6dc6ca95-9bde-3b56-871b-0fb78bd3c627","text":"«abstract»\n«ref part»\nparts[0..*] : Parts::Part :> Items::items","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"IF_CHILDREN","overflowStrategy":"WRAP","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":10,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":false,"topGap":0,"bottomGap":0,"growableNodeIds":["siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=30a9de2f-14f9-3de6-b68e-06b79b675555","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c47f5c71-1cc7-3f23-8c03-c335c2d13c66","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5"],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"60a5f38e-0c52-3141-82be-2b04aa1330d3","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c901d8ce-4c57-3ede-8fdb-3c5aa91b67ba","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"b7f2053a-1e0f-31cf-8875-38eea3ee8ebd","text":"doc","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"2aaefb1f-1caa-3f7d-be1b-b5d03995e3fe","type":"node:icon-label","targetObjectId":"d99aae51-5ccf-53ce-a8f0-a6510c4c6fb9","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=Documentation","targetObjectLabel":"Documentation","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=4b99c088-3963-3beb-a9b6-3c181c191dfd","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"85df26c2-453e-3919-adf6-d3a750cd21a0","text":"parts is the base feature of all part properties.\n","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/Documentation.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"5a6764b2-3183-313b-8f66-29eefef03e3e","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a1300415-10e4-37bb-87ed-206ec95079f0","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"11fb706a-74f4-336b-b73b-89cbdd2c073d","text":"attributes","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"e86a3b56-5744-3104-9a74-44debab40439","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=f664d1f2-e48d-3f5a-a073-141fc0ddc418","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"738c3f7c-e359-3f3f-9ca5-d54639f7b2a9","text":"actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"c0947b02-d3b7-3e5f-a40e-72b1c3a05fe1","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=84aaf577-0758-3fd6-b85c-a4ced98d2836","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"45faa773-0590-330e-8ddf-7483a9f07439","text":"parts","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"cf1b0d5d-c258-350a-9b59-acecabf49bee","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=cc126737-2324-3253-ae11-37d5b0dee7b9","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"a368ac71-3ad6-3e39-a6ec-7171aa68117d","text":"ports","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"be4b7b9e-7174-39f1-b889-028e5b1d0c4a","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=30a9de2f-14f9-3de6-b68e-06b79b675555","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"2882d2f2-f822-380b-abeb-20d2e9f8d34f","text":"action flow","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"f9aa69d8-972a-3a2e-a813-5ca639619a90","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c47f5c71-1cc7-3f23-8c03-c335c2d13c66","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"da65ab24-dab6-357d-8816-f1d0a3ecb457","text":"state transition","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"2486c0c3-15c3-3b34-9cb0-06a637ec8d77","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c97028bb-f0ba-3e9e-97a6-170cb6345d62","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"2f53d198-dc65-36b6-8722-2a63cf1a6882","text":"states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"5db11884-7636-3772-a1fd-753d7eb8319c","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a57f3491-bd3e-38c6-bb8b-b0a4b570bd3a","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"42fbd3f3-3a95-33ba-969c-63339aad98d3","text":"exhibit states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"c0667436-56d6-34c0-9e62-c4f17417df7a","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=fe94bbc6-f9c3-34cb-90fa-34a6701f9c17","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"238a7d31-1cda-38d4-b59b-51a40450b270","text":"perform actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"0d33acbb-46a5-36e4-9bb8-92cc4943ade8","type":"node:rectangle","targetObjectId":"0c6a9942-4bb9-58da-8344-57ecd220d4de","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"parts","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=f7099844-752b-31cc-b373-5dc40a5a71b8","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"e5248851-7774-347d-8c39-7e04a1898a3c","text":"satisfy requirements","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":194,"defaultHeight":60,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":200,"defaultHeight":101,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"7b744096-f831-3aa8-8728-c2f61bc52f73","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bd119f62-45c5-3868-9727-9f954e05e4fa","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"08c88632-dc01-3389-840c-73b7d9a10301","text":"«part»\npart1","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"IF_CHILDREN","overflowStrategy":"WRAP","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":10,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":false,"topGap":0,"bottomGap":0,"growableNodeIds":["siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=30a9de2f-14f9-3de6-b68e-06b79b675555","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c47f5c71-1cc7-3f23-8c03-c335c2d13c66","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5"],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"5b48d269-a58d-3a19-a210-6c5d0a782be6","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c901d8ce-4c57-3ede-8fdb-3c5aa91b67ba","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"c0459a3b-f114-300a-b858-9c4749d07af6","text":"doc","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"650547e7-668c-31e9-9ff9-51c6148a59eb","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a1300415-10e4-37bb-87ed-206ec95079f0","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"7e2ce9d0-3889-364c-93da-9097e0d22dda","text":"attributes","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"0ed10a02-8050-3116-9a8a-62ea7355e476","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=f664d1f2-e48d-3f5a-a073-141fc0ddc418","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"2e28c670-8ac5-392e-8b8f-cb6c06617bc4","text":"actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"19b28682-1195-32ca-89d1-96700c7561ae","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=84aaf577-0758-3fd6-b85c-a4ced98d2836","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"5d2ad0ff-f1e2-3cf6-8d1a-4a5ccfc37977","text":"parts","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"1f3f6da2-b76e-3544-ba47-4bb5a7c7f547","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=cc126737-2324-3253-ae11-37d5b0dee7b9","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"5eedc784-8db7-382a-90f1-f7e39407990c","text":"ports","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"afd62964-9791-3ff4-bf42-be9f3f2c546b","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=30a9de2f-14f9-3de6-b68e-06b79b675555","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"df882471-ecfe-3d8d-8086-40eb3b35f304","text":"action flow","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"2f515b5a-ee13-353c-af9d-eccb745789f8","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c47f5c71-1cc7-3f23-8c03-c335c2d13c66","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"ec6fe96a-ced3-3d85-824b-b2eb04cda148","text":"state transition","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"1fe7ed5f-3e03-3d49-8cf0-413c840fcccc","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c97028bb-f0ba-3e9e-97a6-170cb6345d62","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"0f3096ac-cda0-3ed4-9057-37dee384f700","text":"states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"743647f3-7a30-31c0-b3d7-d3da3777be7c","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a57f3491-bd3e-38c6-bb8b-b0a4b570bd3a","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"17350d58-5efe-3a2c-8c4e-71ec26e3ac84","text":"exhibit states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"5ff16cca-9074-30d8-99b1-6df080e4a720","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=fe94bbc6-f9c3-34cb-90fa-34a6701f9c17","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"7699c5fd-0328-373a-b61e-609f1031d756","text":"perform actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"f603a912-fa35-35c0-9b1d-2b08d6facb63","type":"node:rectangle","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=f7099844-752b-31cc-b373-5dc40a5a71b8","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"52775f44-6eec-3aef-a809-5cc5968284ed","text":"satisfy requirements","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":194,"defaultHeight":60,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"4b369914-522d-3b3e-b688-34f6f57b32e6","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=bd119f62-45c5-3868-9727-9f954e05e4fa","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Normal","collapsingState":"EXPANDED","insideLabel":{"id":"35fac64d-c31b-3401-a3a4-b7ff5e077c11","text":"«part»\npart2","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"IF_CHILDREN","overflowStrategy":"WRAP","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"#ffffff","borderColor":"#000000","borderSize":1,"borderRadius":10,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":false,"topGap":0,"bottomGap":0,"growableNodeIds":["siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=30a9de2f-14f9-3de6-b68e-06b79b675555","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c47f5c71-1cc7-3f23-8c03-c335c2d13c66","siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=6f8d80de-d97e-34a4-80ab-320ebefe26f5"],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"4c0a4cf4-48fa-37af-8776-73ab96bb624c","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c901d8ce-4c57-3ede-8fdb-3c5aa91b67ba","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"160b4898-3e50-3169-a8f4-b91eadf5d7e2","text":"doc","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"6948c07b-efd2-3708-8bdb-7a3f2dc1701a","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a1300415-10e4-37bb-87ed-206ec95079f0","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"89176bee-b86c-3e39-8c4d-3cd135cf81ed","text":"attributes","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"8599a357-1b93-36bd-8333-41aedaafa454","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=f664d1f2-e48d-3f5a-a073-141fc0ddc418","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"5544bb2d-d601-318b-9b46-05866b04b48b","text":"actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"7e4bc4a3-3ee5-374c-b8b3-b50ed07bf9d4","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=84aaf577-0758-3fd6-b85c-a4ced98d2836","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"be6a46ba-f016-3550-a518-60e0f95a0e8a","text":"parts","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[{"id":"359bef34-b5e6-36ee-8c78-80037461671a","type":"node:icon-label","targetObjectId":"fd365e5f-05b7-4c12-a9f2-91abdbe29db7","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part1","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=892af7b9-5576-3b0b-84a4-f43e461677ec","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":[],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"3e024747-2335-39d4-9c6e-86e9a9808033","text":"part1","insideLabelLocation":"TOP_LEFT","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":["/icons/full/obj16/PartUsage.svg"],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":false,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"WRAP","textAlign":"LEFT","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":15,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"93203abe-fca9-3ea3-b1c3-45637b10d03e","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=cc126737-2324-3253-ae11-37d5b0dee7b9","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"e6592db2-eebe-339c-942c-15ef5460a814","text":"ports","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"12dac29d-2414-351d-a8b9-ad3161bcb479","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=30a9de2f-14f9-3de6-b68e-06b79b675555","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"fe69e4fc-feed-3ac2-9df8-9b45b1d952df","text":"action flow","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"6f3ad91f-6a8f-32a0-9c81-942247d57e01","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c47f5c71-1cc7-3f23-8c03-c335c2d13c66","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"8ce757f6-8728-3849-b173-666294f722d3","text":"state transition","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"kind":"FreeForm"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":150,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"56ff967a-8602-348a-8649-83d373bf7ae1","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=c97028bb-f0ba-3e9e-97a6-170cb6345d62","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"f469ef6e-df9d-3d2b-85a2-509a36b5504a","text":"states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"3d918f94-8927-3d7f-9c26-8875379b7156","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=a57f3491-bd3e-38c6-bb8b-b0a4b570bd3a","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"b32121c3-cbf0-33a3-a15b-7cd1eb11fb47","text":"exhibit states","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"1226cece-6ebe-3f67-9fd9-8d56f6800f70","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=fe94bbc6-f9c3-34cb-90fa-34a6701f9c17","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"8991c77d-2e57-3735-87e6-9133efb62cc7","text":"perform actions","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]},{"id":"7761bb11-e80b-320c-941c-8a3344ca2928","type":"node:rectangle","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://nodeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=f7099844-752b-31cc-b373-5dc40a5a71b8","borderNode":false,"initialBorderNodePosition":"NONE","modifiers":["Hidden"],"state":"Hidden","collapsingState":"EXPANDED","insideLabel":{"id":"33fde8f7-c603-350d-a082-8f1328f0f40e","text":"satisfy requirements","insideLabelLocation":"TOP_CENTER","style":{"color":"#000000","fontSize":12,"bold":false,"italic":true,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"isHeader":true,"headerSeparatorDisplayMode":"NEVER","overflowStrategy":"NONE","textAlign":"CENTER","customizedStyleProperties":[]},"outsideLabels":[],"style":{"background":"transparent","borderColor":"#000000","borderSize":1,"borderRadius":0,"borderStyle":"Solid","childrenLayoutStrategy":{"areChildNodesDraggable":true,"topGap":0,"bottomGap":10,"growableNodeIds":[],"kind":"List"}},"borderNodes":[],"childNodes":[],"defaultWidth":155,"defaultHeight":60,"labelEditable":false,"deletable":false,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"defaultWidth":194,"defaultHeight":60,"labelEditable":true,"deletable":true,"pinned":false,"customizedStyleProperties":[],"decorators":[]}],"edges":[{"id":"5755ae43-957a-3513-b64a-cc2776759a7b","type":"edge:straight","targetObjectId":"178a6e91-1e23-450f-a080-41a5b7a34885","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=PartUsage","targetObjectLabel":"part2","descriptionId":"siriusComponents://edgeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=919980e7-dd23-3ff4-9b86-ad2baa653052","beginLabel":null,"centerLabel":{"id":"3067ce75-631b-3a4f-a484-136561b68405","type":"label:edge-center","text":"","style":{"color":"#000000","fontSize":14,"bold":false,"italic":false,"underline":false,"strikeThrough":false,"iconURL":[],"background":"transparent","borderColor":"black","borderSize":0,"borderRadius":3,"borderStyle":"Solid","maxWidth":null,"visibility":"visible"},"customizedStyleProperties":[]},"endLabel":null,"sourceId":"4b369914-522d-3b3e-b688-34f6f57b32e6","targetId":"7b744096-f831-3aa8-8728-c2f61bc52f73","modifiers":[],"state":"Normal","style":{"size":1,"lineStyle":"Solid","sourceArrow":"FillDiamond","targetArrow":"None","color":"#000000","edgeType":"Manhattan"},"centerLabelEditable":true,"deletable":true,"customizedStyleProperties":[]},{"id":"3cbcb503-30b2-3f1a-b1bd-469e0635e832","type":"edge:straight","targetObjectId":"535b1868-e8b2-5b5b-aa0e-52d5c434d56a","targetObjectKind":"siriusComponents://semantic?domain=sysml&entity=FeatureTyping","targetObjectLabel":"FeatureTyping","descriptionId":"siriusComponents://edgeDescription?sourceKind=view&sourceId=8dcd14b0-6259-3193-ad2c-743f394c68e4&sourceElementId=2b13316a-930e-3a51-bcdf-e71b0b0b965a","beginLabel":null,"centerLabel":null,"endLabel":null,"sourceId":"34c0a2e2-6bf4-3e76-8cf6-8bbaea855a3a","targetId":"d4c076f3-8158-39e5-849d-39ab4e6e9e1a","modifiers":[],"state":"Normal","style":{"size":1,"lineStyle":"Solid","sourceArrow":"None","targetArrow":"ClosedArrowWithDots","color":"#000000","edgeType":"Manhattan"},"centerLabelEditable":false,"deletable":true,"customizedStyleProperties":[]}],"layoutData":{"nodeLayoutData":{"8990d79b-cf0a-3454-880d-2b2f66a9f1b8":{"id":"8990d79b-cf0a-3454-880d-2b2f66a9f1b8","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"34c0a2e2-6bf4-3e76-8cf6-8bbaea855a3a":{"id":"34c0a2e2-6bf4-3e76-8cf6-8bbaea855a3a","position":{"x":55.53515624999994,"y":45.99406486518447},"size":{"width":194.0,"height":105.4765625},"resizedByUser":false,"movedByUser":true,"handleLayoutData":[{"edgeId":"3cbcb503-30b2-3f1a-b1bd-469e0635e832","position":{"x":97.0,"y":0.0},"handlePosition":"bottom","type":"source"}],"minComputedSize":{"width":2.0,"height":105.4765625}},"592ab045-03de-3f13-9812-5541588848c8":{"id":"592ab045-03de-3f13-9812-5541588848c8","position":{"x":266.0,"y":-45.0},"size":{"width":616.0,"height":361.0},"resizedByUser":true,"movedByUser":true,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"de8fa0fe-a1f9-3f4a-a3ee-024b7f7d5e1c":{"id":"de8fa0fe-a1f9-3f4a-a3ee-024b7f7d5e1c","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"1226cece-6ebe-3f67-9fd9-8d56f6800f70":{"id":"1226cece-6ebe-3f67-9fd9-8d56f6800f70","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"cf1b0d5d-c258-350a-9b59-acecabf49bee":{"id":"cf1b0d5d-c258-350a-9b59-acecabf49bee","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"c0f63aff-173d-3027-929d-a1c277dfac1a":{"id":"c0f63aff-173d-3027-929d-a1c277dfac1a","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"e86a3b56-5744-3104-9a74-44debab40439":{"id":"e86a3b56-5744-3104-9a74-44debab40439","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"51da9f03-0c2b-3ae4-adcd-91eee074ebce":{"id":"51da9f03-0c2b-3ae4-adcd-91eee074ebce","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"650547e7-668c-31e9-9ff9-51c6148a59eb":{"id":"650547e7-668c-31e9-9ff9-51c6148a59eb","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"0d33acbb-46a5-36e4-9bb8-92cc4943ade8":{"id":"0d33acbb-46a5-36e4-9bb8-92cc4943ade8","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"8599a357-1b93-36bd-8333-41aedaafa454":{"id":"8599a357-1b93-36bd-8333-41aedaafa454","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"5ff16cca-9074-30d8-99b1-6df080e4a720":{"id":"5ff16cca-9074-30d8-99b1-6df080e4a720","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"7b744096-f831-3aa8-8728-c2f61bc52f73":{"id":"7b744096-f831-3aa8-8728-c2f61bc52f73","position":{"x":12.0,"y":152.0},"size":{"width":194.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[{"edgeId":"5755ae43-957a-3513-b64a-cc2776759a7b","position":{"x":97.0,"y":0.0},"handlePosition":"top","type":"target"}],"minComputedSize":{"width":2.0,"height":52.9765625}},"2f515b5a-ee13-353c-af9d-eccb745789f8":{"id":"2f515b5a-ee13-353c-af9d-eccb745789f8","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"4b369914-522d-3b3e-b688-34f6f57b32e6":{"id":"4b369914-522d-3b3e-b688-34f6f57b32e6","position":{"x":12.0,"y":12.0},"size":{"width":194.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[{"edgeId":"5755ae43-957a-3513-b64a-cc2776759a7b","position":{"x":97.0,"y":0.0},"handlePosition":"bottom","type":"source"}],"minComputedSize":{"width":2.0,"height":52.9765625}},"f9aa69d8-972a-3a2e-a813-5ca639619a90":{"id":"f9aa69d8-972a-3a2e-a813-5ca639619a90","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"0ed10a02-8050-3116-9a8a-62ea7355e476":{"id":"0ed10a02-8050-3116-9a8a-62ea7355e476","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"6948c07b-efd2-3708-8bdb-7a3f2dc1701a":{"id":"6948c07b-efd2-3708-8bdb-7a3f2dc1701a","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"5a6764b2-3183-313b-8f66-29eefef03e3e":{"id":"5a6764b2-3183-313b-8f66-29eefef03e3e","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"c0667436-56d6-34c0-9e62-c4f17417df7a":{"id":"c0667436-56d6-34c0-9e62-c4f17417df7a","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"60a5f38e-0c52-3141-82be-2b04aa1330d3":{"id":"60a5f38e-0c52-3141-82be-2b04aa1330d3","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"55e15e75-8a6e-3fb7-98fa-9941d4d4ec4c":{"id":"55e15e75-8a6e-3fb7-98fa-9941d4d4ec4c","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"d4c076f3-8158-39e5-849d-39ab4e6e9e1a":{"id":"d4c076f3-8158-39e5-849d-39ab4e6e9e1a","position":{"x":94.53515625,"y":222.2265625},"size":{"width":208.0,"height":70.0},"resizedByUser":false,"movedByUser":true,"handleLayoutData":[{"edgeId":"3cbcb503-30b2-3f1a-b1bd-469e0635e832","position":{"x":66.0,"y":0.0},"handlePosition":"top","type":"target"}],"minComputedSize":{"width":2.0,"height":26.0}},"3d918f94-8927-3d7f-9c26-8875379b7156":{"id":"3d918f94-8927-3d7f-9c26-8875379b7156","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"1fe7ed5f-3e03-3d49-8cf0-413c840fcccc":{"id":"1fe7ed5f-3e03-3d49-8cf0-413c840fcccc","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"6f3ad91f-6a8f-32a0-9c81-942247d57e01":{"id":"6f3ad91f-6a8f-32a0-9c81-942247d57e01","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"be4b7b9e-7174-39f1-b889-028e5b1d0c4a":{"id":"be4b7b9e-7174-39f1-b889-028e5b1d0c4a","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"56ff967a-8602-348a-8649-83d373bf7ae1":{"id":"56ff967a-8602-348a-8649-83d373bf7ae1","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"359bef34-b5e6-36ee-8c78-80037461671a":{"id":"359bef34-b5e6-36ee-8c78-80037461671a","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"0edc343e-d9f8-33d5-8d1a-76d615436499":{"id":"0edc343e-d9f8-33d5-8d1a-76d615436499","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"60b30a3b-85bd-3aa9-b37b-e3f3493545e3":{"id":"60b30a3b-85bd-3aa9-b37b-e3f3493545e3","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"93203abe-fca9-3ea3-b1c3-45637b10d03e":{"id":"93203abe-fca9-3ea3-b1c3-45637b10d03e","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"19b28682-1195-32ca-89d1-96700c7561ae":{"id":"19b28682-1195-32ca-89d1-96700c7561ae","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"5e65ab70-45f5-3e36-8663-6f378e526dd5":{"id":"5e65ab70-45f5-3e36-8663-6f378e526dd5","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"f603a912-fa35-35c0-9b1d-2b08d6facb63":{"id":"f603a912-fa35-35c0-9b1d-2b08d6facb63","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"bbbb13d8-e5a7-3679-8cca-784bd638abb8":{"id":"bbbb13d8-e5a7-3679-8cca-784bd638abb8","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"7e4bc4a3-3ee5-374c-b8b3-b50ed07bf9d4":{"id":"7e4bc4a3-3ee5-374c-b8b3-b50ed07bf9d4","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"4c0a4cf4-48fa-37af-8776-73ab96bb624c":{"id":"4c0a4cf4-48fa-37af-8776-73ab96bb624c","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"c0947b02-d3b7-3e5f-a40e-72b1c3a05fe1":{"id":"c0947b02-d3b7-3e5f-a40e-72b1c3a05fe1","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"afd62964-9791-3ff4-bf42-be9f3f2c546b":{"id":"afd62964-9791-3ff4-bf42-be9f3f2c546b","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"5db11884-7636-3772-a1fd-753d7eb8319c":{"id":"5db11884-7636-3772-a1fd-753d7eb8319c","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"beb4fba9-7ba8-3570-9ecc-4b0003c99f2b":{"id":"beb4fba9-7ba8-3570-9ecc-4b0003c99f2b","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"1f3f6da2-b76e-3544-ba47-4bb5a7c7f547":{"id":"1f3f6da2-b76e-3544-ba47-4bb5a7c7f547","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"da23c900-98c0-38ae-a4f0-fe1d7ab425d2":{"id":"da23c900-98c0-38ae-a4f0-fe1d7ab425d2","position":{"x":203.0,"y":8.0},"size":{"width":10.0,"height":10.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":2.5,"height":2.5}},"8c52d6cc-4540-3da9-96d9-343ed6b8c1ca":{"id":"8c52d6cc-4540-3da9-96d9-343ed6b8c1ca","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"9dd628f8-9f57-318a-93b8-05fa232e92be":{"id":"9dd628f8-9f57-318a-93b8-05fa232e92be","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"5b48d269-a58d-3a19-a210-6c5d0a782be6":{"id":"5b48d269-a58d-3a19-a210-6c5d0a782be6","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"2aaefb1f-1caa-3f7d-be1b-b5d03995e3fe":{"id":"2aaefb1f-1caa-3f7d-be1b-b5d03995e3fe","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"743647f3-7a30-31c0-b3d7-d3da3777be7c":{"id":"743647f3-7a30-31c0-b3d7-d3da3777be7c","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"7761bb11-e80b-320c-941c-8a3344ca2928":{"id":"7761bb11-e80b-320c-941c-8a3344ca2928","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"17d962df-f15a-32f8-b3f7-67e83f9982eb":{"id":"17d962df-f15a-32f8-b3f7-67e83f9982eb","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"e935a19d-5de5-34df-991a-5a76c55768ce":{"id":"e935a19d-5de5-34df-991a-5a76c55768ce","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"f1b85eb4-38b3-3cd4-a2bc-9767195fc2a2":{"id":"f1b85eb4-38b3-3cd4-a2bc-9767195fc2a2","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"2486c0c3-15c3-3b34-9cb0-06a637ec8d77":{"id":"2486c0c3-15c3-3b34-9cb0-06a637ec8d77","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"9a2f68ce-e9f3-3db1-a21b-0a2136143ee8":{"id":"9a2f68ce-e9f3-3db1-a21b-0a2136143ee8","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"23db765a-8e93-3b77-8b8b-9f0158d2aea9":{"id":"23db765a-8e93-3b77-8b8b-9f0158d2aea9","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"5bc7f3f5-876e-38f5-bdc6-13a4dc8d09da":{"id":"5bc7f3f5-876e-38f5-bdc6-13a4dc8d09da","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":60.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"ae4d82e7-d7b6-30ff-bc67-a8c29766d74e":{"id":"ae4d82e7-d7b6-30ff-bc67-a8c29766d74e","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":15.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}},"12dac29d-2414-351d-a8b9-ad3161bcb479":{"id":"12dac29d-2414-351d-a8b9-ad3161bcb479","position":{"x":0.0,"y":0.0},"size":{"width":155.0,"height":150.0},"resizedByUser":false,"movedByUser":false,"handleLayoutData":[],"minComputedSize":{"width":0.0,"height":0.0}}},"edgeLayoutData":{"3cbcb503-30b2-3f1a-b1bd-469e0635e832":{"id":"3cbcb503-30b2-3f1a-b1bd-469e0635e832","bendingPoints":[],"relativePositionBendingPoints":[],"edgeAnchorLayoutData":[]},"5755ae43-957a-3513-b64a-cc2776759a7b":{"id":"5755ae43-957a-3513-b64a-cc2776759a7b","bendingPoints":[],"relativePositionBendingPoints":[],"edgeAnchorLayoutData":[]}},"labelLayoutData":{"8991c77d-2e57-3735-87e6-9133efb62cc7":{"id":"8991c77d-2e57-3735-87e6-9133efb62cc7","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"11fb706a-74f4-336b-b73b-89cbdd2c073d":{"id":"11fb706a-74f4-336b-b73b-89cbdd2c073d","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"dbf0bd2d-476f-322f-9458-9411e75f87fd":{"id":"dbf0bd2d-476f-322f-9458-9411e75f87fd","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"449156fc-e3a5-308f-9d61-634afe48c88e":{"id":"449156fc-e3a5-308f-9d61-634afe48c88e","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"52775f44-6eec-3aef-a809-5cc5968284ed":{"id":"52775f44-6eec-3aef-a809-5cc5968284ed","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"ec6fe96a-ced3-3d85-824b-b2eb04cda148":{"id":"ec6fe96a-ced3-3d85-824b-b2eb04cda148","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"42fbd3f3-3a95-33ba-969c-63339aad98d3":{"id":"42fbd3f3-3a95-33ba-969c-63339aad98d3","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"5eedc784-8db7-382a-90f1-f7e39407990c":{"id":"5eedc784-8db7-382a-90f1-f7e39407990c","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"3e024747-2335-39d4-9c6e-86e9a9808033":{"id":"3e024747-2335-39d4-9c6e-86e9a9808033","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"8f8c8f3f-1501-31b6-b1b7-eee1b714eb54":{"id":"8f8c8f3f-1501-31b6-b1b7-eee1b714eb54","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"7e2ce9d0-3889-364c-93da-9097e0d22dda":{"id":"7e2ce9d0-3889-364c-93da-9097e0d22dda","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"9f8d8c4f-c84a-3071-a5b1-8824a15e456f":{"id":"9f8d8c4f-c84a-3071-a5b1-8824a15e456f","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"b32121c3-cbf0-33a3-a15b-7cd1eb11fb47":{"id":"b32121c3-cbf0-33a3-a15b-7cd1eb11fb47","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"a47364df-8bf6-3a15-a5d6-668144f31ce4":{"id":"a47364df-8bf6-3a15-a5d6-668144f31ce4","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"7699c5fd-0328-373a-b61e-609f1031d756":{"id":"7699c5fd-0328-373a-b61e-609f1031d756","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"e66706f9-47c8-3c3c-bdcb-0a497434945f":{"id":"e66706f9-47c8-3c3c-bdcb-0a497434945f","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"5544bb2d-d601-318b-9b46-05866b04b48b":{"id":"5544bb2d-d601-318b-9b46-05866b04b48b","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"96424af6-6735-317b-92b7-63a644cb0f1a":{"id":"96424af6-6735-317b-92b7-63a644cb0f1a","position":{"x":113.767578125,"y":-11.875},"size":{"width":213.53515625,"height":13.75},"resizedByUser":false,"movedByUser":false},"33fde8f7-c603-350d-a082-8f1328f0f40e":{"id":"33fde8f7-c603-350d-a082-8f1328f0f40e","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"03a7d155-b391-3579-bb7f-14a5ccd7f7f2":{"id":"03a7d155-b391-3579-bb7f-14a5ccd7f7f2","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"5d2ad0ff-f1e2-3cf6-8d1a-4a5ccfc37977":{"id":"5d2ad0ff-f1e2-3cf6-8d1a-4a5ccfc37977","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"85df26c2-453e-3919-adf6-d3a750cd21a0":{"id":"85df26c2-453e-3919-adf6-d3a750cd21a0","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"35fac64d-c31b-3401-a3a4-b7ff5e077c11":{"id":"35fac64d-c31b-3401-a3a4-b7ff5e077c11","position":{"x":0.0,"y":0.0},"size":{"width":95.0390625,"height":50.9765625},"resizedByUser":false,"movedByUser":false},"e6592db2-eebe-339c-942c-15ef5460a814":{"id":"e6592db2-eebe-339c-942c-15ef5460a814","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"2e28c670-8ac5-392e-8b8f-cb6c06617bc4":{"id":"2e28c670-8ac5-392e-8b8f-cb6c06617bc4","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"df882471-ecfe-3d8d-8086-40eb3b35f304":{"id":"df882471-ecfe-3d8d-8086-40eb3b35f304","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"b7f2053a-1e0f-31cf-8875-38eea3ee8ebd":{"id":"b7f2053a-1e0f-31cf-8875-38eea3ee8ebd","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"1436c617-972a-3f98-999e-b697b9e8e908":{"id":"1436c617-972a-3f98-999e-b697b9e8e908","position":{"x":0.0,"y":0.0},"size":{"width":89.90234375,"height":33.4765625},"resizedByUser":false,"movedByUser":false},"89176bee-b86c-3e39-8c4d-3cd135cf81ed":{"id":"89176bee-b86c-3e39-8c4d-3cd135cf81ed","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"7ec5a3aa-9b87-31d9-a3b9-94c7741704d7":{"id":"7ec5a3aa-9b87-31d9-a3b9-94c7741704d7","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"a368ac71-3ad6-3e39-a6ec-7171aa68117d":{"id":"a368ac71-3ad6-3e39-a6ec-7171aa68117d","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"6dc6ca95-9bde-3b56-871b-0fb78bd3c627":{"id":"6dc6ca95-9bde-3b56-871b-0fb78bd3c627","position":{"x":0.0,"y":0.0},"size":{"width":191.9921875,"height":103.4765625},"resizedByUser":false,"movedByUser":false},"3a1b2c89-cee7-30b8-a9bc-677ae6f1db1d":{"id":"3a1b2c89-cee7-30b8-a9bc-677ae6f1db1d","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"fe69e4fc-feed-3ac2-9df8-9b45b1d952df":{"id":"fe69e4fc-feed-3ac2-9df8-9b45b1d952df","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"97f9724f-ce38-3ccd-8276-ff2c5a0c7934":{"id":"97f9724f-ce38-3ccd-8276-ff2c5a0c7934","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"da65ab24-dab6-357d-8816-f1d0a3ecb457":{"id":"da65ab24-dab6-357d-8816-f1d0a3ecb457","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"be6a46ba-f016-3550-a518-60e0f95a0e8a":{"id":"be6a46ba-f016-3550-a518-60e0f95a0e8a","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"1bcbf913-b4e1-363d-a539-2a5da0aece3e":{"id":"1bcbf913-b4e1-363d-a539-2a5da0aece3e","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"c0459a3b-f114-300a-b858-9c4749d07af6":{"id":"c0459a3b-f114-300a-b858-9c4749d07af6","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"45faa773-0590-330e-8ddf-7483a9f07439":{"id":"45faa773-0590-330e-8ddf-7483a9f07439","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"0f3096ac-cda0-3ed4-9057-37dee384f700":{"id":"0f3096ac-cda0-3ed4-9057-37dee384f700","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"8ce757f6-8728-3849-b173-666294f722d3":{"id":"8ce757f6-8728-3849-b173-666294f722d3","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"a5c6dd85-c363-3498-8f99-5261241a720c":{"id":"a5c6dd85-c363-3498-8f99-5261241a720c","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"238a7d31-1cda-38d4-b59b-51a40450b270":{"id":"238a7d31-1cda-38d4-b59b-51a40450b270","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"2882d2f2-f822-380b-abeb-20d2e9f8d34f":{"id":"2882d2f2-f822-380b-abeb-20d2e9f8d34f","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"04f528f2-08ee-37fd-878d-43c6f138516d":{"id":"04f528f2-08ee-37fd-878d-43c6f138516d","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"3a3dbac9-47b3-3cea-97fc-c454d4217086":{"id":"3a3dbac9-47b3-3cea-97fc-c454d4217086","position":{"x":0.0,"y":0.0},"size":{"width":172.3046875,"height":68.4765625},"resizedByUser":false,"movedByUser":false},"e5248851-7774-347d-8c39-7e04a1898a3c":{"id":"e5248851-7774-347d-8c39-7e04a1898a3c","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"e88a9b07-fced-3778-822c-b2087666b41c":{"id":"e88a9b07-fced-3778-822c-b2087666b41c","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"2f53d198-dc65-36b6-8722-2a63cf1a6882":{"id":"2f53d198-dc65-36b6-8722-2a63cf1a6882","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"08c88632-dc01-3389-840c-73b7d9a10301":{"id":"08c88632-dc01-3389-840c-73b7d9a10301","position":{"x":0.0,"y":0.0},"size":{"width":95.0390625,"height":50.9765625},"resizedByUser":false,"movedByUser":false},"160b4898-3e50-3169-a8f4-b91eadf5d7e2":{"id":"160b4898-3e50-3169-a8f4-b91eadf5d7e2","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"738c3f7c-e359-3f3f-9ca5-d54639f7b2a9":{"id":"738c3f7c-e359-3f3f-9ca5-d54639f7b2a9","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"c64bc44c-a4c4-301b-8bb6-f4bff6b2dcd2":{"id":"c64bc44c-a4c4-301b-8bb6-f4bff6b2dcd2","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"5bb46356-5e00-31c9-8101-0efe341ecc98":{"id":"5bb46356-5e00-31c9-8101-0efe341ecc98","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"4246c73e-363a-3556-b1fc-dc37ccf6fe3b":{"id":"4246c73e-363a-3556-b1fc-dc37ccf6fe3b","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"426d2da2-ac82-3b73-b557-ca6cc8f59043":{"id":"426d2da2-ac82-3b73-b557-ca6cc8f59043","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"a81d2531-0d87-3877-9ffc-7581b381d900":{"id":"a81d2531-0d87-3877-9ffc-7581b381d900","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"3067ce75-631b-3a4f-a484-136561b68405":{"id":"3067ce75-631b-3a4f-a484-136561b68405","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"17350d58-5efe-3a2c-8c4e-71ec26e3ac84":{"id":"17350d58-5efe-3a2c-8c4e-71ec26e3ac84","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false},"f469ef6e-df9d-3d2b-85a2-509a36b5504a":{"id":"f469ef6e-df9d-3d2b-85a2-509a36b5504a","position":{"x":0.0,"y":0.0},"size":{"width":0.0,"height":0.0},"resizedByUser":false,"movedByUser":false}},"autoLaidOut":false},"style":{"background":"transparent"}}', 'EdgeHandleLayoutDataRelativePositionBendingPointsMigrationParticipant', '2026.5.0-202604141050', '2026-05-18 12:29:48.248756+00', '2026-05-18 12:34:14.410238+00', '6e261505-a9ee-49df-8695-20c43a748d51', '032613cb-2bbb-41be-857a-2687a3901b91'); + + +-- +-- Data for Name: semantic_data_dependency; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + + + +-- +-- Data for Name: semantic_data_domain; Type: TABLE DATA; Schema: public; Owner: dbuser +-- + +INSERT INTO public.semantic_data_domain (semantic_data_id, uri) VALUES ('6e261505-a9ee-49df-8695-20c43a748d51', 'http://www.eclipse.org/syson/sysml'); + + +-- +-- PostgreSQL database dump complete +-- + diff --git a/backend/services/syson-diagram-services/src/main/java/org/eclipse/syson/diagram/services/DiagramMutationMoveService.java b/backend/services/syson-diagram-services/src/main/java/org/eclipse/syson/diagram/services/DiagramMutationMoveService.java index 529a9cc9c..b318d22f3 100644 --- a/backend/services/syson-diagram-services/src/main/java/org/eclipse/syson/diagram/services/DiagramMutationMoveService.java +++ b/backend/services/syson-diagram-services/src/main/java/org/eclipse/syson/diagram/services/DiagramMutationMoveService.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2025 Obeo. + * Copyright (c) 2025, 2026 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -12,15 +12,23 @@ *******************************************************************************/ package org.eclipse.syson.diagram.services; +import java.text.MessageFormat; import java.util.Map; import java.util.Objects; +import org.eclipse.emf.ecore.EObject; import org.eclipse.sirius.components.collaborative.diagrams.DiagramContext; import org.eclipse.sirius.components.core.api.IEditingContext; +import org.eclipse.sirius.components.core.api.IFeedbackMessageService; +import org.eclipse.sirius.components.core.api.ILabelService; +import org.eclipse.sirius.components.core.api.labels.StyledString; import org.eclipse.sirius.components.diagrams.Node; import org.eclipse.sirius.components.diagrams.description.NodeDescription; +import org.eclipse.sirius.components.representations.Message; +import org.eclipse.sirius.components.representations.MessageLevel; import org.eclipse.syson.services.DeleteService; import org.eclipse.syson.services.api.ISysMLMoveElementService; +import org.eclipse.syson.services.api.MoveStatus; import org.eclipse.syson.sysml.ConstraintUsage; import org.eclipse.syson.sysml.Element; import org.eclipse.syson.sysml.OwningMembership; @@ -37,6 +45,10 @@ @Service public class DiagramMutationMoveService { + private final IFeedbackMessageService feedbackMessageService; + + private final ILabelService labelService; + private final ISysMLMoveElementService moveService; private final DiagramMutationExposeService diagramMutationElementService; @@ -45,7 +57,10 @@ public class DiagramMutationMoveService { private final DeleteService deleteService; - public DiagramMutationMoveService(ISysMLMoveElementService moveService, DiagramMutationExposeService diagramMutationElementService, DiagramQueryElementService diagramQueryElementService) { + public DiagramMutationMoveService(IFeedbackMessageService feedbackMessageService, ILabelService labelService, ISysMLMoveElementService moveService, + DiagramMutationExposeService diagramMutationElementService, DiagramQueryElementService diagramQueryElementService) { + this.feedbackMessageService = Objects.requireNonNull(feedbackMessageService); + this.labelService = Objects.requireNonNull(labelService); this.moveService = Objects.requireNonNull(moveService); this.diagramMutationElementService = Objects.requireNonNull(diagramMutationElementService); this.diagramQueryElementService = Objects.requireNonNull(diagramQueryElementService); @@ -54,12 +69,17 @@ public DiagramMutationMoveService(ISysMLMoveElementService moveService, DiagramM public void moveElement(Element droppedElement, Node droppedNode, Element targetElement, Node targetNode, IEditingContext editingContext, DiagramContext diagramContext, Map convertedNodes) { - this.moveService.moveSemanticElement(droppedElement, targetElement); - ViewUsage viewUsage = this.diagramQueryElementService.getViewUsage(editingContext, diagramContext, droppedNode); - if (viewUsage != null) { - this.diagramMutationElementService.removeFromExposedElements(droppedElement, droppedNode, editingContext, diagramContext); + MoveStatus moveStatus = this.moveService.moveSemanticElement(droppedElement, targetElement); + if (moveStatus.isSuccess()) { + ViewUsage viewUsage = this.diagramQueryElementService.getViewUsage(editingContext, diagramContext, droppedNode); + if (viewUsage != null) { + this.diagramMutationElementService.removeFromExposedElements(droppedElement, droppedNode, editingContext, diagramContext); + } + this.diagramMutationElementService.expose(droppedElement, editingContext, diagramContext, targetNode, convertedNodes); + } else { + this.feedbackMessageService.addFeedbackMessage(new Message(MessageFormat.format("Unable to move {0} in {1}: {2}", this.getLabel(droppedElement), this.getLabel(targetElement), moveStatus.message()), MessageLevel.WARNING)); } - this.diagramMutationElementService.expose(droppedElement, editingContext, diagramContext, targetNode, convertedNodes); + } public void moveConstraintInRequirementConstraintCompartment(ConstraintUsage droppedConstraint, Element requirement, RequirementConstraintKind kind) { @@ -72,4 +92,17 @@ public void moveConstraintInRequirementConstraintCompartment(ConstraintUsage dro this.deleteService.deleteFromModel(owningMembership); } } + + private String getLabel(Object droppedElement) { + final String label; + StyledString styledLabel = this.labelService.getStyledLabel(droppedElement); + if (styledLabel != null && !styledLabel.toString().isEmpty()) { + label = styledLabel.toString(); + } else if (droppedElement instanceof EObject droppedEObject) { + label = droppedEObject.eClass().getName(); + } else { + label = ""; + } + return label; + } } diff --git a/backend/services/syson-diagram-services/src/test/java/org/eclipse/syson/diagram/services/DiagramMutationMoveServiceTest.java b/backend/services/syson-diagram-services/src/test/java/org/eclipse/syson/diagram/services/DiagramMutationMoveServiceTest.java new file mode 100644 index 000000000..f0a715971 --- /dev/null +++ b/backend/services/syson-diagram-services/src/test/java/org/eclipse/syson/diagram/services/DiagramMutationMoveServiceTest.java @@ -0,0 +1,106 @@ +/******************************************************************************* + * Copyright (c) 2026 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.diagram.services; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.IdentityHashMap; +import java.util.List; + +import org.eclipse.sirius.components.core.api.IFeedbackMessageService; +import org.eclipse.sirius.components.core.api.ILabelService; +import org.eclipse.sirius.components.core.api.labels.StyledString; +import org.eclipse.sirius.components.representations.Message; +import org.eclipse.sirius.components.representations.MessageLevel; +import org.eclipse.syson.services.api.ISysMLMoveElementService; +import org.eclipse.syson.services.api.MoveStatus; +import org.eclipse.syson.sysml.PartUsage; +import org.eclipse.syson.sysml.SysmlFactory; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * Tests for {@link DiagramMutationMoveService}. + * + * @author Arthur + */ +public class DiagramMutationMoveServiceTest { + + private static final String DROPPED_LABEL = "Dropped part"; + + private static final String TARGET_LABEL = "Target part"; + + @DisplayName("GIVEN a failed semantic move, WHEN moving an element in a diagram, THEN a warning feedback message uses labels") + @Test + void testMoveElementFailureCreatesFeedbackMessageWithLabels() { + PartUsage droppedElement = SysmlFactory.eINSTANCE.createPartUsage(); + PartUsage targetElement = SysmlFactory.eINSTANCE.createPartUsage(); + ISysMLMoveElementService moveService = mock(ISysMLMoveElementService.class); + DiagramMutationExposeService diagramMutationExposeService = mock(DiagramMutationExposeService.class); + DiagramQueryElementService diagramQueryElementService = mock(DiagramQueryElementService.class); + CapturingFeedbackMessageService feedbackMessageService = new CapturingFeedbackMessageService(); + TestLabelService labelService = new TestLabelService() + .withLabel(droppedElement, DROPPED_LABEL) + .withLabel(targetElement, TARGET_LABEL); + DiagramMutationMoveService service = new DiagramMutationMoveService(feedbackMessageService, labelService, moveService, diagramMutationExposeService, diagramQueryElementService); + + when(moveService.moveSemanticElement(droppedElement, targetElement)).thenReturn(MoveStatus.buildFailure("move refused")); + + service.moveElement(droppedElement, null, targetElement, null, null, null, null); + + assertThat(feedbackMessageService.getFeedbackMessages()).containsExactly(new Message("Unable to move Dropped part in Target part: move refused", MessageLevel.WARNING)); + verify(moveService).moveSemanticElement(droppedElement, targetElement); + verifyNoInteractions(diagramMutationExposeService, diagramQueryElementService); + } + + /** + * Test feedback service collecting messages in memory. + */ + private static final class CapturingFeedbackMessageService implements IFeedbackMessageService { + + private final List feedbackMessages = new ArrayList<>(); + + @Override + public void addFeedbackMessage(Message message) { + this.feedbackMessages.add(message); + } + + @Override + public List getFeedbackMessages() { + return this.feedbackMessages; + } + } + + /** + * Test label service returning labels by object identity. + */ + private static final class TestLabelService extends ILabelService.NoOp { + + private final IdentityHashMap labels = new IdentityHashMap<>(); + + TestLabelService withLabel(Object object, String label) { + this.labels.put(object, StyledString.of(label)); + return this; + } + + @Override + public StyledString getStyledLabel(Object object) { + return this.labels.getOrDefault(object, StyledString.of("")); + } + } +} diff --git a/backend/services/syson-tree-services/src/main/java/org/eclipse/syson/tree/explorer/services/api/ISysONExplorerService.java b/backend/services/syson-tree-services/src/main/java/org/eclipse/syson/tree/explorer/services/api/ISysONExplorerService.java index 1b1313dc8..002a1e567 100644 --- a/backend/services/syson-tree-services/src/main/java/org/eclipse/syson/tree/explorer/services/api/ISysONExplorerService.java +++ b/backend/services/syson-tree-services/src/main/java/org/eclipse/syson/tree/explorer/services/api/ISysONExplorerService.java @@ -63,4 +63,109 @@ public interface ISysONExplorerService { String getLibraryLabel(Object self); + /** + * NoOp implementation. + * + * @author Arthur Daussy + */ + class NoOp implements ISysONExplorerService { + + @Override + public String getTreeItemId(Object self) { + return ""; + } + + @Override + public String getTreeItemTooltip(Object self) { + return ""; + } + + @Override + public String getKind(Object self) { + return ""; + } + + @Override + public String getLabel(Object self) { + return ""; + } + + @Override + public boolean isEditable(Object self) { + return false; + } + + @Override + public boolean isDeletable(Object self) { + return false; + } + + @Override + public boolean isSelectable(Object self) { + return false; + } + + @Override + public List getImageURL(Object self) { + return List.of(); + } + + @Override + public Object getTreeItemObject(String treeItemId, org.eclipse.sirius.components.core.api.IEditingContext editingContext) { + return null; + } + + @Override + public Object getParent(Object self, String treeItemId, org.eclipse.sirius.components.core.api.IEditingContext editingContext) { + return null; + } + + @Override + public boolean hasChildren(Object self, org.eclipse.sirius.components.core.api.IEditingContext editingContext, List existingRepresentations, List expandedIds, + List activeFilterIds) { + return false; + } + + @Override + public List getChildren(Object self, org.eclipse.sirius.components.core.api.IEditingContext editingContext, List existingRepresentations, + List expandedIds, List activeFilterIds) { + return List.of(); + } + + @Override + public boolean canExpandAll(TreeItem treeItem, org.eclipse.sirius.components.core.api.IEditingContext editingContext) { + return false; + } + + @Override + public boolean canCreateNewObjectsFromText(Object self) { + return false; + } + + @Override + public List getElements(org.eclipse.sirius.components.core.api.IEditingContext editingContext, List activeFilterIds) { + return List.of(); + } + + @Override + public String getType(Object self) { + return ""; + } + + @Override + public String getShortName(Object self) { + return ""; + } + + @Override + public String getReadOnlyTag(Object self) { + return ""; + } + + @Override + public String getLibraryLabel(Object self) { + return ""; + } + } + } diff --git a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewToolService.java b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewToolService.java index fb39b78dc..2fd70e55e 100644 --- a/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewToolService.java +++ b/backend/views/syson-diagram-common-view/src/main/java/org/eclipse/syson/diagram/common/view/services/ViewToolService.java @@ -27,13 +27,16 @@ import org.eclipse.sirius.components.core.api.IEditingContext; import org.eclipse.sirius.components.core.api.IFeedbackMessageService; import org.eclipse.sirius.components.core.api.IIdentityService; +import org.eclipse.sirius.components.core.api.ILabelService; import org.eclipse.sirius.components.core.api.IObjectSearchService; +import org.eclipse.sirius.components.core.api.labels.StyledString; import org.eclipse.sirius.components.emf.ResourceMetadataAdapter; import org.eclipse.sirius.components.representations.Message; import org.eclipse.sirius.components.representations.MessageLevel; import org.eclipse.sirius.components.view.emf.IViewRepresentationDescriptionSearchService; import org.eclipse.syson.services.ToolService; import org.eclipse.syson.services.api.ISysMLMoveElementService; +import org.eclipse.syson.services.api.MoveStatus; import org.eclipse.syson.services.api.ViewDefinitionKind; import org.eclipse.syson.sysml.ActionDefinition; import org.eclipse.syson.sysml.ActionUsage; @@ -81,11 +84,14 @@ public class ViewToolService extends ToolService { protected final Logger logger = LoggerFactory.getLogger(ViewToolService.class); + private final ILabelService labelService; + public ViewToolService(IIdentityService identityService, IObjectSearchService objectSearchService, IViewRepresentationDescriptionSearchService viewRepresentationDescriptionSearchService, - IFeedbackMessageService feedbackMessageService, ISysMLMoveElementService moveService, ISysONExplorerService sysONExplorerService) { + IFeedbackMessageService feedbackMessageService, ISysMLMoveElementService moveService, ISysONExplorerService sysONExplorerService, ILabelService labelService) { super(identityService, objectSearchService, feedbackMessageService, moveService); this.viewRepresentationDescriptionSearchService = Objects.requireNonNull(viewRepresentationDescriptionSearchService); this.sysONExplorerService = Objects.requireNonNull(sysONExplorerService); + this.labelService = Objects.requireNonNull(labelService); } /** @@ -177,8 +183,13 @@ public Usage becomeNestedUsage(Usage usage, Element newContainer) { this.feedbackMessageService.addFeedbackMessage(new Message(message, MessageLevel.WARNING)); this.logger.warn(message); } else { - this.moveService.moveSemanticElement(usage, newContainer); - usage.setIsComposite(true); + MoveStatus moveStatus = this.moveService.moveSemanticElement(usage, newContainer); + if (moveStatus.isSuccess()) { + usage.setIsComposite(true); + } else { + this.feedbackMessageService.addFeedbackMessage(new Message(MessageFormat.format("Unable to move {0} in {1}: {2}", this.getLabel(usage), this.getLabel(newContainer), moveStatus.message()), MessageLevel.WARNING)); + } + } return usage; } @@ -308,7 +319,11 @@ public Element reconnnectSourceCompositionEdge(Element self, Element newSource, this.feedbackMessageService.addFeedbackMessage(new Message(message, MessageLevel.WARNING)); this.logger.warn(message); } else { - this.moveService.moveSemanticElement(otherEnd, newSource); + MoveStatus moveStatus = this.moveService.moveSemanticElement(otherEnd, newSource); + if (!moveStatus.isSuccess()) { + this.feedbackMessageService.addFeedbackMessage(new Message(MessageFormat.format("Unable to move {0} in {1}: {2}", this.getLabel(self), this.getLabel(newSource), + moveStatus.message()), MessageLevel.WARNING)); + } result = otherEnd; } return result; @@ -356,7 +371,11 @@ public Element reconnnectTargetCompositionEdge(Element self, Element oldTarget, */ public Element reconnnectTargetAnnotatedEdge(Element self, Element newTarget) { if (!(newTarget instanceof Comment) && !(newTarget instanceof Documentation)) { - this.moveService.moveSemanticElement(self, newTarget); + MoveStatus moveStatus = this.moveService.moveSemanticElement(self, newTarget); + if (!moveStatus.isSuccess()) { + this.feedbackMessageService.addFeedbackMessage(new Message(MessageFormat.format("Unable to move {0} in {1}: {2}", this.getLabel(self), this.getLabel(newTarget), + moveStatus.message()), MessageLevel.WARNING)); + } } return self; } @@ -755,4 +774,17 @@ protected List getOwnerHierarchy(Element element) { } return ownerHierarchy; } + + private String getLabel(Object droppedElement) { + final String label; + StyledString styledLabel = this.labelService.getStyledLabel(droppedElement); + if (styledLabel != null && !styledLabel.toString().isEmpty()) { + label = styledLabel.toString(); + } else if (droppedElement instanceof EObject droppedEObject) { + label = droppedEObject.eClass().getName(); + } else { + label = ""; + } + return label; + } } diff --git a/backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/services/ViewToolServiceTest.java b/backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/services/ViewToolServiceTest.java new file mode 100644 index 000000000..8e134c866 --- /dev/null +++ b/backend/views/syson-diagram-common-view/src/test/java/org/eclipse/syson/diagram/common/view/services/ViewToolServiceTest.java @@ -0,0 +1,199 @@ +/******************************************************************************* + * Copyright (c) 2026 Obeo. + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.syson.diagram.common.view.services; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.ArrayList; +import java.util.IdentityHashMap; +import java.util.List; + +import org.eclipse.sirius.components.core.api.IFeedbackMessageService; +import org.eclipse.sirius.components.core.api.IIdentityService; +import org.eclipse.sirius.components.core.api.ILabelService; +import org.eclipse.sirius.components.core.api.IObjectSearchService; +import org.eclipse.sirius.components.core.api.labels.StyledString; +import org.eclipse.sirius.components.representations.Message; +import org.eclipse.sirius.components.representations.MessageLevel; +import org.eclipse.sirius.components.view.emf.IViewRepresentationDescriptionSearchService; +import org.eclipse.syson.services.api.ISysMLMoveElementService; +import org.eclipse.syson.services.api.MoveStatus; +import org.eclipse.syson.sysml.Element; +import org.eclipse.syson.sysml.PartUsage; +import org.eclipse.syson.sysml.SysmlFactory; +import org.eclipse.syson.sysml.Usage; +import org.eclipse.syson.tree.explorer.services.api.ISysONExplorerService; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * Tests for {@link ViewToolService}. + * + * @author Arthur Daussy + */ +public class ViewToolServiceTest { + + private static final String FAILURE_MESSAGE = "move refused"; + + @DisplayName("GIVEN a failed semantic move, WHEN becoming a nested usage, THEN a warning feedback message uses labels") + @Test + void testBecomeNestedUsageFailureCreatesFeedbackMessageWithLabels() { + Usage usage = SysmlFactory.eINSTANCE.createPartUsage(); + PartUsage newContainer = SysmlFactory.eINSTANCE.createPartUsage(); + TestServices testServices = this.createService(usage, "Nested usage", newContainer, "New container"); + + Usage result = testServices.service.becomeNestedUsage(usage, newContainer); + + assertThat(result).isSameAs(usage); + assertThat(usage.isIsComposite()).isFalse(); + assertThat(testServices.feedbackMessageService.getFeedbackMessages()).containsExactly(new Message("Unable to move Nested usage in New container: move refused", MessageLevel.WARNING)); + assertThat(testServices.moveService.movedElement).isSameAs(usage); + assertThat(testServices.moveService.newParent).isSameAs(newContainer); + assertThat(testServices.moveService.callCount).isEqualTo(1); + } + + @DisplayName("GIVEN a failed semantic move, WHEN reconnecting a composition source, THEN a warning feedback message uses labels") + @Test + void testReconnectSourceCompositionEdgeFailureCreatesFeedbackMessageWithLabels() { + PartUsage self = SysmlFactory.eINSTANCE.createPartUsage(); + PartUsage newSource = SysmlFactory.eINSTANCE.createPartUsage(); + PartUsage otherEnd = SysmlFactory.eINSTANCE.createPartUsage(); + TestServices testServices = this.createService(self, "Composition owner", newSource, "New source", otherEnd, "Nested part"); + + Element result = testServices.service.reconnnectSourceCompositionEdge(self, newSource, otherEnd); + + assertThat(result).isSameAs(otherEnd); + assertThat(testServices.feedbackMessageService.getFeedbackMessages()).containsExactly(new Message("Unable to move Composition owner in New source: move refused", MessageLevel.WARNING)); + assertThat(testServices.moveService.movedElement).isSameAs(otherEnd); + assertThat(testServices.moveService.newParent).isSameAs(newSource); + assertThat(testServices.moveService.callCount).isEqualTo(1); + } + + @DisplayName("GIVEN a failed semantic move, WHEN reconnecting an annotation target, THEN a warning feedback message uses labels") + @Test + void testReconnectTargetAnnotatedEdgeFailureCreatesFeedbackMessageWithLabels() { + PartUsage self = SysmlFactory.eINSTANCE.createPartUsage(); + PartUsage newTarget = SysmlFactory.eINSTANCE.createPartUsage(); + TestServices testServices = this.createService(self, "Annotation", newTarget, "Annotated element"); + + Element result = testServices.service.reconnnectTargetAnnotatedEdge(self, newTarget); + + assertThat(result).isSameAs(self); + assertThat(testServices.feedbackMessageService.getFeedbackMessages()).containsExactly(new Message("Unable to move Annotation in Annotated element: move refused", MessageLevel.WARNING)); + assertThat(testServices.moveService.movedElement).isSameAs(self); + assertThat(testServices.moveService.newParent).isSameAs(newTarget); + assertThat(testServices.moveService.callCount).isEqualTo(1); + } + + private TestServices createService(Object firstObject, String firstLabel, Object secondObject, String secondLabel) { + return this.createService(firstObject, firstLabel, secondObject, secondLabel, null, null); + } + + private TestServices createService(Object firstObject, String firstLabel, Object secondObject, String secondLabel, Object thirdObject, String thirdLabel) { + TestMoveElementService moveService = new TestMoveElementService(MoveStatus.buildFailure(FAILURE_MESSAGE)); + CapturingFeedbackMessageService feedbackMessageService = new CapturingFeedbackMessageService(); + TestLabelService labelService = new TestLabelService() + .withLabel(firstObject, firstLabel) + .withLabel(secondObject, secondLabel); + if (thirdObject != null) { + labelService.withLabel(thirdObject, thirdLabel); + } + + ViewToolService service = new ViewToolService( + new IIdentityService.NoOp(), + new IObjectSearchService.NoOp(), + new IViewRepresentationDescriptionSearchService.NoOp(), + feedbackMessageService, + moveService, + new ISysONExplorerService.NoOp(), + labelService); + return new TestServices(service, moveService, feedbackMessageService); + } + + /** + * Services used by a test case. + * + * @param service + * the tested service + * @param moveService + * the mocked move service + * @param feedbackMessageService + * the feedback message service collecting messages + */ + private record TestServices(ViewToolService service, TestMoveElementService moveService, CapturingFeedbackMessageService feedbackMessageService) { + } + + /** + * Test move service returning a fixed status and recording calls. + */ + private static final class TestMoveElementService implements ISysMLMoveElementService { + + private final MoveStatus moveStatus; + + private Element movedElement; + + private Element newParent; + + private int callCount; + + TestMoveElementService(MoveStatus moveStatus) { + this.moveStatus = moveStatus; + } + + @Override + public MoveStatus moveSemanticElement(Element element, Element targetParent) { + this.movedElement = element; + this.newParent = targetParent; + this.callCount++; + return this.moveStatus; + } + } + + /** + * Test feedback service collecting messages in memory. + */ + private static final class CapturingFeedbackMessageService implements IFeedbackMessageService { + + private final List feedbackMessages = new ArrayList<>(); + + @Override + public void addFeedbackMessage(Message message) { + this.feedbackMessages.add(message); + } + + @Override + public List getFeedbackMessages() { + return this.feedbackMessages; + } + } + + /** + * Test label service returning labels by object identity. + */ + private static final class TestLabelService extends ILabelService.NoOp { + + private final IdentityHashMap labels = new IdentityHashMap<>(); + + TestLabelService withLabel(Object object, String label) { + this.labels.put(object, StyledString.of(label)); + return this; + } + + @Override + public StyledString getStyledLabel(Object object) { + return this.labels.getOrDefault(object, StyledString.of("")); + } + } + + +} diff --git a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/handlers/DropTreeItemHandler.java b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/handlers/DropTreeItemHandler.java index 6c510950c..c32c35cf6 100644 --- a/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/handlers/DropTreeItemHandler.java +++ b/backend/views/syson-tree-explorer-view/src/main/java/org/eclipse/syson/tree/explorer/view/handlers/DropTreeItemHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2024, 2025 Obeo. + * Copyright (c) 2024, 2026 Obeo. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 * which accompanies this distribution, and is available at @@ -45,13 +45,13 @@ @Service public class DropTreeItemHandler implements IDropTreeItemHandler { - private ILabelService labelService; + private final ILabelService labelService; - private IObjectSearchService objectSearchService; + private final IObjectSearchService objectSearchService; - private SysONTreeViewDescriptionProvider treeProvider; + private final SysONTreeViewDescriptionProvider treeProvider; - private ISysMLMoveElementService moveService; + private final ISysMLMoveElementService moveService; public DropTreeItemHandler(ILabelService labelService, IObjectSearchService objectSearchService, SysONTreeViewDescriptionProvider treeProvider, ISysMLMoveElementService moveService) { this.labelService = Objects.requireNonNull(labelService); @@ -113,11 +113,15 @@ public IStatus handle(IEditingContext editingContext, Tree tree, DropTreeItemInp } private String getLabel(Object droppedElement) { + final String label; StyledString styledLabel = this.labelService.getStyledLabel(droppedElement); - if ((styledLabel == null || styledLabel.toString().isEmpty()) && droppedElement instanceof EObject droppedEObject) { - styledLabel = StyledString.of(droppedEObject.eClass().getName()); + if (styledLabel != null && !styledLabel.toString().isEmpty()) { + label = styledLabel.toString(); + } else if (droppedElement instanceof EObject droppedEObject) { + label = droppedEObject.eClass().getName(); + } else { + label = ""; } - return styledLabel.toString(); + return label; } - } diff --git a/doc/content/modules/user-manual/pages/release-notes/2026.7.0.adoc b/doc/content/modules/user-manual/pages/release-notes/2026.7.0.adoc index a4a1c1398..64f0e9542 100644 --- a/doc/content/modules/user-manual/pages/release-notes/2026.7.0.adoc +++ b/doc/content/modules/user-manual/pages/release-notes/2026.7.0.adoc @@ -40,6 +40,7 @@ a|image::explorer-expression-internals-visible.png[Internals visible] * In diagrams: ** Improve diagram-to-diagram drag and drop to support dropping multiple graphical nodes at once. +** Improve feedback message reporting while moving elements in diagrams. == Technical details