I have recently been tasked with attaining a list of PI-Notification instances for the purposes of visualisation for our user base. This visual needs to include a certain amount of information, but I am having trouble just getting the list at all. I require help from the community to understand how to quickly retrieve the information I require.
Note: I am using PI-AF and PI-Notifications 2016.
For clarity, I am looking for instances and not templates. It is very simple and very quick to get the list of PI-Notification templates, but I am looking for the instances. So what is an "instance"? Well, imagine I have an element template called "Pump" and then I associate a PI-Notification template to it. An "instance" of a notification is each "real" notification that is created as a result of the implementation of said "Pump" element template. So if I have 1 PI-Notification template on the "Pump" element template and 1,000 elements using that element template, then I have 1,000 notification instances.
At this point, I believe I have 2 ways to gather the list of notification instances:
- The first option is to get the list of all event frames, the elements that they are associated with, and then any PI-Notifications associated to those elements. The main problem with this (unless I am mistaken) is that this only works if an event frame has been created for the notification. So if a notification instance has never become active, there would not be an event frame, and thus I would not get back a notification instance. Beyond that, you can imagine the performance of this is very bad.
- The second option is to get the list of all elements and then any PI-Notifications associated to those elements. This takes event frames out of the question and boosts performance (although not by much and still not acceptably so). However, it also means that I can't easily know which notification instances are active. Remember I am trying to collect information about each notification instance too.
My understanding is that OSIsoft uses their own SDKs in their services and clients. That means that the PI-Notifications service must have to collect a lot of this information already in order to do its job. So my conclusion is that I must be doing something wrong or backwards. Can anyone in the community provide me some sample code for retrieving a list of PI-Notification instances in a good-performing manner?