@startuml "mvp-vaccine-comp-view"
!includeurl  https://raw.githubusercontent.com/RicardoNiepel/C4-PlantUML/master/C4_Container.puml

title Components diagram for the Vaccine Monitoring solution

Person(SaleRep,Staff,"Sale Representant")
Person(VaccineCoordinator,Staff,"Vaccine Operator")
System_Ext(reefer,"Refrigerator Container IoT")
System_Boundary(vms,"Vaccine_Monitoring_Solution") {
    Container(orderms,"Order management Service","Java", "Microservice to manage order")
    Container(reefers_mgr,"Reefer Mgr","Java","Microservice to manage reefer container entities")
    ContainerDb(reeferDB,"Reefer DB","DB2","Persist Reefer Containers data and states")
    ContainerDb(orderDB,"Order DB","DB2","Persist Orders data and states")
    Container(message_bus, "Message Bus", "Kafka", "Transport for business events")
    Container(cold_chain_monitoring,"Cold Chain Monitoring","Agent, Kafka Stream","Process Telemetries in real time")
    Container(optim,"Order and Reefer Container Optimization","CPLEX API","CPLEX")
    Container(maintenance_process,"Maintenance Process","BPM","Business process to track reefer container maintenance")
    Container(watson_ml,"Anomaly detection scoring","Watson ML","Anomaly detection scoring")
}

Rel(VaccineCoordinator,orderms,"Create orders","HTTPS")
Rel(SaleRep,orderms,"Uses", "HTTPS")
Rel(VaccineCoordinator,maintenance_process,"Process refrigerator maintenance","HTTPS")
Rel(reefers_mgr,reeferDB,"Persists reefers to","JDBC")
Rel(optim,message_bus,"Consume orders, inventry, reefers","HTTPS")
Rel(orderms,message_bus,"Publishes","Kafka")
Rel(orderms,orderDB,"Persist Order","JDBC")
Rel(optim,message_bus,"Publishes shipment plans","Kafka")

Rel(message_bus, reefers_mgr, "Subscribes to vaccine events","HTTPS,Kafka")
Rel(message_bus,cold_chain_monitoring,"Subscribes telemetries","HTTPS,Kafka")
Rel(cold_chain_monitoring,reefers_mgr,"Notifies","Events")
Rel(cold_chain_monitoring,watson_ml,"Delegates","HTTPS")
Rel(reefers_mgr,maintenance_process,"Triggers","HTTPS")
Rel(reefer, message_bus,"Sends telemetries","HTTPS,Kafka")


@enduml