@startuml
header Inventory diagram
' Overall C4-PlantUML binding
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
' Additional C4 macros, like RelIndex
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Dynamic.puml
!include <tupadr3/devicons2/chrome>
!include <tupadr3/devicons2/java>
!include <tupadr3/devicons2/postgresql>
!include <tupadr3/devicons2/nginx_original>
!include <tupadr3/devicons2/react_original>
!include <tupadr3/devicons2/android>
!include <tupadr3/devicons2/groovy>
!include <tupadr3/material/queue>
!include <tupadr3/material/mail>
!include <tupadr3/devicons2/dot_net_wordmark>
!include <tupadr3/devicons2/oracle_original>
!include <tupadr3/font-awesome-5/user>
!include <office/Concepts/web_services>

HIDE_STEREOTYPE()
SHOW_PERSON_PORTRAIT()

!startsub efesto_content
Container(CompilationManager, "Compilation Manager", "Container: java", "API for requesting compilation", $sprite="java")
Container(RuntimeManager, "Runtime Manager", "Container: java", "API for requesting execution", $sprite="java")
!endsub

!startsub efesto_container
System(Efesto,"Efesto") {
    !includesub efesto_content
}
!endsub

AddElementTag("admin", $fontColor=$ELEMENT_FONT_COLOR, $bgColor=$PERSON_BG_COLOR, $borderColor=$PERSON_BORDER_COLOR, $sprite="osa_user_audit", $legendText="administration user", $shape=EightSidedShape())
UpdateElementStyle(puppa, $sprite="user")

Enterprise_Boundary(ClientCode, "Client Application") {
    Person_Ext(Resource_provider,"Resource provider","Any provider of EfestoResource for compilation",$sprite="user")
    Person_Ext(Input_provider,"Input provider","Any service requiring evaluation (e.g. Kogito, KieServer)",$sprite="user")
}

Container(implementation, "Engine", $tags="admin") {
    Component(KieCompilerService, "Compiler Service Implementation", "Container: java", "Delivers processed resources (GeneratedResource)", $sprite="java")
    Component(KieRuntimeService, "Runtime Service Implementation", "Container: java", "Delivers evaluated results (EfestoOutput)", $sprite="java")
}


@enduml