Technische Dokumentation - Joinup
Transcription
Technische Dokumentation - Joinup
Technische Dokumentation xdomea-Viewer Version Version 1.1 , 22.12.2009 Sächsischen Staatsministerium der Justiz und für Europa Hospitalstraße 7 01097 Dresden 4. Januar 2010 Seite 2/27 xdomea-Viewer Dokumentenhistorie Version Datum Autor Kommentar 0.9 27.11.2009 Dominique Lopes Initiale Erstellung 1.0 03.12.2009 Dominique Lopes Überarbeitung nach Anmerkungen vom Auftraggeber 1.1 22.12.2009 Dominique Lopes Abschnitt „3.2 Einrichtung der Entwicklungsumgebung“ überarbeitet, neue Abschnitte „1 Vorwort“ und „3.5 Zusammenstellen der Gesamtanwendung“ hinzugefügt 4. Januar 2010 Seite 3/27 xdomea-Viewer Inhaltsverzeichnis 1 Vorwort 5 2 Funktionsbeschreibung 6 2.1 Anwendungsfälle 6 2.2 Prozesse 8 3 technische Umsetzung 10 3.1 Voraussetzungen zum Entwickeln 10 3.2 3.2.1 3.2.2 Einrichtung der Entwicklungsumgebung Einrichtung der Eclipse-Projekte mit Maven Einrichtung der Target-Plattform 11 11 11 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 Weiterentwicklung des Viewer-Frameworks technische Basis Modularisierung Beschreibung des Projekts: xdomea-Viewer-core Beschreibung des Projekts: xdomea-Viewer-gui Erweiterungsmöglichkeiten 12 12 12 13 19 20 3.4 3.4.1 3.4.2 Weiterentwicklung der XSL-Templates CSS-Konventionen Einsatz von JavaScript 21 22 23 3.5 3.5.1 3.5.2 3.5.3 3.5.4 Zusammenstellen der Gesamtanwendung Änderungen am dem XML-Schema der Konfigurationsdatei Änderungen am Quellcode des Projekts xdomea-Viewer-core Änderungen an den XSL-Templates Änderungen an der Oberfläche (Eclipse-RCP) 25 25 25 26 26 4 Lizensierung 27 xdomea-Viewer 4. Januar 2010 Seite 4/27 Abbildungsverzeichnis Abbildung 1: Anwendungsfalldiagramm für den xdomea-Viewer ................................ 6 Abbildung 2: Aktivitätsdiagramm des xdomea-Viewers ............................................... 8 Abbildung 3: Aufteilung des xdomea-Viewers in Module........................................... 10 Abbildung 4: Klassendiagramm Paket de.xoev.xdomea.viewer.configuration .......... 14 Abbildung 5: Schema der Konfigurationsdatei........................................................... 16 Abbildung 6: Klassendiagramm Paket de.xoev.xdomea.viewer.modules ................. 17 Abbildung 7: Klassendiagramm Paket de.xoev.xdomea.viewer.modules.validation . 18 Abbildung 8: logische Aufteilung der HTML-Darstellung einer xdomea-Nachricht.... 21 Abbildung 9: barrierefreie Darstellung einer xdomea-Nachricht ................................ 23 xdomea-Viewer 4. Januar 2010 Seite 5/27 1 Vorwort Dieses Dokument beschreibt die Funktionsweise, technische Umsetzung und Lizensierung des xdomea-Viewers. Es richtet sich an Programmierer, die den xdomea-Viewer anpassen oder zu dessen weiteren Entwicklung beitragen möchten. Um mit diesem Dokument arbeiten zu können werden Kenntnisse in der XSLT- und Java-Entwicklung, mit der Eclipse RCP Plattform und Maven 2 vorausgesetzt. Die Beschreibungen zur technischen Umsetzung und insbesondere zur Einrichtung der Entwicklungsumgebung und des Exports der Anwendung gehen daher nur bedingt auf die Verwendung dieser SoftwareKomponenten und damit in Zusammenhang stehenden Quellcode-Bestandteilen ein. Sofern neue oder vorhandene XSL-Templates (weiter)entwickelt werden, sind ebenfalls Kenntnisse der jeweiligen xdomea-Spezifikation notwendig. 4. Januar 2010 Seite 6/27 xdomea-Viewer 2 Funktionsbeschreibung Der xdomea-Viewer ist eine Anwendung zur Visualisierung der Inhalte einer xdomeaNachricht. Dazu müssen i. W. drei Funktionen nacheinander ausgeführt werden: • • • 2.1 die Validierung der anzuzeigenden xdomea-Nachricht die Transformation der XML-Nachricht in eine darstellbare Form die Visualisierung der xdomea-Inhalte in einem nutzerfreundlichen Format Anwendungsfälle Die folgende Abbildung zeigt das Anwendungsfall-Diagramm des xdomea-Viewers: Abbildung 1: Anwendungsfalldiagramm für den xdomea-Viewer Die Kernfunktionalität des xdomea-Viewers ist die benutzerfreundliche Darstellung einer xdomea-Nachricht. Dies wird in Abbildung 1 durch den Anwendungsfall „xdomea-Nachricht visualisieren“ dargestellt. Der Anwendungsfall gliedert sich in drei untergeordnete Anwendungsfälle: Zunächst muss die aus einer ZIP-Datei bestehende xdomea-Nachricht extrahiert und in ein vorkonfiguriertes Arbeitsverzeichnis kopiert werden (Anwendungsfall: „xdomeaNachricht extrahieren“). Anschließend werden die kopierten Daten unter mehreren Gesichtspunkten überprüft. xdomea-Viewer 4. Januar 2010 Seite 7/27 Zunächst erfolgt eine formale Prüfung der vorliegenden xdomea-ZIP-Datei. Dazu wird die Ordnerstruktur innerhalb der xdomea-ZIP-Datei überprüft. Weiterhin wird der Dateiname gegen einen regulären Ausdruck geprüft um sicherzustellen, dass eine xdomea-konforme Datei vorliegt. Ein zweiter Validierungsschritt prüft, ob die XML-Datei mit den Metadaten für xdomea wohlgeformt ist. Ist dies der Fall, dann wird die XML-Datei gegenüber der konfigurierten xdomea-Spezifikation/Schema auf Validität geprüft. Abschließend erfolgt die Prüfung auf Vollständigkeit, in dem die Existenz der in der XML-Datei referenzierten Dokumente überprüft wird. Danach wird die xdomea-Nachricht mittels XSLT in HTML transformiert und innerhalb eines Browserfensters eingebettet in die Anwendung angezeigt (Anwendungsfall: „xdomea-Nachricht transformieren“). 4. Januar 2010 Seite 8/27 xdomea-Viewer 2.2 Prozesse Mit dem xdomea-Viewer sind die folgenden Aktivitäten ausführbar: • • Arbeitsverzeichnis auswählen xdomea-Nachricht auswählen und visualisieren Die Aktivitäten und ihre Einbettung in den gesamten Ablauf der Anwendung werden im folgenden Diagramm dargestellt: Abbildung 2: Aktivitätsdiagramm des xdomea-Viewers xdomea-Viewer Die xdomea-Nachrichten werden in einem konfigurierbaren Arbeitsverzeichnis extrahiert und weiterverarbeitet. Daher muss der Benutzer nach dem Start der Anwendung in einem entsprechenden Dialog ein Arbeitsverzeichnis festlegen. 4. Januar 2010 Seite 9/27 4. Januar 2010 Seite 10/27 xdomea-Viewer 3 technische Umsetzung Bezüglich der Implementierung wird zwischen dem Viewer-Framework und des xdomea-Viewer unterschieden. Das Viewer-Framework enthält alle generischen Komponenten zur Ausführung der o. g. Funktionalitäten. Der xdomea-Viewer baut auf dem Viewer-Framework auf. Er enthält zusätzlich xdomea-spezifische Dateien und Konfigurationen zur Umwandlung der XML-Nachrichten. Abbildung 3: Aufteilung des xdomea-Viewers in Module 3.1 Voraussetzungen zum Entwickeln Die Entwicklung des xdomea-Viewers erfolgte mit frei verfügbaren Tools. Für die Weiterentwicklung werden daher genau diese Tools benötigt: • • • Java Development Kit 5 (http://java.sun.com/products/archive/) Maven 2 (http://maven.apache.org/download.html) Eclipse 3.5.1 für RCP/Plug-in Entwickler (http://www.eclipse.org/downloads/) Zusätzlich werden für den Export der Quellcodes in eine lauffähige StandaloneAnwendung folgende Komponenten benötigt: • • • eine zweite Installation der Eclipse 3.5.1 für RCP/Plug-in Entwickler das Delta Pack für Eclipse 3.5.1 das deutsche Babel Language Pack für Eclipse 3.5 (hier genügt BabelLanguagePack-eclipse-de_[Versionsnummer].zip) Bitte achten Sie beim Herunterladen der Komponenten auf zueinander passende Versionsnummern. 4. Januar 2010 Seite 11/27 xdomea-Viewer Alle Komponenten sind unter http://download.eclipse.org/eclipse/downloads/ erhältlich. 3.2 Einrichtung der Entwicklungsumgebung Auf dem Entwicklungs-PC muss das JDK und Maven 2 in mindestens den o. g. Versionen installiert sein. Weiterhin muss die Eclipse-IDE in einen beliebigen Ordner extrahiert worden sein. Es bietet sich an das M2Eclipse-Plugin zur Installation der Eclipse-IDE hinzuzufügen. Nutzen Sie hierzu die Eclipse Update-Site http://m2eclipse.sonatype.org/update/ 3.2.1 Einrichtung der Eclipse-Projekte mit Maven Leider stand zum Zeitpunkt der Implementierung noch kein Maven-Artefakt von Saxon-HE 9.2.0.3 in einem öffentlichen Maven Repository zur Verfügung. Laden Sie daher Saxon-HE 9.2.0.3 unter http://saxon.sourceforge.net/ herunter und installieren Sie es in Ihrem Maven Proxy. Sollten Sie über keinen Maven Proxy verfügen, so können Sie auch versuchen Saxon-HE 9.2.0.3 direkt in ihrem lokalen Maven Repository zur Verfügung zu stellen. Nutzen Sie bitte hierzu die bereitgestellten Dateien und kopieren Sie sie nach {M2_HOME}/net/sf/saxon/saxon/9.2.0.3. Wechseln Sie in der Konsole in das Verzeichnis des Eclipse-Projekts xdomeaViewer-core. Gehen Sie in das Verzeichnis /conf und führen Sie mvn install aus. Wechseln Sie nun wieder in das übergeordnete Projektverzeichnis und führen Sie ebenfalls mvn install aus. Achtung: die o. g. Reihenfolge muss eingehalten werden! Fügen Sie die beiden o. g. Eclipse-Projekte nun zu Ihrem Eclipse Workspace hinzu. Nutzen Sie hierzu jeweils den Import-Assistenten „Existing Projects into Workspace“ der Eclipse-IDE und folgend Sie den Anweisungen auf dem Bildschirm. 3.2.2 Einrichtung der Target-Plattform Die zusätzlichen Komponenten (zweite Installation der Eclipse RCP Runtime, das Deltapack und das Language Pack) müssen in einem gesonderten Ordner extrahiert werden. Aus Gründen der Übersichtlichkeit sollten die Komponenten in einzelne Ordner extrahiert werden. Sie können aber auch die einzelnen Komponenten übereinander kopieren. Im weiteren Verlauf dieses Abschnitts wird dieser Ordner mit {EXPORT_ADDONS} referenziert. Für den Export der Quellcodes in eine Anwendung wird eine sogenannte TargetPlattform benötigt. Die Target-Plattform wird genutzt um die Abhängigkeiten der Anwendung zu benötigten Eclipse-Plugins aufzulösen und diese beim Export 4. Januar 2010 Seite 12/27 xdomea-Viewer zusammenzustellen. Nach der Installation der Eclipse-IDE ist die Target-Plattform standardmäßig auf das Installationsverzeichnis gesetzt. D. h. für den Export der Anwendung wird die Entwicklungsumgebung selbst als Target-Plattform genutzt. Da der xdomea-Viewer auf mehreren Betriebssystemen Lauffähigkeit und in deutscher Sprache verfügbar sein soll, reichen die in der standardmäßig gesetzten TargetPlattform installierten Eclipse-Plug-ins nicht aus. Daher müssen die im Ordner {EXPORT_ADDONS} bereitgestellten Komponenten genutzt werden: Öffnen Sie Ihre Installation der Eclipse-IDE und navigieren Sie über das Menü zu [Window] [Preferences] [Plug-in Development] [Target Plattform]. Klicken Sie hier auf den Button [Add] um einen neue Zielplattform hinzuzufügen. Lassen Sie die Standard-Einstellungen bestehen und klicken Sie auf [Next >]. Geben Sie einen sprechenden Namen (bspw. „Eclipse RCP 3.5.1 + Delta Pack + Language Pack“) ein und fügen Sie die zuvor extrahierten Komponenten unterhalb von {EXPORT_ADDONS} hinzu, in dem Sie ggf. mehrmals im Kartenreiter „Locations“ auf [Add] klicken. Stellen Sie ggf. unter dem Kartenreiter „Environment“ die zu verwendende JRE auf das zuvor installierte JDK 5.0. Dies ist nur nötig wenn das JDK 5.0 die einzige JVM auf ihrem Rechner ist. Klicken Sie auf [Finish]. Nun müssen Sie ihre neu angelegte Target-Plattform aktivieren. Dies erreichen Sie, in dem Sie den Haken in der dazugehörige Checkbox setzen. Klicken Sie abschließend auf [OK]. Ihre Entwicklungsumgebung ist damit vollständig eingerichtet. In den folgenden Abschnitten werden die beiden importieren Eclipse-Projekte eingehend beschrieben. Anweisungen zum Export der Anwendung erhalten Sie in Abschnitt „3.5 Zusammenstellen der Gesamtanwendung“. 3.3 3.3.1 Weiterentwicklung des Viewer-Frameworks technische Basis Das Viewer-Framework wurde auf Basis von JAVA 5.0 implementiert. Die Oberflächengestaltung setzt auf der Eclipse RCP auf. Zum Extrahieren der relevanten Daten aus den xdomea-Nachrichten wird die Bibliothek Commons Compress eingesetzt. Zur Validierung und Transformierung der in den xdomeaNachrichten enthaltenen XML-Dateien wird Saxon-HE eingesetzt. Log-Ausgaben werden durch die Nutzung von Log4j realisiert. 3.3.2 Modularisierung Die Gesamtheit der Quellcodes ist in zwei Eclipse-Projekte aufgeteilt: zum einen in das Projekt xdomea-Viewer-core, das die Kernfunktionalitäten (Extrahieren, Validieren, Transformieren) enthält. Zum anderem in das Projekt xdomea-Viewer-gui, das die Quellcodes für die Darstellung als RCP-Anwendung enthält. Auf diese Weise können XSL-Entwickler 4. Januar 2010 Seite 13/27 xdomea-Viewer 3.3.3 Beschreibung des Projekts: xdomea-Viewer-core Das Viewer-Framework besteht in Anlehnung an die wesentlichen Funktionalitäten aus folgenden Modulen: • • • • • Extrahierungsmodul: extrahiert die ZIP-Datei einer xdomea-Nachricht mit Hilfe von Commons Compress in das Arbeitsverzeichnis Validierungsmodul: prüft die xdomea-Nachricht auf Vollständigkeit und formale Richtigkeit Transformationsmodul: transformiert mit Hilfe von Saxon die XML-Datei einer xdomea-Nachricht Kopiermodul: kopiert ggf. benötigte Ressourcen an einen beliebigen Speicherort Visualisierungsmodul: fügt die zuvor genannten Module zur Visualisierungsfunktionalität zusammen Weiterhin existiert ein Konfigurationsservice, über den die Modulen die nötigen Informationen abfragen können. Implementierung Die Implementierung der Anwendung erfolgt im Namensraum de.xoev.xdomea.viewer. Im Folgenden werden die wichtigsten Ausschnitte der Implementierung dargestellt. Tiefergehende Informationen erhalten Sie aus der JavaDoc und dem kommentierten Quellcode. xdomea-Viewer 4. Januar 2010 Seite 14/27 Konfigurationsservice Das Paket de.xoev.xdomea.viewer.configuration enthält alle Klassen zur Verarbeitung der Funktionalität der Anwendung. Die folgende Abbildung zeigt das Klassendiagramm dieses Pakets. Abbildung 4: Klassendiagramm Paket de.xoev.xdomea.viewer.configuration Die Anwendung ist darauf ausgelegt mehrere Konfigurationen (eine für jede xdomeaVersion) zu unterstützen. Die Konfiguration wird nach dem Start der Anwendung von der Utility-Klasse ConfigurationParser ausgelesen und in mehreren Instanzen der Klassen Configuration und CopyInformationen im Hauptspeicher bereitgestellt. Über die Singleton-Klasse ConfigurationService haben andere Programmteile die Möglichkeit auf die Konfiguration zuzugreifen. Weiterhin ist es möglich geänderte Konfigurationseinstellungen zu speichern. Das Auslesen und Speichern einer Konfigurationsdatei ist mit XMLBeans umgesetzt. 4. Januar 2010 Seite 15/27 xdomea-Viewer Konfigurationsmöglichkeiten Um das Viewer-Framework möglichst Flexibel zu halten, sind folgende Parameter konfigurierbar: • • • • unterstützte xdomea-Versionen die für die Validierung zu verwendenden XML-Schemata zu jeder Version die für die Transformierung zu verwendenden XSL-Templates für verschiedene Validierungsvarianten zu jeder Version die für die Visualisierung benötigten Ressourcen zu jeder Version Zur Speicherung der Konfiguration wird eine XML-Datei verwendet, die einem zuvor entwickelten Schema folgt. Im Folgenden ist ein Beispiel der Konfigurationsdatei zu sehen: <?xml version="1.0" encoding="UTF-8"?> <xdomeaViewer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="configuration.xsd"> <configuration> <xdomeaVersion versionsNr="V2.1.0"> <schemas>./xsd</schemas> <visualisation> <variant id="htmlVariante" name="HTML"> <template>./xslt/main.xsl</template> <copyIntructions> <basepath>./xslt</basepath> <includes>[img|css|js]/*</includes> <excludes>Kopie*</excludes> </copyIntructions> </variant> </visualisation> </xdomeaVersion> <xdomeaVersion versionsNr="V2.0.1"> ... </xdomeaVersion> </configuration> </xdomeaViewer> Die folgende Abbildung zeigt das zur XML-Datei passende Schema: xdomea-Viewer Abbildung 5: Schema der Konfigurationsdatei 4. Januar 2010 Seite 16/27 xdomea-Viewer 4. Januar 2010 Seite 17/27 Visualisierung Die Kernfunktionalität der Anwendung wurde in mehrere in sich geschlossene Module aufgeteilt. Diese Module sind unterhalb des Pakets de.xoev.xdomea.viewer.modules angesiedelt. Das ValidationModule ist hierbei eine Ausnahme (siehe folgende Abschnitt). Die folgende Abbildung zeigt das Klassendiagramm des Pakets. Abbildung 6: Klassendiagramm Paket de.xoev.xdomea.viewer.modules xdomea-Viewer 4. Januar 2010 Seite 18/27 Alle Module implementieren die Schnittstelle Module. Dieses erzwingt das Vorhandensein der Methoden setInput und process. Mit setInput wird die zu verarbeitende Ressource gesetzt, während process die Modul-spezifische Verarbeitung vornimmt. Zur Vereinfachung ist in der abstrakten Klasse AbstractModule die Methode setInput bereits implementiert. Alle konkreten Ausprägungen der Schnittstelle Module beerben die Klasse AbstractModule und müssen daher lediglich die Methode process implementieren. Validierung Da die Validierung einer xdomea-Nachricht verhältnismäßig komplex ist, wurden die dafür nötigen Klassen in einem gesonderten Paket unterhalb von de.xoev.xdomea.viewer.modules zusammengefasst. Die folgende Abbildung zeigt das Paket de.xoev.xdomea.viewer.modules.validation. Abbildung 7: Klassendiagramm Paket de.xoev.xdomea.viewer.modules.validation 4. Januar 2010 Seite 19/27 xdomea-Viewer Die Validierungsfunktionalität der Anwendung wurde in mehrere Validator-Klassen aufgeteilt. Diese Klassen implementieren die Schnittstelle Validator. Dieser erzwingt das Vorhandensein der Methode validate. Ein Teil der Validator-Klassen überprüfen das Verzeichnis in das die xdomea-Nachricht extrahiert wurde. Diese Klassen (FilenamesValidator und DirectoryStructureValidator) beerben die abstrakte Klasse DirectoryValidator, die die get- und set-Methoden zum Setzen des zu überprüfenden Verzeichnisses implementiert. Die die übrigen Validator-Klassen implementieren die Schnittstelle Validator direkt. Das ValidationModule fügt die einzelnen ValidatorKlassen zur gesamten Validierungsfunktionalität der Anwendung zusammen. 3.3.4 Beschreibung des Projekts: xdomea-Viewer-gui Die Anwendungsoberfläche ist mit Eclipse RCP umgesetzt und baut auf dem Konzept zur Verwendung von Perspektiven, Ansichten und Editoren auf. Eine Beschreibung dieses Konzepts würde den Rahmen dieser technischen Konzeption sprengen. Daher sei an dieser Stelle auf die im Internet zu findende umfangreiche Dokumentation der 1 Eclipse RCP verwiesen. Im Folgenden werden lediglich die an der RCP-Oberfläche durchgeführten Anpassungen beschrieben. Detaillierte Informationen erhalten Sie in der JavaDoc und im kommentierten Quellcode der Anwendung. Import-Assistent Der Nutzer wird beim Visualisieren einer xdomea-Nachricht durch einen ImportAssistenten unterstützt. Der Quellcode für den Import-Assistenten befindet sich im Paket de.xoev.xdomea.viewer.gui.wizards. Innerhalb dieses Pakets existieren die beiden Klassen ImportMessageWizard und ImportMessageWizardPage. Die Klasse ImportMessageWizard enthält die Funktionalitäten zum Durchführen der nötigen Verarbeitung zum visualisieren der xdomea-Nachricht. Die Klasse ImportMessageWizardPage erzeugt die Eingabe-Elemente im zweiten Schritt des Import-Assistenten. 1 http://wiki.eclipse.org/Rich_Client_Platform (Eclipse Wiki) und http://www.vogella.de/articles/RichClientPlatform/article.html (Tutorial) 4. Januar 2010 Seite 20/27 xdomea-Viewer Arbeitsbereich-Wechseln Dialog Die RCP-Anwendung kommt nicht ohne einen Arbeitsbereich aus, in dem die Daten der Anwendung gespeichert werden können. Im Paket de.xoev.xdomea.viewer.gui.dialogs befindet sich hierzu die Klasse PickWorkspaceDialog. Diese Klasse erzeugt alle Eingabe-Elemente des Dialogs zum Wechseln oder Bestimmen des Arbeitsbereichs. Weiterhin übernimmt sie die Prüfung und Speicherung der Nutzereingaben. Im Paket de.xoev.xdomea.viewer.gui.actions befindet sich die Action-Klasse SwitchWorkspaceAction. Diese Klasse stellt eine gesonderte Möglichkeit dar, den PickWorkspaceDialog aufzurufen und wird benötigt, um der Anwendung den Shortcut zu dessen Aufruf mitzuteilen. Weiterhin befindet sich in dem Paket de.xoev.xdomea.viewer.gui.commands die Handler-Klasse SwitchWorkspaceHandler. Diese Klasse existiert um den PickWorkspaceDialog auch über das Menü der Anwendung bereitstellen zu können. Konfigurationsseite „xdomea-Viewer“ Die Einstellungen zum xdomea-Viewer lassen sich mit einer gesonderten Konfigurationsseite setzen. Im Paket de.xoev.xdomea.viewer.gui.preferences existiert hierzu die Klasse XdomeaViewerPrefrerencePage. Diese Klasse erzeugt alle Eingabe-Elemente der Konfigurationsseite zur Pflege der xdomea-Versionen, für die die Anwendung konfiguriert ist. Weiterhin übernimmt sie die Prüfung und Speicherung der damit in Verbindung stehenden Nutzereingaben. Die Eventlistener für die Buttons zum Hinzufügen, Bearbeiten und Löschen von Konfigurationen für xdomea-Versionen befinden sich im untergeordneten Paket de.xoev.xdomea.viewer.gui.preferences.listeners. Im Paket de.xoev.xdomea.viewer.gui.preferences befindet sich weiterhin die Klasse EditConfigurationDialog. In diese Klasse sind alle Eingabe-Elemente des Dialogs zur Einstellung der Konfiguration für eine bestimmte xdomea-Version ausgelagert. Außerdem enthält sie Funktionen zur Prüfung und Speicherung der damit in Verbindung stehenden Nutzereingaben. Häufig mit Textfeldern in Verbindung stehende Funktionalitäten wie das setzen von Labels und das Validieren der Nutzereingabe wurde in das Paket de.xoev.xdomea.viewer.gui.util.forms ausgelagert. 3.3.5 Erweiterungsmöglichkeiten Bei Erweiterungen kann auf bestehende Module zurückgegriffen werden. Insbesondere die Nutzung der fertigen Module UnzipModule und ValidationModule ist hierbei zu empfehlen, da so eine solide und gleichmäßige Ausgangsbasis für die weitere Verarbeitung der xdomea-Nachrichten geschaffen wird. Die Erweiterungen zum xdomea-Viewer sind gesondert in weiteren Modulen zu implementieren. Zusätzliche Konfigurationseinstellungen sind – der bestehenden Implementierung folgend – in der im in vorhergehenden Abschnitt vorgestellten Konfigurationsdatei zu hinterlegen. Hierzu ist das Schema zu erweitern und die Implementierung der mit der 4. Januar 2010 Seite 21/27 xdomea-Viewer Konfiguration verbundenen Klassen anzupassen. Um die neuen Funktionalitäten über die Benutzeroberfläche verfügbar zu machen, können die Funktionen der Eclipse RCP genutzt werden. 3.4 Weiterentwicklung der XSL-Templates Zur Darstellung der Informationen einer xdomea-Nachricht werden XSL-Templates eingesetzt. Diese Templates transformieren die XML-Datei einer xdomea-Nachricht in eine HTML-Datei. Die Templates befinden sich innerhalb des xdomea-Viewer-core Projekts unterhalb des Verzeichnisses resources/{XDOMEA_VERSION}/xslt. In diesem Verzeichnis liegen ebenfalls alle für die Visualisierung nötigen Dateien (CSS-, JPG- und JS-Dateien). Die XSL-Templates bestehen aus einem Haupt-Template und mehreren modular aufgebauten Sub-Templates. In den Sub-Templates wurden die Transformationsregeln zur Darstellung bestimmter Teile der XML-Datei einer xdomea-Nachricht sinnvoll zusammengefasst. Die folgende Abbildung zeigt die logische Aufteilung der HTML-Darstellung einer xdomea-Nachricht. Logo Nachrichten-Daten Tab-Navigation Haupt-Navigation Inhaltsbereich Abbildung 8: logische Aufteilung der HTML-Darstellung einer xdomeaNachricht Die folgende Tabelle listet die momentan wichtigsten Sub-Templates auf und beschreibt sie in aller Kürze: Template contentContainer.xsl documentation.xsl elementTranslator.xsl Beschreibung Erstellt den Inhaltsbereich gibt den Hinweis-Text in den NachrichtDaten aus (in Abhängigkeit zur transformierten Nachricht) Erzeugt die sprechenden Namen für die 4. Januar 2010 Seite 22/27 xdomea-Viewer helper.xsl innerContent.xsl leftNavigation.xsl topNavigation.xsl Navigationspunkte der Haupt- und TabNavigation und Eigenschaftsnamen im Inhaltsbereich Enthält Utility-Funktionen erstellt die Elemente im Inhaltsbereich der Seite Erstellt die Haupt-Navigation Erstellt die Tab-Navigation Jedes Sub-Template transformiert die Inhalte eines XML-Fragments in ein HTMLFragment. Das Haupt-Template setzt diese HTML-Fragmente schließlich zu einer kompletten HTML-Seite zusammen. Durch die Aufteilung in ein Haupt- und mehrere Sub-Templates wird eine flexible Erweiterung um und Wiederverwendung von Nachrichtentypen und Basiskomponenten möglich. 3.4.1 CSS-Konventionen Um eine vernünftige Strukturierung und Funktionalität der Anwendung zu gewährleisten, orientieren sich die Namen der CSS-Klassen an den folgenden Konventionen: • • • • • Vorkommen von '.' wird durch ein '-' ersetzt Die CSS-Klassen von Komponenten lauten wie ihre Element-Repräsentation in XML Bei Komponenten wird das u. a. Attribut class mit dem Namen der ElementRepräsentation in XML gefüllt. Beispiel: Komponente 'kontakt': <div class="kontakt">...</div> Bei Nachrichten wird das Attribut id mit dem Namen der ElementRepräsentation in XML gefüllt. Beispiel: Nachricht ‚nachrichtengruppe.nachricht.123‘: <div id="nachrichtengruppe-nachricht-123">...</div> CSS-Klassen, die spezifisch für den xdomea-Viewer sind, wird ein 'xdv-' vorangestellt um sie von CSS-Klassen, die sich aus dem Namen der Element-Repräsentation einer Komponente ergeben, unterscheiden zu können. Beispiel: Nachricht ‚kontakt‘: <div class="kontakt xdv-hidden">...</div> 4. Januar 2010 Seite 23/27 xdomea-Viewer 3.4.2 Einsatz von JavaScript Grundsätzlich müssen die Transformationsergebnisse des xdomea-Viewers barrierefrei sein. Daher wird JavaScript lediglich zur Steigerung der Benutzerfreundlichkeit der Anwendung eingesetzt. In der barrierefreien Version der Anwendung werden die Inhalte nacheinander heraus gerendert. Die Navigation zwischen den zahlreichen Informationen erfolgt mit Inhaltsverzeichnissen und Sprungmarken. Die folgende Abbildung zeigt exemplarisch die barierrefreie Darstellung einer xdomea-Nachricht. Abbildung 9: barrierefreie Darstellung einer xdomea-Nachricht Die benutzerfreundliche Version der Darstellung basiert auf dem gezielten Aus- und Einblenden von Information, sodass beim Benutzer der Eindruck entsteht er navigiere durch eine Anwendung. Dies wird mit JavaScript und entsprechenden CSSDefinitionen erreicht. Sollte der Benutzer kein JavaScript aktiviert haben, dann werden alle Informationen untereinander ausgegeben. Wie bei der barrierefreien Darstellung einer xdomea-Nachricht werden die Inhalte nacheinander heraus gerendert. Am Ende des HTML-Dokuments werden per JavaScript-Injection Funktionen zum Ein- und Ausblenden von HTML-Fragmenten auf die Eventlistener bestimmter Elemente gelegt. Hierzu komm jQuery (http://jquery.com/) in der Version 1.3.2 zum Einsatz. Um die für die Ein- und Ausblendenfunktionalität relevanten HTML-Fragmente erkennen zu können, werden bestimmte CSS-Klassen auf bestimmte HTMLElemente vergeben. Die Navigation in der Anwendung erfolgt über die Hauptnavigation auf der linken Seite und über die Tab-Navigation im oberen Bereich des Inhalts. 4. Januar 2010 Seite 24/27 xdomea-Viewer Für jeden Eintrag dieser beiden Navigationen werden drei CSS-Klassen auf verschiedene HTML-Elemente benötigt um das Ein- und Ausblenden umzusetzen. Im Falle der Hauptnavigation sind das folgende CSS-Klassen: CSS-Klasse xdv-linkSource xdv-linkTarget xdv-target[lfdNr] Beschreibung CSS-Klasse, die auf HTML-Elemente vergeben wird, die einen Link zu einem bestimmten Inhalt darstellen (Link-Quelle) CSS-Klasse, die auf HTML-Elemente vergeben wird, die einen Inhalt zu einem bestimmten Link darstellen (Link-Ziel) CSS-Klasse, die die Verknüpfung zwischen Link-Quelle und Link-Quelle herstellt. Hierzu dient ein Zähler (hier als [lfdNr] dargestellt). Die CSS-Klassen werden auf bestimmte HTML-Elemente nach dem folgenden Muster angewendet: <a class="xdv-linkSource" href="#1234">allgemeine Nachrichteninformationen</a> [...] <div class="... xdv-linkTarget xdv-target1234"> <a name="1234">allgemeine Nachrichteninformationen</a> [...] </div> [...] Das <a>-Tag erhält die CSS-Klasse xdv-linkSource und eine eindeutige Zahl im Attribut href (dient gleichzeitig als Sprungmarke). Das zu verlinkende <div>-Tag erhält die beiden CSS-Klassen xdv-linkTarget und xdv-target[lfdNr]. Die Zahlen im hrefAttribut und in der CSS-Klasse xdv-target[lfdNr] sind hierbei identisch, sodass eine Verknüpfung zwischen den beiden HTML-Elementen erfolgen kann. Die folgenden JavaScript-Anweisungen implementieren mit Hilfe von jQuery die Ein- und Ausblendenfunktionalität: <script language="javascript" ...> // linke navigation $("a.xdv-linkSource").click(function (event) { event.preventDefault(); $("div.xdv-linkTarget").hide("slow"); var lfdNr = this['href'].split("#")[1]; $(" div.xdv-target" + lfdNr).show("slow"); 4. Januar 2010 Seite 25/27 xdomea-Viewer }); </script> Alle <a>-Elemente mit der Klasse xdv-linkSource blenden nach einem Mausklick alle <div>-Elemente mit der Klasse xdv-linkTarget aus und das <div>-Element, der die CSS-Klasse xdv-target[lfdNr] zugewiesen ist, wieder ein. Die Implementierung ist analog für die Tab-Navigation. 3.5 Zusammenstellen der Gesamtanwendung Für die Zusammenstellung wird die Nutzung von Maven 2 und der bereits vorkonfigurierten Project-Object-Model Dateien empfohlen. Wenn Sie das M2Eclipse Plugin in ihrer Entwicklungsumgebung installiert haben, dann können Sie mit einem Rechtsklick auf diese Datei und einer Auswahl von [Run as] -> [Maven install] das jeweilige Maven Artefakt (Java-Bibliothek, Verzeichnis, …) automatisch erstellen lassen. Alternativ können Sie auch in einer Konsole in einem Verzeichnis auf Höhe der jeweiligen pom.xml den Befehl mvn install ausführen. Aus Abschnitt “3.3.2 Modularisierung“ geht hervor, dass die Quellcodes in zwei Eclipse-Projekte aufgeteilt sind. Daher sind bei der Zusammenstellung der Anwendung mehrere Schritte nötig. Nachfolgend sind die diese Schritte aufgeführt. Der Übersichtlichkeit halber werden bei Pfadangaben fortan für die Wurzelverzeichnisse der Eclipse-Projekte folgende Abkürzungen benutzt: xdomea-Viewer-core: {CORE} xdomea-Viewer-gui: {GUI} 3.5.1 Änderungen am dem XML-Schema der Konfigurationsdatei Sofern am XML-Schema der Konfigurationsdatei Änderungen erfolgt sind, muss es mit XMLBeans in eine Java-Bibliothek übersetzt werden. Nutzen Sie hierzu die Datei {CORE}/conf/pom.xml. Nach der Ausführung von Maven sollte ein neues oder aktualisiertes Maven Artefakt unter {CORE}/conf/target/xdomea-viewer-configtypes[Versionsnummer].jar bereitstehen. 3.5.2 Änderungen am Quellcode des Projekts xdomea-Viewer-core Sofern an den Quellcodes des Projektes xdomea-Viewer-core Änderungen erfolgt sind, müssen diese Änderungen ebenfalls zu einer Java-Bibliothek zusammengebaut werden. Nutzen Sie hierzu die Datei {CORE}/pom.xml. Nach der Ausführung von Maven sollte ein neues oder aktualisiertes Maven Artefakt unter {CORE}/target/xdomea-viewer-core-[Versionsnummer].jar bereitstehen. 4. Januar 2010 Seite 26/27 xdomea-Viewer 3.5.3 Änderungen an den XSL-Templates Sofern Änderungen an den XSL-Templates erfolgt sind, müssen Sie lediglich bei der Zusammenstellung die Hinweise zur Änderung an der Oberfläche beachten (siehe nächster Abschnitt). 3.5.4 Änderungen an der Oberfläche (Eclipse-RCP) Führen Sie ggf. alle zuvor genannten Anweisungen aus und kopieren Sie die neu erstellten Maven Artefakte wie folgt in das xdomea-Viewer-gui Projekt (dieser Schritt ist nur nötigt, sofern Sie an den o. g. Resources Änderungen vorgenommen haben): 1.) von {CORE}/conf/target/xdomea-viewer-configtypes-1.0.0.jar nach {GUI}/lib/xdomea-viewer-configtypes-1.0.0.jar 2.) von {CORE}/target/xdomea-viewer-core-1.0.1.jar nach {GUI}/lib/xdomeaviewer-core-1.0.1.jar Vergewissern Sie sich, dass ihre Entwicklungsumgebung keine Kompilierungsfehler anzeigt! Öffnen Sie nun die Datei {GUI}/viewer.product. Starten Sie den Export Mechanismus der Eclipse-IDE um die Anwendung in ein beliebiges Verzeichnis zu exportieren (bspw. /exports/xdomea-Viewer) Fügen Sie abschließend die aktuellen Schema-Dateien und XSL-Templates zur exportierten Anwendung hinzu. Kopieren Sie hierzu den Ordner {CORE}/resources in das Wurzelverzeichnis der exportierten Anwendung (bspw. nach /exports/xdomeaViewer/resources). Die Zusammenstellung der Anwendung ist damit abgeschlossen. Sie kann nun gestartet und in vollem Umfang genutzt werden. xdomea-Viewer 4 4. Januar 2010 Seite 27/27 Lizensierung Der xdomea-Viewer und die Umsetzung zur Darstellung der xdomea-Nachrichten bauen auf folgende Software auf: Eclipse RCP 3.5 (Eclipse Public License 1.0) Log4J (Apache Software License 2.0) Commons Compressions (Apache Software License 2.0) Commons CLI (Apache Software License 2.0) XMLBeans 2.3.0 (Apache Software License 2.0) Saxon-HE 9.2 (Mozilla Public License 1.1) Mockito 1.8.2(Massachusetts Institute of Technology License) jOuery 1.3.2 (Massachusetts Institute of Technology License) Die Lizensierung der o. g. Softwarebestandteile bleibt bestehen. Alle in diesem Dokument beschriebenen und die restlichen zum xdomea-Viewer gehörenden Quellcodes und sonstigen Dateien sind unter der EUPL (http://ec.europa.eu/idabc/eupl) lizensiert.