@startuml efestopluginchaining
header Efesto Plugin Chaining
' 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/fast_forward>
!include <tupadr3/font-awesome-5/plug>
!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>
!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")
    AddRelTag("fast_forward", $lineStyle = DashedLine(), $sprite="fast_forward,scale=0.5")
    System(EfestoCore,"Efesto Core", $sprite="efesto")
    Container(Engine_1,"Engine 1","", $tags="efesto_plugin_style")
    Container(Engine_2,"Engine 2","", $tags="efesto_plugin_style")
    Container(Engine_3,"Engine 3","", $tags="efesto_plugin_style")
    Container(Engine_4,"Engine 4","", $tags="efesto_plugin_style")
    Lay_U(Engine_1,EfestoCore)
    Lay_U(Engine_2,EfestoCore)
    Lay_U(Engine_3,EfestoCore)
    Lay_U(Engine_4,EfestoCore)
    Rel_D(EfestoCore,Engine_1,"Artifact 1","")
    Rel_U(Engine_1,EfestoCore,"Artifact 2","")
    Rel_D(EfestoCore,Engine_2,"Artifact 2","")
    Rel_U(Engine_2,EfestoCore,"Artifact 3","")
    Rel_D(EfestoCore,Engine_3,"Artifact 3","")
    Rel_U(Engine_3,EfestoCore,"Artifact 4","")
    Rel_D(EfestoCore,Engine_4,"Artifact 4","")
    Rel_U(Engine_4,EfestoCore,"Result","")
    RelIndex_Neighbor(1, Engine_1, Engine_2, "",  $tags="fast_forward")
    RelIndex_Neighbor(2, Engine_2, Engine_3, "", $tags="fast_forward")
    RelIndex_Neighbor(3, Engine_3, Engine_4, "",  $tags="fast_forward")
}


@enduml