@startuml efestocompilationruntimeseparation
header Efesto Compilation Runtime Separation
' 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/plug>
!include <tupadr3/govicons/tools>
!include <tupadr3/font-awesome-5/cogs>
!include <office/Concepts/web_services>
!include puml_images/Images.puml

HIDE_STEREOTYPE()
SHOW_PERSON_PORTRAIT()

System(EfestoFramework, "Efesto", $tags="efesto_framework_style") {
    AddElementTag("efesto_framework_style", $bgColor="orange")
    AddElementTag("efesto_plugin_style", $sprite="plug,scale=0.5,color=gray")
    System(EfestoCore,"Efesto Core", $sprite="efesto")
    Container(CompilationManager,"Compilation Manager","",$sprite="tools")
    Container(RuntimeManager,"Runtime Manager","",$sprite="cogs")
    Rel_D(EfestoCore,CompilationManager,"Compile","")
    Rel_D(EfestoCore,RuntimeManager,"Execute","")
    Container(CompileService_1,"Compile Service 1","", $tags="efesto_plugin_style")
    Container(CompileService_2,"Compile Service 2","", $tags="efesto_plugin_style")
    Container(RuntimeService_1,"Runtime Service 1","", $tags="efesto_plugin_style")
    Container(RuntimeService_2,"Runtime Service 2","", $tags="efesto_plugin_style")
    Rel_D(CompilationManager,CompileService_1,"Compile","")
    Rel_D(CompilationManager,CompileService_2,"Compile","")
    Rel_D(RuntimeManager,RuntimeService_1,"Execute","")
    Rel_D(RuntimeManager,RuntimeService_2,"Execute","")
}




@enduml