Promotic

PmaPrototype - Szczegółowy opis obiektu

Patrz: Obiekt PmaPrototype

W prosty sposób można funkcję obiektów PmaPrototype oraz PmaInstance przedstawić tak, że przy uruchamianiu aplikacji dojdzie do automatycznego skopiowania zawartości odpowiedniego prototypu do wszystkich instancji, które wykorzystują dany prototyp.
Zaletą konceptu prototypów i instancji jest, że do kopiowania prototypu do wszystkich instancji dochodzi automatycznie podczas każdego uruchomienia aplikacji, a więc zmiana przeprowadzona w prototypie automatycznie pojawi się przy następnym uruchomieniu aplikacji i to we wszystkich instancjach. Zawartość oryginalnego prototypu istnieje tylko w środowisku deweloperskim, w uruchomionej aplikacji nie istnieje. Istnieją tylko kopie prototypu w poszczególnych instancjach.

Prototyp z parametrami:
Zazwyczaj jest konieczne zapewnić, żeby poszczególne instancje tego samego prototypu różniły się nieco od siebie. Chodzi zazwyczaj o odrębnie wyświetlane teksty, wartości inicjalizacyjne stałych, połączenie powiązań do wartości, własne pliki lub tabele bazy danych, grupy trendów, alarmów, eventów lub różnice w skryptach. Do tego celu służą Parametry Pma obiektu, kiedy w prototypie można definiować zestaw parametrów i konkretna instancja z kolei ustawi rzeczywiste wartości tych parametrów, ważnych dla danej instancji. Do definicji parametrów w obiekcie PmaPrototype oraz PmaInstance służy konfigurator "Parametry Pma obiektu". Do odniesienia do wartości parametrów Pma obiektu w konfiguratorach obiektu można zastosować Makro wyrażenie $.par natomiast w skryptach można zastosować metodę PmaObject.GetPar. Ważnym do stwierdzania wartości parametru jest fakt, że podczas określania wartości konkretnego parametru parametr ten jest wyszukiwany od danego obiektu poprzez jego obiekty rodzicielskie kaskadowym sposobem.

Uwaga dla prototypów i instancji: Dla obiektu PmaInstance jest ważne, że przejmuje tylko parametry odpowiedniego obiektu PmaPrototype, dla których może (lecz nie musi) określić ich zmienione wartości. To znaczy, że instancja może tylko zmieniać wartości istniejących parametrów odpowiedniego prototypu. Instancja, lecz nawet rodzice instancji nie mogą dodawać nowych parametrów. Instancja (prototyp) ma dostępne tylko parametry zdefiniowane w prototypie, nie ma dostępu do parametrów rodzica instancji. W ten sposób jest zapewnione, że wszystkie instancje tego samego prototypu posiadają taki sam zestaw parametrów choć z różnymi wartościami. Obiekt PmaInstance jest więc wyjątkowy z punktu widzenia wyszukiwania parametrów (bąbelkowania), ponieważ wyszukiwanie parametrów jest zakończone w tym obiekcie i nie jest kontynuowane do rodzica obiektu PmaInstance. Z punktu widzenia parametrów instancja prototypu jest więc odseparowana od parametrów reszty aplikacji. Jeżeli jest konieczne uzyskanie parametru dla prototypu z rodzica instancji, wtedy jest konieczne taki parametr założyć w obiekcie PmaPrototype (z taką samą lub inną nazwą) i odnieść się do parametru rodzica instancji albo tu albo w obiekcie PmaInstance. Odniesienie do parametru rodzica można wykonać jako Makro wyrażenie $.par w wartości parametru instancji lub prototypu.
Na przykład w prototypie załóżmy nowy parametr boiler, którego wartość następnie ustawimy na wartość parametru boiler rodzica instancji: boiler:$.par("boiler");

Stosunek parametrów Pma obiektów oraz Pmg obiektów:
Ważnym jest, że można przekazać parametr Pma obiektu do panela jako parametr Pmg obiektu. Zasadą jest, że parametr Pma obiektu nie jest automatycznie przekazywany do środka panelu (Pmg obiekt "nie widzi" parametr, który jest zdefiniowany poza panelem). W panelu jest konieczne założenie odpowiedniego parametru w obiekcie PmgRoot i podczas otwarcia panela ustawić go na wartość parametru Pma obiektu. To można osiągnąć:
- przy pomocy parametru sViewPars metody Pm.CreateView lub
- przy pomocy makro wyrażenia w panelu w konfiguratorze "Wartość domyślna sViewPars".


Zastosowanie konceptu prototypu i instancji:
Koncept prototypu i instancji jest bardzo dogodny w sytuacjach, kiedy w aplikacji występuje kilka bardzo podobnych lub takich samych zespołów. Na przykład aplikacja monitoruje 5 kotłów, gdzie poszczególne kotły są w zasadzie takie same i część aplikacji dotycząca jednego kotła składa się z komunikacji z odpowiednim sterownikiem PLC, danych kotła, trendowania, alarmów, eventów i paneli graficznych.
Obecnie wystarczy założyć prototyp "Kociol", który przedstawia jeden kociol i implementujący pełną funkcjonalność jednego kotła (komunikacja, wyświetlenie, trendy i alarmy) i wytworzyć 5 instancji tego prototypu o nazwie "Kociol1", "Kociol2" itd. W celu wychwycenia różnic pomiędzy poszczególnymi instancjami trzeba założyć niezbędną ilość parametrów Pma obiektu. Najważniejszy byłby parametr "numer kotła", lecz mógłby nim być również adres IP sterownika PLC, itd.

Uwaga! We wszystkich obiektach w prototypie jest konieczne zapewnić unikalność globalnych nazw i zasobów systemowych (identyfikatory, nazwy, pliki, adresy, tabele bazy danych, itd.), najlepiej wykorzystać Makro wyrażenie $.par. Dotyczy to zwłaszcza obiektów PmaTrendGroup, PmaAlarmGroup, PmaAdo udostępnionych do Webu lub w sieci, itd.
Na przykład dla trendów, alarmów i eventów jest konieczne parametryzacja identyfikatora grupy, wyświetlanej nazwy grupy, nazwa pliku i foldera, nazwy bazy danych, tabeli, do której element zapisuje dane. Jeżeli nie wykonasz tego, wtedy wynik jest taki sam, jak gdyby w środowisku deweloperskim były wytworzone dwa koponenty o tym samym ustawieniu. Wynikiem może być wzajemne przepisywanie danych lub błąd przy rejestracji pod takim samym identyfikatorem, itd.

Historia:
Pm8.00.06: Wytworzono
© MICROSYS, spol. s r.o.