generated from ministryofjustice/hmpps-template-kotlin
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcomponent-overview.puml
28 lines (19 loc) · 1.64 KB
/
component-overview.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@startuml component-overview
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
skinparam linetype polyline
title [Component Overview] HMPPS Integration API
System_Ext(consumer, "Consumer Application", "An authenticated consumer of the Integration API.")
Boundary(spring_boot_api, "HMPPS Integration REST API", "Spring Boot Kotlin API"){
Container(controller, "Controller", "Spring Boot API Controller", "Receives the request, uses Spring Boot functionality to route to the correct method, also validates incoming requests. Each method has a matching service. Also commonly known as a 'resource'.")
Container(service, "Service", "Spring Boot Service Bean", "Responsible for deciding which gateways to call to get the necessary data, as well as consolidating responses from one or many gateways. Also commonly known as a 'use case'")
Container(gateway, "Gateway", "Spring Boot Component Bean", "Makes a request on upstream systems to return data to the calling service. Converts response data into domain models for the service.")
Container(model, "Model", "Kotlin Data Class", "Represents the response data of an upstream API and our API. Each data class includes a mapping function which transforms the relevant upstream API model into our HMPPS model.")
}
System_Ext(upstream, "Upstream Systems", "Integrated systems where data is retrieved from.")
Rel(consumer, controller, "Makes API calls to", "JSON/HTTPS")
Rel_Down(controller, service, "Uses")
Rel_Down(service, gateway, "Uses")
Rel_Down(gateway, upstream, "Makes API calls to", "JSON/HTTPS")
Rel_Right(gateway, model, "Uses")
SHOW_DYNAMIC_LEGEND()
@enduml