Modulimplementierung

Ein Modul wird vom datasqill Server als eigenständiger Sub-Prozess gestartet. Dieser muss nach seinem Start seine Eingangsparameter einlesen und nach Erledigung seiner Aufgabe seine Rückgabewerte an den Server zurücksenden.

Dabei gilt folgende Konvention als Schnittstelle zwischen dem datasqill Server und einem Modul-Prozess:

  • Über den Standard-Eingangskanal (stdin) sendet der Server die Eingangsparameter an den Modulprozesses.
  • Über den Standard-Fehlerkanal (stderr) sendet das Modul seine Ergebnisse an den Server zurück.
  • Über den Standard-Ausgabekanal (stdout) kann das Modul Debug-Ausgaben senden, die der Server mit Hilfe einer Tabelle persistieren und dem datasqill Entwickler verfügbar machen kann.
  • Die Eingangsparameter werden als Json-String gesendet, der einem festen Format entsprechen muss.
  • Die Rückgabewerte werden ebenfalls als Json-String zurückgesendet, für den ebenfalls ein entsprechendes Format definiert ist.

Java-Module werden als Java-Klassen implementiert, die ein Interface implementieren. Dieses Interface heißt datasqillProgram und besitzt eine abstrakte Methode:

public datasqillTransformationAnswer execute(datasqillTransformationRequest request) throws Exception

Weiterhin muss die Modulklasse eine main-Methode implementieren, damit der Server sie starten kann. Diese sieht in der Regel so aus:

public static void main(String args[]) {
    datasqillProgramStart.init(args, new DsModDemo());
}

Die Klassen datasqillProgramStart, datasqillTransformationRequest und datasqillTransformationAnswer sind in der datasqill Bibliothek zu finden (siehe auch den entsprechenden Abschnitt).

Im Beispiel ist die main-Methode aus der Klasse DsModDemo zu sehen, für eigene Klassen ist der Konstruktoraufruf hinter dem "new" natürlich geeignet anzupassen.