FirstSpirit Object Service - Administration und Konfiguration

e-Spirit AG

FirstSpirit Version 5.x

06.10.2017
Inhaltsverzeichnis

1. Allgemeine Einführung

Mit FirstSpirit lassen sich kundenspezifische Projekte, die unterschiedlichsten Anforderungen unterliegen, umsetzen. Oftmals ist eine dieser Anforderungen, die im Content-Management-System (CMS) gepflegten Inhalte auf einen Portal-Server zu übertragen und dort zu nutzen.

FirstSpirit bietet durch seine offene und erweiterbare Systemarchitektur optimale Voraussetzungen, um redaktionelle Inhalte in unterschiedliche Portal-Server zu integrieren.

Besondere Vorteile lassen sich durch die Kombination eines Portal-Servers mit dem CMS FirstSpirit immer dann erzielen, wenn einzelne technische Eigenschaften einer reinen Portal-Server-Lösung, wie beispielsweise eine aufwändige Navigationsanpassung, durch funktionale Stärken des FirstSpirit-Systems ergänzt und in ein erfolgreiches Gesamtsystem überführt werden.

Eine Portal-Integration mit FirstSpirit besteht immer aus zwei Bereichen:

  1. FirstSpirit-seitige Komponenten

    Diese Komponenten dienen der Ermittlung, Aufbereitung und Übertragung der notwendigen redaktionellen Daten an den Portal-Server. Sie sind in der Regel generisch, d.h. unabhängig vom konkreten Portal-Server, an den die Daten übertragen werden.

  2. Portal-seitige Komponenten

    Diese Komponenten dienen der Verarbeitung und Überführung der redaktionellen Inhalte aus dem CMS in einen konkreten Portal-Server. Damit sind sie immer spezifisch für einen Portal-Server.

Die in diesem Dokument vorgestellte Portal-Schnittstelle bezieht sich ausschließlich auf die FirstSpirit-seitigen Komponenten, welche für alle Portal-Integrationen identisch und somit unabhängig vom konkreten Portal-Server sind. Die Portal-seitigen Komponenten werden in getrennten Dokumentationen behandelt.

Im Portal-Kontext ist die Konfiguration eines Projekts portalspezifisch.

Aus diesem Grund kann die Konfigurationsanleitung des Portal-Herstellers von der im vorliegenden Dokument enthaltenen Beschreibung abweichen.

Es muss daher in jedem Fall ein Abgleich stattfinden, um mehrfach ausgeführte Arbeitsschritte und Irritationen zu vermeiden.

Das vorliegende Dokument richtet sich an technische Projektleiter und FirstSpirit-Entwickler. Es ist kein Handbuch für Redakteure.

Es wird vorausgesetzt, dass der Leser sicher in der Verwendung von FirstSpirit 5.x ist und sich bereits mit der UX-Bridge vertraut gemacht hat.

1.1. Funktionsvergleich

Die neu entwickelte Portal-Schnittstelle bietet gegenüber der alten Version deutliche Vorteile. Dies zeigt auch die folgende Gegenüberstellung:

Tabelle 1. Feature Comparison-Matrix
FeatureAlte PortalschnittstelleNeue Portalschnittstelle (über FOS)

Update von kompletten (Teil-)Bäumen

Inkrement-Update für Navigation und Inhalt

Support für alle FirstSpirit-Elemente

Erweiterbarkeit der Schnittstelle im Projekt

Support der Vererbung für Metadaten und Rechte

FirstSpirit Editierrechte verfügbar



1.2. Themen dieser Dokumentation

Dieses Dokument beschreibt die Schnittstelle zur Anbindung von Portalen an FirstSpirit, erläutert die dafür notwendigen Komponenten und erklärt deren Installation sowie Konfiguration.

Kapitel 2: Eine Auflistung der für die Anbindung eines Portals benötigten Komponenten und deren Erläuterung sind in diesem Kapitel zusammengefasst.

Kapitel 3: In diesem Kapitel wird die Installation und Konfiguration der verwendeten Komponenten erklärt.

Kapitel 4: Eine potentiell gewünsche SSL-Konfiguration wird in diesem Kapitel erläutert.

Kapitel 5: Alle notwendigen Anpassungen im FirstSpirit-Projekt werden in diesem Kapitel beschrieben.

Kapitel 6: In diesem Kapitel wird das FirstSpirit Object Service Admin Interface vorgestellt.

Kapitel 7: Ein Vergleich zwischen der bisherigen und der neuen Schnittstelle zur Integration eines Portals ist in diesem Kapitel enthalten.

Kapitel 8: Einige spezifische Begriffe, die in diesem Dokument verwendet werden, sind in diesem Kapitel aufgeführt und werden dort erläutert.

Kapitel 9: Dieses Kapitel enthält die rechtlichen Hinweise der e-Spirit AG zu dem in dieser Dokumentation beschriebenen Modul.

2. Komponenten

Für die Portalanbindung werden verschiedene Komponenten benötigt:

Die einzelnen Komponenten werden in den folgenden Unterkapiteln im Detail vorgestellt.

Architektur
Abbildung 1. Architektur


Innerhalb des Portal-Servers existiert zusätzlich das Portal-spezifische Portal-Plugin, welches den Import der Inhalte in das Portal übernimmt. Diese Komponente wird in einer getrennten, vom jeweiligen Portal-Anbieter bereitgestellten Dokumentation beschrieben.

Das Zusammenspiel der einzelnen Komponenten erfolgt immer nach dem folgenden Schema:

  • In FirstSpirit durchgeführte redaktionelle Änderungen werden während einer Generierung über den UX-Bus an den FirstSpirit Object Service (FOS) übergeben. Der FOS aktualisiert daraufhin sein internes Datenmodell (vgl. Schritt 1 & 2 der Abbildung Architektur).
  • Der FOS ermittelt die durchgeführten Änderungen und benachrichtigt das Portal-Plugin mithilfe einer Event-Nachricht (vgl. Schritt 3 & 4 der Abbildung Architektur).
  • Sind die in der Event-Nachricht enthaltenen Informationen für die Aktualisierung der Daten im Portal nicht ausreichend, erfragt das Portal-Plugin über die REST-Schnittstelle des FOS alle für eine Aktualisierung notwendigen Daten.

2.1. UX-Bridge / UX-Bus

Die UX-Bridge bildet mit dem ihr zugehörigen UX-Bus das zentrale Element für die Übertragung von FirstSpirit-Inhalten in ein Portal (vgl. Abbildung Architektur).

Die zum Datenaustausch notwendige Kommunikation zwischen den nur lose miteinander gekoppelten Komponenten wird über den UX-Bus realisiert. Er sammelt alle Nachrichten "zentral" und stellt sie den Komponenten zur Verfügung. Diese holen die für sie relevanten Informationen vom UX-Bus ab und verarbeiten sie entsprechend weiter.

Der wesentliche Vorteil des UX-Busses ist die Eigenschaft, den FirstSpirit-Server technisch vom Portal-Server zu entkoppeln. Damit entsteht eine robuste und stabile Infrastruktur. Eine temporäre, beispielsweise durch Wartungen hervorgerufene Nicht-Verfügbarkeit wird durch diese Struktur sicher abgefedert.

Des Weiteren besteht durch die Entkopplung die Möglichkeit, mehr als nur einen FOS bzw. Portal-Server anzubinden. Die in FirstSpirit gepflegten Daten lassen sich somit auf mehrere Live- oder Test-Systeme verteilen, wobei sich der jeweilige Datenbestand der unterschiedlichen Systeme voneinander unterscheiden kann, da jede Komponente nur ausschließlich auf die jeweils für sie bestimmten Nachrichten reagiert und diese verarbeitet.

Weitere Informationen sind in den UX-Bridge-Dokumentationen enthalten.

2.2. FirstSpirit Object Service-Modul

Das FOS-Modul ist die Komponente, die auf dem FirstSpirit-Server installiert werden muss (vgl. Abbildung Architektur).

Über die durch das Modul auf dem FirstSpirit-Server bereitgestellten Funktionalitäten können Nachrichten erstellt und an die UX-Bridge weitergegeben werden. Diese Nachrichten werden durch eine auf dem FirstSpirit-Server durchgeführte Generierung erzeugt und auf dem UX-Bus für den FOS bereitgestellt. Sie enthalten alle relevanten Informationen zu den geänderten Daten des verwendeten FirstSpirit-Projekts und informieren somit den FOS über die vorgenommenen Änderungen.

Das FOS-Modul stellt den Ausgangspunkt der Kommunikationskette zwischen den einzelnen Komponenten dar, indem es die relevanten Informationen sammelt, zusammenstellt und unter Verwendung des UX-Busses an die nachfolgende Komponente weiterreicht.

