Features, discussions, tips, tricks, questions, problems and feedback

The pitfalls of relying on the Systeminfo agent for triggering (for example Systeminfo.second in Expressions)


For many triggering operations within the Agent Server, for example when triggering expressions, the Systeminfo.second slot is used as the trigger for the expression.

For every trigger operation, the relevant agent that is involved in the trigger is in a “blocked” state until the trigger operation completes. For example, if the Systeminfo agent is part of a trigger operation, the consequent process has to complete before the agent is able to proceed with other operations. This is a necessary consequence in order to ensure synchronous operations.

So, when the Systeminfo.second slot is used as the trigger for a large number of other agents, such as Expressions, this can create a backlog of operations for the Systeminfo agent itself, which could slow down the entire process (with simple tasks such as waiting for a graphic form to refresh, or waiting for a list of agents becoming slower etc.)

Suggested alternative

Option 1

Make use of continuous operation in Expressions

As long as the expression cannot cause a circular loop (where one of the inputs are also an output and therefore triggers the expression continuously), this is the recommended way of triggering an expression. Only a change in one of the inputs will trigger a recalculation. This is the most optimised way of configuring expressions. In the case of triggering an expression through Systeminfo.second for example, each expression will recalculate every second even if the values have not changed.

Option 2

Make use of a seperate trigger agent in order not to “oversubscribe” the Systeminfo agent (for example a Timer agent).