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 |
---|
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.
We need to
- Specify what the current state machine is for both compositions and elements and describe what the state machine for both should be
- Specify what the behaviour of the runtime and participants should be in each state
- Specify what the behaviour should be for the runtime and participants should be in transitions
Specifically we need to clarify:
- State of the composition elements
- State of the overall composition is derived from the composition element states
- Admin state/Running state
- When all the elements are fully up and configured, the go to state Passive, when all elements are in Passive, the full composition goes to Passive
- Error states: Are they parallel sates or part of the same state?
- There should “it didn’t work” states like “Passive-Error” or “Run_Error” (names to be decided later)
- Describe what the “Running” state means and what the participant should do in Passive->Running and Running->Passive transitions.
- Say a K8S service crashes, how do we feed that back? Running_Error. The state of the POD is only checked during startup. It is not periodically checked. There should be supervision.
ACM Element States in Participants
This section describes the state handling in ACM Elements in Participants
The following states are the only states in participants:
PlantUML Macro | ||||
---|---|---|---|---|
| ||||
@startuml [*] --> UNINITIALIZEDCOMMISSIONED: Created by\nACM Runtime UNINITIALIZEDCommission COMMISSIONED --> [*]: Decommission COMMISSIONED --> PASSIVEPRIMING: Initialize (Success) UNINITIALIZEDPrime PRIMED --> PRIMING: Prime PRIMING --> UNINITIALIZED_ERROR: Initialize (Error) PASSIVEPRIMED: AC Element Types\nall PRIMED PRIMING --> DEPRIMING: Deprime PRIMED --> UNINITIALIZEDDEPRIMING: Uninitialize (Success) PASSIVEDeprime DEPRIMING --> PASSIVE_ERROR: Uninitialize (Error) PASSIVE_ERRORCOMMISSIONED: 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 [*] --> UNINITIALIZED: Uninitialize (Success) PASSIVE_ERRORCOMMISSIONED: Commission COMMISSIONED --> [*]: Decommission COMMISSIONED --> PASSIVE_ERRORPRIMING: Uninitialize (Error) UNINITIALIZED_ERRORPrime PRIMED --> PRIMING: Prime PRIMING --> UNINITIALIZEDPRIMED: UnitializeReset (Success) UNINITIALIZED_ERRORAC Element Type Primed\nresponse from Participant PRIMING --> UNINITIALIZED_ERROR: UnitializeReset (Error) PASSIVEDEPRIMING: Deprime PRIMED --> DEPRIMING: Deprime DEPRIMING --> RUNNINGCOMMISSIONED: Activate (Success) PASSIVE 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 [*] --> PASSIVE_ERRORPRIMED: Activate (Failure) PASSIVE_ERRORPrime from\nACM Runtime PRIMED --> PASSIVEPRIMED: Prime from PassiveResetACM (Success) PASSIVE_ERRORRuntime PRIMED --> PASSIVE_ERROR[*]: 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 [*]PassiveReset (Failure) PASSIVE_ERROR --> UNINITIALIZED_ERRORUNDEPLOYED: ForceUninitialize RUNNINGCreate UNDEPLOYED --> [*]: Delete UNDEPLOYED --> PASSIVEDEPLOYING: Passivate (Success) RUNNINGDeploy DEPLOYING --> RUNNING_ERROR: Passivate (Error) RUNNING_ERRORDEPLOYED: AC Element Instances\nall DEPLOYED DEPLOYING --> PASSIVE: Passivate (Success) RUNNING_ERRORUNDEPLOYING: Undeploy DEPLOYED --> UNDEPLOYING: Undeploy UNDEPLOYING --> PASSIVE_ERROR: Passivate (Error) RUNNINGUNDEPLOYED: AC Element Instances\nall UNDEPLOYED state DEPLOYED { [*] --> RUNNING_ERRORLOCKED: RuntimeError RUNNING_ERRORDeploy LOCKED --> [*]: Undeploy LOCKED --> RUNNINGUNLOCKING: ClearRuntimeError RUNNING_ERRORUnlock UNLOCKING --> UNLOCKED: AC Element Instances\nall UNLOCKED UNLOCKED --> RUNNINGLOCKING: RuntimeReset RUNTIME_ERRORLock UNLOCKING --> LOCKING: Lock LOCKING --> PASSIVE_ERROR: ForcePassiveLOCKED: AC Element Instances\nall LOCKED } @enduml |
Then, a Control Loop Element can be running a number of operations, each of which has an operational state:
...
To
State
...
Triggered
By
...
UNINITIALIZED
UNINITIALIZED
...
PASSIVE
UNINITIALIZED_ERROR
...
Success
Fail
...
PASSIVE
PASSIVE
PASSIVE_ERROR
PASSIVE_ERROR
...
UNINITIALIZED
PASSIVE_ERROR
UNINITIALIZED
PASSIVE_ERROR
...
Success
Fail
Success
Fail
...
ACM Runtime
...
UNINITIALIZED_ERROR
UNINITIALIZED_ERROR
...
UNINITIALIZED
UNINITIALIZED_ERROR
...
Success
Fail
...
ACM Runtime
...
PASSIVE
PASSIVE
...
RUNNING
PASSIVE_ERROR
...
Success
Fail
...
PASSIVE_ERROR
PASSIVE_ERROR
...
PASSIVE
PASSIVE_ERROR
...
Success
Fail
...
ACM Runtime
Participant
...
RUNNING
RUNNING
RUNNING_ERROR
RUNNING_ERROR
...
PASSIVE
RUNNING_ERROR
PASSIVE
RUNNING_ERROR
...
Success
Fail
...
ACM Runtime
Participant
...
A Control Loop Element has a status indicator
...
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 |
Each participant also records a log of all operations that occur, recording the information below:
...
To
State
...