@startuml

!theme plain

==Init==
SimScheduler -> ExtSimAdapter: <font color=red>!</font> InitializeExtSimAdapterTrigger(InitExtSimAdapterData)
activate ExtSimAdapter

ExtSimAdapter -> SimScheduler: <font color=red>!</font> CompletionMessage(InitTick)
deactivate ExtSimAdapter



SimScheduler -> ExtSimAdapter: <font color=red>!</font> ActivityStartTrigger(-1L)
activate ExtSimAdapter

ExtSimAdapter -> ExtSimulation: queue(ExtActivityStartTrigger)
activate ExtSimulation

ExtSimulation -> ExtSimAdapter: queue(CompletionMessage(newTriggers))
deactivate ExtSimulation

ExtSimAdapter -> SimScheduler: <font color=red>!</font> CompletionMessage(newTriggers)
deactivate ExtSimAdapter



SimScheduler -> PrimaryServiceProxy: <font color=red>!</font> ScheduleServiceTrigger(InitializeServiceTrigger(-1L))
activate PrimaryServiceProxy

SimScheduler -> ExtOpfDataService: <font color=red>!</font> ScheduleServiceTrigger(InitializeServiceTrigger(-1L))
activate ExtOpfDataService

ExtOpfDataService -> PrimaryServiceProxy: Zuweisung als PDW für Gen1+2
ExtOpfDataService -> SimScheduler: <font color=red>!</font> CompletionMessage(GeneratorDataRef)
deactivate ExtOpfDataService

SimScheduler -> Generator1: <font color=red>!</font> ActivityStartTrigger(-1L)
activate Generator1
SimScheduler -> Generator2: <font color=red>!</font> ActivityStartTrigger(-1L)
activate Generator2

Generator1 -> PrimaryServiceProxy: Request: Primärdaten vorhanden?
Generator2 -> PrimaryServiceProxy: Request: Primärdaten vorhanden?

PrimaryServiceProxy -> Generator1: Primärdaten vorhanden: Ja/Nein
PrimaryServiceProxy -> Generator2: Primärdaten vorhanden: Ja/Nein
PrimaryServiceProxy -> SimScheduler: <font color=red>!</font> CompletionMessage(None)
deactivate PrimaryServiceProxy

Generator1 -> SimScheduler: <font color=red>!</font> CompletionMessage(None)
deactivate Generator1
Generator2 -> SimScheduler: <font color=red>!</font> CompletionMessage(None)
deactivate Generator2

==Sim==
SimScheduler -> ExtSimAdapter: <font color=red>!</font> ActivityStartTrigger(tick)
activate ExtSimAdapter

ExtSimAdapter -> ExtSimulation: queue(ActivityStartTrigger(tick))
deactivate ExtSimAdapter

activate ExtSimulation
ExtSimulation -> ExtOpfDataService: <font color=red>!</font> SetPointsMessage(_)
ExtSimulation -> ExtSimAdapter: <font color=red>!</font> ScheduleDataServiceMessage(\n\tdataServiceRef\n)
deactivate ExtSimulation

activate ExtSimAdapter
ExtSimAdapter -> SimScheduler: <font color=red>!</font> ScheduleTriggerMessage(\n\t_, dataServiceRef)
deactivate ExtSimAdapter

SimScheduler -> ExtOpfDataService: <font color=red>!</font> ActivityStartTrigger(tick)
activate ExtOpfDataService
ExtOpfDataService -> Generator1: <font color=red>!</font> ProvideSetPointDataMessage(tick)
ExtOpfDataService -> Generator2: <font color=red>!</font> ProvideSetPointDataMessage(tick)
ExtOpfDataService -> SimScheduler: <font color=red>!</font> ScheduleDataServiceMessage(\n\tdataServiceRef\n)
deactivate ExtOpfDataService

SimScheduler -> Generator1: <font color=red>!</font> ActivityStartTrigger(tick)
activate Generator1
SimScheduler -> Generator2: <font color=red>!</font> ActivityStartTrigger(tick)
activate Generator2
Generator1 -> SimScheduler: <font color=red>!</font> CompletionMessage(None)
deactivate Generator1
Generator2 -> SimScheduler: <font color=red>!</font> CompletionMessage(None)
deactivate Generator2

activate ExtOpfDataService
ExtOpfDataService -> ExtSimulation: <font color=red>!</font> PowerFlowCalculationResult(tick)
deactivate ExtOpfDataService

activate ExtSimulation
ExtSimulation -> ExtSimAdapter: <font color=red>!</font> CompletionMessage(None)
deactivate ExtSimulation

activate ExtSimAdapter
ExtSimAdapter -> SimScheduler: <font color=red>!</font> CompletionMessage(None)
deactivate ExtSimAdapter

@enduml