Individualisierung der FirstSpirit Webanwendungen
Inhaltsverzeichnis |
FirstSpirit baut auf dem Konzept der modularen Erweiterbarkeit durch Kunden und Partner auf. Das bedeutet, die FirstSpirit Standardfunktionen können relativ einfach über individuelle Projektspezifische Erweiterungen (wie Eingabekomponenten, Dienste, Anwendungen) an die konkreten Erfordernisse der jeweiligen Projekte angepasst werden.
Für diese individuellen Erweiterungen können sowohl
- die globalen Webanwendungen von FirstSpirit (fs5root, fs5preview, fs5webedit,…) angepasst als auch
- projektlokale, konfigurierbare Instanzen der FirstSpirit Webanwendungen erstellt
werden.
Eine Anpassung der globalen Webanwendungen ist dabei in der Regel deutlich performanter als die Verwendung von projektlokalen Instanzen, insbesondere in einem Unternehmensumfeld mit vielen Projekten.
Zu weiteren Informationen siehe auch
- globale Web-Applikationen: Web-Applikationen
- projekt-lokale Web-Applikationen: Web-Komponenten.
Beispiel ContentCreator
Der ContentCreator soll um einen individuellen Report (und / oder eine EasyEdit-Action, JSP-Tag-Lib, Executable, usw.) erweitert werden. Die dazu erforderlichen Klassen werden in einer Webapp-Komponente in einem Modul hinterlegt, und das Modul wird auf dem FirstSpirit-Server installiert.
- ContentCreator als globale, individualisierte Web-Anwendung: Die neue Funktionalität (Report, JSP-Tags,…) kann serverweit (global) zur Verfügung gestellt werden. Dazu wird über den ServerManager im Bereich Server-Eigenschaften / Web-Applikationen einfach die gewünschte Webapp-Komponente hinzugefügt und deployed.
Die hier hinzugefügten WebApp-Komponenten stehen dann allen Projekten auf dem Server zur Verfügung (für die keine projektlokale ContentCreator-Instanz konfiguriert wurde). Wurde über die Webapp-Komponente beispielsweise eine JSP-Tag-Lib bereitgestellt, können die entsprechenden Tags anschließend in allen Projekten verwendet werden. Das Anlegen projektlokaler Instanzen ist dann nicht notwendig. Statt n Instanzen muss nur noch eine Instanz auf der Front-End-Seite abgelegt werden. - ContentCreator als projektlokale Instanz: Für jedes Projekt, das die neue Funktionalität (Report, JSP-Tags,…) verwenden soll, muss eine projektlokale ContentCreator-Instanz erstellt und die Anwendung mit der Webapp-Komponente (aus dem Modul) konfiguriert werden (Hinzufügen, Konfigurieren, Deployen).
Vom reinen Arbeitsaufwand abgesehen bedeutet eine ContentCreator-Instanz für n Projekte auch, dass n Instanzen der Anwendung auf der Front-End-Seite abgelegt werden, und damit potenziell viel Speicher auf dem Front-End-Server belegt wird.
Die globalen Web-Anwendungen (z. B. ContentCreator, Preview) sowie ggf. vorhandene, entsprechende projektlokale Web-Anwendungen sind jeweils eigenständig. Das bedeutet, Komponenten, die der globalen ContentCreator-Instanz hinzugefügt werden, stehen nicht automatisch in Projekten mit projektlokaler ContentCreator-Instanz zur Verfügung. Sollen Komponenten in einem projektlokalen ContentCreator verfügbar sein, müssen sie diesem gesondert hinzugefügt werden. Auch Aktualisierungen müssen sowohl für die globale als auch für eventuelle projektlokale ContentCreator-Instanzen gesondert vorgenommen werden. |
Da jede Web-Anwendung Rechenzeit, Speicher und Speicherplatz benötigt, wird für produktive Umgebungen empfohlen, auf den Einsatz von projektlokalen Web-Anwendungen nach Möglichkeit zu verzichten. |
Weitere Voraussetzungen
Gültigkeitsbereich
Über das Attribut scopes innerhalb von Moduldeklarationen stehen für Web-Applikationen (Komponententyp web-app) die Werte global und project zur Verfügung, also z. B.:
<web-app scopes="global">
<web-app scopes="project">
<web-app scopes="global, project">
Siehe dazu auch Moduldefinition (→Online Dokumentation FirstSpirit).
Komponenten können den globalen und/oder lokalen Web-Applikationen nur hinzugefügt werden, wenn der Gültigkeitsbereich entsprechend definiert ist.
Für Entwickler unterscheiden sich WebApp-Komponenten abhängig von ihrem Scope hinsichtlich der Informationen, die über den SpecialistsBroker verfügbar sind. Projektlokale Web-Applikationen haben ein WebEnvironment, welches von ProjectEnvironment erbt und über die Methode #getBroker eine projektgebundene Instanz vom Typ SpecialistsBroker zurückliefern.
Für globale Web-Applikationen liefert das WebEnvironment beim Aufruf von #getBroker eine Instanz vom Typ SpecialistsBroker, welche nicht projektgebunden ist und damit beim Aufruf von #getProject den Wert „null“ zurückliefert.
<module>
...
<components>
...
<web-app scopes="global">
...
</web-app>
</components>
</module>
Siehe dazu auch FirstSpirit Access-API, Packages
Konfiguration
Für die Konfiguration einer globalen Webanwendung kann eine Konfiguration zunächst nur global erfolgen. Es ist aber möglich, auch für globale WebApp-Komponenten eine zusätzliche, projektlokale Konfiguration zu realisieren, z. B. über eine zusätzliche Projektanwendung, die ebenfalls Bestandteil des Moduls ist.
<module>
...
<components>
...
<web-app scopes="global">
...
<configurable> MyGlobalAppConfigPanel </configurable>
</web-app>
<project-app>
...
<configurable> MyProjectAppConfigPanel </configurable>
</project-app>
...
</components>
</module>