Einleitung

Module werden als eingenständige Prozesse implementiert, die vom Server aufgerufen werden. Sie werden in Java geschrieben, wobei auch andere Programmiersprachen vorstellbar sind. Zur Unterstützung der Java-Modulentwickler gibt es eine Bibliothek „datasqil-api“, die einige Funktionalität bereitstellt.

Die Eingangsparameter werden einem Modul vom datasqill Server zur Laufzeit in Form eines Json-Objekts (Request) übergeben. Zu diesen Parametern gehören unter anderem die Transformationsanweisung, die Datenquellen und Datenziele des Moduls, die Attribute und ein Kommando.

Als Antwort liefert ein Modul ebenfalls ein Json-Objekt (Response) zurück. In diesem finden sich alle Informationen zur Beantwortung des gestellten Auftrags vom datasqill Server. Dazu gehören aufgetretene Fehler, verarbeiteten Datenmengen, Laufzeiten und andere Statistikinformationen.

ModuleProcess.png

Die Übergabe der Anfrage (Json-Request) und der Antwort (Json-Response) erfolgen über Standardkanäle des Modul-Prozesses. Der Request wird dabei vom Server über „stdin“ an den Prozess geschickt, seine Response muss er dann über „stderr“ an den Server zurückgeben.

Module werden basierend auf Modulklassen aufgebaut und können als Ausprägungen dieser Klassen betrachtet werden. Die Modulklasse stellt die Funktionalität in Form von Programmcode bereit, ein Modul ergänzt diese durch Konfigurationsparameter.

Module.png

In der Regel wird aus einer Modulklasse ein Modul gebildet. Es gibt aber auch komplexere Anwendungsfälle, wo Klassen wiederverwendet werden und aus einer Implementierung durch unterschiedliche Konfigurationsparameter unterschiedliche Module erzeugt werden.