...
PlantUML Macro |
---|
@startuml activate CLAMP_Runtime CLAMP_Runtime -> CLAMP_Runtime: Build an ordered list of the Start Phases in the Control Loop Instance alt "State Change UNITIALISED_to_PASSIVE or PASSIVE_to_RUNNING" loop over Start Phases list in increasing order CLAMP_Runtime -> Participant: Control Loop State Change\n[to all Participants in Control Loop with this Start Phase] CLAMP_Runtime -> CLAMP_Runtime: Asynchronously wait for answers from Participants CLAMP_Runtime <- Participant: Control Loop State Change Ack [from each Participant in this Start Phase of Control Loop] alt "State Change Ack reports success" CLAMP_Runtime -> CLAMP_Runtime: Log success else "State Change Ack reports an error" CLAMP_Runtime -> CLAMP_Runtime: Log error CLAMP_Runtime -> CLAMP_Runtime: Reset state of Control Loop CLAMP_Runtime -> CLAMP_Runtime: Abort State Change operation end end end else loop over Start Phases list in decreasing order CLAMP_Runtime -> Participant: Control Loop State Change\n[to all Participants in Control Loop with this Start Phase] CLAMP_Runtime -> CLAMP_Runtime: Asynchronously wait for answers from Participants CLAMP_Runtime <- Participant: Control Loop State Change Ack [from each Participant in this Start Phase of Control Loop] alt "State Change Ack reports success" CLAMP_Runtime -> CLAMP_Runtime: Log success else "State Change Ack reports an error" then CLAMP_Runtime -> CLAMP_Runtime: Log error CLAMP_Runtime -> CLAMP_Runtime: Reset state of Control Loop CLAMP_Runtime -> CLAMP_Runtime: Abort State Change operation end end end CLAMP_Runtime -> CLAMP_Runtime: Set overall state of Control Loop @enduml |
The handling of a ControlLoopStateChange message in each participant is as shown below.
...