The Integrated Alarm System Computing Element (ASCE) is the basic unit of the IAS.
The ASCE is composed of an output, generated by the user provided script applied to the inputs (i.e. monitor points and/or other alarms): the ComputingElement changes its output when the input changes (for example the value of a monitor point changes).
The output of a ASCE is normally an alarm generated by digesting the values of the inputs of the component itself. But sometimes, the output is a value of a given type (for example an integer) to implement what we name synthetic parameters.
The inputs of the ASCE comes either from the BSDB (i.e. monitored systems or other DASUs) or from other ASCEs running in the same DASU. The initial set of inputs must contain all the possible inputs accepted by a ASCE. Such inputs will likely have a empty value at the beginning but they are needed for updating when the new input arrives. Note that inputs not provided in the constructor are rejected as unknown so it is mandatory to pass in the constructor all the possible inputs.
The user provides a JVM class in one of the supported languages to digest the inputs and produce the output. The transfer function of the object is invoked when the state of the inputs change. Which programming language the user wrote the object with is stored in the configuration database; programmatically it is visible in the TransferFunctionSetting object. Depending on the programming language, there might be some preparatory step before running the TF.
The class is abstract because the implementation of the transfer function depends on the programming language and must be mixed when instantiating the object.
The ASCE is a state machine (@see ComputingElementState) whose state changes during the life time of the ASCE for example after initialization or shutdown but also if the TF executor reports errors or is too slow.
Objects of this class are mutable.
The id of the ASCE does not change over time unless the ASCE is relocated. In such case a new ASCE must be built to correctly initialize the classes implementing the transfer function. For the same reason, if the transfer function, implemented by the user changes, then a new ASCE must be built.
The update of the output is triggered by the DASU: when it sends the inputs, the ASCE runs the TF and produces the new output.
The ASCE monitors when the execution time of the TF is too slow for a given amount of time. The slowness and the duration are specified in the TransferFunctionSetting class. The ASCE logs a messasge if the execution of the TF is slower than the max allowed time; if the slowness persists over the duration then the TF is marked as broken and will not be executed anymore.
Value parameters
- _output:
-
The output generated by this Component after applying the script to the inputs It is not necessarily an alarm.
- asceIdentifier:
-
The identifier of this Component
- initialInputs:
-
The initial set of all the possible inputs.
- props:
-
the java properties to pass to this component and the TF
- tfSetting:
-
The definition of the implementation of the transfer function that manipulates the inputs to produce the new output
- validityThresholdSecs
-
the threshold (seconds), including toelerance, to set the validity of the output taking into account when the timestamps of the inputs and the constraint possibly set in the TF
Attributes
- Companion
- object
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any
- Known subtypes
-
trait JavaTransfer[T]trait ScalaTransfer[T]