I need to create a view and add elements to it. Therefore I try to execute following code:
IDmsView rootView = dms.GetView(viewId);
ViewConfiguration edgeDevicesSourceViewConfiguration = new ViewConfiguration("1. Edge Devices - Source [VSG]", rootView);
IDmsView edgeDevicesSourceView = dms.GetView(dms.CreateView(edgeDevicesSourceViewConfiguration));
Unfortunately this results in a ViewNotFoundException.
What is the best way to retrieve my new view?
I guess adding this method in a loop, but what is the max time to wait to prevent an infinite loop?
Views are indeed created asynchronously in DataMiner. They are not immediately available after sending the request to create the new view.
Few possibilities to wait until the view is created, without a loop that blocks everything else:
- Store the data of the requested new views in a QAction instance (private non-static field). Frequently trigger the QAction with a timer and check which views are already available.
- Subscription that receives a notification when a new view is created.
- Note that this is an internal API and we do not recommend using this, as it is not officially supported and we cannot guarantee that it will still work in the future. As a rule, you should avoid using subscriptions, as these are subject to change without notice. We recommend to instead always use the correct UI or automation options provided in DataMiner Automation or through our web API.
Wasn’t aware that it’s an automation script. In that case you are probably best of with a loop unless there is a blocking call in DataMiner itself that waits until the view has been created.
I will do it like that. Thanks!
Hi Tom, how do you see this implemented in Automation Scripts?