@startuml

title Arkitekturöversikt

actor :Invånare: as Invånare
actor :Admin: as Admin
actor :ParkingGuardExtSys: as ParkingGuardExtSys
node "BoPark" {
    component [UserUI] as UserUI
    component [AdminUI] as AdminUI
    component [ParkingGuardAPI] as ParkingGuardAPI
    component [AuthenticationService] as AuthenticationService
    component [AuthorizationService] as AuthorizationService
    cloud RabbitMQ {
    }
    component [ParkingPermitService] as ParkingPermitService
    component [ParkingAreaService] as ParkingAreaService
    component [PersonInfoService] as PersonInfoService
    component [CarInfoService] as CarInfoService
    component [PaymentService] as PaymentService
    component [TransactionService] as TransactionService
    component [ConfigService] as ConfigService
} 

node "InfoTorg" {
}

node "e.g.NETS" {
}

Invånare ->> UserUI
Admin ->> AdminUI
ParkingGuardExtSys ->> ParkingGuardAPI
UserUI <--> RabbitMQ
AdminUI <--> RabbitMQ
ParkingGuardAPI <--> RabbitMQ
AuthenticationService <-right-> RabbitMQ
AuthorizationService <-left-> RabbitMQ
RabbitMQ <--> ParkingPermitService
RabbitMQ <--> ParkingAreaService
RabbitMQ <--> PersonInfoService
RabbitMQ <--> CarInfoService
RabbitMQ <--> PaymentService
RabbitMQ <--> TransactionService
RabbitMQ <--> ConfigService
PersonInfoService ->> InfoTorg
CarInfoService ->> InfoTorg
PaymentService ->> e.g.NETS
@enduml
