SI-709 Architektur-Doku anpassen
diff --git a/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc index 42de1d8..4ac3df2 100644 --- a/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc +++ b/src/main/asciidoc/architectureDocumentation/architectureDocumentation.adoc
@@ -589,11 +589,11 @@ === Level 2 -==== ContactBaseDataFE (frontend tier) +==== GridFailureInformationFE (frontend tier) The frontend component implements the concept of a single-page application (SPA). The framework used is Angular5. -It divides the contactBaseDataFE into three layers: +It divides the gridFailureInformationFE into three layers: . *Components* - The components (pages, lists, dialogs, common comp.) represent the presentation layer and the control layer. A component contains the control logic (.ts-file), an HTML-fragment as presentation description (.html-file) and a style definition (.css-file). . *Services* - The service component communicates with the interfaces of the backend via HTTP requests by using the model component. @@ -604,7 +604,7 @@ [plantuml] ---- -node contactBaseData_Frontend { +node gridFailureInformation_Frontend { component Model @@ -621,7 +621,7 @@ Services --> Model } -node "Contact Base Data Backend (simplified)" { +node "Grid Failure Information Backend (simplified)" { component RestService component ViewModel_API__DTO } @@ -632,7 +632,7 @@ ---- -==== contact-base-data.jar (backend tier) +==== grid-failure-information (backend tier) The backend tier contains five components which can be summarized in three layers: @@ -653,7 +653,7 @@ [plantuml] ---- -node "Contact Base Data Backend" { +node "Grid Failure Information Backend" { component Model @@ -675,7 +675,7 @@ } node DBMS { - component ContactBaseDataDB + component GridFailureInformationDB } Repository --> ContactBaseDataDB @@ -710,35 +710,83 @@ Therefore the application has to be started by providing a valid authentication token. This token is a JWT (JSON Web Token). -.contactBaseData application is called by the *portal* application. The User is already logged in +.gridFailureInformationData application is called by the *portal* application. The User is already logged in [plantuml] .... actor User participant PortalFrontend participant PortalBackend -participant ContactBaseDataFrontend -entity ContactBaseDataStorage -participant ContactBaseDataBackend +participant GridFailureInformationDataFrontend +entity GridFailureInformationDataStorage +participant GridFailureInformationDataBackend -User->PortalFrontend: Start ContactBaseData(JWT) -PortalFrontend->ContactBaseDataFrontend: nav. to frontend-URL with JWT -ContactBaseDataFrontend->ContactBaseDataStorage: Extract JWT and store token in session +User->PortalFrontend: Start GridFailureInformationData(JWT) +PortalFrontend->GridFailureInformationDataFrontend: nav. to frontend-URL with JWT +GridFailureInformationDataFrontend->GridFailureInformationDataStorage: Extract JWT and store token in session ... some delay ... -ContactBaseDataFrontend->ContactBaseDataBackend: Call any secured service with JWT +GridFailureInformationDataFrontend->GridFailureInformationDataBackend: Call any secured service with JWT group Call secured service - ContactBaseDataBackend->PortalBackend: "/checkAut(JWT)" + GridFailureInformationDataBackend->PortalBackend: "/checkAut(JWT)" group Authorization succeeded - ContactBaseDataBackend->ContactBaseDataBackend: run service - ContactBaseDataBackend->ContactBaseDataFrontend: return service result + GridFailureInformationDataBackend->GridFailureInformationDataBackend: run service + GridFailureInformationDataBackend->GridFailureInformationDataFrontend: return service result end group Authorization failed - ContactBaseDataBackend->ContactBaseDataFrontend: return HTTP Code 401 + GridFailureInformationDataBackend->GridFailureInformationDataFrontend: return HTTP Code 401 end end .... +=== Interfaces + +==== Import of a GridFailureInformation object via MessageBus + +First refer to <<#configuration-section-rabbit_mq, RabbitMQ configuration of the backend>> +to setup the RabbitMQ configuration correctly. + +Ein client, that wants to use the message queue to import data, has to use +the correct queue/channel configuration.In addition, the following values must be entered as message headers: + +* *metaId* Unique id out of the foreign system. +Eindeutige Id aus dem Fremdsystem. For each metaId from an external system +only one failure information object is ever created. If an existing metaId is sent again, +the existing object is updated in the GridFailureInformation system. +* *source* Short description of the external system, the message comes from +* *description* Possibly a short description of the message +* *payload* The message payload is the string of the message JSON + +Example of such a payload: +[source,json] +---- +{ + "branch": "S", + "city": "Chicago", + "description": "failure in the system", + "district": "", + "failureBegin": "2020-11-19T14:13:15.666Z", + "housenumber": "10b", + "latitude": 12.345, + "longitude": 44, + "planned": true, + "postcode": "3456", + "pressureLevel": null, + "radiusInMeters": 678, + "stationDescription": null, + "stationId": null, + "street": "Downstreet", + "voltageLevel": "HS" +} +---- + +The header information and the payload are strictly validated. The validation rules +can be found in the files "*ImportDataDto.java*" and "*ForeignFailureDataDto.java*" +(package "*org.eclipse.openk.gridfailureinformation.viewmodel*). + +Please refer to the subproject "*test Import Grid Failures*" of the backend repository, for an example for +sending Data over the message queue. + === Deployment of the application components ==== Deployment of the frontend @@ -762,8 +810,8 @@ TODO: - -===== Configuration of the contact base data backend +[#configuration-section-rabbit_mq,Configuration of the backend] +===== Configuration of the grid failure information backend The backend service is configured in the * .yaml files, which are located in the JAR file. @@ -785,6 +833,16 @@ * *authNAuthService.ribbon.listOfServers* Here one can configure the base url to the Auth'n'Auth-Service +[#configuration-section-rabbit_mq] +_RabbitMQ configuration_ + +* *rabbitmq.host* RabbitMQ-Server (for example "localhost") +* *rabbitmq.port* Port of the RabbitMQ-Server (for example "5672") +* *rabbitmq.username* Username for the technical RabbitMQ user +* *rabbitmq.password* Password the the technical RabbitMQ user +* *rabbitmq.queuename* Queuename for the import queue (will be created by the backend) +* *rabbitmq.routingkey* Routing key for the import queue +* *rabbitmq.exchangename*: Exchange name for the import queue === CI- and CD-Components