4.5 Die Ablaufumgebungen für Dokumentenmethoden

Dieser Abschnitt stellt die Funktionsweise der Ablaufumgebungen für Dokumentenmethoden dar und definiert, wie diese in den aktiven Speicher eingebunden werden.

Bei der Ausführung einer Dokumentenmethode werden Dokumenten-ID und Dokumentenmethode, sowie evtl. Parameter der Methode an eine Ablaufumgebung übergeben. Die Ablaufumgebung sorgt für die Einbettung der Dokumentenmethode in das lokale Umfeld des Speichers, beispielsweise durch Initialisierung bestimmter globaler Variablen. In dieser Umgebung wird dann die Dokumentenmethode ausgeführt. Entsprechende Mechanismen, sowohl für die Parameterübergabe, als auch für die Rückgabe von Ergebnissen oder Fehlermeldungen, werden ebenfalls in der Ablaufumgebung vorgesehen. Als Beispiel für die Werteübergabe soll hier das Umleiten der Standardbildschirmausgabe und der Mechanismus zur Paramterübergabe „call by value“ angeführt werden. Eine Übergabe von Werten durch „call by reference“ ist bei entfernt ausgeführten Methoden nicht möglich.

Der Speicher erkennt, wie bereits unter Kapitel 2.4.2 beschrieben, anhand des jeder Dokumentenmethode zugeordneten MIME-Typs, welcher Ablaufumgebung die auszuführende Dokumentenmethode übergeben werden muß. Wird ein bestimmter MIME-Type und damit eine bestimmte Programmiersprache nicht unterstützt, so wird eine Fehlermeldung generiert. Es werden verschiedene Ablaufumgebungen unterstützt. Deshalb ist es notwendig, daß die Ablaufumgebungen streng modular realisiert werden. Erleichtert wird dadurch die Einbindung neuer Ablaufumgebungen. Als geeignete Programmiersprachen werden, wie unter Kapitel 2.3 dargestellt, Sprachen wie beispielsweise Python, Java oder Tcl betrachtet. Interessant ist in diesem Zusammenhang, mehrere Ablaufumgebungen für die gleiche Programmiersprache bereitzustellen, die sich durch die Zugriffsmöglichkeit auf Systemressourcen unterscheiden. Auf diese Weise können verschiedenen Instanzen unterschiedliche Zugriffsrechte zugeteilt werden. Eine Instanz zur Speicheradministration (z.B. Warten der Datenbank) benötigt mehr Privilegien als eine Instanz, die im Speicher suchen möchte.

Vorstellbar ist hier beispielsweise eine Unterscheidung durch die Erlaubnis, Kindprozesse zu erzeugen oder Sockets zu benutzen. Voraussetzung für die Unterstützung dieses Mechanismus ist die Möglichkeit den Interpreter oder Compiler der verwendeten Programmiersprache dahingehend konfigurieren zu können.