commit 55c30c899f51d086cea5c7cb6c7c006c030c1b04 Author: Artur Romaniuk Date: Fri Apr 4 15:18:10 2025 +0200 Wersja v1 diagramów diff --git a/strukturizrz/.structurizr/1/images/ComponentMobileApp-thumbnail.png b/strukturizrz/.structurizr/1/images/ComponentMobileApp-thumbnail.png new file mode 100644 index 00000000..5eb11fd7 Binary files /dev/null and b/strukturizrz/.structurizr/1/images/ComponentMobileApp-thumbnail.png differ diff --git a/strukturizrz/.structurizr/1/images/ComponentServerApp-thumbnail.png b/strukturizrz/.structurizr/1/images/ComponentServerApp-thumbnail.png new file mode 100644 index 00000000..15d6f3db Binary files /dev/null and b/strukturizrz/.structurizr/1/images/ComponentServerApp-thumbnail.png differ diff --git a/strukturizrz/.structurizr/1/images/ComponentWebApp-thumbnail.png b/strukturizrz/.structurizr/1/images/ComponentWebApp-thumbnail.png new file mode 100644 index 00000000..3bed7854 Binary files /dev/null and b/strukturizrz/.structurizr/1/images/ComponentWebApp-thumbnail.png differ diff --git a/strukturizrz/.structurizr/1/images/Container-thumbnail.png b/strukturizrz/.structurizr/1/images/Container-thumbnail.png new file mode 100644 index 00000000..c74d4809 Binary files /dev/null and b/strukturizrz/.structurizr/1/images/Container-thumbnail.png differ diff --git a/strukturizrz/.structurizr/1/images/Deployment-001-thumbnail.png b/strukturizrz/.structurizr/1/images/Deployment-001-thumbnail.png new file mode 100644 index 00000000..c72e8f01 Binary files /dev/null and b/strukturizrz/.structurizr/1/images/Deployment-001-thumbnail.png differ diff --git a/strukturizrz/.structurizr/1/images/Diagram1-thumbnail.png b/strukturizrz/.structurizr/1/images/Diagram1-thumbnail.png new file mode 100644 index 00000000..bfdb8f5e Binary files /dev/null and b/strukturizrz/.structurizr/1/images/Diagram1-thumbnail.png differ diff --git a/strukturizrz/.structurizr/1/images/Diagram2-thumbnail.png b/strukturizrz/.structurizr/1/images/Diagram2-thumbnail.png new file mode 100644 index 00000000..35e6876c Binary files /dev/null and b/strukturizrz/.structurizr/1/images/Diagram2-thumbnail.png differ diff --git a/strukturizrz/.structurizr/1/images/SystemContext-thumbnail.png b/strukturizrz/.structurizr/1/images/SystemContext-thumbnail.png new file mode 100644 index 00000000..f328b3ca Binary files /dev/null and b/strukturizrz/.structurizr/1/images/SystemContext-thumbnail.png differ diff --git a/strukturizrz/.structurizr/1/images/thumbnail.png b/strukturizrz/.structurizr/1/images/thumbnail.png new file mode 100644 index 00000000..f328b3ca Binary files /dev/null and b/strukturizrz/.structurizr/1/images/thumbnail.png differ diff --git a/strukturizrz/.structurizr/index/_21.cfe b/strukturizrz/.structurizr/index/_21.cfe new file mode 100644 index 00000000..bc9555db Binary files /dev/null and b/strukturizrz/.structurizr/index/_21.cfe differ diff --git a/strukturizrz/.structurizr/index/_21.cfs b/strukturizrz/.structurizr/index/_21.cfs new file mode 100644 index 00000000..594584f1 Binary files /dev/null and b/strukturizrz/.structurizr/index/_21.cfs differ diff --git a/strukturizrz/.structurizr/index/_21.si b/strukturizrz/.structurizr/index/_21.si new file mode 100644 index 00000000..61c1969f Binary files /dev/null and b/strukturizrz/.structurizr/index/_21.si differ diff --git a/strukturizrz/.structurizr/index/segments_22 b/strukturizrz/.structurizr/index/segments_22 new file mode 100644 index 00000000..fded390a Binary files /dev/null and b/strukturizrz/.structurizr/index/segments_22 differ diff --git a/strukturizrz/.structurizr/index/write.lock b/strukturizrz/.structurizr/index/write.lock new file mode 100644 index 00000000..e69de29b diff --git a/strukturizrz/workspace.dsl b/strukturizrz/workspace.dsl new file mode 100755 index 00000000..13164ad7 --- /dev/null +++ b/strukturizrz/workspace.dsl @@ -0,0 +1,155 @@ +workspace "Name" "Description" { + + !identifiers hierarchical + + model { + admin = person "Administrator" "Administrator zarządzający systemem e-Toll" + kierowca = person "Kierowca" "Kierowca korzystający z płatnych dróg w systemie e-Toll" + archiwum = softwareSystem "System agregacji danych historycznych" "Archiwum danych do celów statystycznych" + systemPlatnosci = softwareSystem "System procesowania płatności" "System odpowiedzialny za obsługę płatności dokonywanych prze użytkowników" + + systemEtoll = softwareSystem "System e-Toll" { + webApp = container "Aplikacja webowa" "Służy do zarządzania kontem oraz systemem" + mobileApp = container "Aplikacja mobilna" "Pozwala na śledzenie pozycji pojazdu w celu dokonywania opłat" + embeddedApp = container "Aplikacja na dedykowane urządzenia zbierania opłat" "Działa na dedykowanych urządzeniach śledzących pozycję pojazdu" + + serverApp = container "Aplikacja serwerowa" "Obsługuje logikę działania systemu" { + mainComponent = component "MainComponent" "Centralny element aplikacji odpowiedzialny za jej działanie" + signinController = component "SigninController" "Odpowiada za logowanie do systemu i autoryzację" + tollController = component "TollController" "Odpowiada za kontrolowanie wysokości opłat" + + userService = component "UserService" "Zawiera logikę biznesową dotyczącą użytkowników" + paymentService = component "PaymentService" "Zawiera logikę dotyczącą przetwarzania płatności" + userRepository = component "UserRepository" "Odpowiada za dostęp do danych użytkownika" + paymentRepository = component "PaymentRepository" "Odpowiada za dostęp do danych płatności" + + positionService = component "PositionService" "Odpowiada za określanie pozycji pojazdu w kontekście odcinków dróg" + + mainComponent -> signinController "Używa" + mainComponent -> tollController "Używa" + signinController -> userService "Używa" + mainComponent -> paymentService "Używa" + tollController -> positionService "Używa" + + userService -> userRepository "Odczytuje/zapisuje dane" + paymentService -> paymentRepository "Odczytuje/zapisuje dane" + } + + db = container "Baza danych" { + tags "Database" + } + + serverApp -> db "Czyta i zapisuje dane" + webApp -> serverApp + mobileApp -> serverApp + embeddedApp -> serverApp + } + + admin -> systemEtoll.webApp "Zarządza systemem" + kierowca -> systemEtoll "Korzysta z systemu" + + kierowca -> systemEtoll.webApp "Zarządza kontem" + kierowca -> systemEtoll.mobileApp "Opłaca przejazdy" + kierowca -> systemEtoll.embeddedApp "Opłaca przejazdy" + + systemEtoll.serverApp -> systemPlatnosci "Realizuje płatność" + systemEtoll.serverApp -> archiwum "Przekazuje dane o użyciu dróg" + + liveDeployment = deploymentEnvironment "Deployment" { + deploymentNode "Urządzenie mobilne klienta" "" "Apple iOS or Android" { + liveMobileAppInstance = containerInstance systemEtoll.mobileApp + } + + deploymentNode "Dedykowane urządzenie zbierania opłat" "" "Linux" { + liveEmbeddedAppInstance = containerInstance systemEtoll.embeddedApp + } + + deploymentNode "Urządzenie klienta" "" "Laptop/Desktop" { + deploymentNode "Przeglądarka internetowa" "" "Chromium/Firefox" { + browserInstance = containerInstance systemEtoll.webApp + } + } + + deploymentNode "System e-Toll" "" "Data Center dla systemu e-Toll" { + deploymentNode "etoll-server" "" "Ubuntu Server 24.04 LTS" "" 4 { + deploymentNode "Apache Tomcat" "" "Apache Tomcat 8.x" { + liveWebApplicationInstance = containerInstance systemEtoll.serverApp + } + } + + db1 = deploymentNode "etoll-db01" "" "Ubuntu Server 24.04 LTS" { + primaryDatabaseServer = deploymentNode "Oracle - Primary" "" "Oracle 12c" { + livePrimaryDatabaseInstance = containerInstance systemEtoll.db + } + } + db2 = deploymentNode "etoll-db02" "" "Ubuntu Server 24.04 LTS" "Failover" { + secondaryDatabaseServer = deploymentNode "Oracle - Secondary" "" "Oracle 12c" "Failover" { + liveSecondaryDatabaseInstance = containerInstance systemEtoll.db "Failover" + } + } + deploymentNode "etoll-prod001" "" "" "" { + softwareSystemInstance systemEtoll + } + + db1.primaryDatabaseServer -> db2.secondaryDatabaseServer "Replikuje dane" + } + } + } + + views { + systemContext systemEtoll "SystemContext" { + include * + autolayout bt + } + + container systemEtoll "Container" { + include * + } + + # component systemEtoll.webApp "ComponentWebApp" { + # include * + # } + + # component systemEtoll.mobileApp "ComponentMobileApp" { + # include * + # } + + # component systemEtoll.embeddedApp "ComponentEmbeddedApp" { + # include * + # } + + component systemEtoll.serverApp "ComponentServerApp" { + include * + autoLayout bt + } + + deployment systemEtoll "Deployment" { + include * + autoLayout lr + } + + styles { + element "Element" { + color #ffffff + } + element "Person" { + background #199b65 + shape person + } + element "Software System" { + background #1eba79 + } + element "Container" { + background #23d98d + } + element "Database" { + shape cylinder + } + } + } + + configuration { + scope softwaresystem + } + +} \ No newline at end of file diff --git a/strukturizrz/workspace.json b/strukturizrz/workspace.json new file mode 100755 index 00000000..3a1222bf --- /dev/null +++ b/strukturizrz/workspace.json @@ -0,0 +1,879 @@ +{ + "configuration" : { + "scope" : "SoftwareSystem" + }, + "description" : "Description", + "documentation" : { }, + "id" : 1, + "lastModifiedAgent" : "structurizr-ui", + "lastModifiedDate" : "2025-04-04T13:15:11Z", + "model" : { + "deploymentNodes" : [ { + "containerInstances" : [ { + "containerId" : "7", + "deploymentGroups" : [ "Default" ], + "environment" : "Deployment", + "id" : "41", + "instanceId" : 1, + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.2087bcf8-a1f5-48ca-a213-fff854217495.livemobileappinstance" + }, + "relationships" : [ { + "destinationId" : "50", + "id" : "51", + "linkedRelationshipId" : "28", + "sourceId" : "41" + } ], + "tags" : "Container Instance" + } ], + "environment" : "Deployment", + "id" : "40", + "instances" : "1", + "name" : "Urządzenie mobilne klienta", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.2087bcf8-a1f5-48ca-a213-fff854217495" + }, + "tags" : "Element,Deployment Node", + "technology" : "Apple iOS or Android" + }, { + "containerInstances" : [ { + "containerId" : "8", + "deploymentGroups" : [ "Default" ], + "environment" : "Deployment", + "id" : "43", + "instanceId" : 1, + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.fbed2522-62c6-4a1c-9a7b-520ec6b36d38.liveembeddedappinstance" + }, + "relationships" : [ { + "destinationId" : "50", + "id" : "52", + "linkedRelationshipId" : "29", + "sourceId" : "43" + } ], + "tags" : "Container Instance" + } ], + "environment" : "Deployment", + "id" : "42", + "instances" : "1", + "name" : "Dedykowane urządzenie zbierania opłat", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.fbed2522-62c6-4a1c-9a7b-520ec6b36d38" + }, + "tags" : "Element,Deployment Node", + "technology" : "Linux" + }, { + "children" : [ { + "containerInstances" : [ { + "containerId" : "6", + "deploymentGroups" : [ "Default" ], + "environment" : "Deployment", + "id" : "46", + "instanceId" : 1, + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.e9eaa3f6-af9c-42f1-9367-1a37fcc205d7.8088b721-2182-4429-8b13-664075dd9d0f.browserinstance" + }, + "relationships" : [ { + "destinationId" : "50", + "id" : "53", + "linkedRelationshipId" : "27", + "sourceId" : "46" + } ], + "tags" : "Container Instance" + } ], + "environment" : "Deployment", + "id" : "45", + "instances" : "1", + "name" : "Przeglądarka internetowa", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.e9eaa3f6-af9c-42f1-9367-1a37fcc205d7.8088b721-2182-4429-8b13-664075dd9d0f" + }, + "tags" : "Element,Deployment Node", + "technology" : "Chromium/Firefox" + } ], + "environment" : "Deployment", + "id" : "44", + "instances" : "1", + "name" : "Urządzenie klienta", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.e9eaa3f6-af9c-42f1-9367-1a37fcc205d7" + }, + "tags" : "Element,Deployment Node", + "technology" : "Laptop/Desktop" + }, { + "children" : [ { + "children" : [ { + "containerInstances" : [ { + "containerId" : "9", + "deploymentGroups" : [ "Default" ], + "environment" : "Deployment", + "id" : "50", + "instanceId" : 1, + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.88ab7a8a-0eef-4412-8f72-d5e515771aff.7be60e42-dc3f-477d-a5b1-fde4519954a6.livewebapplicationinstance" + }, + "relationships" : [ { + "description" : "Czyta i zapisuje dane", + "destinationId" : "56", + "id" : "57", + "linkedRelationshipId" : "26", + "sourceId" : "50" + }, { + "description" : "Czyta i zapisuje dane", + "destinationId" : "60", + "id" : "61", + "linkedRelationshipId" : "26", + "sourceId" : "50" + } ], + "tags" : "Container Instance" + } ], + "environment" : "Deployment", + "id" : "49", + "instances" : "1", + "name" : "Apache Tomcat", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.88ab7a8a-0eef-4412-8f72-d5e515771aff.7be60e42-dc3f-477d-a5b1-fde4519954a6" + }, + "tags" : "Element,Deployment Node", + "technology" : "Apache Tomcat 8.x" + } ], + "environment" : "Deployment", + "id" : "48", + "instances" : "4", + "name" : "etoll-server", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.88ab7a8a-0eef-4412-8f72-d5e515771aff" + }, + "tags" : "Element,Deployment Node", + "technology" : "Ubuntu Server 24.04 LTS" + }, { + "children" : [ { + "containerInstances" : [ { + "containerId" : "25", + "deploymentGroups" : [ "Default" ], + "environment" : "Deployment", + "id" : "56", + "instanceId" : 1, + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.db1.primarydatabaseserver.liveprimarydatabaseinstance" + }, + "tags" : "Container Instance" + } ], + "environment" : "Deployment", + "id" : "55", + "instances" : "1", + "name" : "Oracle - Primary", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.db1.primarydatabaseserver" + }, + "relationships" : [ { + "description" : "Replikuje dane", + "destinationId" : "59", + "id" : "64", + "sourceId" : "55", + "tags" : "Relationship" + } ], + "tags" : "Element,Deployment Node", + "technology" : "Oracle 12c" + } ], + "environment" : "Deployment", + "id" : "54", + "instances" : "1", + "name" : "etoll-db01", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.db1" + }, + "tags" : "Element,Deployment Node", + "technology" : "Ubuntu Server 24.04 LTS" + }, { + "children" : [ { + "containerInstances" : [ { + "containerId" : "25", + "deploymentGroups" : [ "Default" ], + "environment" : "Deployment", + "id" : "60", + "instanceId" : 1, + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.db2.secondarydatabaseserver.livesecondarydatabaseinstance" + }, + "tags" : "Container Instance" + } ], + "environment" : "Deployment", + "id" : "59", + "instances" : "1", + "name" : "Oracle - Secondary", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.db2.secondarydatabaseserver" + }, + "tags" : "Element,Deployment Node,Failover", + "technology" : "Oracle 12c" + } ], + "environment" : "Deployment", + "id" : "58", + "instances" : "1", + "name" : "etoll-db02", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.db2" + }, + "tags" : "Element,Deployment Node,Failover", + "technology" : "Ubuntu Server 24.04 LTS" + }, { + "environment" : "Deployment", + "id" : "62", + "instances" : "1", + "name" : "etoll-prod001", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.691545ea-8d2c-4e50-bd63-3527bb05fce9" + }, + "softwareSystemInstances" : [ { + "deploymentGroups" : [ "Default" ], + "environment" : "Deployment", + "id" : "63", + "instanceId" : 1, + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af.691545ea-8d2c-4e50-bd63-3527bb05fce9.ad43053a-31b8-426b-bc45-7431835a3321" + }, + "softwareSystemId" : "5", + "tags" : "Software System Instance" + } ], + "tags" : "Element,Deployment Node" + } ], + "environment" : "Deployment", + "id" : "47", + "instances" : "1", + "name" : "System e-Toll", + "properties" : { + "structurizr.dsl.identifier" : "livedeployment.913e98a3-fb43-4378-a7c5-02a63e35e9af" + }, + "tags" : "Element,Deployment Node", + "technology" : "Data Center dla systemu e-Toll" + } ], + "people" : [ { + "description" : "Administrator zarządzający systemem e-Toll", + "id" : "1", + "location" : "Unspecified", + "name" : "Administrator", + "properties" : { + "structurizr.dsl.identifier" : "admin" + }, + "relationships" : [ { + "description" : "Zarządza systemem", + "destinationId" : "6", + "id" : "30", + "sourceId" : "1", + "tags" : "Relationship" + }, { + "description" : "Zarządza systemem", + "destinationId" : "5", + "id" : "31", + "linkedRelationshipId" : "30", + "sourceId" : "1" + } ], + "tags" : "Element,Person" + }, { + "description" : "Kierowca korzystający z płatnych dróg w systemie e-Toll", + "id" : "2", + "location" : "Unspecified", + "name" : "Kierowca", + "properties" : { + "structurizr.dsl.identifier" : "kierowca" + }, + "relationships" : [ { + "description" : "Korzysta z systemu", + "destinationId" : "5", + "id" : "32", + "sourceId" : "2", + "tags" : "Relationship" + }, { + "description" : "Zarządza kontem", + "destinationId" : "6", + "id" : "33", + "sourceId" : "2", + "tags" : "Relationship" + }, { + "description" : "Opłaca przejazdy", + "destinationId" : "7", + "id" : "34", + "sourceId" : "2", + "tags" : "Relationship" + }, { + "description" : "Opłaca przejazdy", + "destinationId" : "8", + "id" : "35", + "sourceId" : "2", + "tags" : "Relationship" + } ], + "tags" : "Element,Person" + } ], + "softwareSystems" : [ { + "description" : "Archiwum danych do celów statystycznych", + "documentation" : { }, + "id" : "3", + "location" : "Unspecified", + "name" : "System agregacji danych historycznych", + "properties" : { + "structurizr.dsl.identifier" : "archiwum" + }, + "tags" : "Element,Software System" + }, { + "description" : "System odpowiedzialny za obsługę płatności dokonywanych prze użytkowników", + "documentation" : { }, + "id" : "4", + "location" : "Unspecified", + "name" : "System procesowania płatności", + "properties" : { + "structurizr.dsl.identifier" : "systemplatnosci" + }, + "tags" : "Element,Software System" + }, { + "containers" : [ { + "description" : "Służy do zarządzania kontem oraz systemem", + "documentation" : { }, + "id" : "6", + "name" : "Aplikacja webowa", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.webapp" + }, + "relationships" : [ { + "destinationId" : "9", + "id" : "27", + "sourceId" : "6", + "tags" : "Relationship" + } ], + "tags" : "Element,Container" + }, { + "description" : "Pozwala na śledzenie pozycji pojazdu w celu dokonywania opłat", + "documentation" : { }, + "id" : "7", + "name" : "Aplikacja mobilna", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.mobileapp" + }, + "relationships" : [ { + "destinationId" : "9", + "id" : "28", + "sourceId" : "7", + "tags" : "Relationship" + } ], + "tags" : "Element,Container" + }, { + "description" : "Działa na dedykowanych urządzeniach śledzących pozycję pojazdu", + "documentation" : { }, + "id" : "8", + "name" : "Aplikacja na dedykowane urządzenia zbierania opłat", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.embeddedapp" + }, + "relationships" : [ { + "destinationId" : "9", + "id" : "29", + "sourceId" : "8", + "tags" : "Relationship" + } ], + "tags" : "Element,Container" + }, { + "components" : [ { + "description" : "Centralny element aplikacji odpowiedzialny za jej działanie", + "documentation" : { }, + "id" : "10", + "name" : "MainComponent", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.serverapp.maincomponent" + }, + "relationships" : [ { + "description" : "Używa", + "destinationId" : "11", + "id" : "18", + "sourceId" : "10", + "tags" : "Relationship" + }, { + "description" : "Używa", + "destinationId" : "12", + "id" : "19", + "sourceId" : "10", + "tags" : "Relationship" + }, { + "description" : "Używa", + "destinationId" : "14", + "id" : "21", + "sourceId" : "10", + "tags" : "Relationship" + } ], + "tags" : "Element,Component" + }, { + "description" : "Odpowiada za logowanie do systemu i autoryzację", + "documentation" : { }, + "id" : "11", + "name" : "SigninController", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.serverapp.signincontroller" + }, + "relationships" : [ { + "description" : "Używa", + "destinationId" : "13", + "id" : "20", + "sourceId" : "11", + "tags" : "Relationship" + } ], + "tags" : "Element,Component" + }, { + "description" : "Odpowiada za kontrolowanie wysokości opłat", + "documentation" : { }, + "id" : "12", + "name" : "TollController", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.serverapp.tollcontroller" + }, + "relationships" : [ { + "description" : "Używa", + "destinationId" : "17", + "id" : "22", + "sourceId" : "12", + "tags" : "Relationship" + } ], + "tags" : "Element,Component" + }, { + "description" : "Zawiera logikę biznesową dotyczącą użytkowników", + "documentation" : { }, + "id" : "13", + "name" : "UserService", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.serverapp.userservice" + }, + "relationships" : [ { + "description" : "Odczytuje/zapisuje dane", + "destinationId" : "15", + "id" : "23", + "sourceId" : "13", + "tags" : "Relationship" + } ], + "tags" : "Element,Component" + }, { + "description" : "Zawiera logikę dotyczącą przetwarzania płatności", + "documentation" : { }, + "id" : "14", + "name" : "PaymentService", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.serverapp.paymentservice" + }, + "relationships" : [ { + "description" : "Odczytuje/zapisuje dane", + "destinationId" : "16", + "id" : "24", + "sourceId" : "14", + "tags" : "Relationship" + } ], + "tags" : "Element,Component" + }, { + "description" : "Odpowiada za dostęp do danych użytkownika", + "documentation" : { }, + "id" : "15", + "name" : "UserRepository", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.serverapp.userrepository" + }, + "tags" : "Element,Component" + }, { + "description" : "Odpowiada za dostęp do danych płatności", + "documentation" : { }, + "id" : "16", + "name" : "PaymentRepository", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.serverapp.paymentrepository" + }, + "tags" : "Element,Component" + }, { + "description" : "Odpowiada za określanie pozycji pojazdu w kontekście odcinków dróg", + "documentation" : { }, + "id" : "17", + "name" : "PositionService", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.serverapp.positionservice" + }, + "tags" : "Element,Component" + } ], + "description" : "Obsługuje logikę działania systemu", + "documentation" : { }, + "id" : "9", + "name" : "Aplikacja serwerowa", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.serverapp" + }, + "relationships" : [ { + "description" : "Czyta i zapisuje dane", + "destinationId" : "25", + "id" : "26", + "sourceId" : "9", + "tags" : "Relationship" + }, { + "description" : "Realizuje płatność", + "destinationId" : "4", + "id" : "36", + "sourceId" : "9", + "tags" : "Relationship" + }, { + "description" : "Przekazuje dane o użyciu dróg", + "destinationId" : "3", + "id" : "38", + "sourceId" : "9", + "tags" : "Relationship" + } ], + "tags" : "Element,Container" + }, { + "documentation" : { }, + "id" : "25", + "name" : "Baza danych", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll.db" + }, + "tags" : "Element,Container,Database" + } ], + "documentation" : { }, + "id" : "5", + "location" : "Unspecified", + "name" : "System e-Toll", + "properties" : { + "structurizr.dsl.identifier" : "systemetoll" + }, + "relationships" : [ { + "description" : "Realizuje płatność", + "destinationId" : "4", + "id" : "37", + "linkedRelationshipId" : "36", + "sourceId" : "5" + }, { + "description" : "Przekazuje dane o użyciu dróg", + "destinationId" : "3", + "id" : "39", + "linkedRelationshipId" : "38", + "sourceId" : "5" + } ], + "tags" : "Element,Software System" + } ] + }, + "name" : "Name", + "properties" : { + "structurizr.dsl" : "d29ya3NwYWNlICJOYW1lIiAiRGVzY3JpcHRpb24iIHsKCiAgICAhaWRlbnRpZmllcnMgaGllcmFyY2hpY2FsCgogICAgbW9kZWwgewogICAgICAgIGFkbWluID0gcGVyc29uICJBZG1pbmlzdHJhdG9yIiAiQWRtaW5pc3RyYXRvciB6YXJ6xIVkemFqxIVjeSBzeXN0ZW1lbSBlLVRvbGwiCiAgICAgICAga2llcm93Y2EgPSBwZXJzb24gIktpZXJvd2NhIiAiS2llcm93Y2Ega29yenlzdGFqxIVjeSB6IHDFgmF0bnljaCBkcsOzZyB3IHN5c3RlbWllIGUtVG9sbCIKICAgICAgICBhcmNoaXd1bSA9IHNvZnR3YXJlU3lzdGVtICJTeXN0ZW0gYWdyZWdhY2ppIGRhbnljaCBoaXN0b3J5Y3pueWNoIiAiQXJjaGl3dW0gZGFueWNoIGRvIGNlbMOzdyBzdGF0eXN0eWN6bnljaCIKICAgICAgICBzeXN0ZW1QbGF0bm9zY2kgPSBzb2Z0d2FyZVN5c3RlbSAiU3lzdGVtIHByb2Nlc293YW5pYSBwxYJhdG5vxZtjaSIgIlN5c3RlbSBvZHBvd2llZHppYWxueSB6YSBvYnPFgnVnxJkgcMWCYXRub8WbY2kgZG9rb255d2FueWNoIHByemUgdcW8eXRrb3duaWvDs3ciCgogICAgICAgIHN5c3RlbUV0b2xsID0gc29mdHdhcmVTeXN0ZW0gIlN5c3RlbSBlLVRvbGwiIHsKICAgICAgICAgICAgd2ViQXBwID0gY29udGFpbmVyICJBcGxpa2FjamEgd2Vib3dhIiAiU8WCdcW8eSBkbyB6YXJ6xIVkemFuaWEga29udGVtIG9yYXogc3lzdGVtZW0iCiAgICAgICAgICAgIG1vYmlsZUFwcCA9IGNvbnRhaW5lciAiQXBsaWthY2phIG1vYmlsbmEiICJQb3p3YWxhIG5hIMWbbGVkemVuaWUgcG96eWNqaSBwb2phemR1IHcgY2VsdSBkb2tvbnl3YW5pYSBvcMWCYXQiCiAgICAgICAgICAgIGVtYmVkZGVkQXBwID0gY29udGFpbmVyICJBcGxpa2FjamEgbmEgZGVkeWtvd2FuZSB1cnrEhWR6ZW5pYSB6YmllcmFuaWEgb3DFgmF0IiAiRHppYcWCYSBuYSBkZWR5a293YW55Y2ggdXJ6xIVkemVuaWFjaCDFm2xlZHrEhWN5Y2ggcG96eWNqxJkgcG9qYXpkdSIKCiAgICAgICAgICAgIHNlcnZlckFwcCA9IGNvbnRhaW5lciAiQXBsaWthY2phIHNlcndlcm93YSIgIk9ic8WCdWd1amUgbG9naWvEmSBkemlhxYJhbmlhIHN5c3RlbXUiIHsKICAgICAgICAgICAgICAgIG1haW5Db21wb25lbnQgPSBjb21wb25lbnQgIk1haW5Db21wb25lbnQiICJDZW50cmFsbnkgZWxlbWVudCBhcGxpa2Fjamkgb2Rwb3dpZWR6aWFsbnkgemEgamVqIGR6aWHFgmFuaWUiIAogICAgICAgICAgICAgICAgc2lnbmluQ29udHJvbGxlciA9IGNvbXBvbmVudCAiU2lnbmluQ29udHJvbGxlciIgIk9kcG93aWFkYSB6YSBsb2dvd2FuaWUgZG8gc3lzdGVtdSBpIGF1dG9yeXphY2rEmSIKICAgICAgICAgICAgICAgIHRvbGxDb250cm9sbGVyID0gY29tcG9uZW50ICJUb2xsQ29udHJvbGxlciIgIk9kcG93aWFkYSB6YSBrb250cm9sb3dhbmllIHd5c29rb8WbY2kgb3DFgmF0IgoKICAgICAgICAgICAgICAgIHVzZXJTZXJ2aWNlID0gY29tcG9uZW50ICJVc2VyU2VydmljZSIgIlphd2llcmEgbG9naWvEmSBiaXpuZXNvd8SFIGRvdHljesSFY8SFIHXFvHl0a293bmlrw7N3IgogICAgICAgICAgICAgICAgcGF5bWVudFNlcnZpY2UgPSBjb21wb25lbnQgIlBheW1lbnRTZXJ2aWNlIiAiWmF3aWVyYSBsb2dpa8SZIGRvdHljesSFY8SFIHByemV0d2FyemFuaWEgcMWCYXRub8WbY2kiCiAgICAgICAgICAgICAgICB1c2VyUmVwb3NpdG9yeSA9IGNvbXBvbmVudCAiVXNlclJlcG9zaXRvcnkiICJPZHBvd2lhZGEgemEgZG9zdMSZcCBkbyBkYW55Y2ggdcW8eXRrb3duaWthIgogICAgICAgICAgICAgICAgcGF5bWVudFJlcG9zaXRvcnkgPSBjb21wb25lbnQgIlBheW1lbnRSZXBvc2l0b3J5IiAiT2Rwb3dpYWRhIHphIGRvc3TEmXAgZG8gZGFueWNoIHDFgmF0bm/Fm2NpIgoKICAgICAgICAgICAgICAgIHBvc2l0aW9uU2VydmljZSA9IGNvbXBvbmVudCAiUG9zaXRpb25TZXJ2aWNlIiAiT2Rwb3dpYWRhIHphIG9rcmXFm2xhbmllIHBvenljamkgcG9qYXpkdSB3IGtvbnRla8WbY2llIG9kY2lua8OzdyBkcsOzZyIKCiAgICAgICAgICAgICAgICBtYWluQ29tcG9uZW50IC0+IHNpZ25pbkNvbnRyb2xsZXIgIlXFvHl3YSIKICAgICAgICAgICAgICAgIG1haW5Db21wb25lbnQgLT4gdG9sbENvbnRyb2xsZXIgIlXFvHl3YSIKICAgICAgICAgICAgICAgIHNpZ25pbkNvbnRyb2xsZXIgLT4gdXNlclNlcnZpY2UgIlXFvHl3YSIKICAgICAgICAgICAgICAgIG1haW5Db21wb25lbnQgLT4gcGF5bWVudFNlcnZpY2UgIlXFvHl3YSIKICAgICAgICAgICAgICAgIHRvbGxDb250cm9sbGVyIC0+IHBvc2l0aW9uU2VydmljZSAiVcW8eXdhIgoKICAgICAgICAgICAgICAgIHVzZXJTZXJ2aWNlIC0+IHVzZXJSZXBvc2l0b3J5ICJPZGN6eXR1amUvemFwaXN1amUgZGFuZSIKICAgICAgICAgICAgICAgIHBheW1lbnRTZXJ2aWNlIC0+IHBheW1lbnRSZXBvc2l0b3J5ICJPZGN6eXR1amUvemFwaXN1amUgZGFuZSIKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZGIgPSBjb250YWluZXIgIkJhemEgZGFueWNoIiB7CiAgICAgICAgICAgICAgICB0YWdzICJEYXRhYmFzZSIKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2VydmVyQXBwIC0+IGRiICJDenl0YSBpIHphcGlzdWplIGRhbmUiCiAgICAgICAgICAgIHdlYkFwcCAtPiBzZXJ2ZXJBcHAKICAgICAgICAgICAgbW9iaWxlQXBwIC0+IHNlcnZlckFwcAogICAgICAgICAgICBlbWJlZGRlZEFwcCAtPiBzZXJ2ZXJBcHAKICAgICAgICB9CgogICAgICAgIGFkbWluIC0+IHN5c3RlbUV0b2xsLndlYkFwcCAiWmFyesSFZHphIHN5c3RlbWVtIgogICAgICAgIGtpZXJvd2NhIC0+IHN5c3RlbUV0b2xsICJLb3J6eXN0YSB6IHN5c3RlbXUiCgogICAgICAgIGtpZXJvd2NhIC0+IHN5c3RlbUV0b2xsLndlYkFwcCAiWmFyesSFZHphIGtvbnRlbSIKICAgICAgICBraWVyb3djYSAtPiBzeXN0ZW1FdG9sbC5tb2JpbGVBcHAgIk9wxYJhY2EgcHJ6ZWphemR5IgogICAgICAgIGtpZXJvd2NhIC0+IHN5c3RlbUV0b2xsLmVtYmVkZGVkQXBwICJPcMWCYWNhIHByemVqYXpkeSIKCiAgICAgICAgc3lzdGVtRXRvbGwuc2VydmVyQXBwIC0+IHN5c3RlbVBsYXRub3NjaSAiUmVhbGl6dWplIHDFgmF0bm/Fm8SHIgogICAgICAgIHN5c3RlbUV0b2xsLnNlcnZlckFwcCAtPiBhcmNoaXd1bSAiUHJ6ZWthenVqZSBkYW5lIG8gdcW8eWNpdSBkcsOzZyIKCiAgICAgICAgbGl2ZURlcGxveW1lbnQgPSBkZXBsb3ltZW50RW52aXJvbm1lbnQgIkRlcGxveW1lbnQiIHsKICAgICAgICAgICAgZGVwbG95bWVudE5vZGUgIlVyesSFZHplbmllIG1vYmlsbmUga2xpZW50YSIgIiIgIkFwcGxlIGlPUyBvciBBbmRyb2lkIiB7CiAgICAgICAgICAgICAgICBsaXZlTW9iaWxlQXBwSW5zdGFuY2UgPSBjb250YWluZXJJbnN0YW5jZSBzeXN0ZW1FdG9sbC5tb2JpbGVBcHAKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZGVwbG95bWVudE5vZGUgIkRlZHlrb3dhbmUgdXJ6xIVkemVuaWUgemJpZXJhbmlhIG9wxYJhdCIgIiIgIkxpbnV4IiB7CiAgICAgICAgICAgICAgICBsaXZlRW1iZWRkZWRBcHBJbnN0YW5jZSA9IGNvbnRhaW5lckluc3RhbmNlIHN5c3RlbUV0b2xsLmVtYmVkZGVkQXBwCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGRlcGxveW1lbnROb2RlICJVcnrEhWR6ZW5pZSBrbGllbnRhIiAiIiAiTGFwdG9wL0Rlc2t0b3AiIHsKICAgICAgICAgICAgICAgIGRlcGxveW1lbnROb2RlICJQcnplZ2zEhWRhcmthIGludGVybmV0b3dhIiAiIiAiQ2hyb21pdW0vRmlyZWZveCIgewogICAgICAgICAgICAgICAgICAgIGJyb3dzZXJJbnN0YW5jZSA9IGNvbnRhaW5lckluc3RhbmNlIHN5c3RlbUV0b2xsLndlYkFwcAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBkZXBsb3ltZW50Tm9kZSAiU3lzdGVtIGUtVG9sbCIgIiIgIkRhdGEgQ2VudGVyIGRsYSBzeXN0ZW11IGUtVG9sbCIgewogICAgICAgICAgICAgICAgZGVwbG95bWVudE5vZGUgImV0b2xsLXNlcnZlciIgIiIgIlVidW50dSBTZXJ2ZXIgMjQuMDQgTFRTIiAiIiA0IHsKICAgICAgICAgICAgICAgICAgICBkZXBsb3ltZW50Tm9kZSAiQXBhY2hlIFRvbWNhdCIgIiIgIkFwYWNoZSBUb21jYXQgOC54IiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpdmVXZWJBcHBsaWNhdGlvbkluc3RhbmNlID0gY29udGFpbmVySW5zdGFuY2Ugc3lzdGVtRXRvbGwuc2VydmVyQXBwCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGRiMSA9IGRlcGxveW1lbnROb2RlICJldG9sbC1kYjAxIiAiIiAiVWJ1bnR1IFNlcnZlciAyNC4wNCBMVFMiIHsKICAgICAgICAgICAgICAgICAgICBwcmltYXJ5RGF0YWJhc2VTZXJ2ZXIgPSBkZXBsb3ltZW50Tm9kZSAiT3JhY2xlIC0gUHJpbWFyeSIgIiIgIk9yYWNsZSAxMmMiIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZVByaW1hcnlEYXRhYmFzZUluc3RhbmNlID0gY29udGFpbmVySW5zdGFuY2Ugc3lzdGVtRXRvbGwuZGIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYjIgPSBkZXBsb3ltZW50Tm9kZSAiZXRvbGwtZGIwMiIgIiIgIlVidW50dSBTZXJ2ZXIgMjQuMDQgTFRTIiAiRmFpbG92ZXIiIHsKICAgICAgICAgICAgICAgICAgICBzZWNvbmRhcnlEYXRhYmFzZVNlcnZlciA9IGRlcGxveW1lbnROb2RlICJPcmFjbGUgLSBTZWNvbmRhcnkiICIiICJPcmFjbGUgMTJjIiAiRmFpbG92ZXIiIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZVNlY29uZGFyeURhdGFiYXNlSW5zdGFuY2UgPSBjb250YWluZXJJbnN0YW5jZSBzeXN0ZW1FdG9sbC5kYiAiRmFpbG92ZXIiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVwbG95bWVudE5vZGUgImV0b2xsLXByb2QwMDEiICIiICIiICIiIHsKICAgICAgICAgICAgICAgICAgICBzb2Z0d2FyZVN5c3RlbUluc3RhbmNlIHN5c3RlbUV0b2xsCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZGIxLnByaW1hcnlEYXRhYmFzZVNlcnZlciAtPiBkYjIuc2Vjb25kYXJ5RGF0YWJhc2VTZXJ2ZXIgIlJlcGxpa3VqZSBkYW5lIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHZpZXdzIHsKICAgICAgICBzeXN0ZW1Db250ZXh0IHN5c3RlbUV0b2xsICJTeXN0ZW1Db250ZXh0IiB7CiAgICAgICAgICAgIGluY2x1ZGUgKgogICAgICAgICAgICBhdXRvbGF5b3V0IGJ0CiAgICAgICAgfQoKICAgICAgICBjb250YWluZXIgc3lzdGVtRXRvbGwgIkNvbnRhaW5lciIgewogICAgICAgICAgICBpbmNsdWRlICoKICAgICAgICB9CgogICAgICAgICMgY29tcG9uZW50IHN5c3RlbUV0b2xsLndlYkFwcCAiQ29tcG9uZW50V2ViQXBwIiB7CiAgICAgICAgIyAgICAgaW5jbHVkZSAqCiAgICAgICAgIyB9CgogICAgICAgICMgY29tcG9uZW50IHN5c3RlbUV0b2xsLm1vYmlsZUFwcCAiQ29tcG9uZW50TW9iaWxlQXBwIiB7CiAgICAgICAgIyAgICAgaW5jbHVkZSAqCiAgICAgICAgIyB9CgogICAgICAgICMgY29tcG9uZW50IHN5c3RlbUV0b2xsLmVtYmVkZGVkQXBwICJDb21wb25lbnRFbWJlZGRlZEFwcCIgewogICAgICAgICMgICAgIGluY2x1ZGUgKgogICAgICAgICMgfQoKICAgICAgICBjb21wb25lbnQgc3lzdGVtRXRvbGwuc2VydmVyQXBwICJDb21wb25lbnRTZXJ2ZXJBcHAiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGF1dG9MYXlvdXQgYnQKICAgICAgICB9CgogICAgICAgIGRlcGxveW1lbnQgc3lzdGVtRXRvbGwgIkRlcGxveW1lbnQiIHsKICAgICAgICAgICAgaW5jbHVkZSAqCiAgICAgICAgICAgIGF1dG9MYXlvdXQgbHIKICAgICAgICB9CgogICAgICAgIHN0eWxlcyB7CiAgICAgICAgICAgIGVsZW1lbnQgIkVsZW1lbnQiIHsKICAgICAgICAgICAgICAgIGNvbG9yICNmZmZmZmYKICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtZW50ICJQZXJzb24iIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQgIzE5OWI2NQogICAgICAgICAgICAgICAgc2hhcGUgcGVyc29uCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxlbWVudCAiU29mdHdhcmUgU3lzdGVtIiB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kICMxZWJhNzkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtZW50ICJDb250YWluZXIiIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQgIzIzZDk4ZAogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsZW1lbnQgIkRhdGFiYXNlIiB7CiAgICAgICAgICAgICAgICBzaGFwZSBjeWxpbmRlcgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvbmZpZ3VyYXRpb24gewogICAgICAgIHNjb3BlIHNvZnR3YXJlc3lzdGVtCiAgICB9Cgp9" + }, + "views" : { + "componentViews" : [ { + "automaticLayout" : { + "applied" : true, + "edgeSeparation" : 0, + "implementation" : "Graphviz", + "nodeSeparation" : 300, + "rankDirection" : "BottomTop", + "rankSeparation" : 300, + "vertices" : false + }, + "containerId" : "9", + "dimensions" : { + "height" : 2611, + "width" : 2390 + }, + "elements" : [ { + "id" : "10", + "x" : 969, + "y" : 1985 + }, { + "id" : "11", + "x" : 219, + "y" : 1385 + }, { + "id" : "12", + "x" : 969, + "y" : 1385 + }, { + "id" : "13", + "x" : 219, + "y" : 785 + }, { + "id" : "14", + "x" : 1719, + "y" : 1385 + }, { + "id" : "15", + "x" : 219, + "y" : 185 + }, { + "id" : "16", + "x" : 1719, + "y" : 785 + }, { + "id" : "17", + "x" : 969, + "y" : 785 + } ], + "externalContainerBoundariesVisible" : false, + "key" : "ComponentServerApp", + "order" : 3, + "relationships" : [ { + "id" : "18" + }, { + "id" : "19" + }, { + "id" : "20" + }, { + "id" : "21" + }, { + "id" : "22" + }, { + "id" : "23" + }, { + "id" : "24" + } ] + } ], + "configuration" : { + "branding" : { }, + "lastSavedView" : "SystemContext", + "metadataSymbols" : "SquareBrackets", + "styles" : { + "elements" : [ { + "color" : "#ffffff", + "tag" : "Element" + }, { + "background" : "#199b65", + "shape" : "Person", + "tag" : "Person" + }, { + "background" : "#1eba79", + "tag" : "Software System" + }, { + "background" : "#23d98d", + "tag" : "Container" + }, { + "shape" : "Cylinder", + "tag" : "Database" + } ] + }, + "terminology" : { } + }, + "containerViews" : [ { + "dimensions" : { + "height" : 2754, + "width" : 3912 + }, + "elements" : [ { + "id" : "1", + "x" : 440, + "y" : 2185 + }, { + "id" : "2", + "x" : 1525, + "y" : 2170 + }, { + "id" : "3", + "x" : 2545, + "y" : 645 + }, { + "id" : "4", + "x" : 2565, + "y" : 1100 + }, { + "id" : "6", + "x" : 410, + "y" : 1555 + }, { + "id" : "7", + "x" : 1135, + "y" : 1540 + }, { + "id" : "8", + "x" : 1875, + "y" : 1565 + }, { + "id" : "9", + "x" : 1080, + "y" : 925 + }, { + "id" : "25", + "x" : 1090, + "y" : 340 + } ], + "externalSoftwareSystemBoundariesVisible" : false, + "key" : "Container", + "order" : 2, + "paperSize" : "A3_Landscape", + "relationships" : [ { + "id" : "26" + }, { + "id" : "27" + }, { + "id" : "28" + }, { + "id" : "29" + }, { + "id" : "30" + }, { + "id" : "33" + }, { + "id" : "34" + }, { + "id" : "35" + }, { + "id" : "36" + }, { + "id" : "38" + } ], + "softwareSystemId" : "5" + } ], + "deploymentViews" : [ { + "automaticLayout" : { + "applied" : true, + "edgeSeparation" : 0, + "implementation" : "Graphviz", + "nodeSeparation" : 300, + "rankDirection" : "LeftRight", + "rankSeparation" : 300, + "vertices" : false + }, + "dimensions" : { + "height" : 2148, + "width" : 3754 + }, + "elements" : [ { + "id" : "40", + "x" : 175, + "y" : 175 + }, { + "id" : "41", + "x" : 240, + "y" : 185 + }, { + "id" : "42", + "x" : 175, + "y" : 175 + }, { + "id" : "43", + "x" : 240, + "y" : 785 + }, { + "id" : "44", + "x" : 175, + "y" : 175 + }, { + "id" : "45", + "x" : 175, + "y" : 175 + }, { + "id" : "46", + "x" : 240, + "y" : 1431 + }, { + "id" : "47", + "x" : 175, + "y" : 175 + }, { + "id" : "48", + "x" : 175, + "y" : 175 + }, { + "id" : "49", + "x" : 175, + "y" : 175 + }, { + "id" : "50", + "x" : 1244, + "y" : 785 + }, { + "id" : "54", + "x" : 175, + "y" : 175 + }, { + "id" : "55", + "x" : 175, + "y" : 175 + }, { + "id" : "56", + "x" : 2144, + "y" : 839 + }, { + "id" : "58", + "x" : 175, + "y" : 175 + }, { + "id" : "59", + "x" : 175, + "y" : 175 + }, { + "id" : "60", + "x" : 3044, + "y" : 785 + } ], + "environment" : "Deployment", + "generatedKey" : true, + "key" : "Deployment-001", + "order" : 4, + "relationships" : [ { + "id" : "51" + }, { + "id" : "52" + }, { + "id" : "53" + }, { + "id" : "57" + }, { + "id" : "61", + "vertices" : [ { + "x" : 1936, + "y" : 660 + }, { + "x" : 2802, + "y" : 660 + } ] + }, { + "id" : "64" + } ], + "softwareSystemId" : "5" + } ], + "systemContextViews" : [ { + "automaticLayout" : { + "applied" : true, + "edgeSeparation" : 0, + "implementation" : "Graphviz", + "nodeSeparation" : 300, + "rankDirection" : "BottomTop", + "rankSeparation" : 300, + "vertices" : false + }, + "dimensions" : { + "height" : 2000, + "width" : 1600 + }, + "elements" : [ { + "id" : "1", + "x" : 250, + "y" : 1365 + }, { + "id" : "2", + "x" : 950, + "y" : 1365 + }, { + "id" : "3", + "x" : 200, + "y" : 165 + }, { + "id" : "4", + "x" : 950, + "y" : 165 + }, { + "id" : "5", + "x" : 575, + "y" : 765 + } ], + "enterpriseBoundaryVisible" : true, + "key" : "SystemContext", + "order" : 1, + "relationships" : [ { + "id" : "31" + }, { + "id" : "32" + }, { + "id" : "37" + }, { + "id" : "39" + } ], + "softwareSystemId" : "5" + } ] + } +} \ No newline at end of file