...
Note that once a Control Loop Definition is commissioned to the Control Loop Runtime and has been stored in the Run Time Inventory, it cannot be further edited unless it is decommissioned.
At Run Time, the following participant related capabilities are supported:
- System Pre-Configuration. This capability allows participants to register and deregister with CLAMP. Participants explicitly register with CLAMP when they start. Control Loop Priming is performed on each participant once it registers. The post condition for an execution of this capability is that a participant becomes available (registration) or is no longer available (deregistration) for participation in a control loop.
- Control Loop Commissioning. This capability allows version controlled Control Loop Type definitions to be taken from the Control Loop Design Time Catalogue and be placed in the Control Loop Run Time Inventory. It also allows Priming on Participants. A participant is primed to support a Control Loop Type. The definition of a control loop and the values of Common Property Types that apply to all instances of a Control Loop Type to be set. Further, the Control Loop Type is primed on all concerned participantscontrol loop type on a participant is sent to a participant. The participant can then take whatever actions it need to do to support the control loop type in question. Control Loop Priming takes place at participant registration and at Control Loop Commissioning. The post condition for an execution of this capability is that the Control Loop Type definition is in the Control Loop Run Time Inventory and the Control Loop Type is primed on concerned participants.Control Loop Priming on Participants. A participant is primed to support a Control Loop Type. The definition of a control loop and all participants in this control loop type are commissioned, that is they are prepared to run instances of their Control Loop Element types.
At Run Time, the following Control Loop Life Cycle mangement capabilities are supported:
- Control Loop Commissioning. This capability allows version controlled Control Loop Type definitions to be taken from the Control Loop Design Time Catalogue and be placed in the Commissioned Control Loop Inventory. It also allows the values of Common Property Types that apply to all instances of a control loop type on a participant is sent to a participant. The participant can then take whatever actions it need to do to support the control loop type in question. Control Loop Priming takes place at participant registration and at Control Loop CommissioningControl Loop Type to be set. Further, the Control Loop Type is primed on all concerned participants. The post condition for an execution of this capability is that all participants in this control loop type are commissioned, that is they are prepared to run instances of their Control Loop Element typesof this capability is that the Control Loop Type definition is in the Commissioned Control Loop Inventory and the Control Loop Type is primed on concerned participants.
- Control Loop Life Cycle Management. This capability allows a Control Loop Instance to be created. The Control Loop Type definition is read from the the Commissioned Control Loop Run Time Inventory and values are assigned to the Instance Specific Property Types defined for instances of the Control Loop Type in the same manner as the existing CLAMP client does. A Control Loop Instance that has been created but has not yet been instantiated on participants is in state UNINITIALIZED. In this state, the Instance Specific Property Type values can be revised and updated as often as the user requires. Once the user is happy with the property values, the Control Loop Instance is instantiated on participants and the Control Loop Elements for this Control Loop Instance are started by participants using the control loop metadata. Once the Control Loop Instance is instantiated on each participant, the Control Loop Instance is set as being in state PASSIVE in the Instantiated Control Loop Run Time Inventory. The user can now order the participants to change the state of the Control Loop Instance to state RUNNING. Each participant begins accepting and processing control loop events and the Control Loop Instance is set to state RUNNING in the control loop the Instantiated Control Loop inventory. The post condition for an execution of this capability is that the Control Loop instance is running on participants and is processing events.
- Control Loop Monitoring. This capability allows Control Loop Instances to be monitored. Users can check the status of Participants, Control Loop Instances, and Control Loop Elements. Participants report their overall status and the status of Control Loop Elements they are running periodically to CLAMP. Clamp aggregates these status reports into an aggregated Control Loop Instance status record, which is available for monitoring. The post condition for an execution of this capability is that Control Loop Instances are being monitored.
...
Composed Control Loops are commissioned on the run time part of the system, where they are stored in the run time Commissioned Control Loop inventory and are available for instantiation. The Commissioning component provides a CRUD REST interface for Control Loop Types, and implements CRUD of Control Loop Types. Commissioning also implements validation and persistence of incoming Control Loop Types. It also guarantees the integrity of updates and deletions of Control Loop Types, such as performing updates accordance with semantic versioning rules and ensuring that deletions are not allowed on Control Loop Types that have instances defined.
...
The system is designed to be inherently scalable. The CLAMP runtime is stateless, all state is preserved in the run time Instantiated Control Loop inventory in the database. When the user requests an operation such as an instantiation, activation, passivation, or an uninitialization on a Control Loop Instance, the CLAMP runtime broadcasts the request to participants over DMaaP and saves details of the request to the database. The CLAMP runtime does not directly wait for responses to requests.
...