2.3. FirstSpirit Object Service (FOS)

Der FOS stellt das Bindeglied zwischen FirstSpirit und dem Portal-Server dar (vgl. Abbildung Architektur).

Er nimmt die über die UX-Bridge auf dem UX-Bus bereitgestellten Nachrichten entgegen und aktualisiert den in seiner internen Persistenzschicht gespeicherten Datenbestand. Dabei ermittelt er auf der Basis der erhaltenen Nachrichten anhand eines Datenabgleichs, welche Daten sich genau geändert haben. Diese Information gibt der FOS durch eine Event-Nachricht über den UX-Bus an das Portal-Plugin des angebundenen Portals weiter (vgl. Kapitel UX-Bridge / UX-Bus).

Das Portal-Plugin eines Portal-Servers empfängt diese Event-Nachricht und stößt eine Aktualisierung des Livestandes der Daten innerhalb des Portals an. Je nach Portal können die innerhalb der Event-Nachricht enthaltenen Informationen für die Aktualisierung nicht ausreichen. In diesem Fall fordert das Portal-Plugin zuvor die benötigten Daten vom FOS über dessen REST-Schnittstelle an. Abhängig von der Implementierung des Portal-Plugins kann es sich dabei nur um ein geändertes Element oder um einen Teilbaum handeln.

Das Portal-Plugin wird durch den jeweiligen Portal-Anbieter bereitgestellt.

3. Installation und Konfiguration der Komponenten

Vor dem Einsatz der neuen Schnittstelle sind verschiedene Schritte durchzuführen:

Die Verwendung des FOS ist nur in Verbindung mit Freigabe-Projekten möglich. Die Nutzung der Freigabe muss daher in den Projekteigenschaften aktiviert sein.

Freigabe nutzen
Abbildung 2. Freigabe nutzen


3.1. UX-Bridge / UX-Bus

Die Installation der für die Verwendung der UX-Bridge notwendigen Komponenten gliedert sich in zwei Schritte: In die Installation des UX-Bridge-Moduls auf dem FirstSpirit-Server und in die Installation des UX-Busses.

Es ist zwingend notwendig, dass das UX-Bridge-Modul mindestens in der Version 1.6.8 verwendet wird. Andernfalls ist die Funktionalität des FirstSpirit Object Services nicht sichergestellt.

Der UX-Bus benötigt mindestens ein installiertes Java 6, ab Version 1.6.6 Java 7. Des Weiteren muss die Umgebungsvariable JAVA_HOME gesetzt und JAVA_HOME/bin der Path-Variablen hinzugefügt sein.

Da sich die Installation des UX-Bridge-Moduls analog zur Installation des FOS-Moduls verhält, wird in diesem Kapitel nur die Installation des UX-Busses behandelt. Die Konfiguration des UX-Bridge-Moduls ist im nachfolgenden Unterkapitel erläutert.

Der UX-Bus kann ebenfalls als Modul auf dem FirstSpirit-Server installiert oder im Standalone-Betrieb verwendet werden. Der Standalone-Betrieb wird empfohlen.

Zur Installation des UX-Busses im Standalone-Betrieb entpacken Sie die mit dem UX-Bridge-Modul ausgelieferte Distribution (UX-Bus_<Versionsnummer>.zip) in einen beliebigen, geeigneten Ordner. Diese Distribution stellt eine im Ordner conf liegende initiale Konfiguration bereit, in der die benötigten Routen bereits definiert sind. Diese sollte den projektspezifischen Anforderungen angepasst werden.

Nähere Informationen zur Konfiguration des UX-Busses können Sie der UX-Bridge Installationsanleitung entnehmen.

Die Installation wird durch einen Start des UX-Busses abgeschlossen. Dafür muss das im Ordner bin liegende Startskript activemq mit dem folgenden Befehl gestartet werden.

OS X / Linux
./bin/activemq console
Windows
bin/activemq

Der Start des UX-Busses wird in der Konsole entsprechend geloggt:

INFO  ActiveMQ JMS Message Broker (ID:apple-s-Computer.local-51222-1140729837569-0:0) has started

Die Konfiguration des Busses und seine Erreichbarkeit kann mithilfe des Tools netstat über den in der initialen Konfiguration angegebenen Port 61616 anhand des folgenden Befehls getestet werden:

