Automation Composition Management manages a number of states of various types to manage the lifecycle of compositions. Those states are described here. Please also see the ACM System Level Dialogues page to see the system dialogues that change states and how states interrelate in detail. Please also see ITU Recommendation X.731, which is reflected in the states of AC Element Instances.
Participant State
ACParticipant states are NOT managed by ACM but the state of a participant is recorded and supervised by ACM.
PlantUML Macro |
---|
@startuml
[*] --> ONLINE: Register
ONLINE --> ONLINE: Heartbeat
ONLINE --> OFFLINE: Timeout
OFFLINE --> ONLINE: Heartbeat
ONLINE --> [*]: Deregister
OFFLINE --> [*]: Deregister
@enduml |
Automation Composition Type State
The states that an Automation Composition Type can have are shown in the diagram below.
PlantUML Macro |
---|
@startuml
[*] --> COMMISSIONED: Commission
COMMISSIONED --> [*]: Decommission
COMMISSIONED --> PRIMING: Prime
PRIMED --> PRIMING: Prime
PRIMING --> PRIMED: AC Element Types\nall PRIMED
PRIMING --> DEPRIMING: Deprime
PRIMED --> DEPRIMING: Deprime
DEPRIMING --> COMMISSIONED: AC Element Types\nall DEPRIMED
@enduml |
Automation Composition Element Type State
The states that an Automation Composition Element Type can have on ACM Runtime are shown in the diagram below.
PlantUML Macro |
---|
@startuml
[*] --> COMMISSIONED: Commission
COMMISSIONED --> [*]: Decommission
COMMISSIONED --> PRIMING: Prime
PRIMED --> PRIMING: Prime
PRIMING --> PRIMED: AC Element Type Primed\nresponse from Participant
PRIMING --> DEPRIMING: Deprime
PRIMED --> DEPRIMING: Deprime
DEPRIMING --> COMMISSIONED: AC Element Type Deprimed\nresponse from Participant
@enduml |
The states that an Automation Composition Element Type can have on a Participant are shown in the diagram below.
PlantUML Macro |
---|
@startuml
[*] --> PRIMED: Prime from\nACM Runtime
PRIMED --> PRIMED: Prime from ACM Runtime
PRIMED --> [*]: Deprime from\nACM Runtime
@enduml |
Automation Composition Instance State
The states that an Automation Composition Instance can have are shown in the diagram below.
PlantUML Macro |
---|
@startuml |
The current ACM state machine works but it is incosistent in the way it handles error states or failed transitions. A composition and its elements can get "stuck" in transition states.
State Machine for Automation Compositions
Current State Machine
Proposed State Machine
PlantUML Macro |
---|
@startuml 'https://plantuml.com/state-diagram state UNINITIALIZED state UNINITIALIZED_TO_PASSIVE state PASSIVE_TO_UNINITIALIZED state PASSIVE state PASSIVE_TO_RUNNING state RUNNING_TO_PASSIVE state RUNNING state RUNNING_TO_PASSIVE_ERROR state PASSIVE_TO_RUNNING_ERROR state RUNNING state RUN_ERROR [*] --> UNDEPLOYED: UNINITIALIZED UNINITIALIZEDCreate UNDEPLOYED --> [*]: Delete UNDEPLOYED --> UNINITIALIZED_TO_PASSIVE PASSIVE_TO_UNINITIALIZEDDEPLOYING: Deploy DEPLOYING --> DEPLOYED: AC Element Instances\nall DEPLOYED DEPLOYING --> UNINITIALIZED UNINITIALIZED_TO_PASSIVEUNDEPLOYING: Undeploy DEPLOYED --> UNDEPLOYING: Undeploy UNDEPLOYING --> PASSIVE PASSIVE UNDEPLOYED: AC Element Instances\nall UNDEPLOYED state DEPLOYED { [*] --> PASSIVE_TO_RUNNING PASSIVELOCKED: Deploy LOCKED --> [*]: Undeploy LOCKED --> PASSIVE_TO_UNINITIALIZED PASSIVE_TO_RUNNINGUNLOCKING: Unlock UNLOCKING --> UNLOCKED: AC Element Instances\nall UNLOCKED UNLOCKED --> LOCKING: RUNNING PASSIVE_TO_RUNNING --> PASSIVE_TO_RUNNING_ERROR PASSIVE_TO_RUNNING_ERROR --> PASSIVE_TO_RUNNING RUNNING --> RUNNING_TO_PASSIVE RUNNING_TO_PASSIVE --> PASSIVE RUNNING_TO_PASSIVE --> RUNNING_TO_PASSIVE_ERROR RUNNING --> RUN_ERROR RUN_ERROR --> RUNNING RUN_ERROR --> RUNNING_TO_PASSIVE RUNNING_TO_PASSIVE_ERROR --> RUNNING_TO_PASSIVE @enduml |
State Machine for Automation Composition Elements
Current State Machine
Lock
UNLOCKING --> LOCKING: Lock
LOCKING --> LOCKED: AC Element Instances\nall LOCKED
}
@enduml |
Automation Composition Element Instance State
The states that an Automation Composition Element Instance can have on ACM Runtime are shown in the diagram below.
PlantUML Macro |
---|
@startuml
[*] --> UNDEPLOYED: Create
UNDEPLOYED --> [*]: Delete
UNDEPLOYED --> DEPLOYING: Deploy
DEPLOYING --> DEPLOYED: AC Element\nInstance DEPLOYED
DEPLOYING --> UNDEPLOYING: Undeploy
DEPLOYED --> UNDEPLOYING: Undeploy
UNDEPLOYING --> UNDEPLOYED: AC Element\nInstance UNDEPLOYED
state DEPLOYED {
[*] --> LOCKED: Deploy
LOCKED --> [*]: Undeploy
LOCKED --> UNLOCKING: Unlock
UNLOCKING --> UNLOCKED: AC Element\nInstance UNLOCKED
UNLOCKED --> LOCKING: Lock
UNLOCKING --> LOCKING: Lock
LOCKING --> LOCKED: AC Element\nInstance LOCKED
}
@enduml |
The states that an Automation Composition Element Instance can have on a Participant are shown in the diagram below.
PlantUML Macro |
---|
@startuml
[*] --> DEPLOYING: Deploy
DEPLOYING --> DEPLOYED: AC Element\nInstance DEPLOYED\nRespond with\nAC Element State Update
DEPLOYING --> UNDEPLOYING: Undeploy
DEPLOYING --> [*]: Deploy Failed\nRespond with\nAC Element State Update
DEPLOYED --> UNDEPLOYING: Undeploy
UNDEPLOYING --> [*]: Undeployed\nRespond with\nAC Element State Update
state DEPLOYED {
[*] --> LOCKED
LOCKED --> [*]
LOCKED --> UNLOCKING: Unlock
UNLOCKING --> UNLOCKED: AC Element\nInstance UNLOCKED
UNLOCKED --> LOCKING: Lock
UNLOCKING --> LOCKING: Lock
LOCKING --> LOCKED: AC Element\nInstance LOCKED
}
@enduml |
...