Why is it not recommended to use conditions on timers?
Hi Benjamin,
The reason for avoiding the usage of conditions on timers is that each timer is, in the background, a separate thread and needs to frequently evaluate the condition to know whether it should perform some work or not.
The result of this is extra CPU usage and possibly delaying other operations while if you add the condition for instance on a group it will only evaluate the condition when it is time to execute and move on immediately.
One good scenario to use conditions on timers is when you have a polling timer but you know the user needs to first fill in credentials in parameters without which the connector will not work and with that as soon as the condition evaluates to true it will behave as if it was a 'regular' timer.
A similar explanation is also given here Starting/stopping timers | DataMiner Docs on the reason why starting and stopping timers is not advisable unless in specific cases.
To prevent the groups from being added to the queue you would probably want to use conditions on timers.
If your condition is something that only be evaluated as false for a short period then it should be OK to use the condition on the timer.
If it is a scenario more similar to polling control where it could happen that the condition will never be true then I would not advise doing so.
You could also consider using the start timer action (https://docs.dataminer.services/develop/devguide/Connector/Actions/ActionStart.html) and have the timer stopped when the element starts up (https://docs.dataminer.services/develop/schemadoc/Protocol/Protocol.Timers.Timer.Time-initial.html).
In this last scenario, I would still be really careful with the remark of the link in my original answer to not start started timers and do that management really carefully.
These evaluations on timer are based on user editable togglebutton, and based on how you described it, it wouldn’t be a good idea to have conditions on them.
Thanks for clearing this up
Thanks for the answer João, I understand the issue.
I was interested if there is a mechanism which would prevent the groups being added to the queue.
I have groups with conditions, which initially don’t get executed once the element starts. When the conditions are met and I want to trigger the groups using a button (execute one top), it doesn’t work since they’re already on the queue.