diff options
Diffstat (limited to 'docs/clamp/acm/plantuml')
46 files changed, 841 insertions, 0 deletions
diff --git a/docs/clamp/acm/plantuml/states/AcElementInstanceStatesOnPpnt.puml b/docs/clamp/acm/plantuml/states/AcElementInstanceStatesOnPpnt.puml new file mode 100644 index 00000000..8c6e4302 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcElementInstanceStatesOnPpnt.puml @@ -0,0 +1,14 @@ +@startuml + +[*] --> DEPLOYED: Deploy from ACM Runtime +DEPLOYED --> [*]: Undeploy from ACM Runtime + + +state DEPLOYED { + [*] --> LOCKED: Deploy + LOCKED --> [*]: Undeploy from\nACM Runtime + LOCKED --> UNLOCKED: Unlock from\nACM Runtime + UNLOCKED --> LOCKED: Lock from\nACM Runtime +} + +@enduml diff --git a/docs/clamp/acm/plantuml/states/AcElementInstanceStatesOnRuntime.puml b/docs/clamp/acm/plantuml/states/AcElementInstanceStatesOnRuntime.puml new file mode 100644 index 00000000..c27b320c --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcElementInstanceStatesOnRuntime.puml @@ -0,0 +1,22 @@ +@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 diff --git a/docs/clamp/acm/plantuml/states/AcElementTypeStatesOnPpnt.puml b/docs/clamp/acm/plantuml/states/AcElementTypeStatesOnPpnt.puml new file mode 100644 index 00000000..f71da4cc --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcElementTypeStatesOnPpnt.puml @@ -0,0 +1,7 @@ +@startuml + +[*] --> PRIMED: Prime from\nACM Runtime +PRIMED --> PRIMED: Prime from ACM Runtime +PRIMED --> [*]: Deprime from\nACM Runtime + +@enduml diff --git a/docs/clamp/acm/plantuml/states/AcElementTypeStatesOnRuntime.puml b/docs/clamp/acm/plantuml/states/AcElementTypeStatesOnRuntime.puml new file mode 100644 index 00000000..b5e093e0 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcElementTypeStatesOnRuntime.puml @@ -0,0 +1,12 @@ +@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 diff --git a/docs/clamp/acm/plantuml/states/AcInstanceStates.puml b/docs/clamp/acm/plantuml/states/AcInstanceStates.puml new file mode 100644 index 00000000..17958411 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcInstanceStates.puml @@ -0,0 +1,22 @@ +@startuml + +[*] --> UNDEPLOYED: Create +UNDEPLOYED --> [*]: Delete +UNDEPLOYED --> DEPLOYING: Deploy +DEPLOYING --> DEPLOYED: AC Element Instances\nall DEPLOYED +DEPLOYING --> UNDEPLOYING: Undeploy +DEPLOYED --> UNDEPLOYING: Undeploy +UNDEPLOYING --> UNDEPLOYED: AC Element Types\nall UNDEPLOYED + + +state DEPLOYED { + [*] --> LOCKED: Deploy + LOCKED --> [*]: Undeploy + LOCKED --> UNLOCKING: Unlock + UNLOCKING --> UNLOCKED: AC Element Types\nall UNLOCKED + UNLOCKED --> LOCKING: Lock + UNLOCKING --> LOCKING: Lock + LOCKING --> LOCKED: AC Element Types\nall LOCKED +} + +@enduml diff --git a/docs/clamp/acm/plantuml/states/AcTypeStates.puml b/docs/clamp/acm/plantuml/states/AcTypeStates.puml new file mode 100644 index 00000000..f255b040 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/AcTypeStates.puml @@ -0,0 +1,12 @@ +@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 diff --git a/docs/clamp/acm/plantuml/states/DeregisterParticipant.puml b/docs/clamp/acm/plantuml/states/DeregisterParticipant.puml new file mode 100644 index 00000000..061dbea1 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/DeregisterParticipant.puml @@ -0,0 +1,20 @@ +@startuml + +participant Participant +participant ACM_Runtime +database ACM_Database + +Participant -> Participant: Uninitialize all ACM Element Instances running on Participant\n(See Instantiation Dialogues) +activate Participant +deactivate Participant + +Participant -> ACM_Runtime: [ASYNC] Deregister +ACM_Runtime -> ACM_Database: Delete Participant Registration +ACM_Runtime -> ACM_Database: Set Participant State as OFFLINE +Participant <- ACM_Runtime: [ASYNC] Deregistration Accepted + +ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as OFFLINE +activate ACM_Runtime +deactivate ACM_Runtime + +@enduml diff --git a/docs/clamp/acm/plantuml/states/FullParticpantReport.puml b/docs/clamp/acm/plantuml/states/FullParticpantReport.puml new file mode 100644 index 00000000..50943c8b --- /dev/null +++ b/docs/clamp/acm/plantuml/states/FullParticpantReport.puml @@ -0,0 +1,11 @@ +@startuml + +participant REST +participant ACM_Runtime +participant Participants + +REST -> ACM_Runtime: Order Participant Information +ACM_Runtime -> Participants: Issue immediate Heartbeat Report\n(See §1.3) +REST <- ACM_Runtime: Participant Information Ordered + +@enduml diff --git a/docs/clamp/acm/plantuml/states/GetParticipantInformation.puml b/docs/clamp/acm/plantuml/states/GetParticipantInformation.puml new file mode 100644 index 00000000..b7e288bd --- /dev/null +++ b/docs/clamp/acm/plantuml/states/GetParticipantInformation.puml @@ -0,0 +1,11 @@ +@startuml + +participant REST +participant ACM_Runtime +database ACM_Database + +REST -> ACM_Runtime: Get Participant Information +ACM_Runtime -> ACM_Database: Read Participant Data +REST <- ACM_Runtime: Return Participant Information including\nsupported AC Element Types,\nAC Element Instances and their states\nand Heartbeat Information + +@enduml diff --git a/docs/clamp/acm/plantuml/states/ParticipantStates.puml b/docs/clamp/acm/plantuml/states/ParticipantStates.puml new file mode 100644 index 00000000..6bb77686 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/ParticipantStates.puml @@ -0,0 +1,10 @@ +@startuml + +[*] --> ONLINE: Register +ONLINE --> ONLINE: Heartbeat +ONLINE --> OFFLINE: Timeout +OFFLINE --> ONLINE: Heartbeat +ONLINE --> [*]: Deregister +OFFLINE --> [*]: Deregister + +@enduml diff --git a/docs/clamp/acm/plantuml/states/RegisterParticipant.puml b/docs/clamp/acm/plantuml/states/RegisterParticipant.puml new file mode 100644 index 00000000..0cf091c0 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/RegisterParticipant.puml @@ -0,0 +1,16 @@ +@startuml + +participant Participant +participant ACM_Runtime +database ACM_Database + +Participant -> ACM_Runtime: [ASYNC] Register +ACM_Runtime -> ACM_Database: Create or Update Participant Registration\nand store supported ACM element types +ACM_Runtime -> ACM_Database: Set Participant State as ONLINE +Participant <- ACM_Runtime: Registration Accepted + +ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as ONLINE +activate ACM_Runtime +deactivate ACM_Runtime + +@enduml diff --git a/docs/clamp/acm/plantuml/states/SuperviseParticipantsStatusUpdate.puml b/docs/clamp/acm/plantuml/states/SuperviseParticipantsStatusUpdate.puml new file mode 100644 index 00000000..e5748e86 --- /dev/null +++ b/docs/clamp/acm/plantuml/states/SuperviseParticipantsStatusUpdate.puml @@ -0,0 +1,17 @@ +@startuml + +participant Participant +participant ACM_Runtime +database ACM_Database + +loop Every Participant Supervision Interval + Participant -> ACM_Runtime: [ASYNC] Heartbeat message including\nstatus and states of AC Element Instances on Participant + ACM_Runtime -> ACM_Database: Update Participant Heartbeat data + ACM_Runtime -> ACM_Database: Set Participant State as ONLINE + + loop Every AC Element Instance in Heartbeat Message + ACM_Runtime -> ACM_Database: Mark AC Element Instance as ONLINE\nand Update AC Element Instance status + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/states/SuperviseParticipantsTimeout.puml b/docs/clamp/acm/plantuml/states/SuperviseParticipantsTimeout.puml new file mode 100644 index 00000000..89a7d16a --- /dev/null +++ b/docs/clamp/acm/plantuml/states/SuperviseParticipantsTimeout.puml @@ -0,0 +1,18 @@ +@startuml + +participant ACM_Runtime +database ACM_Database + +loop Every ACM_Runtime Supervision Interval + loop Over all Participants + ACM_Runtime -> Database: Read Participant Heartbeat Information + alt Participant Heartbeat not received in Timeout Interval + ACM_Runtime -> ACM_Database: Set Participant State as OFFLINE + ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as OFFLINE + activate ACM_Runtime + deactivate ACM_Runtime + end + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/CommissionAcTypeSDC.puml b/docs/clamp/acm/plantuml/system-dialogues/CommissionAcTypeSDC.puml new file mode 100644 index 00000000..c789598d --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/CommissionAcTypeSDC.puml @@ -0,0 +1,11 @@ +@startuml +participant SDC +participant Policy_Distribution +participant ACM_Runtime + +SDC -> Policy_Distribution: [ASYNC] CSAR containing Automation Composition Type Definition +Policy_Distribution -> ACM_Runtime: Commission Automation Composition Type\n(See Commissioning Sequence Diagram) +Policy_Distribution <- ACM_Runtime: Result of Commissioning +Policy_Distribution -> SDC: [ASYNC] Return result of Deployment + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/CommissionUpdateAcType.puml b/docs/clamp/acm/plantuml/system-dialogues/CommissionUpdateAcType.puml new file mode 100644 index 00000000..014b76c8 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/CommissionUpdateAcType.puml @@ -0,0 +1,15 @@ +@startuml +participant REST +participant ACM_Runtime +database ACM_Database + +REST -> ACM_Runtime: Commission Automation Composition Type +alt Automation Composition Type exists and has Instances + ACM_Runtime -> REST: Automation Composition Type Commissioning Failed +else + ACM_Runtime -> ACM_Database: Create and Store Automation Composition Type + ACM_Runtime -> ACM_Database: Set Automation Composition Type State to COMMISSIONED + ACM_Runtime -> REST: Automation Composition Type Commissioned +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/CreateAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/CreateAcInstance.puml new file mode 100644 index 00000000..e2864b0a --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/CreateAcInstance.puml @@ -0,0 +1,30 @@ +@startuml +participant REST +participant ACM_Runtime +database ACM_Database + +REST -> ACM_Runtime: Create Automation Composition Instance for\nspecified Automation Composition Type with\nspecified parameter values + +alt Automation Composition Instance exists + alt Automation Composition Instance is not in state UNDEPLOYED + ACM_Runtime -> REST: Automation Composition instance exists and is already deployed + else + note right of REST + Updates on "Not In Service" Automation Composition Instances are allowed + end note + end +end + +alt Specified Automation Composition Type Exists + alt Specified Automation Composition Type is in state PRIMED + ACM_Runtime -> ACM_Database: Store Automation Composition Instance + ACM_Runtime -> ACM_Database: Set Automation Composition Instance State to UNDEPLOYED + ACM_Runtime -> REST: Automation Composition Instance Created + else + ACM_Runtime -> REST: Automation Composition Type is not in state PRIMED + end +else + ACM_Runtime -> REST: Automation Composition Type is not found +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DecommissionAcType.puml b/docs/clamp/acm/plantuml/system-dialogues/DecommissionAcType.puml new file mode 100644 index 00000000..a9c29b99 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DecommissionAcType.puml @@ -0,0 +1,14 @@ +@startuml +participant REST +participant ACM_Runtime +database ACM_Database + +REST -> ACM_Runtime: Decommission Automation Composition Type +alt Automation Composition Type is not in state COMMISSIONED + ACM_Runtime -> REST: Automation Composition Type Decommissioning Failed +else + ACM_Runtime -> ACM_Database: Delete Automation Composition Type + ACM_Runtime -> REST: Automation Composition Type Decommissioned +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeleteAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/DeleteAcInstance.puml new file mode 100644 index 00000000..50231ecf --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DeleteAcInstance.puml @@ -0,0 +1,19 @@ +@startuml +participant REST +participant ACM_Runtime +database ACM_Database + +REST -> ACM_Runtime: Delete Automation Composition Instance + +alt Automation Composition Instance exists + alt Automation Composition Instance is not in state UNDEPLOYED + ACM_Runtime -> REST: Automation Composition instance exists and is deployed + else + ACM_Runtime -> REST: Automation Composition instance does not exist + end +else + ACM_Runtime -> ACM_Database: Delete Automation Composition Instance + ACM_Runtime -> REST: Automation Composition Instance Deleted +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeployAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/DeployAcInstance.puml new file mode 100644 index 00000000..21c61394 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DeployAcInstance.puml @@ -0,0 +1,22 @@ +@startuml +participant REST +participant ACM_Runtime +participant Participants +database ACM_Database + +REST -> ACM_Runtime: Deploy Automation Composition Instance +ACM_Runtime -> ACM_Database: Read Automation Composition Instance Information + +alt Automation Composition Instance exists + alt Automation Composition Instance is deployed + ACM_Runtime -> REST: Automation Composition instance is already deployed + else + ACM_Runtime -> Participants: [ASYNC] Deploy AC Element Instances for this AC Instance + ACM_Runtime -> ACM_Database: Set AC Instance and its AC Element Instances to state DEPLOYING + ACM_Runtime -> REST: Deployment of Automation Composition Instance has been requested + end +else + ACM_Runtime -> REST: Automation Composition instance does not exist +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeployAcInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/DeployAcInstanceElements.puml new file mode 100644 index 00000000..ab0f7755 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DeployAcInstanceElements.puml @@ -0,0 +1,31 @@ +@startuml +participant ACM_Runtime +participant Participant +participant Participant_API + +ACM_Runtime -> Participant: [ASYNC] Deploy AC Element Instances for this AC Instance + +loop over AC Element Instances in AC Instance + alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID? + alt Is this AC Element Instance already deployed + ACM_Runtime <- Participant: [ASYNC] WARN: AC Element is already deployed + else + Participant -> Participant_API: Deploy AC Element Instance + activate Participant_API + Participant <- Participant_API: AC Element Instance Deploy Response + deactivate Participant_API + alt AC Element deployed successfully + Participant -> Participant: Set AC Element Instance administrative state to LOCKED + ACM_Runtime <- Participant: [ASYNC] INFO: AC Element has been deployed + else + ACM_Runtime <- Participant: [ASYNC] ERROR: AC Element was not deployed + end + end + else + note left of Participant + Ignore this AC Element instance as its for another participant + end note + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml new file mode 100644 index 00000000..939f87ce --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DeployResponseStored.puml @@ -0,0 +1,17 @@ +@startuml + +participant ACM_Runtime +participant Participant +database ACM_Database + +ACM_Runtime <- Participant: [ASYNC] Deploy Automation Composition Element Instance Response +ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information + +alt Is AC Element Instance Deployed? + ACM_Runtime -> ACM_Database: Set AC Element Instance State as DEPLOYED + alt Are all the other AC Element Instances in this AC Instance in state DEPLOYED? + ACM_Runtime -> ACM_Runtime: Set AC Instance state as DEPLOYED + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeprimeElements.puml b/docs/clamp/acm/plantuml/system-dialogues/DeprimeElements.puml new file mode 100644 index 00000000..274b30ce --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DeprimeElements.puml @@ -0,0 +1,27 @@ +@startuml +participant ACM_Runtime +participant Participant + +ACM_Runtime -> Participant: [ASYNC] Deprime AC Element Types for this AC Type + +loop over AC Element Types in AC Type + alt Does the deprimed Participant ID on this AC Element Type\nmatch my Participant ID + alt Does this AC Element Type Exist + Participant -> Participant: Delete AC Element Type + activate Participant + deactivate Participant + note left of Participant + Deletion of an AC Element Type always returns success + end note + ACM_Runtime <- Participant: [ASYNC] INFO: AC Element successfully primed + else + ACM_Runtime <- Participant: [ASYNC] WARN: AC Element Type is already deprimed + end + else + note left of Participant + ignore this AC Element Type as its for another participant + end note + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeprimeOnParticipants.puml b/docs/clamp/acm/plantuml/system-dialogues/DeprimeOnParticipants.puml new file mode 100644 index 00000000..07d5e934 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DeprimeOnParticipants.puml @@ -0,0 +1,21 @@ +@startuml +participant REST +participant ACM_Runtime +participant Participant +database ACM_Database + +alt Automation Composition Type has Instances + REST <- ACM_Runtime: Depriming of Automation Composition Type Failed +else AC Type State is PRIMED or PRIMING + REST -> ACM_Runtime: Deprime Automation Composition Type + + ACM_Runtime -> ACM_Database: Read Automation Composition Type + ACM_Runtime -> Participant: [ASYNC] Send Depriming Request to all Participants\nwith Automation Composition Type Definition + ACM_Runtime -> ACM_Database: Set Automation Composition Type State to DEPRIMING + + REST <- ACM_Runtime: Depriming of Automation Composition Type Ordered +else + REST <- ACM_Runtime: Depriming of Automation Composition Type Failed, invalid state +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml b/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml new file mode 100644 index 00000000..061dbea1 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/DeregisterParticipant.puml @@ -0,0 +1,20 @@ +@startuml + +participant Participant +participant ACM_Runtime +database ACM_Database + +Participant -> Participant: Uninitialize all ACM Element Instances running on Participant\n(See Instantiation Dialogues) +activate Participant +deactivate Participant + +Participant -> ACM_Runtime: [ASYNC] Deregister +ACM_Runtime -> ACM_Database: Delete Participant Registration +ACM_Runtime -> ACM_Database: Set Participant State as OFFLINE +Participant <- ACM_Runtime: [ASYNC] Deregistration Accepted + +ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as OFFLINE +activate ACM_Runtime +deactivate ACM_Runtime + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/FullParticipantReport.puml b/docs/clamp/acm/plantuml/system-dialogues/FullParticipantReport.puml new file mode 100644 index 00000000..50943c8b --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/FullParticipantReport.puml @@ -0,0 +1,11 @@ +@startuml + +participant REST +participant ACM_Runtime +participant Participants + +REST -> ACM_Runtime: Order Participant Information +ACM_Runtime -> Participants: Issue immediate Heartbeat Report\n(See §1.3) +REST <- ACM_Runtime: Participant Information Ordered + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/GetAcTypes.puml b/docs/clamp/acm/plantuml/system-dialogues/GetAcTypes.puml new file mode 100644 index 00000000..ced33f7e --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/GetAcTypes.puml @@ -0,0 +1,10 @@ +@startuml +participant REST +participant ACM_Runtime +database ACM_Database + +REST -> ACM_Runtime: Get Automation Composition Type Information +ACM_Runtime -> ACM_Database: Read Automation Composition Type Information +ACM_Runtime -> REST: Respond with Automation Composition Type information\nincluding ACM Element Type information and Priming Status + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/GetParticipantInformation.puml b/docs/clamp/acm/plantuml/system-dialogues/GetParticipantInformation.puml new file mode 100644 index 00000000..b7e288bd --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/GetParticipantInformation.puml @@ -0,0 +1,11 @@ +@startuml + +participant REST +participant ACM_Runtime +database ACM_Database + +REST -> ACM_Runtime: Get Participant Information +ACM_Runtime -> ACM_Database: Read Participant Data +REST <- ACM_Runtime: Return Participant Information including\nsupported AC Element Types,\nAC Element Instances and their states\nand Heartbeat Information + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/LockAcInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/LockAcInstance.puml new file mode 100644 index 00000000..a742cbb5 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/LockAcInstance.puml @@ -0,0 +1,22 @@ +@startuml +participant REST +participant ACM_Runtime +participant Participants +database ACM_Database + +REST -> ACM_Runtime: Lock Automation Composition Instance +ACM_Runtime -> ACM_Database: Read Automation Composition Instance Information + +alt Automation Composition Instance exists + alt Automation Composition Instance administrative state is UNLOCKED + ACM_Runtime -> Participants: [ASYNC] Lock AC Element Instances for this AC Instance + ACM_Runtime -> ACM_Database: Mark AC Instance and its AC Element Instances as Locking + ACM_Runtime -> REST: Locking of Automation Composition Instance has been requested + else + ACM_Runtime -> REST: Automation Composition instance is not unlocked + end +else + ACM_Runtime -> REST: Automation Composition instance does not exist +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/LockAcInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/LockAcInstanceElements.puml new file mode 100644 index 00000000..4fbb9335 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/LockAcInstanceElements.puml @@ -0,0 +1,32 @@ +@startuml +participant ACM_Runtime +participant Participant +participant Participant_API + +ACM_Runtime -> Participant: [ASYNC] Lock AC Element Instances for this AC Instance + +loop over AC Element Instances in AC Instance + alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID? + alt Is this AC Element Instance administrative state not UNLOCKED + ACM_Runtime <- Participant: [ASYNC] WARN: AC Element is not UNLOCKED + else + Participant -> Participant: Set AC Element Instance administrative state to SHUTTING_DOWN + Participant -> Participant_API: Lock AC Element Instance + activate Participant_API + Participant <- Participant_API: Lock AC Element Instance Response + deactivate Participant_API + alt AC Element locked successfully + Participant -> Participant: Set AC Element Instance administrative state to LOCKED + ACM_Runtime <- Participant: [ASYNC] INFO: AC Element has been locked + else + ACM_Runtime <- Participant: [ASYNC] ERROR: AC Element was not locked + end + end + else + note left of participant + Ignore this AC Element instance as its for another participant + end note + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml new file mode 100644 index 00000000..0ffc51a6 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/LockResponseStored.puml @@ -0,0 +1,17 @@ +@startuml + +participant ACM_Runtime +participant Participant +database ACM_Database + +ACM_Runtime <- Participant: [ASYNC] Lock Automation Composition Element Instance Response +ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information + +alt Is AC Element Instance Locked? + ACM_Runtime -> ACM_Database: Set AC Element Instance administrative state as LOCKED + alt Have all the other AC Element Instances in this AC Instance been LOCKED? + ACM_Runtime -> ACM_Runtime: Set AC Instance administrative state as LOCKED + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/OrderInstanceUnlock.puml b/docs/clamp/acm/plantuml/system-dialogues/OrderInstanceUnlock.puml new file mode 100644 index 00000000..9075bbab --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/OrderInstanceUnlock.puml @@ -0,0 +1,22 @@ +@startuml +participant REST +participant ACM_Runtime +participant Participants +database ACM_Database + +REST -> ACM_Runtime: Unlock Automation Composition Instance +ACM_Runtime -> ACM_Database: Read Automation Composition Instance Information + +alt Automation Composition Instance exists + alt Automation Composition Instance administrative state is LOCKED + ACM_Runtime -> Participants: [ASYNC] Unlock AC Element Instances for this AC Instance + ACM_Runtime -> ACM_Database: Mark AC Instance and its AC Element Instances as Unlocking + ACM_Runtime -> REST: Unlocking of Automation Composition Instance has been requested + else + ACM_Runtime -> REST: Automation Composition instance is not locked + end +else + ACM_Runtime -> REST: Automation Composition instance does not exist +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeMultiplePpnts.puml b/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeMultiplePpnts.puml new file mode 100644 index 00000000..6f091f65 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeMultiplePpnts.puml @@ -0,0 +1,28 @@ +@startuml +participant ACM_Runtime +participant Participant + +ACM_Runtime -> Participant: [ASYNC] Prime AC Element Types for this AC Type + +loop over AC Element Types in AC Type + alt Does the primed Participant ID on this AC Element Type\nmatch my Participant ID + alt Does this AC Element Type already exist + ACM_Runtime <- Participant: [ASYNC] WARN: AC Element Type already exists + else + Participant -> Participant: Create AC Element Type + activate Participant + deactivate Participant + alt AC Element successfully created + ACM_Runtime <- Participant: [ASYNC] INFO: AC Element successfully primed + else + ACM_Runtime <- Participant: [ASYNC] ERROR: AC Element priming failed + end + end + else + note left of participant + ignore this AC Element Type as its for another participant + end note + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml b/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml new file mode 100644 index 00000000..0c36a18c --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/PrimeAcTypeOnPpnts.puml @@ -0,0 +1,28 @@ +@startuml +participant REST +participant ACM_Runtime +participant Participant +database ACM_Database + +alt Automation Composition Type has Deployed Instances + REST <- ACM_Runtime: Priming of Automation Composition Type Failed, instances deployed +else Automation Composition Type is in state COMMISSIONED or PRIMED + REST -> ACM_Runtime: Prime Automation Composition Type + + ACM_Runtime -> ACM_Database: Read Automation Composition Type + ACM_Runtime -> ACM_Database: Read Participants + ACM_Runtime -> ACM_Runtime: Set suitable participant ID on each AC Element Type + + alt Was a sutable participant ID found for each AC Element Type? + ACM_Runtime -> Participant: [ASYNC] Send Priming Request to all Participants\nwith Automation Composition Type Definition + ACM_Runtime -> ACM_Database: Set Automation Composition Type State to PRIMING + + REST <- ACM_Runtime: Priming of Automation Composition Type Ordered + else + REST <- ACM_Runtime: Priming of Automation Composition Type Faield, no sutiable participant found + end +else + REST <- ACM_Runtime: Priming of Automation Composition Type Failed, invalid state +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml b/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml new file mode 100644 index 00000000..4a9f7d17 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/PrimeInfoUpdatedInDb.puml @@ -0,0 +1,15 @@ +@startuml +participant ACM_Runtime +participant Participant +database ACM_Database + +ACM_Runtime <- Participant: [ASYNC] Result of Priming of AC Element Type +ACM_Runtime -> ACM_Database: Record result of AC Element Type Priming + +alt Is AC Element Type Primed? + alt Have all the other AC Element Types in this AC Type been Primed? + ACM_Runtime -> ACM_Runtime: Set AC Type state as PRIMED + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/ReadAcInstances.puml b/docs/clamp/acm/plantuml/system-dialogues/ReadAcInstances.puml new file mode 100644 index 00000000..3e188f10 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/ReadAcInstances.puml @@ -0,0 +1,10 @@ +@startuml +participant REST +participant ACM_Runtime +database ACM_Database + +REST -> ACM_Runtime: Get Automation Composition Instance Information +ACM_Runtime -> ACM_Database: Read Automation Composition Instance Information +ACM_Runtime -> REST: Respond with Automation Composition Instance information\nincluding ACM Element Instance information\nand admin, operational, and usage state + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml b/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml new file mode 100644 index 00000000..0cf091c0 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/RegisterParticipant.puml @@ -0,0 +1,16 @@ +@startuml + +participant Participant +participant ACM_Runtime +database ACM_Database + +Participant -> ACM_Runtime: [ASYNC] Register +ACM_Runtime -> ACM_Database: Create or Update Participant Registration\nand store supported ACM element types +ACM_Runtime -> ACM_Database: Set Participant State as ONLINE +Participant <- ACM_Runtime: Registration Accepted + +ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as ONLINE +activate ACM_Runtime +deactivate ACM_Runtime + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml new file mode 100644 index 00000000..e5748e86 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsStatusUpdate.puml @@ -0,0 +1,17 @@ +@startuml + +participant Participant +participant ACM_Runtime +database ACM_Database + +loop Every Participant Supervision Interval + Participant -> ACM_Runtime: [ASYNC] Heartbeat message including\nstatus and states of AC Element Instances on Participant + ACM_Runtime -> ACM_Database: Update Participant Heartbeat data + ACM_Runtime -> ACM_Database: Set Participant State as ONLINE + + loop Every AC Element Instance in Heartbeat Message + ACM_Runtime -> ACM_Database: Mark AC Element Instance as ONLINE\nand Update AC Element Instance status + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml new file mode 100644 index 00000000..89a7d16a --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/SuperviseParticipantsTimeout.puml @@ -0,0 +1,18 @@ +@startuml + +participant ACM_Runtime +database ACM_Database + +loop Every ACM_Runtime Supervision Interval + loop Over all Participants + ACM_Runtime -> Database: Read Participant Heartbeat Information + alt Participant Heartbeat not received in Timeout Interval + ACM_Runtime -> ACM_Database: Set Participant State as OFFLINE + ACM_Runtime -> ACM_Runtime: Mark all ACM Element Instances\nrunning on Participant as OFFLINE + activate ACM_Runtime + deactivate ACM_Runtime + end + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/UndeployInstance.puml b/docs/clamp/acm/plantuml/system-dialogues/UndeployInstance.puml new file mode 100644 index 00000000..0066c69c --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UndeployInstance.puml @@ -0,0 +1,22 @@ +@startuml +participant REST +participant ACM_Runtime +participant Participants +database ACM_Database + +REST -> ACM_Runtime: Undeploy Automation Composition Instance +ACM_Runtime -> ACM_Database: Read Automation Composition Instance Information + +alt Automation Composition Instance exists + alt Automation Composition Instance administrative state is not LOCKED + ACM_Runtime -> REST: Automation Composition instance exists and is not LOCKED + else + ACM_Runtime -> REST: Automation Composition instance does not exist + end +else + ACM_Runtime -> Participants: [ASYNC] Undeploy AC Element Instances for this AC Instance + ACM_Runtime -> ACM_Database: Mark this AC Instance and its AC Element Instances as UNDEPLOYING + ACM_Runtime -> REST: Undeployment of Automation Composition Instance has been requested +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/UndeployInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/UndeployInstanceElements.puml new file mode 100644 index 00000000..43fa1bef --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UndeployInstanceElements.puml @@ -0,0 +1,31 @@ +@startuml +participant ACM_Runtime +participant Participant +participant Participant_API + +ACM_Runtime -> Participant: [ASYNC] Undeploy AC Element Instances for this AC Instance + +loop over AC Element Instances in AC Instance + alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID? + alt Does this AC Element Instance exist? + ACM_Runtime <- Participant: [ASYNC] WARN: AC Element does not exist + else Is this administrative state of this AC Element Instance LOCKED + Participant -> Participant_API: Undeploy AC Element Instance + activate Participant_API + Participant <- Participant_API: Undeploy AC Element Instance Response + deactivate Participant_API + ACM_Runtime <- Participant: [ASYNC] INFO: AC Element undeployed successfully + note left of Participant + Undeploy always returns success + end note + else + ACM_Runtime <- Participant: [ASYNC] WARN: AC Element is already undeployed + end + else + note left of Participant + Ignore this AC Element instance as its for another participant + end note + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml new file mode 100644 index 00000000..e44183d4 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UndeployResponseStored.puml @@ -0,0 +1,17 @@ +@startuml + +participant ACM_Runtime +participant Participant +database ACM_Database + +ACM_Runtime <- Participant: [ASYNC] Undeploy Automation Composition Element Instance Response +ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information + +alt Is AC Element Instance undeployed? + ACM_Runtime -> ACM_Database: Mark AC Element Instance as UNDEPLOYED + alt Are all the other AC Element Instances in this AC Instance in state UNDEPLOYED? + ACM_Runtime -> ACM_Runtime: Set AC Instance state as UNDEPLOYED + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/UnlockInstanceElements.puml b/docs/clamp/acm/plantuml/system-dialogues/UnlockInstanceElements.puml new file mode 100644 index 00000000..fdcdc912 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UnlockInstanceElements.puml @@ -0,0 +1,31 @@ +@startuml +participant ACM_Runtime +participant Participant +participant Participant_API + +ACM_Runtime -> Participant: [ASYNC] Unlock AC Element Instances for this AC Instance + +loop over AC Element Instances in AC Instance + alt Does the primed Participant ID on this AC Element Instance\nmatch my Participant ID? + alt Is this AC Element Instance administrative state not LOCKED + ACM_Runtime <- Participant: [ASYNC] WARN: AC Element is not LOCKED + else + Participant -> Participant_API: Unlock AC Element Instance + activate Participant_API + Participant <- Participant_API: Unlock AC Element Instance Response + deactivate Participant_API + alt AC Element unlocked successfully + Participant -> Participant: Set AC Element Instance administrative state to UNLOCKED + ACM_Runtime <- Participant: [ASYNC] INFO: AC Element has been unlocked + else + ACM_Runtime <- Participant: [ASYNC] ERROR: AC Element was not unlocked + end + end + else + note left of participant + Ignore this AC Element instance as its for another participant + end note + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml b/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml new file mode 100644 index 00000000..44e7e906 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UnlockResponseStored.puml @@ -0,0 +1,17 @@ +@startuml + +participant ACM_Runtime +participant Participant +database ACM_Database + +ACM_Runtime <- Participant: [ASYNC] Unlock Automation Composition Element Instance Response +ACM_Runtime -> ACM_Database: Store Automation Composition Element Instance Response Information + +alt Is AC Element Instance Unlocked? + ACM_Runtime -> ACM_Database: Set AC Element Instance administrative state as UNLOCKED + alt Have all the other AC Element Instances in this AC Instance been UNLOCKED? + ACM_Runtime -> ACM_Runtime: Set AC Instance administrative state as UNLOCKED + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml b/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml new file mode 100644 index 00000000..b52dc817 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UpdateDeprimeInDb.puml @@ -0,0 +1,15 @@ +@startuml +participant ACM_Runtime +participant Participant +database ACM_Database + +ACM_Runtime <- Participant: [ASYNC] Result of Depriming of AC Element Type +ACM_Runtime -> ACM_Database: Record result of AC Element Type Depriming + +alt Is AC Element Type Deprimed? + alt Have all the other AC Element Types in this AC Type been Deprimed? + ACM_Runtime -> ACM_Runtime: Set AC Type state as COMMISSIONED + end +end + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml b/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml new file mode 100644 index 00000000..538242ae --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UpdateOperationalState.puml @@ -0,0 +1,16 @@ +@startuml +participant Participant_API +participant Participant +participant ACM_Runtime + +Participant_API -> Participant_API: Perform Operation that Updates Operational State +activate Participant_API +deactivate Participant_API + +Participant_API -> Participant: Operational State has been updated +Participant -> Participant: Update Operational State in ACM Element Instance + +== Periodically with Heartbeat == +Participant -> ACM_Runtime: [ASYNC] Heartbeat message including\nstatus and states of AC Element Instances on Participant + +@enduml diff --git a/docs/clamp/acm/plantuml/system-dialogues/UpdateUsageState.puml b/docs/clamp/acm/plantuml/system-dialogues/UpdateUsageState.puml new file mode 100644 index 00000000..b8f922d5 --- /dev/null +++ b/docs/clamp/acm/plantuml/system-dialogues/UpdateUsageState.puml @@ -0,0 +1,16 @@ +@startuml +participant Participant_API +participant Participant +participant ACM_Runtime + +Participant_API -> Participant_API: Perform Operation that Updates Usage State +activate Participant_API +deactivate Participant_API + +Participant_API -> Participant: Usage State has been updated +Participant -> Participant: Update Usage State in ACM Element Instance + +== Periodically with Heartbeat == +Participant -> ACM_Runtime: [ASYNC] Heartbeat message including\nstatus and states of AC Element Instances on Participant + +@enduml |