Mechanizm alertów zaimplementowany w programie ibmanager polega na informowaniu użytkownika IB-System o zdefiniowanych zdarzeniach. Jest on oparty na pewnych regułach takich jak kalendarz powiadomień oraz ich częstotliwość. Mechanizm ten jest udostępniony bibliotekom logik i ich autor, nie musi obsługiwać tych reguł, wystarczy że je zdefiniuje w pliku konfiguracyjnym alertów.
Do każdego alertu doklejana jest informacja o aplikacji układu sterowania w postaci: NazwaAplikacji-NazwaInstancji: tekst alertu, o ile została ona zdefiniowana w atrybutach Name oraz Instance elemrntu <Application> pliku konfiguracyjnego programu ibmanager.
Alerty załączane są przez zdefiniowanie w pliku konfiguracyjnym programu ibmanager elementu <Alerts> oraz jego atrybutu Path, wskazujący na plik konfiguracyjny alertów.
Mechanizm alertów programu ibmanager jest ściśle związany z programem ibalert. Program ibmanager łączy się z programem ibalert przy pomocy ibprotokołu.
Program ibmanager przekazuje programowi ibalert alerty, które zostają przez niego wysłane przy użyciu odpowiednich urządzeń lub połączeń (sms, email itp.).
<?xml version="1.0" encoding="UTF-8"?> <Config Version="1.1" xmlns="http://www.insbud.net/ibmanager/alerts" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.insbud.net/ibmanager/alerts alerts.xsd"> <IbAlert HostName="127.0.0.1" TcpPort="2002" CommunicationTimeout="3000" SecureConnection="true"></IbAlert> <Alerts> <Alert Id="relay_switched" LogicName="ExampleA" InstanceName="boiler0"> <Sink RecipientId="0" NotificationType="NM_SMS" RuleName="Critical"/> </Alert> </Alerts> <AlertsMatch Mode="Both"></AlertsMatch> <Rules> <Rule Name="Critical" Priority="0" MinSendInterval="09:00:00"> <ActivePeriod Day="Week" Start="16:00:00" Stop="18:00:00"/> <ActivePeriod Day="Weekend" Start="09:00:00" Stop="20:00:00"/> <ActivePeriod Day="Weekdays" Start="16:00:00" Stop="22:00:00"/> <ActivePeriod Day="Monday" Start="05:00:00" Stop="05:30:00"/> </Rule> </Rules> <Recipients> <Recipient Id="0" FirstName="John" LastName="Bree" Phone="+48123456789" Email="j.bree@exampledomain.com"/> </Recipients> </Config>
Głównym elementem pliku konfiguracyjnego jest Config, posiadający między innymi atrybut Version, będący wersją pliku konfiguracyjnego alertów. Właściwą wersją pliku konfiguracyjnego alertów jest wersja 1.1 (dla programu ibmanager w wersji 3.7.4).
Jeżeli wersja ta nie będzie się zgadzała z numerem wersji aktualnie obsługiwanym przez program, wówczas zostanie zgłoszony błąd i program zakończy działanie.
Pozostałe elementy pliku konfiguracyjnego alertów zostały opisane w osobnych rozdziałach dokumentacji.
<IbAlert HostName="127.0.0.1" TcpPort="2002" CommunicationTimeout="3000" SecureConnection="true"></IbAlert>
Element obowiązkowy odpowiedzialny za konfigurację połączenia z programem ibalert.
Element zawiera atrybuty:
<Alerts> <!-- multiple <Alert/> elements --> </Alerts>
Element obowiązkowy, odpowiedzialny za zdefiniowanie wszystkich alertów, które program ibmanager ma obsługiwać.
Element może zawierać wiele elementów <Alert>.
Element nie zawiera żadnych atrybutów.
<Alert Id="relay_switched" LogicName="ExampleA" InstanceName="boiler0"> <!-- multiple <Sink/> elements --> </Alert>
Element obowiązkowy znajdujący się w elemencie <Alerts>. Element jest odpowiedzialny za zdefiniowanie pojedynczego alertu, który ma zostać obsłużony (przekazany do aplikacji ibalert) przez ibmanagera.
Element zawiera atrybuty:
Mając zdefiniowany alert, można mu przypisać konkretne ujście – czyli przeznaczenie wraz z zasadami, jakimi musi się kierować wysyłając dany alert. Ujście zdefiniowane jest przez element <Sink>. Jeden alert może mieć wiele ujść lub żadnego – wtedy nie zostanie obsłużony.
<Sink RecipientId="0" NotificationType="NM_SMS" RuleName="Critical"/>
Element opcjonalny znajdujący się w elemencie <Alert>. Element jest odpowiedzialny za zdefiniowanie pojedynczego ujścia dla powiązanego alertu (rodzica).
Element zawiera atrybuty:
<AlertsMatch Mode="Both"></AlertsMatch>
Element opcjonalny.
Ręczne definiowanie alertów dla wszystkich szablonów alertów zdefiniowanych w logikach może być uciążliwe, szczególnie jeżeli wszystkie są wykorzystane oraz wszystkie mają być w ten sam sposób obsłużone, dlatego został wprowadzony element określający metodę dopasowywania szablonów alertów z plików konfiguracyjnych logik do alertów w pliku konfiguracyjnym alertów.
Element zawiera atrybuty:
Dla przykładu:
Jeżeli został zdefiniowany alert o identyfikatorze RelayEnabled w logice Thermostat i zostało zdefiniowanych dziesięć instancji tej logiki, o nazwach „t0”, „t1”, …, „t9”, wówczas zamiast potrzeby definiowania dziesięciu elementów <Alert> w pliku konfiguracyjnym alertów i powtarzania za każdym razem tych samych wartości, różniącymi się jedynie nazwami instancji logik, wystarczy zdefiniować jeden element <Alert> :
<Alert Id="RelayEnabled" LogicName="Thermostat" InstanceName="t[0-9]"> <!-- multiple <Sink/> elements --> </Alert>
Element AlertsMatch jest opcjonalny, kiedy nie został zdefiniowany, wówczas używana jest metoda Exact.
<Rules> <!-- multiple <Rule/> elements --> </Rules>
Element obowiązkowy, odpowiedzialny za zdefiniowanie wszystkich zasad dla alertów.
Element może zawierać wiele elementów <Rule>.
Element nie zawiera żadnych atrybutów.
<Rule Name="Critical" Priority="0" MinSendInterval="09:00:00"> <!-- multiple <ActivePeriod/> elements --> </Rule>
Element obowiązkowy znajdujący się w elemencie <Rules>. Element jest odpowiedzialny za zdefiniowanie pojedynczej zasady dla alertów.
Element zawiera atrybuty:
Mając zdefiniowaną pojedynczą można zdefiniować harmonogram tygodniowy zasady, który definiuje dni tygodnia oraz godziny, w których dany alert może zostać wysłany do odbiorcy. Harmonogram jest definiowany przez element <ActivePeriod>. Zasada może mieć dowolną ilość takich elementów.
Domyślnie, cały tydzień ma zablokowaną możliwość wysyłania alertów – jeżeli zdefiniowano element Rule bez żadnego elementu <ActivePeriod> to alert nigdy nie zostanie wysłany do danego ujścia alertu związanego z tą zasadą). Element ActivePeriod aktywuje przedział czasu, w którym alert może zostać wysłany.
Uwaga: jeżeli dany alert został choć raz zaszeregowany przez logikę do wysłania, lecz zasady nie pozwalają w chwili obecnej go wysłać, to zostanie on wysłany jeżeli tylko zasady na to pozwolą, nawet jeżeli sytuacja alarmowa przestała obowiązywać i logika przestała zgłaszać alert. Logiki posiadają możliwość „anulowania” wysłania alertu, lecz jest to możliwe wtedy kiedy autor logiki zdecyduje aby skorzystać z takiego mechanizmu. W jednej sytuacji jest to pożądane, w innej nie, dlatego ten wybór leży po stronie autora logiki.
<ActivePeriod Day="Week" Start="16:00:00" Stop="18:00:00"/>
Element opcjonalny znajdujący się w elemencie <Rule>. Element ActivePeriod aktywuje przedział czasu dla zasady (element rodzic) , w którym alert może zostać wysłany.
Element zawiera atrybuty:
<Recipients> <!-- multiple <Recipient/> elements --> </Recipients>
Element obowiązkowy, odpowiedzialny za zdefiniowanie wszystkich odbiorców alertów.
Element może zawierać wiele elementów <Recipient>.
Element nie zawiera żadnych atrybutów.
<Recipient Id="0" FirstName="John" LastName="Bree" Phone="+48123456789" Email="j.bree@exampledomain.com"/>
Element obowiązkowy znajdujący się w elemencie <Recipients>. Element jest odpowiedzialny za zdefiniowanie pojedynczego odbiorcy alertów.
Element zawiera atrybuty: