Installation Layer
Der Installation Layer (IL) ist ein Add-on welches über den Slooptools Store bezogen und über den Installer installiert werden muss. Wie auch bei den andere Add-ons basiert die Struktur auf ein WinCC OA Subprojekt. Mit diesem Add-on wird auch die Codemeter CtrlExt mitgeliefert. Diese ist notwendig um die Lizenzen der Add-ons überprüfen zu können.
Der Installation Layer ist für den Abschluss anderer Add-ons zuständig. Das zentrale Element ist hierbei das Installation Layer Skript, welches beim Hinzufügen zu einem Projekt automatisch zur Konsole hinzugefügt wird. Dieses prüft beim Starten des Skriptes und alle 5 min ob neue Add-ons installiert worden sind. Wenn ein Add-on gefunden wurde führt der IL bei jedem Add-on folgende Aktionen durch:
- Anlegen eines _Slooptools_Add_ons Datenpunkt.
- Den erstellten Datenpunkt mit den Informationen vom der AddonInformation.json Datei beschreiben.
- Hinzufügen eines Menü Eintrages zu der Slooptools Kategorie im System Management. Über diesen Menü Eintrag wird ein Panel geöffnet in dem Informationen zu dem Add-on dargestellt werden.
SLTLicense Control Extension
Mit dem Installation Layer wird die SLTLicenseCtrlExt mit ausgeliefert. Folgende Funktionen werden durch die Control Extension zu Verfügung gestellt:
bool sltCheckLicense (string itemNumber)
- Überprüft ob die Lizenz gültig ist und ob das Add-on mit der Lizenz verwendet werden kann.
int sltDecreaseUnitCounter (string itemNumber, int amount)
- Verringert den UnitCounter der jeweiligen Lizenz. (Nur wenn ein UnitCounter vorhanden ist)
- Beispiel: Die Lizenz ist für [X] Stunden/Tage gültig. Sobald das letzte Mal der Counter dekrementiert wurde, ist die Lizenz ungültig.
int sltDecreaseUnitCounterChecked (string itemNumber, int amount)
- Verringert den UnitCounter der jeweiligen Lizenz, jedoch nicht unter 1. (Nur wenn ein UnitCounter vorhanden ist. Wenn der UnitCounter auf 0 verringert wird, wird die Lizenz ungültig. Es gibt eventuell Fälle wo dies nicht gewünscht ist)
- Beispiel: Die Lizenz ist für [Y] Widgets gültig. Dann sollte das letzte Dekrementieren den Counter nicht auf 0 setzen da sonst die komplette Lizenz ungültig wäre, was dem Lizenztyp jedoch nicht entspricht. Hier muss in der Applikation verhindert werde das weitere Widgets verwendet werden können.
int sltGetUnitCounter (string itemNumber)
- Fragt den UnitCounter der Lizenz ab. (Nur wenn ein UnitCounter vorhanden ist)
string sltGetExpirationTime (string itemNumber)
- Liefert das Verfallsdatum der Lizenz im Format „%Y-%m-%dT%I:%M:%S“
int sltGetFeatureMap (string itemNumber)
- Liefert den Int Wert der 32Bit FeatureMap
string sltGetProductText (string itemNumber)
- Liefert den Produktnamen und den Provider Name mit | getrennt
Bei jeder dieser Funktionen wird die ItemNumber verwendet. Die ItemNumber des Add-ons ist der Datenpunktname des jeweiligen Add-ons vom Datenpunkttyp „SloopTools_Add_ons“ wobei bei WinCC OA der „-“ auf Grund von WinCC OA Vorgaben durch ein „“ ersetzt wurde. Die CtrlExtension kann aber mit beiden Arten umgehen.
Diese Funktionen können wir hier beschrieben in geeigneten Stellen im Code verwendet werden. Folgende Kriterien sollten hierbei jedoch beachtet werden:
- Überprüfungen sollten regelmäßig stattfinden aber nicht in zu kurzen Abständen.
- Die Lizenz sollte an einer zentralen Stelle geprüft werden. Es soll verhindert werden das in jedem Funktionsaufruf die Lizenz geprüft wird. Dies wäre technisch zwar möglich würde jedoch die Performance des Add-ons verringern.
- sltCheckLicense, sltGetUnitCounter und sltGetFeatureMap werden während des Quality Gates (QG) durch entsprechende Funktionen ersetzt um zusätzliche Sicherheit gewährleisten zu können. Dies bedeutet aber auch das diese Funktionen ohne ein Quality Gate Check nicht normal verwendet werden können. Wenn das Add-on ohne QG getestet werden muss, ist es notwendig diese Funktionen für den Test zu ersetzen.
- Verwendung von #uses SLTLicenseCtrlExt
Die Lizenzen werden an das Projekt gebunden. Das bedeutet, dass andere Projekte die am selben Computer das selbe Add-on verwenden ebenfalls eine Lizenz benötigen.