Zum Inhalt springen

Sidecar-Konnektoren

Ein Sidecar-Konnektor ist ein Protokoll, das als Plugin mit eigenem Prozess dazukommt. Der TCP-Konnektor ist das erste Beispiel; OPC UA und Feldbusse sind für denselben Weg gedacht.

Ein Konnektor braucht das Gegenteil einer Sandbox: freies Netz, eigene Bibliotheken, oft Python. Deshalb läuft sein Code nicht im Programm, sondern daneben — ein Prozess je Plugin. Stürzt er ab, steht nur dieser Konnektor still.

Was ein Protokoll an Feldern braucht, steht als Daten im Manifest des Plugins, nicht im laufenden Prozess. Das ist bewusst so:

  • Sie sehen das Verbindungsformular auch dann, wenn der Prozess gerade nicht läuft — sonst bekäme man eine leere Seite genau in dem Moment, in dem man den Fehler beheben will.
  • Verbindungen und Tags tragen die Kennung des Konnektors in ihrer Konfiguration. Deren Bedeutung darf nicht davon abhängen, ob irgendwo ein Prozess lebt.

Ein Konnektor kann deshalb auch rein beschreibend sein, ganz ohne eigenen Prozess.

Wann ein Protokoll erscheint und wann es verschwindet

Abschnitt betitelt „Wann ein Protokoll erscheint und wann es verschwindet“
Vorgang Folge
Plugin installiert, aber ausgeschaltet das Protokoll erscheint nicht im Formular
Plugin eingeschaltet Protokoll erscheint sofort, ohne Neustart; sobald das Backend läuft, wird auch die Laufzeit gestartet
Anlage neu gestartet beides kommt wieder, aus der Plugin-Registrierung
Plugin aktualisiert alte Laufzeit wird beendet, die neue Fassung meldet ihre Typen neu an
Plugin ausgeschaltet oder deinstalliert Protokoll verschwindet aus dem Formular, die Laufzeit wird sauber beendet

Vorhandene Verbindungen und Tags bleiben in allen Fällen gespeichert. Sie werden nur nicht mehr bedient, solange das Plugin aus ist.

  • Ein Paket, das eine eigene Verbindung halten will, muss net:socket im Manifest führen. Fehlt die Berechtigung, bekommt der Konnektor keine Laufzeit — das wird im Protokoll benannt.
  • Werte, die ein Plugin-Konnektor in Tags schreibt, gehen durch dieselbe geprüfte Tür wie jeder andere Plugin-Zugriff. Es zählt, was das Manifest bei der Installation zugestanden bekommen hat, und jeder Schreibvorgang hinterlässt einen Audit-Eintrag, der das Plugin nennt.
  • Was nachts von selbst hereinkommt, wird als Maschine protokolliert und nicht unter dem Namen der Person, die zuletzt in der Oberfläche war.

Das Plugin hält den Socket und meldet, was ankam: „auf Verbindung X kam dieses Telegramm.” Welches Tag das ist, entscheidet TrakState anhand der Tag-Konfiguration. Das Plugin kennt keine Tag-Pfade und muss deshalb auch bei jeder Änderung nicht nachgeführt werden.

Meldet ein Plugin einen Konnektor-Typ an, der die Regeln verletzt — eine schon vergebene Kennung, eine unzulässige Kennung, ein unzulässiger Feldname —, wird er abgelehnt. Das Plugin bleibt eingeschaltet, der Typ erscheint einfach nicht, und der Grund steht im Protokoll der Anlage.