OS X / Linux
netstat –an|grep 61616
Windows
netstat –an|find `61616”

Weitere Informationen zur Installation der UX-Bridge und des UX-Busses finden Sie in den Dokumentationen zur UX-Bridge.

3.1.1. Konfiguration des UX-Bridge-Moduls

Nach der erfolgreichen Installation des Moduls wurde die Liste der auf dem FirstSpirit-Server installierten Module in den Server-Eigenschaften um den Ordner UX-Bridge ergänzt. Klicken Sie nach der Selektion dieses Ordners auf Konfigurieren und aktivieren Sie in dem sich öffnenden Dialog die Checkbox Alle Rechte. Der UX-Bridge-Ordner wird nach der Bestätigung über OK mit einem Icon in der Form eines Vorhängeschlosses gekennzeichnet.

Klappen Sie anschließend den Ordner aus und selektieren Sie den Dienst UXBService, bevor Sie erneut auf Konfigurieren klicken. Wechseln Sie in dem sich öffnenden Dialog auf den Reiter Optionen und aktivieren Sie dort den Versand von Status- und Projekt Informationsnachrichten (vgl. Abbildung Konfiguration des UXBServices).

Informationen zu diesen Nachrichten erhalten Sie in der Dokumentation für Entwickler.

Konfiguration des UXBServices
Abbildung 3. Konfiguration des UXBServices


Nach der Änderung eines Dienstes muss dieser einmal gestoppt und neu gestartet werden.

3.2. FirstSpirit Object Service-Modul

Das Modul muss mithilfe der mitgelieferten fos-fsm-<Versionsnummer>.fsm-Datei auf dem FirstSpirit-Server hinzugefügt werden. Für die Installation des Moduls öffnen Sie die Server- und Projektkonfiguration und wählen den Bereich Server-EigenschaftenModule.

Liste der auf dem FirstSpirit-Server installierten Module
Abbildung 4. Liste der auf dem FirstSpirit-Server installierten Module


Im Hauptpanel ist eine Liste der auf dem Server installierten Module zu sehen. Wählen Sie nach dem Klicken auf Installieren die mitgelieferte fos-fsm-<Versionsnummer>.fsm-Datei aus und bestätigen Sie die Auswahl mit Öffnen. Nach der erfolgreichen Installation wurde der Liste ein Ordner FirstSpirit Object Service hinzugefügt (siehe Abbildung Liste der auf dem FirstSpirit-Server installierten Module). Schließen Sie die Server-Eigenschaften durch Klicken auf OK.

Nähere Information zur Installation von Modulen finden Sie in der FirstSpirit Dokumentation für Administratoren.

Nach jeder Modul-Installation bzw. einer Aktualisierung des Moduls ist ein Neustart des FirstSpirit-Servers notwendig.

3.3. FirstSpirit Object Service (FOS)

Der FOS ist technisch eine Web-Applikation (WebApp), die auf einem Java Web-Application-Server (wie z.B. Tomcat) zu installieren ist.

Es wird eine Servlet-Engine benötigt, die die Servlet-API in der Version 2.5 (oder höher) implementiert.

Unter Berücksichtigung der genannten Voraussetzung ist die Verwendung eines beliebigen Web-Application-Servers möglich, an dieser Stelle wird jedoch exemplarisch die Einbindung der Web-Applikation auf einem Tomcat-Server beschrieben:

Öffnen Sie den Unterordner webapps innerhalb ihres Tomcat-Verzeichnisses und speichern Sie dort die fos-service-<Versionsnummer>.war-Datei.

Alternativ wäre ein Hochladen der fos-service-<Versionsnummer>.war-Datei über den Tomcat Web Application Manager möglich, der bei gestartetem Tomcat standardmäßig unter der Adresse localhost:8080/manager/html erreichbar ist.

Im Allgemeinen wird die hinzugefügte Applikation automatisch durch den Webserver erkannt, auf diesem eingebunden und direkt gestartet. Im Tomcat Web Application Manager ist dies an dem neuen Eintrag in der Liste der auf dem Server verfügbaren Applikationen zu erkennen (siehe Abbildung eingebundene Web-Applikation).

eingebundene Web-Applikation
Abbildung 5. eingebundene Web-Applikation


Der FOS unterstützt aktiv als Laufzeitumgebung aktuell nur Tomcat 7 und 8. Die Tests werden mit Tomcat 8 durchgeführt. Der Einsatz anderer Webserver wurde nicht getestet und wird somit nicht gewährleistet.

Nähere Informationen zur Einbindung einer Web-Applikation auf einem anderen Web-Application-Server entnehmen Sie bitte der Dokumentation des entsprechenden Anbieters.

Innerhalb des FOS existiert eine integrierte Persistenzschicht (vgl. Abbildung Architektur). Sie ist in der mitgelieferten Web-Applikation enthalten und wird durch diese bereitgestellt. Die Bereitstellung einer eigenen Persistenzschicht ist somit nicht notwendig.

Unter Umständen ist nach der Einbindung der Web-Applikation ein Neustart des Web-Application-Servers notwendig.

Das FirstSpirit Object Service Admin Interface erfordert standardmäßig keine Authentifizierung und ist somit nicht gegen Fremdzugriffe gesichert. Aus diesem Grund wird der Schutz der Webanwendung über die Standardmechanismen des Servlet-Containers – beispielsweise HTTP Basic Authentication – empfohlen.

3.3.1. Änderung des Endpunkts

Der Versand der Nachrichten für das Portal-Plugin erfolgt standardmäßig an:

activemq:topic:PORTAL-EVENTS

Dieser Endpunkt ist in der applicationContext.xml des FOS definiert:

<endpoint id="PORTAL-EVENTS" uri="acticemq:topic:PORTAL-EVENTS"> </endpoint>

Durch eine Veränderung dieses Eintrags kann ein neuer Endpunkt konfiguriert werden.

Es ist nur eine Veränderung des URI zulässig. Die ID muss zwingend in der gegebenen Form bestehen bleiben.

Die applicationContext.xml ist innerhalb des Ordners WEB-INF in der fos-service-<Versionsnummer>.war-Datei enthalten.

3.3.2. Einstellungen

Der FOS benötigt die folgenden Einstellungen:

  • Pfad der Einstellungsdatei
  • Pfad für die Speicherung der Projektdaten
  • Pfad der API-Keys-Datei
  • Host & Port des UX-Busses

Wurden die Einstellungen bisher nicht definiert oder liegen sie unvollständig vor, werden sie beim Aufruf des FirstSpirit Object Service Admin Interfaces abgefragt.

Die Einstellungen werden in einer Java Properties-Datei hinterlegt. Sie müssen bei der ersten Verwendung des FOS angegeben werden, da sie von den lokalen Begebenheiten des Anwendersystems abhängig sind. Für die Generierung der Datei wird ein auf <Dateiname>.properties endender, absoluter Pfad erwartet.

Der FOS stellt ein Bindeglied zwischen FirstSpirit und dem Portal-Server dar. Er ermittelt anhand der an ihn übermittelten Nachrichten alle Änderungen am Datenbestand und gibt diese Informationen an das Portal-Plugin weiter. Für die Speicherung dieses Datenbestands verwendet der FOS einen Ordner, der ihm über einen absoluten Pfad mitzuteilen ist. Der Abruf der Nachrichten erfolgt über eine Verbindung, die der FOS zum UX-Bus aufbaut. Er benötigt daher den Host und den Port des UX-Busses.

Die REST-Schnittstelle des FOS erwartet bei jedem Aufruf einen http-Header namens apikey. Sein Wert muss eine UUID sein, die dem FOS in Form eines API-Keys bekannt ist. Andernfalls endet eine Anfrage mit dem Status 401 Unauthorized. Mit den verschiedenen Keys werden Zugriffsrechte auf Projekte über die REST-Schnittstelle durchgesetzt. Für die Speicherung der API-Keys verwendet der FOS eine bin-Datei, die er bei der Erzeugung des ersten API-Keys anlegt und die ihm über einen absoluten Pfad zur Verfügung gestellt werden muss.

Bei der Installation des FOS wird ein Master-Key erzeugt, der auf alle Projekte sämtliche Rechte besitzt. Er wird u.a. genutzt, um neue API-Keys zu erzeugen. Des Weiteren gewährleistet er, dass immer mindestens ein API-Key mit Projekt-Zugriffsrechten existiert.

Der Pfad zu der Einstellungs- sowie der API-Keys-Datei muss bereits existieren. Andernfalls tritt eine Exception auf.

Nach der Generierung der Einstellungsdatei muss diese der Web-Applikation bekannt gemacht werden. Dies kann über drei mögliche Wege geschehen:

  • Erstellung einer Umgebungsvariablen FOS_SETTINGS_FILE
  • Erweiterung der web.xml
  • Erweiterung der context.xml

Die Erweiterung der web.xml erfolgt über das Hinzufügen eines Context-Parameters oder eines Environment-Entries:

<context-param>
	<param-name>FOS_SETTINGS_FILE</param-name>
	<param-value>PATH OF THE SETTINGS FILE</param-value>
</context-param>

oder:

<env-entry>
	<env-entry-name>FOS_SETTINGS_FILE</env-entry-name>
	<env-entry-type>java.lang.String</env-entry-type>
	<env-entry-value>PATH OF THE SETTINGS FILE</env-entry-value>
</env-entry>

Diese können auch in der context.xml hinzugefügt werden. Die dafür notwendigen Schritte werden unter folgendem Link erläutert:

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Context_Parameters

Abschließend muss der Application-Server neugestartet werden.

3.3.3. Logging anpassen

Das Logging der Web-Application ist im ausgelieferten Zustand auf INFO gestellt. Werden weitere Details benötigt, muss in der Datei log4j.properties (im Ordner der Web-Application unter WEB-INFclasses zu finden) die Zeile log4j.rootLogger=INFO, file auf den Ausdruck log4j.rootLogger=DEBUG, file geändert werden.

Zusätzlich zum allgemeinen Logging werden noch Informationen über Laufzeiten gesichert. Diese werden standardmäßig in einer eigenen Datei metrics.log im Logging-Verzeichnis des Web-Application-Servers abgelegt. Des Weiteren werden die Informationen auch per jmx bereitgestellt.

Änderungen an der Laufzeitmessung können in der Datei applicationContext.xml (im Ordner der Web-Application unter WEB-INF zu finden) vorgenommen werden. Um beispielsweise die Frequenz der Messungen zu ändern, muss im folgenden Abschnitt der Wert period verändert werden.

<metrics:reporter type="slf4j" metric-registry="metrics" period="1m" logger="com.espirit.moddev.fos.logger.metrics”/>

Voreingestellt ist hier 1m für eine Messung pro Minute.

Werden weiter Informationen über die Laufzeitmessungen benötigt, können diese unter folgenden Links nachgelesen werden:

https://github.com/ryantenney/metrics-spring

https://dropwizard.github.io/metrics/3.1.0/manual/core/

3.3.4. Betreiben mehrerer FOS-Instanzen

Besteht der Wunsch, mehrere FOS-Instanzen parallel auf einem Web-Application-Server zu betreiben, so ist dies problemlos möglich. Die initial auf dem Server eingebundene Applikation (vgl. Kapitel FirstSpirit Object Service (FOS)) muss dafür lediglich entsprechend der gewünschten Anzahl von Instanzen kopiert werden.

Es ist zu beachten, dass alle Instanzen der Web-Applikation einen eindeutigen Namen erhalten (z. B. fos1, fos2, fos3,…).

Für jede der dann existierenden Instanzen wird eine eigene context.xml benötigt, die an einer globalen Stelle auf dem Web-Application-Server abzulegen und wie die zugehörige FOS-Instanz zu benennen ist. Für einen Tomcat-Server entspräche der Ablageort der context.xml-Dateien beispielsweise dem folgenden Pfad:

<Tomcat-Verzeichnis>/conf/Catalina/<HOST>/<FOS-INSTANZ>.xml

Die Dateien dienen zur Angabe des Pfads der Einstellungsdatei für das FirstSpirit Object Service Admin Interface und benötigen daher folgenden Inhalt:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<Parameter name="FOS_SETTINGS_FILE"
	value="PFAD ZUR EINSTELLUNGSDATEI" override="true" />
</Context>

Sollten die FOS-Instanzen auf denselben UX-Bus zugreifen, ist es wichtig, in der applicationContext.xml den Consumer anzupassen, so dass dieser nicht gleich ist.

(<from uri="activemq:Consumer.INDIVIDUELLER NAME.VirtualTopic.BUS_OUT" />).

3.4. Update des FOS

Sollte es notwendig sein, den FOS aufgrund neuer Features oder gefixter Bugs auf eine neue Version zu aktualisieren, sind einige Schritte nötig, die nachfolgend beschrieben werden.

Zunächst ist zu prüfen, ob die Aktualisierung des FOS andere Updates voraussetzt. Beispielsweise könnte eine neue Version des UX-Busses oder UX-Bridge benötigt werden. Dies ist jedoch nicht der Regelfall und wird in den Release Notes bekannt gegeben.

Für ein Update des UX-Busses sichern Sie zunächst die Konfiguration der Routen (confcamel.xml) und löschen dann die bestehenden Dateien des UX-Busses, bevor Sie die neuen Dateien wie im Kapitel UX-Bridge / UX-Bus beschrieben installieren. Nach der Installation muss die Konfiguration der Routen wieder zurückgespielt werden.

Beim Update der UX-Bridge kann wie bei der Installation vorgegangen werden. Wurden die Einstellungen des UX-Services angepasst, müssen diese vor der Aktualisierung ebenfalls gesichert und nach einer erfolgreichen Installation wieder eingespielt werden.

Das Vorgehen bei einem Update des FOS Service-Moduls entspricht dem der Installation. Eine Deinstallation des Moduls vor dem Update ist nur dann notwendig, wenn dies in den Release Notes angemerkt wurde.

Es wird empfohlen, vor dem Update der FOS-Webanwendung einige Einstellungen zu sichern. Um welche es sich dabei genau handelt, hängt von der Art der Konfiguration ab. Daher ist zu prüfen, wo der Pfad zur benötigten properties-Datei konfiguriert ist. Des Weiteren ist zu prüfen, ob die Routen der Standardkonfiguration entsprechen oder ob Anpassungen vorgenommen wurden. Sind alle Änderungen gesichert, lässt sich die war-Datei wie im Kapitel FirstSpirit Object Service (FOS) beschrieben installieren.

4. SSL-Konfiguration

Der FOS ist technisch eine Web-Applikation (WebApp), die generell auf einem beliebigen Web-Application-Server installiert werden kann. Der FOS wird dabei standardmäßig ohne Verschlüsselung bereitgestellt. Ist diese gewünscht, muss der verwendete Server entsprechend konfiguriert werden.

In diesem Kapitel wird eine solche Konfiguration exemplarisch für einen Tomcat-Server skizziert.

Da nur Zertifikate, die von einer offiziellen Zertifizierungsstelle (Certificate Authority – CA) signiert wurden, als vertrauenswürdig angesehen werden, muss ein Zertifikatsantrag (Certificate Signing Request - CSR) erstellt werden.

Hierfür wird zunächst über das in jedem JDK enthaltene Programm keytool ein lokaler Keystore erzeugt, indem der folgende Aufruf in der Konsole ausgeführt wird:

keytool –genkey –alias tomcat –keyalg RSA –keystore <KS_FILENAME>

Auf dieser Basis lässt sich im Anschluss der benötigte CSR erstellen:

keytool –certreq –keyalg RSA –alias tomcat –file certreq.csr -keystore <KS_FILENAME>

Dieser Aufruf legt die Datei certreq.csr an, welche an eine beliebig wählbare CA (z.B. http://thawte.com) übermittelt werden muss. Im Gegenzug wird ein signiertes Zertifikat zurückgeliefert, welches in den Keystore zu importieren ist.

Zuvor muss jedoch ein sogenanntes Chain bzw. Root Certificate der gewählten CA-Seite (z.B. http://www.thawte.com/certs/trustmap.html) heruntergeladen und dem Keystore vor dem zurückgelieferten Zertifikat hinzugefügt werden. Andernfalls erzeugt das Programm keytool die Fehlermeldung Failed to establish chain from reply.

Der Import des Chain Certificate in den Keystore erfolgt über den Aufruf:

keytool –import –alias root –keystore <KS_FILENAME> -trustcacerts -file <CHAIN_CERTIFICATE_FILENAME>

Danach kann das signierte Zertifikat ebenfalls hinzugefügt werden:

keytool –import –alias tomcat –keystore <KS_FILENAME> -file <SIGNED_CERTIFICATE_FILENAME>

Abschließend muss der Tomcat-Server einen Connector für die künftigen https-Verbindungen erhalten. Die server.xml des Servers erhält bereits einen solchen Connector, der jedoch standardmäßig auskommentiert ist:

<Connector
   protocol="HTTP/1.1"
   port="8443" maxThreads="150"
   scheme="https" secure="true" SSLEnabled="true"
   keystoreFile="/opt/bamboo/.keystore" keystorePass="changeit"
   clientAuth="false" sslProtocol="TLS"
/>

Eine Anpassung dieses Standard-Connectors an die spezifischen Anforderungen wird dringend empfohlen.

Änderungen an der server.xml erfordern einen Neustart des Servers.

Wurde die Konfiguration fehlerfrei durchgeführt, sollte nach dem Server-Neustart über die folgende URL die bekannte Tomcat-Startseite erreichbar sein (vgl. Abbildung verschlüsselte Tomcat-Startseite):

https://<Servername>:8443
verschlüsselte Tomcat-Startseite
Abbildung 6. verschlüsselte Tomcat-Startseite


Detailliertere Informationen zur Konfiguration eines Tomcat-Servers erhalten Sie in der Tomcat-Dokumentation:
http://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#Configuration

Die Informationen zur Konfiguration eines anderen Web-Application-Servers entnehmen Sie bitte der Dokumentation des entsprechenden Anbieters.

5. Anpassungen im FirstSpirit-Projekt

Um die Daten eines FirstSpirit-Projekts so zusammenzufassen, dass sie in für den UX-Bus verwendbare Nachrichten umgewandelt werden können, müssen innerhalb des FirstSpirit-Projekts einige Anpassungen vorgenommen werden:

Dieses Kapitel beschreibt die allgemeinen Basis-Voraussetzungen, die für eine Portalintegration zwingend erforderlich sind. Sie können daher von den portalspezifischen Angaben des Portal-Herstellers abweichen.

5.1. Ausgabekanal

Zusätzlich zu den bereits vorhandenen Ausgabekanälen eines Projekts wird ein weiterer XML-Kanal benötigt, der manuell anzulegen ist.

Öffnen Sie die Server- und Projektkonfiguration und wählen Sie den Punkt Projekt-EigenschaftenVorlagensätze. Durch einen Klick auf Hinzufügen wird ein Dialog angezeigt, der folgendermaßen zu füllen ist:

Vorlagensatz hinzufügen
Abbildung 7. Vorlagensatz hinzufügen


Bestätigen Sie den Dialog anschließend mit OK, um das Hinzufügen des Ausgabekanals abzuschließen.

Die Liste der vorhandenen Vorlagensätze wird daraufhin um den neuen Ausgabekanal erweitert. Dieser wurde automatisch aktiviert und steht somit direkt im Projekt zur Verfügung.

Der neu erstellte XML-Ausgabekanal kann innerhalb des Projekts dazu genutzt werden, die während der Generierung erzeugten Knoten durch zusätzliche Attribute und Medien zu ergänzen.

Die Bearbeitung des Ausgabekanals innerhalb des verwendeten Projekts erfolgt durch einen FirstSpirit-Entwickler und ist daher in der Dokumentation für Entwickler beschrieben.

Unabhängig von der Anzahl der angebundenen Portale muss das Projekt nur um den beschriebenen Ausgabekanal erweitert werden. Es ist nicht notwendig, für jedes Portal einen eigenen Ausgabekanal hinzuzufügen!

5.2. Generierungsauftrag (Vollgenerierung)

Zur Erstellung der Nachrichten, die über den UX-Bus an den FOS weitergeleitet werden und diesen initial füllen sowie ihn über spätere Änderungen im FirstSpirit-Projekt informieren, wird ein Auftrag benötigt, der mindestens die in den folgenden Unterkapiteln erläuterten Aktionen enthält (siehe auch Abbildung Aktionen des Voll-Deployment-Auftrags).

Öffnen Sie für den benötigten Auftrag die Server- und Projektkonfiguration und wechseln Sie auf den Bereich Projekt-EigenschaftenAuftragsverwaltung.

Fügen Sie dort einen neuen Standard-Auftrag hinzu oder bearbeiten Sie einen bereits bestehenden Auftrag.

Weitere Informationen zur Erstellung des Auftrags sind auch im UX-Bridge-Entwicklerhandbuch enthalten.

Aktionen des Voll-Deployment-Auftrags
Abbildung 8. Aktionen des Voll-Deployment-Auftrags


5.2.1. Initialize FosGeneration

Innerhalb des Auftrags muss zunächst eine Initialisierung erfolgen. Dabei wird ein sogenannter MessageGenerator benötigt, der die Nachrichten erzeugt, die vom FirstSpirit-Server an den UX-Bus übermittelt werden.

Über den folgenden Skriptaufruf wird in der ersten Aktion des Auftrags der durch das FOS-Modul bereitgestellte Standard-MessageGenerator hinzugefügt:

Initialize FOSGeneration. 

#! executable-class
com.espirit.moddev.fos.util.FosScheduleInitializer

Soll ein eigener MessageGenerator verwendet werden, so kann dieser als Parameter MessageGenerator in den Skript-Eigenschaften hinzugefügt werden.

Weitere Informationen zum MessageGenerator sind im UX-Bridge-Entwicklerhandbuch enthalten.

5.2.2. Activate Generation

Fügen Sie als zweite Aktion des Auftrags ein weiteres Skript hinzu, das den folgenden Aufruf enthält:

Activate Generation. 

#! executable-class
com.espirit.moddev.uxbridge.inline.UxbInlineUtil

Der Aufruf aktiviert die im nächsten Schritt durchzuführende Generierung, die ohne diese Aktivierung nicht durchführbar ist. Der Aufruf ist somit zwingend notwendig für eine erfolgreiche Generierung.

5.2.3. Generate

Die in der vorhergehenden Aktion aktivierte Generierung wird durch die Aktion Generate ausgeführt.

In den Eigenschaften der Generierung ist ein beliebiger Name anzugeben und die Option Generierungsverzeichnis vorher leeren auszuwählen (vgl. Abbildung Generierung - Eigenschaften). Die Option Generieren nur wenn erforderlich darf hingegen nicht aktiviert sein.

Generierung - Eigenschaften
Abbildung 9. Generierung - Eigenschaften


Im Register Erweitert muss für eine Sprache des Projekts der zuvor angelegte Ausgabekanal ausgewählt werden (siehe Abbildung Generierung - Erweitert).

Generierung - Erweitert
Abbildung 10. Generierung - Erweitert


5.2.4. Result Handler

Die Aktion Result Handler ist eine Funktion zur Fehlererkennung. Sie ermöglicht die Feststellung von Fehlern während der Zustellung der erzeugten Nachrichten und Event-Nachrichten.

Legen Sie hierfür ein weiteres Skript an und fügen Sie diesem den folgenden Skriptaufruf hinzu:

Result Handler. 

#! executable-class
com.espirit.moddev.uxbridge.inline.UxbResultHandler

Öffnen Sie anschließend die Eigenschaften des Skripts und legen Sie über Hinzufügen die folgenden Parameter an (vgl. Abbildung Eigenschaften des Skripts):

messageTimeout
Der Service wartet die ihm in Sekunden vorgegebene Zeitspanne bis zur Auswertung der Adapter-Antworten. Die Zeitspanne lässt sich frei definieren. Erhält der Service innerhalb des vorgegebenen Zeitfensters keine Antwort, gilt die Zustellung der Nachricht als fehlerhaft.
errorThreshold / disableMaintenanceWithErrors
Während einer Vollgenerierung wird das entsprechende Projekt im FOS in einen Wartungsmodus versetzt, dessen Aktivierung automatisch gesteuert wird. Treten während einer solchen Generierung Fehler oder Warnings auf, wird der Wartungsmodus im Anschluss normalerweise nicht wieder verlassen. Auf diese Weise wird eine Übertragung von fehlerhaften Daten in den Live-Stand verhindert.



Die Parameter errorThreshold und disableMaintenanceWithErrors bieten die Möglichkeit, den Wartungsmodus auch beim Auftreten von Fehlern bzw. Warnings wieder zu beenden. Sie müssen immer zwingend gemeinsam verwendet werden, da sie nur in Kombination miteinander die gewünschte Funktionalität bereitstellen.



Der Parameter errorThreshold definiert den Schwellwert der zulässigen Anzahl von Fehlern und Warnings. Nur wenn der Schwellwert nicht überschritten wird, kann der Wartungsmodus beendet werden.



Dafür muss jedoch gleichzeitig der Parameter disableMaintenanceWithErrors den Wert true besitzen. Wurde ihm der Wert false zugewiesen, bleibt der Wartungsmodus im Fehlerfall immer aktiviert.
Eigenschaften des Skripts
Abbildung 11. Eigenschaften des Skripts


Der Wartungsmodus wird im Fehlerfall somit nur genau dann verlassen, wenn eine Vollgenerierung durchgeführt wurde, der Parameter disableMaintenanceWithErrors den Wert true besitzt und die Anzahl der aufgetretenen Fehler und Warnings den über den Parameter errorThreshold definierten Schwellwert nicht überschreitet.

5.2.5. Configure UXB Message Header

Die optionale Aktion Configure UXB Message Header stellt die Möglichkeit bereit, den von FirstSpirit an den UX-Bus versandten Nachrichten beliebige weitere Root-Attribute hinzuzufügen.

Für die Erzeugung der Root-Attribute muss dem Generierungsauftrag als erste Aktion ein Skript mit dem folgenden Inhalt hinzugefügt werden:

Configure UXB Message Header. 

import java.util.HashMap;

attributeMap = new HashMap();
attributeMap.put("customAttribute1", "customAttributeValue1");
attributeMap.put("customAttribute2", "customAttributeValue2");

context.setProperty("uxbMessageRootAttributes", attributeMap);

Das Skript erzeugt eine HashMap, in der die gewünschten Attribute in Form von Key/Value-Paaren definiert werden können. Diese werden sowohl in die Kommunikation zwischen dem FirstSpirit-Server und dem UX-Bus als auch in die vom FOS versandten Event-Nachrichten übernommen.

Es ist zu beachten, dass es sich hierbei um eine optionale Aktion handelt. Sie ist dem Generierungsauftrag nur dann hinzuzufügen, wenn zusätzliche Attribute definiert werden sollen. Dann muss sie jedoch die erste Aktion des Auftrags sein.

Informationen zur Definition von Root-Attributen finden Sie auch im UX-Bridge Entwicklerhandbuch.

5.3. Generierungsauftrag (FOS-Deltagenerierung)

Zur Erstellung der Nachrichten, die über den UX-Bus an den FOS weitergeleitet werden und diesen über die seit der letzten Generierung vorgenommenen Änderungen informieren, wird ein zweiter Auftrag benötigt. Dieser muss ergänzend zu den in den vorausgehenden Kapiteln beschriebenen Aktionen die folgenden zusätzlichen Aktionen enthalten (siehe auch Abbildung Aktionen des FOS Delta-Deployment-Auftrags):

Die Aktionen Activate HTML Generation, Generate HTML, DeltaEventCollector und DeltaEventGenerator werden nur dann benötigt, wenn das Portal-Plugin auch über potentielle Änderungen an Inhalten informiert werden soll. Ist dies der Fall müssen zwingend alle vier Aktionen dem Auftrag hinzugefügt werden. Andernfalls kann auf sie verzichtet werden.

Aktionen des FOS Delta-Deployment-Auftrags
Abbildung 12. Aktionen des FOS Delta-Deployment-Auftrags


Sollten zwischen der aktuellen und der letzten Ausführung der Deltagenerierung keine Änderungen am Projekt vorgenommen worden sein, so läuft der Auftrag durch, ohne jedoch Seiten zu generieren oder eine Nachricht an den FOS zu schicken (ausgenommen Statusnachrichten).

5.3.1. Activate HTML Generation

Nur wenn das Portal-Plugin auch über potentielle Änderungen an Inhalten informiert werden soll, muss dem Auftrag das folgende Skript als erste Aktion hinzugefügt werden. Andernfalls kann es ignoriert werden.

Activate HTML Generation. 

import de.espirit.firstspirit.access.schedule.DeploymentUtil;

deltaGeneration = DeploymentUtil.createDeltaGeneration(context);
deltaGeneration.levelRule(0, 0).levelRule(1,1).levelRule(2,2);
changeSet = deltaGeneration.calculateChangeSet();
changeSet.configureGenerateTask();

Das Skript ermittelt die vorgenommenen inhaltlichen Änderungen und aktiviert die im nächsten Schritt durchzuführende HTML-Generierung. Ohne diese Aktivierung kann die Generierung nicht erfolgreich durchgeführt werden. Sie ist daher (auf Basis der genannten Voraussetzung) zwingend notwendig.

Die im obigen Skript definierten Level-Rules müssen projektspezifisch angepasst werden, da das Delta-Deployment sonst potentiell sehr lange dauern kann.

5.3.2. Generate HTML

Die mit dieser Aktion auszuführende Generierung wird nur dann benötigt, wenn das Portal-Plugin auch über potentielle Änderungen an Inhalten informiert werden soll. Sie muss zunächst aktiviert werden und daher zwingend auf die vorhergehende Aktion Activate HTML Generation folgen.

Im Register Erweitert muss für alle Projektsprachen der HTML-Kanal ausgewählt werden (siehe Abbildung erweiterte Einstellungen der HTML-Generierung).

erweiterte Einstellungen der HTML-Generierung
Abbildung 13. erweiterte Einstellungen der HTML-Generierung


In den Eigenschaften der Generierung ist ein beliebiger Name anzugeben und die Option Generierungsverzeichnis vorher leeren auszuwählen (siehe Abbildung Eigenschaften der HTML-Generierung).

Eigenschaften der HTML-Generierung
Abbildung 14. Eigenschaften der HTML-Generierung


5.3.3. DeltaEventCollector

Die Aktion DeltaEventCollector muss auf die HTML-Generierung folgen, da sie die dabei generierten Inhalte erfasst. Dies geschieht über den folgenden Skriptaufruf:

DeltaEventCollector. 

#! executable-class
com.espirit.moddev.fos.util.FosDeltaEventCollector

Der EventCollector wird nur dann benötigt, wenn das Portal-Plugin auch über potentielle Änderungen an Inhalten informiert werden soll. Andernfalls kann auf diese Aktion verzichtet werden.

5.3.4. Calculate Changes

Die Aktion Calculate Changes ermittelt die seit der letzten Generierung durchgeführten Änderungen innerhalb des verwendeten FirstSpirit-Projekts. Des Weiteren konfiguriert sie die nachfolgende Generierungsaktion so, dass für eine Aktualisierung des FOS lediglich eine minimale Anzahl von Nachrichten an diesen versandt wird. Wurden keine Änderungen festgestellt, so wird der Auftrag an dieser Stelle abgebrochen.

Es ist daher zwingend notwendig, dass die Aktion nach der Initialisierung und vor der Generierung ausgeführt wird.

Die Ermittlung der vorgenommenen Änderungen sowie die Übermittlung der notwendigen Informationen an die Generierungsaktion erfolgt über die folgenden, in ein Skript einzufügenden Zeilen:

Calculate Changes. 

import com.espirit.moddev.fos.generation.*;

deltaGeneration = DeploymentUtil.createFosDeltaGeneration(context);
FosDeltaGeneration.ChangeSet changeSet = deltaGeneration.calculateChangeSet();
generateTaskConfigurator = GenerateTaskConfigurator.getInstance(context, changeSet);

generateTaskConfigurator.configureGenerateTask(true);

Der dem configureGenerateTask-Aufruf übergebene boolean-Wert steuert, ob nach Änderungen an Templates auch eine Generierung der auf ihnen basierenden Seiten ausgelöst werden soll. Ist dies nicht gewünscht, muss der Wert von true auf false geändert werden.

5.3.5. Remove Deleted Nodes

Die Aktion Remove Delete Nodes informiert den FirstSpirit Object Service über die in FirstSpirit gelöschten Elemente. Dies geschieht über folgenden Skriptaufruf:

Remove Deleted Nodes. 

import com.espirit.moddev.fos.generation.DeploymentUtil;

DeploymentUtil.removeDeletedNodes(context);

5.3.6. DeltaEventGenerator

Die Aktion DeltaEventGenerator wird nur dann benötigt, wenn das Portal-Plugin über potentielle Änderungen an Inhalten informiert werden soll. Andernfalls kann auf diese Aktion verzichtet werden.

Der EventGenerator verschickt die Nachrichten bezüglich der inhaltlichen Änderungen an den FOS. Dafür verwendet er die vom EventCollector ermittelten Informationen. Dies erfolgt über den folgenden Skriptaufruf:

Event Generator. 

#! executable-class

com.espirit.moddev.fos.util.FosDeltaEventGenerator

Die Erzeugung der Nachrichten durch den EventGenerator muss zwischen der FOS-Generierung und vor dem ResultHandler positioniert werden, damit die Informationen fehlerfrei durch den FOS verarbeitet werden können.

5.3.7. Finalize DeltaGeneration

Die Aktion Finalize DeltaGeneration schließt die Deltagenerierung ab:

Finalize DelteGeneration. 

#! executable-class

com.espirit.moddev.fos.util.FosDeltaFinalizer

6. FirstSpirit Object Service Admin Interface

Das FirstSpirit Object Service Admin Interface befindet sich innerhalb des FOS, welcher das Bindeglied zwischen FirstSpirit und dem verwendeten Portal-Server darstellt (siehe Abbildung Architektur). Das Admin Interface ist somit ein Segment dieses Bindeglieds.

Architektur
Abbildung 15. Architektur


Seine Position innerhalb dieser Architektur befähigt das FirstSpirit Object Service Admin Interface zur Ermittlung aller FirstSpirit-Projekte, die ein Portal anbinden. Für die Verwaltung dieser Projekte stellt es eine Web-Oberfläche bereit (siehe Abbildung Admin Interface), die über die folgende URL erreichbar ist:

http://<Servername>:<Port>/<Webapp-Name>/ui/admin

Die Web-Oberfläche gliedert sich in die folgenden Bereiche:

Diese Bereiche werden in den nachfolgenden Unterkapiteln im Detail erläutert.

Admin Interface
Abbildung 16. Admin Interface


Das FirstSpirit Object Service Admin Interface erfordert standardmäßig keine Authentifizierung und ist somit nicht gegen Fremdzugriffe gesichert. Aus diesem Grund wird der Schutz der Webanwendung über die Standardmechanismen des Servlet-Containers – beispielsweise HTTP Basic Authentication – empfohlen.

6.1. Einstellungen

Die beim ersten Aufruf des Admin Interfaces getätigten Angaben werden im Bereich Einstellungen dargestellt und lassen sich an dieser Stelle konfigurieren.

Dieser Bereich wird auch dann angezeigt, wenn der FOS_SETTINGS_FILE-Parameter definiert wurde, jedoch unter dem angegebenen Pfad keine Einstellungsdatei gefunden werden kann bzw. diese ungültig ist. In diesem Fall ist nur der Bereich Einstellungen des Admin Interfaces erreichbar, während die anderen Bereiche ausgeblendet sind.

Jede Änderung der Einstellungen erfordert einen Neustart des Application-Servers.

6.2. Projekte

Innerhalb des Bereichs Projekte wird eine Liste aller durch das FirstSpirit Object Service Admin Interface ermittelten Projekte bereitgestellt. Neben dem Namen eines Projekts werden zu jedem Eintrag der Liste ein Schieberegler und drei Buttons angezeigt (vgl. Abbildung Admin Interface - Projekte).

Admin Interface - Projekte
Abbildung 17. Admin Interface - Projekte


Der Name des Projekts dient als Identifier. Dieser Punkt ist insbesondere beim Einsatz mehrerer FirstSpirit-Server wichtig. Verwenden sie alle denselben FOS, muss auf eindeutige Projektnamen geachtet werden.

Wird ein Projekt in FirstSpirit umbenannt, führt dies zu einem neuen Projekt im FOS. Dies betrifft auch die Konfiguration des Projektes.

6.2.1. Maintenance Mode

Der Schieberegler Maintenance Mode dient zur manuellen Aktivierung bzw. Deaktivierung des Wartungsmodus eines Projekts und besitzt daher die Zustände ON und OFF. Standardmäßig ist der Wartungsmodus deaktiviert und der Regler befindet sich im Zustand OFF.

Maintenance Mode
Abbildung 18. Maintenance Mode


Befindet sich ein Projekt im Wartungsmodus, verschickt der FOS keine Event-Nachrichten und alle Anfragen des Portal-Plugins an die REST-Schnittstelle des FOS werden für dieses Projekt mit einer Retry later-Nachricht beantwortet. Es werden somit in dieser Zeit keine Daten dieses Projekts vom FOS an das Portal-Plugin ausgeliefert. Ein Zugriff auf die innerhalb der Persistenzschicht des FOS gespeicherten Projektdaten ist erst wieder nach der Deaktivierung des Wartungsmodus möglich.

Eine Änderung des Wartungsmodus kann auch automatisch durch eine Generierung erfolgen. Dabei muss zwischen einer Teil- und einer Voll-Generierung unterschieden werden.

Teil-Generierung
Eine Teil-Generierung ändert in der Regel nur wenige Daten, so dass der Zustand des Wartungsmodus‘ daher nicht verändert wird. Das Admin Interface arbeitet ohne Einschränkungen weiter, wenn der Wartungsmodus nicht manuell aktiviert wurde.
Voll-Generierung
Da eine Voll-Generierung potentiell mit einer Änderung vieler Projekt-Daten verbunden ist, würden diese Änderungen zahlreiche Event-Nachrichten erzeugen. Das Projekt wird daher vor der Durchführung der Voll-Generierung automatisch in den Wartungsmodus versetzt, wenn dieser nicht bereits manuell aktiviert wurde.

War der Wartungsmodus zuvor deaktiviert, wird er auch nach der Durchführung der Voll-Generierung automatisch wieder deaktiviert. Andernfalls bleibt er aktiviert.

Die manuelle Deaktivierung des automatisch durch FirstSpirit aktivierten Wartungsmodus‘ erzeugt eine Warnung mit einer Sicherheitsabfrage (siehe Abbildung Warning). Diese Sicherheitsabfrage bietet dem Administrator die Möglichkeit, den Wartungsmodus tatsächlich zu deaktivieren oder den Vorgang abzubrechen.

Warning
Abbildung 19. Warning


Die Deaktivierung des Wartungsmodus‘ führt nicht zu einem Abbruch der Generierung. Diese wird ohne Unterbrechung fortgeführt.

Mit der Deaktivierung des Wartungsmodus‘ nimmt der FOS den Versand der Event-Nachrichten für den restlichen Verlauf der Generierung wieder auf. Des Weiteren steht die REST-Schnittstelle erneut für Anfragen des Portal-Plugins zur Verfügung. Die an das Portal-Plugin übermittelten Informationen sind damit potentiell unvollständig oder auf einem Stand, der durch die laufende Generierung noch verändert wird. Es kann somit zu Inkonsistenzen kommen.

Weitere Informationen zum Wartungsmodus sind in der Dokumentation für Entwickler enthalten.

6.2.2. Settings

Ein Klick auf den Button Settings öffnet einen Dialog, in welchem projektspezifische Einstelllungen vorgenommen werden können.

MediaEvent mode

In den an das Portal-Plugin versandten Event-Nachrichten werden grundsätzlich alle Änderungen an FirstSpirit-Elementen erfasst. Eine Modifikation der vererbbaren Attribute eines Struktur-, Inhalte- oder Medien-Ordners hat jedoch nicht nur eine Auswirkung auf den Ordner selbst, sondern auch auf alle in ihm enthaltenen Elemente.

Für Struktur- und Inhalte-Ordner wird dieser Aspekt bereits über die generelle Struktur der Event-Nachrichten erfasst. Medien-Ordner stellen hingegen einen Sonderfall dar und erfordern daher eine besondere Behandlung. Diese wird über den Schieberegler MediaEvent mode definiert (siehe Abbildung aktivierter Inheritance mode).

aktivierter Inheritance mode
Abbildung 20. aktivierter Inheritance mode


SINGLE
Ist der MediaEvent-Modus SINGLE gesetzt, wird in der zugehörigen Event-Nachricht nur der Medien-Ordner inklusive der Informationen zu den vorgenommenen Modifikationen berücksichtigt. Die Zuordnung der geänderten Attribute zu den ihm untergeordneten Medien erfolgt durch das Portal-Plugin.
MULTI
Ist der MediaEvent-Modus MULTI aktiviert, werden in der zugehörigen Event-Nachricht nur die Events für alle in dem Ordner enthaltenen Elemente erfasst. Dies umfasst auch in dem Ordner enthaltene Unterordner. Der Ordner selbst findet keine Berücksichtigung. Aus diesem Grund erfolgt die Zuordnung der modifizierten Attribute zu den Medien bereits an dieser Stelle und nicht erst im Anschluss über eine Anfrage an die Rest-Schnittstelle des FOS.

Um einen Datenverlust zu vermeiden, ist standardmäßig der MediaEvent-Modus MULTI aktiviert.

Nähere Information zur Vererbung erhalten Sie in der Dokumentation für Entwickler.

6.2.3. Clear Cache

Ein Klick auf die Schaltfläche Clear Cache löscht alle für das Projekt vorhandenen Daten im FOS. Das Projekt und alle Einstellungen bleiben dabei erhalten.

6.2.4. Delete Cache

Ein Klick auf die Schaltfläche Delete Cache entfernt den entsprechenden Eintrag aus der Liste der Projekte. Des Weiteren werden innerhalb des FirstSpirit Object Service Admin Interfaces alle Daten des Projektes unwiderruflich gelöscht. Das Projekt lässt sich anschließend nur über eine Voll-Generierung erneut in die Persistenzschicht des FOS übertragen.

Die Schaltflächen Clear Cache und Delete Cache beziehen sich nur auf das FirstSpirit Object Service Admin Interface und betreffen nicht den das Projekt beinhaltenden FirstSpirit-Server. Auf dem FirstSpirit-Server bleibt das Projekt bestehen.

Eine einfache Wiederherstellung der über die Schaltfläche Clear Cache oder Delete Cache gelöschten Daten ist im FirstSpirit Object Service Admin Interface nicht möglich.

Es besteht lediglich die Möglichkeit, das Projekt über eine Voll-Generierung erneut in die Persistenzschicht des FOS zu übertragen und die Daten auf diesem Weg wieder zur Verfügung zu stellen.

Die Anwendung der Funktionalität macht genau dann Sinn, wenn das entsprechende Projekt zukünftig nicht mehr genutzt wird und es auch auf dem FirstSpirit-Server nicht weiter besteht. Einen solchen Fall stellen beispielsweise Test-Projekte dar.

6.3. API-Keys

Für jedes Projekt im Portal Service können API-Keys definiert werden, die lesenden und ggf. schreibenden (administrativen) Zugriff auf das Projekt über die REST-Schnittstelle ermöglichen. Der Zugriff auf die API eines Projektes ist nur mit einem API-Key möglich, für den entsprechende Rechte gesetzt sind. Das bedeutet, dass auf ein Projekt ohne API-Key nicht über die REST-Schnittstelle zugegriffen werden kann. Eine Ausnahme stellt allerdings die Admin-Oberfläche dar, die den im Kapitel Einstellungen beschriebenen Master-Key verwendet, der auf alle Projekte sämtliche Rechte besitzt. Dadurch wird gewährleistet, dass zumindest Administratoren immer Zugriff auf ein Projekt haben und ein kompletter Ausschluss aus einem Projekt nicht möglich ist.

Die Verwaltung der API-Keys wird im gleichnamigen Bereich der Admin-Oberfläche durchgeführt (vgl. Abbildung API-Keys).

API-Keys
Abbildung 21. API-Keys


An dieser Stelle befindet sich eine Übersicht über alle API-Keys und ihrer Rechte. Diese Liste ist in drei Spalten unterteilt: API-KEY, PROJECT und ADMIN RIGHTS.

API-KEY
Die Spalte API-KEY enthält den technischen Key (eine UUID), der verwendet wird, um Zugriff auf die API des Projektes zu erhalten. Darunter steht die fachliche Beschreibung des API-Keys. Links neben dem Key findet sich außerdem eine Schaltfläche, mit der der API-Key gelöscht wird.
PROJECT
Die Spalte PROJECT enthält für jeden API-Key eine Liste aller Projekte, für die er Rechte besitzt. Am Ende dieser Projektliste befindet sich eine Schaltfläche, über die der API-Key Rechte für ein weiteres Projekt erhalten kann. Links neben jedem Projekt befindet sich außerdem eine Schaltfläche, um dem API-Key alle Rechte für dieses Projekt zu entziehen.
ADMIN RIGHTS
Die Spalte ADMIN RIGHTS zeigt mittels eines Schiebereglers für jedes Projekt an, ob der API-Key administrative Rechte auf dem jeweiligen Projekt besitzt. Der Schieberegler dient gleichzeitig dem Setzen bzw. Entfernen dieses Rechtes.

Diese und weitere Funktionen werden in den folgenden Kapiteln detailliert beschrieben.

6.3.1. Filtern der angezeigten API-Keys

Bei einer hohen Anzahl von API-Keys und Projekten kann es vorkommen, dass nicht alle API-Keys bzw. Projekte von Interesse sind und die Übersicht unnötig vergrößern. Um die API-Keys-Übersicht zu filtern, befinden sich über der Liste deshalb zwei Eingabekomponenten: Filter Projects und Show empty API-Keys.

Wenn ein Projekt in Filter Projects ausgewählt ist, werden API-Keys mit Rechten auf diesem Projekt in der Übersicht angezeigt. Andernfalls werden die entsprechenden API-Keys ausgeblendet.

Standardmäßig sind alle Projekte in Filter Projects ausgewählt, so dass die Übersicht alle API-Keys enthält, die auf mindestens einem Projekt Rechte besitzen. Dies bedeutet gleichzeitig, dass API-Keys, die auf keinem Projekt Rechte besitzen, standardmäßig nicht angezeigt werden. Aus diesem Grund gibt es die Schaltfläche Show empty API-Keys, mit der ebendiese Keys ein- bzw. ausgeblendet werden können.

6.3.2. Anlegen eines neuen API-Keys

Zum Anlegen eines neuen API-Keys existiert ein spezieller Dialog (siehe Abbildung Dialog zum Anlegen eines neuen API-Keys). Dieser wird durch einen Klick auf die Schaltfläche + Add API-Key aufgerufen.

Dialog zum Anlegen eines neuen API-Keys
Abbildung 22. Dialog zum Anlegen eines neuen API-Keys


Im oberen Teil des Formulars muss im Feld Description eine Beschreibung für den neuen API-Key eingetragen werden, um ihm einen fachlicher Bezug zu geben.

Initiale Projektrechte für den neuen API-Key werden im unteren Teil des Formulars erteilt. Hier befindet sich eine tabellarische Übersicht aller Projekte im Portalservice. Wird ein Kontrollkästchen in der linken Spalte dieser Liste ausgewählt, erhält der API-Key lesende Rechte auf das entsprechende Projekt. Administrative Rechte erhält er, wenn zusätzlich der Schieberegler in der rechten Spalte auf ON gesetzt wird.

Durch einen Klick auf Save werden die Formulardaten gespeichert und ein neuer API-Key generiert. Ein Klick auf Cancel bewirkt hingegen, dass alle Eingaben verworfen werden.

Da ein neu angelegter API-Key automatisch in die Übersicht einsortiert wird, öffnet sich nach dem erfolgreichen Anlegen ein weiterer Dialog, der dem Nutzer den neuen Key mitteilt (siehe Abbildung Bestätigungsdialog nach dem Anlegen eines API-Keys).

Bestätigungsdialog nach dem Anlegen eines API-Keys
Abbildung 23. Bestätigungsdialog nach dem Anlegen eines API-Keys


6.3.3. Bearbeiten der Beschreibung eines API-Keys

Die Beschreibung eines API-Keys kann in der Übersicht editiert werden. Dazu reicht es aus, auf die Beschreibung zu klicken, um sie anschließend in der eingeblendeten Eingabekomponente zu bearbeiten (siehe Abbildung Editieren der Beschreibung eines API-Keys).

Editieren der Beschreibung eines API-Keys
Abbildung 24. Editieren der Beschreibung eines API-Keys


Nachdem die Beschreibung überarbeitet wurde, kann sie durch einen Klick auf den blau hinterlegten Button mit dem Häkchen übernommen werden. Da die Beschreibung ein Pflichtfeld ist, wird das Speichern verweigert, solange das Textfeld leer ist. Um die Änderungen zu verwerfen, genügt ein Klick auf die zweite Schaltfläche.

6.3.4. Bearbeiten der Projektrechte

Hinzufügen eines weiteren Projektes

Wenn ein API-Key für ein weiteres Projekt Rechte erhalten soll, kann in einem passenden Dialog ein Projekt ausgewählt werden (siehe Abbildung Hinzufügen eines weiteren Projektes). Dieser Dialog wird durch einen Klick auf die Schaltfläche + Add Project unter der Projektliste des entsprechenden API-Keys geöffnet.

Hinzufügen eines weiteren Projektes
Abbildung 25. Hinzufügen eines weiteren Projektes


Der Dialog enthält zwei Eingabekomponenten: Zunächst eine Auswahlliste, in der alle Projekte gelistet sind, für die der API-Key noch keine Rechte besitzt. Für das Projekt, das in dieser Liste ausgewählt wird, erhält der API-Key Rechte. Des Weiteren enthält der Dialog einen Schieberegler, mit dem administrative Rechte für das ausgewählte Projekt gesetzt werden können. Steht dieser Regler auf ON hat der API-Key administrative Rechte, andernfalls ausschließlich lesende.

Sobald ein Projekt in der Auswahlliste selektiert wurde, kann der Vorgang durch einen Klick auf Add fortgesetzt werden und die Rechte des API-Keys werden gemäß der Auswahl im Dialog ergänzt. Durch einen Klick auf Cancel wird der Dialog geschlossen und keine Änderungen am API-Key vorgenommen.

Administrative Rechte für ein Projekt setzen oder entfernen

Nachdem Rechte für ein Projekt zu einem API-Key hinzugefügt wurden, können nachträglich jederzeit administrative Rechte für dieses Projekt gesetzt oder entfernt werden. Dazu reicht es, in der Übersicht aller API-Keys den Schieberegler in der Spalte ADMIN RIGHTS des betroffenen Projektes umzuschalten. Steht der Regler auf ON, sind die administrativen Rechte gesetzt, andernfalls nicht.

Alle Rechte für ein Projekt entfernen

In der Projektliste jedes API-Keys befindet sich links neben jedem Projekt ein Button, der mit einem X beschriftet ist. Ein Klick auf diesen Button entzieht dem jeweiligen API-Key alle Rechte für das Projekt. Dies muss allerdings erst in einem Dialog bestätigt werden, der sich nach dem Klick automatisch öffnet (siehe Abbildung Entzug aller Rechte für ein Projekt).

Entzug aller Rechte für ein Projekt
Abbildung 26. Entzug aller Rechte für ein Projekt


Nach einem Klick auf OK werden dem API-Key die Rechte entzogen. Um sie wiederherzustellen, müssen sie manuell neu gesetzt werden. Ein Klick auf Cancel schließt den Dialog und der API-Key behält seine Rechte.

6.3.5. Löschen eines API-Keys

Ein API-Key kann unwiderruflich durch Betätigen der Schaltfläche mit dem grauen X links neben einem API-Key gelöscht werden. Zuvor öffnet sich allerdings ein Dialog, in dem der Benutzer aufgefordert wird, das Löschen des API-Keys zu bestätigen (siehe Abbildung Löschung eines API-Keys).

Löschung eines API-Keys
Abbildung 27. Löschung eines API-Keys


Das Löschen wird durch Klicken auf die Schaltfläche OK bestätigt. Anschließend ist der API-Key dauerhaft verloren und aus der Übersicht entfernt. Durch einen Klick auf Cancel wird der Vorgang stattdessen abgebrochen und der API-Key nicht gelöscht.

7. Bisherige Portal-Integration

Die in diesem Dokument vorgestellte Portal-Integration ist eine Weiterentwicklung der bestehenden "alten" Portal-Integration.

Mit der alten Portalintegration ist es bereits möglich, FirstSpirit-Inhalte in ein Portal zu übertragen. Da diese Lösung jedoch technisch veraltet ist und somit nicht mehr den aktuellen Ansprüchen entspricht, wurde eine neue Portalschnittstelle für FirstSpirit entwickelt, die deutliche Vorteile gegenüber der bisherigen Version bietet.

Ein wesentliches Merkmal der neuen Portalschnittstelle ist die Verwendung des FOS sowie der UX-Bridge, über deren zugehörigen UX-Bus die Kommunikation zwischen den einzelnen Komponenten erfolgt.

Deployment im Portalkontext
Abbildung 28. Deployment im Portalkontext


Die neue Architektur verfolgt die Zielsetzung, von den im Portalumfeld früher üblichen Komplett-Veröffentlichungen zu einem inkrementellen Ansatz zu wechseln, um so Änderungen innerhalb des FirstSpirit-Projekts schneller in das Live-System des Portals übertragen zu können.

Die UX-Bridge ermöglicht die für diesen Ansatz erforderliche dynamische Content-Auslieferung. Je nach Implementierung des Portal-Plugins können Änderungen durch die Übermittlung einzelner Seiten übertragen werden. Die Veröffentlichung von zum Teil sehr umfangreichen Teilbäumen ist rein technisch gesehen nicht mehr notwendig.

8. Glossar

Event-Nachricht

Informationen, die der FOS über den UX-Bus an das Portal-Plugin sendet

Nachricht

Informationen, die das FOS-Modul über den UX-Bus an den FOS sendet

Portal-Plugin

spezifische Komponente, die den Import der Inhalte in das Portal übernimmt

FirstSpirit Object Service (FOS)

Schnittstelle zwischen dem UX-Bus und dem Portal-Plugin

UX-Bridge

Schnittstelle zwischen FirstSpirit und dem UX-Bus

UX-Bus

zentrale Infrastrukturkomponente zur Verteilung von Inhalten

9. Rechtliche Hinweise

Das Modul FirstSpirit Object Service ist ein Produkt der e-Spirit AG, Dortmund, Germany.

Für die Verwendung des Modules gilt gegenüber dem Anwender nur die mit der e-Spirit AG vereinbarte Lizenz.

Details zu möglicherweise fremden, nicht von der e-Spirit AG hergestellten, eingesetzten Software-Produkten, deren eigenen Lizenzen und gegebenenfalls Aktualisierungs-Informationen, finden Sie in der Datei THIRD-PARTY.txt, die mit dem Modul ausgeliefert wird.