Interaktive Diagramme mit Oracle XDK und SVG Florian Werner Universität Tübingen, Lehrstuhl Wirtschaftsinformatik Abstract According to the Information Visualization Reference Model [4] there are three separate steps when generating a diagram: filtering, mapping and rendering. Each step has its own characteristics and demands. The paper shows how the Scalable Vector Graphics (SVG), a W3C standard for 2D-vector graphics, and the Oracle XML Developer’s Kit (XDK), a XML web development framework, can be used to meet the requirements of dynamic and interactive diagrams on the web. It discusses some principal design decisions like the architecture and the employment of the mentioned technologies for the different steps of the visualization process. Thereby it explains the potential of both technologies and gives a categorization of diagrams and diagram elements which is crucial to the programmatic construction of a diagram. It promotes a modular approach to foster the flexibility of a visualization application. The evaluation by the implementation of two basically different prototypes gains useful insights for future improvements. Keywords Information Visualization, Business Intelligence (BI), Chart, Diagram, SVG, XML, XSLT, XDK, XSQL, Servlet, Rich Internet Applications (RIA) „Visualization can be seen as the intersection of user interface design, graphics, and databases“ (Tang/Stolte/Bosch 2003) Einleitung Ein wesentlicher Faktor für das erfolgreiche Agieren von Unternehmen am Markt ist die zeitadäquate Versorgung der Führungskräfte mit Informationen. Entsprechend wird die Entscheidungsfindung im Unternehmen heutzutage durch umfangreiche Lösungen der Business Intelligence (BI) unterstützt. Dabei werden die Informationen nicht nur rein numerisch in Kreuztabellen dargestellt, sondern zur schnellen, intuitiven Erfassung von Datenmustern auch visualisiert. In der Regel geschieht dies durch klassische Diagrammformen wie Säulen-, Linien- oder Tortendiagramme. 1 Neben generischen Anforderungen, z. B. der dynamischen Generierung der Diagramme aus operativen Daten und der interaktiven Einflussnahme des Benutzers auf die Visualisierung während der Datenanalyse, ergibt sich oftmals der Bedarf an einer unternehmensspezifischen, flexiblen und einfach zu implementierenden BI-Lösung. Dies gilt insbesondere für Kleine und Mittelständische Unternehmen (KMU), die eine Marktnische mit spezialisierten Produkten ausfüllen. Es stellt sich die Frage nach einem für dieses Szenario geeigneten Ansatz. Die Stärke umfassender BI-Produkte liegt in der Verarbeitung von heterogenen Massendaten und dem Angebot effizienter Datenintegrations- und Analyse-Werkzeuge. Sie bringen erhebliche Implementierungskosten mit sich und sind in Grenzen flexibel. Für spezifische, lokal begrenzte Informationsbedarfe sind derartige Applikationen daher nicht geeignet. Dies gilt ebenso für „kleine“ BI-Produkte, sofern Diagrammdefinitionen einem Benutzerkreis zugänglich gemacht werden sollen, der über die einzelne Führungskraft hinaus geht. Hier mangelt es neben der Flexibilität an der Verteilbarkeit. Oracle bietet mit dem XML Developer’s Kit (XDK) [1] eine einfache und flexible Lösung an, welche in Verbindung mit dem Extensible Markup Language (XML)-basierten 2DVektorformat Scalable Vector Graphics (SVG) [2] die Anforderungen an individuelle Diagramme erfüllen kann. Beim XDK werden relational oder im XML-Format in der Datenbank vorliegende Daten zunächst in externe XML-Dokumente überführt und dann dynamisch bis zum Ausgabeformat weiterverarbeitet. Die Bereitstellung der Präsentationsdokumente im Web erfolgt über eine Servlet Engine. Durch integrierte Programmierschnittstellen (API) sowie die Verwendung etablierter Standards lässt sich eine zunächst schlank gehaltene Variante sukzessive erweitern und zunehmend an die Gegebenheiten des Unternehmens anpassen. Aus der Wahl der XML-Technologie als Verarbeitungs-Plattform ergeben sich Vorteile, die an das XML-Format gekoppelt sind. Wichtigstes Merkmal von XML ist die Trennung von Inhalt, Struktur und Präsentation. Jeder Aspekt kann in der Verarbeitungskette von XMLDokumenten gezielt gesteuert werden. Die Möglichkeit der flexiblen Transformation lässt sich für die Generierung von Diagrammen effektiv nutzen: Während Inhalts- und Strukturtransformation dazu dienen, Daten zu integrieren, übernimmt das Zielformat SVG die Rolle der Präsentation bzw. der grafischen Benutzerschnittstelle. Prinzipiell wären auch andere Ausgabeformate als SVG, z. B. die Hypertext Markup Language (HTML) denkbar. Es existieren aber gute Gründe für seinen Einsatz: SVG wurde gezielt für die Darstellung grafisch ansprechender und benutzerfreundlicher Webapplikationen entwickelt. Daher bietet es neben der reinen Erzeugung zweidimensionaler Vektorgrafik auch die Möglichkeit, einzelne Bestandteile der Grafik durch Interaktion oder Animation zu beeinflussen oder mit anderen medialen Inhalten zu kombinieren. Auf diese Weise können anspruchsvolle Web-Applikationen (sog. Rich Internet Applications – RIA) im Browser geschaffen werden. Die bei der XML-Technologie bestehende Trennung in Inhalt, Struktur und Präsentation sowie die Verbindung einzelner XML-Dokumente durch Transformationen weist offensichtliche Parallelen zum allgemeinen Prozess der Informationsvisualisierung auf: Bei diesem werden zunächst Daten in eine gewünschte Struktur gebracht, dann auf grafische Objekte abgebildet und schließlich als Diagramm dargestellt. Auch aus diesem Blickwinkel bietet sich demnach die Verwendung von XML an, insbesondere auch deshalb, da durch die Entkopplung der Aspekte Datenfilterung, grafisches Mapping und Präsentation Einfluss auf jeden Transformationspunkt des Prozesses durch den Benutzer genommen werden kann. Dies geschieht über die genannte Interaktionsmöglichkeit von SVG. 2 Im Hinblick auf Diagramme lässt sich die Funktionalität des XDK sehr effektiv einsetzen, um eine flexible, modulare Visualisierungs-Architektur zu realisieren, die Funktionalität von SVG, um Diagramme mit benutzerfreundlicher Interaktivität anzureichern. Auf diese beiden Aspekte wird im Folgenden vorrangig eingegangen. Informationsvisualisierung Die Erkenntnisse der Wahrnehmungspsychologie zeigen, dass Menschen numerische Informationen wesentlich schneller verarbeiten können, wenn sie grafisch aufbereitet sind. Die intuitivere Erfassung gegenüber der tabellarisch-numerischen Form lässt sich gut an einem sog. Mosaikplot nachvollziehen, das die Verteilung der Passagiere auf der Titanic hinsichtlich Klasse, Geschlecht und Überleben zeigt (Tab. und Abb. 1). Es lassen sich die Mengenverhältnisse durch die Flächen des Diagramms auf einen Blick erfassen, wohingegen die numerische Darstellung intensiveres Studium erfordert. Überlebt Klasse Geschlecht Nein Ja 1 Männlich 118 62 Weiblich 4 141 2 Männlich 154 25 Weiblich 13 93 Männlich 422 88 Weiblich 106 90 Männlich 670 192 Weiblich 3 20 3 Besatzung Tab. 1 / Abb. 1: Passagiere der Titanic: Tabellarisch und als Mosaikplot Wissenschaft und Wirtschaft besitzen große Datenaufkommen. Hier werden Diagramme zur Visualisierung komplexer Informationszusammenhänge (auch als „Datenmuster“ bezeichnet) in unterschiedlichsten Zusammenhängen benötigt. Entsprechend hat sich die Informationsvisualisierung (Information Visualization) als ein eigenes, interdisziplinäres Forschungsgebiet etabliert, das die Erforschung der optimalen Form der grafischen Repräsentation von Massendaten sowie der benötigten Vorstufen zum Ziel hat. Es besitzt im Bereich der Informatik starke Berührung zu den Gebieten Datenbanken und Human Computer Interaction (HCI). Zum einen geht es hier um die effiziente Datenhaltung und -harmonisierung, zum anderen um die aufgaben- und benutzergerechte Gestaltung der Benutzerschnittstelle, die dem Benutzer die Wahrnehmung und Analyse der Daten ermöglichen soll. Letztlich dienen alle involvierten Forschungsdisziplinen – zu nennen wären ebenso die Statistik, die Kognitionswissenschaft, die Soziologie und das Grafikdesign [3] – dem Ziel, den Benutzer optimal bei der Erfassung und Auswertung der Daten in seinem fachlichen Kontext zu unterstützen. Dies ist stets in Erinnerung zu behalten, um eine Verselbstständigung einzelner Bereiche zu vermeiden, d. h. etwa das Analysewerkzeug mit technischer Funktionalität oder grafischen Effekten zu überfrachten, was der Gebrauchstauglichkeit (Usability) entgegenwirken könnte. 3 Der Prozess der Informationsvisualisierung Der Prozess der Informationsvisualisierung, auch als Information Visualization Reference Model [4] bekannt, beschreibt die elementaren Schritte, die bei jeder Visualisierung zu durchlaufen sind (Abb. 2). Abb. 2: Prozess der Informationsvisualisierung Der Prozess lässt sich grob in die Phasen Filtering, Mapping und Rendering unterteilen, d. h. jene Transformationsschritte, welche die Quelldaten zunächst in die für die Analyse geeignete Struktur bringen, sie daraufhin in grafische Objekte überführen und schließlich dem Benutzer in Form eines Diagramms zur Ansicht bringen. Im Bereich Datenbanken wird der erste Teilprozess (Filtering) differenzierter beschrieben und ist dort als ExtractionTransformation-Loading (ETL)-Prozess bekannt. Für die Umsetzung der einzelnen Transformationsschritte stellt sich die Frage, bei welchem Schritt welche Technologie zum Einsatz gelangen soll. Dabei sind sowohl technologische als auch architektonische Alternativen denkbar. So könnte das Filtering, also die Datentransformation sowohl in der Datenbank als auch außerhalb erfolgen. Das Gesamtsystem könnte entsprechend der Transformationsschritte modularisiert werden, es könnten Mappingund Rendering-Schritt zusammengefasst werden oder jeder Teilschritt (insbesondere das Filtering) sogar in mehrere Module separiert werden. Aus technologischer Sicht wäre zu überlegen, welche Technologie neben der Datenbank effizient Aggregationen und Strukturtransformationen realisieren kann oder welche Rendering Engine in der Lage ist, eine Vielzahl an grafischen Primitiven schnell darzustellen. Alle Entscheidungen hängen letztlich vom Anwendungsszenario der Nutzung ab, d. h. von Parametern wie dem Umfang der Daten, der Integrationsebene der Quellsysteme, der Komplexität statistischer Berechnungen, der gewünschten grafischen Repräsentation oder den Interaktionswünschen des Benutzers bei der Analyse. Ausgehend von dem zu Beginn beschriebenen Szenario und seinen Implikationen (KMU; flexible, individuelle Diagramme; Applikation mittlerer Größe; mehrere Benutzer; keine übermäßig komplexen Auswertungen; einfache Programmierung) bietet sich für die Basisarchitektur ein 3-Tier-Modell parallel zu den Transformationsschritten des Visualisierungsprozesses an. Dadurch wird eine prinzipielle Trennung zwischen Datenhaltung, logischer Weiterverarbeitung inklusive Mapping sowie der Präsentationsebene erreicht, was der Applikation Flexibilität in wesentlichen Punkten verleiht. So könnten ggf. im Middletier weitere XML-Datenquellen integriert oder die Ausgabe auf unterschiedliche Endgeräte erweitert werden. Für eine Technologieentscheidung zugunsten von Datenbank, XML und SVG sprechen Gründe, die sich an den Stärken der jeweiligen Technologie orientieren: Die Datenbank-Technologie ist eine etablierte Technologie, mit der jahrzehntelange Erfahrungen existieren. Auch in einem kleinen Unternehmen bzw. Einsatzradius der Applikation liegt i. d. R. entsprechendes Know-how vor. In puncto Datenverarbeitung im Wortsinn kann man von bewährter und zuverlässiger Funktionalität ausgehen. Für die Transformation 4 von Daten in andere Objekte, in diesem Fall in eine visuelle Abstraktion (Mapping), und das Rendering ist eine Datenbank dagegen nicht ausgelegt. Idealerweise wird also das Filtering, d. h. die Aufbereitung der Daten innerhalb der Datenbank durchgeführt, da hier komplexe Datenmanipulationen und -aggregationen möglich sind. Da Diagramme oftmals einen Zeitbezug aufweisen, lassen sich z. B. komplexe Datumsfunktionen nutzen, die andernfalls aufwändig zu programmieren wären. Zudem bietet sich neben herkömmlichen SQL-Operationen z. B. die Nutzung der im SQL 2003-Standard umgesetzten und von Oracle unterstützten BIFunktionen an. Eine ideale Möglichkeit, einem breiteren Benutzerkreis Diagramme bereit zu stellen, sind Web-Technologien. An Stelle der aufwändigen und fehlerbehafteten Verteilung von spezieller Client-Software kann als Client ein Browser genutzt werden, der heutzutage auf nahezu jedem PC zur Verfügung steht. Neben diesem Vorteil erwirbt man weitere Benefits: Sofern die Lösung über das firmeneigene Intranet hinaus geht, ist Ortsunabhängigkeit gegeben, zudem sind Browser mittlerweile auf unterschiedlichsten Endgeräten implementiert. Noch unabhängig von SVG betrachtet, wird bei Wahl dieser Alternative der Browser für das Rendering zuständig sein, ggf. durch Unterstützung von Plug-ins, die i. d. R. zur Verfügung stehen und nicht selbst zu entwickeln sind. Für das Mapping schließlich stellt sich die Frage, welche Technologie die Überführung von Datenstrukturen in grafische Objekte umsetzen kann und welcher Art das Grafikformat sein soll, das dem Browser zum Rendern übergeben wird. Die XML-Familie, d. h. die Standards, die aus der XML Activity des World Wide Web Consortium (W3C) hervorgegangen sind, wurden mit dem Ziel geschaffen, eine einfache Möglichkeit für den Transport und die Verarbeitung von Informationen im Internet zu realisieren. Zugleich sollte die Präsentationsbeschreibung (z. B. die Textfarbe und -größe) vom eigentlichen Informationsgehalt entkoppelt sein, um die Informationen neben dem Menschen (der im World Wide Web – WWW schon immer als Empfänger galt) auch durch Maschinen verarbeitbar und semantisch interpretierbar zu machen.1 In puncto Know-how liegen mit XML ebenfalls zunehmend Erfahrungen in KMU vor, oftmals bedingt durch die Rolle als Zulieferer von Großunternehmen, welche XML als Format für den Informationsaustausch (Lagerbestand, Produktkatalog etc.) einfordern. Ein mögliches XML-Dokument ist in Codebsp. 1 abgebildet. <?xml version = '1.0'?> <Projektgruppe Bereich="Vertrieb"> <Projektleiter>Erich Weber</Projektleiter> <Projektmitarbeiter> Markus Merz</Projektmitarbeiter> <Projektmitarbeiter> Max Claasen</Projektmitarbeiter> </Projektgruppe> Codebsp. 1: XML-Dokument Die Entkopplung von Daten und Präsentation verleiht XML große Flexibilität, da in XML vorliegende Daten für unterschiedliche Ausgabeformate wiederverwendet werden kön1 Letzteres wurde durch die Anreicherung mit Datenauszeichnungen (den sog. Tags) erreicht. Auf diese Weise liegt in einem XML-Dokument stets eine Beschreibung des Inhalts in Form von Metadaten vor. Ein Umstand der sich bei der Diagrammgenerierung sehr positiv bemerkbar macht, wie noch zu sehen sein wird. 5 nen. Neben dem Transport und der Weiterverarbeitung ist bei XML grundsätzlich die Überführung in ein Präsentationsformat (analog zu HTML) vorgesehen. Da es sich bei Diagrammen in den meisten Fällen um zweidimensionale Grafik handelt, sollte hier ein Präsentationsformat verwendet werden, das 2D-Grafik darstellen kann und aus XML generierbar ist. Dieser Forderung genügt das XML-Derivat SVG, das je nach Browser entweder nativ oder mit Hilfe eines Plug-ins gerendert werden kann. Ein SVG-Dokument, das die Daten des XML-Beispiels verwendet, ist in Codebsp. 2 dargestellt. Abb. 3 zeigt das gerenderte Resultat. <?xml version = '1.0'?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN" "http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd"> <svg xmlns="http://www.w3.org/2000/svg" width="500" height="500"> <circle cx="250" cy="250" r="200" fill="none" stroke="red"/> <text x="50" y="75" font-size="50">Erich Weber</text> <text x="200" y="150" font-size="70">Markus Merz</text> <text x="200" y="350" font-size="70">Max Claasen</text> </svg> Codebsp. 2: SVG-Dokument Abb. 3: Gerendertes SVG-Dokument Für das Mapping der Daten auf die in SVG spezifizierten grafischen Elemente sind schließlich die Extensible Stylesheet Language Transformations (XSLT) als Mitglied der XML-Familie prädestiniert, da hierbei die aus XML-Knoten bestehenden Datensätze sequenziell geparst und durch grafische Elemente ersetzt bzw. damit kombiniert werden können. Die Ausgabe einer XSLT ergibt stets ein XML-konformes Dokument, in unserem Fall ist dies SVG. Das folgende Codebsp. 3 zeigt die Transformationsanweisungen, um das XMLAusgangsdokument (Codebps. 1) in das SVG-Dokument des obigen Beispiels (Codebsp. 2) zu überführen: 6 <?xml version = '1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output doctype-public="-//W3C//DTD SVG 20001102//EN" doctype-system="http://www.w3.org/TR/2000/CR-SVG20001102/DTD/svg-20001102.dtd" media-type="image/svg+xml" method="xml" /> <xsl:template match="/"> <svg xmlns="http://www.w3.org/2000/svg" width="500" height="500"> <circle cx="250" cy="250" r="200" fill="none" stroke="red"/> <text x="50" y="75" font-size="50"> <xsl:value-of select="Projektgruppe/Projektleiter"/> </text> <text x="200" y="150" font-size="70"> <xsl:value-of select="Projektgruppe/Projektmitarbeiter[1]"/> </text> <text x="200" y="350" font-size="70"> <xsl:value-of select="Projektgruppe/Projektmitarbeiter[2]"/> </text> </svg> </xsl:template> </xsl:stylesheet> Codebsp. 3: XSLT-Dokument zurTransformation in SVG Es bleibt zu klären, wie die Datenbereitstellung in XML-Form zu bewerkstelligen ist. Sofern eine Datenbank eingesetzt wird, die das XML-Format nativ unterstützt, werden XMLDokumente über unterschiedliche Schnittstellen direkt extern bereit gestellt. Andernfalls wäre das XML-Format aus relationalen Strukturen zu erzeugen – in dieser Form werden die Daten in kleineren Szenarien i. d. R. vorliegen. Gängige Datenbanken stellen dafür Adapter zur Verfügung. Die folgende Abbildung veranschaulicht Basisarchitektur und eingesetzte Technologien einschließlich der durch die Transformationen erzeugten Dokumente in Verbindung mit dem Visualisierungsprozess (Abb. 4): Abb.4: Visualisierungsprozess mit eingesetzten Technologien Für das genannte Szenario sind im Rahmen der Architektur- und Technologieentscheidung freilich Alternativen denkbar: So ließe sich das Filtering prinzipiell auch im Middletier, d. h. mit Hilfe von XSLT realisieren. Hierbei können neben der Strukturtransformation (der Umordnung und inhaltlichen Manipulation der Knoten) Aggregat-Funktionen bei der Zu- 7 sammenführung genutzt werden. Diese stehen allerdings in XSLT 1.0/XPath 1.0 nur rudimentär zur Verfügung. XSLT 2.0/XPath 2.0 kennen dagegen mächtige Aggregat- und CastingFunktionen, jedoch wird hiermit die Performanz einer Datenbank nicht erreicht werden. Nur in begründeten Fällen sollten also Daten erst auf der Ebene der externen XML-Dokumente zusammengeführt werden, da die Verarbeitung derzeit nicht so komfortabel und effizient wie in der Datenbank geschieht. Diese Variante wäre insbesondere dann vorstellbar, falls die Daten aus unterschiedlichen Quellen stammen und keine Integration auf der Persistenzschicht erfolgen kann. Sofern Datenquellen mit unterschiedlicher Transformationsfunktionalität eingebunden werden, kann eine Integration im Middletier indes denselben, wenn auch auf XSLT reduzierten Umfang für alle Daten ermöglichen. [3] Als Ort der Mapping-Transformation ließe sich alternativ der Browser wählen, sofern er eine eigene XSLT Engine besitzt. Auf diese Weise könnte der Server entlastet werden, der die XML-Dokumente ausliefert. Allerdings fallen die Ergebnisse der Transformation – trotz Standardisierung – unterschiedlich aus, je nachdem in welchem Umfang und auf welche Weise die Implementierung der XSLT Engine erfolgt ist. Im Extremfall wird die Transformation mit einem Fehler abgebrochen, sodass der Benutzer keine Visualisierung zu Gesicht bekommt. Der nicht kontrollierbaren Transformation im Browser ist daher bei der Generierung von Diagrammen mit SVG, das gegenüber HTML ein vergleichsweise junges Format darstellt, eine Server-basierte Variante vorzuziehen. Mittlerweile ist XML als Technologie-Bündel zu betrachten, da die Kernstandards um eine Vielzahl weiterer XML-Spezifikationen und unterstützende Software ergänzt wurden. Es liegt ein Portfolio an Komponenten vor, das den Entwicklungsaufwand für eine XMLApplikation erheblich reduziert und die Technologie auch für kleinere Projekte interessant macht. Als Framework, das eine Basis für XML-Applikationen bietet, ist das XML Developer’s Kit (XDK) von Oracle zu verstehen. Es lässt sich für die vorgestellte Architektur ideal einsetzen. Neben den üblichen Verarbeitungsmöglichkeiten von XML stellt es als ein proprietäres Spezifikum einen Adapter zur Verfügung, der aus relationalen Strukturen XMLDokumente erzeugt. Dies kann für jede Datenbank erfolgen, die über die Java Database Connectivity (JDBC) ansprechbar ist. Die SQL-Anweisungen zur Selektion und Manipulation von Daten werden dabei XML-Standard-konform in XML-Dokumente integriert. Somit lässt sich unter Einbeziehung von Datenbank und Browser mit dem Framework als Bindeglied der gesamte Visualisierungsprozess programmatisch unterstützen. Bevor die Visualisierungs-Lösung näher erörtert wird, sollen die Merkmale und Potenziale der genannten Technologien – XML, SVG und XDK – kurz skizziert werden. XML und SVG Zur zeitlichen Einordnung der Standards der XML-Familie soll folgender Zeitstrahl (Abb. 5) dienen; XML hat sich durch Anpassung der Funktionalität aus der Standard Generalized Markup Language (SGML) entwickelt, einer Metasprache zur Definition von Auszeichnungselementen für Textdokumente. Sie wurde als zu komplex und zugleich als zu beschränkt für viele Anwendungen im Web empfunden. 8 Abb.5: W3C-XML-Standards im Zeitverlauf Das vom W3C ins Leben gerufene XML existiert mittlerweile seit 10 Jahren und hat sich als Industriestandard, insbesondere für die Integration von Systemen und dem damit verbundenen Datenaustausch über das Web etabliert. Besonders die Trennung zwischen Inhalt, Struktur und Präsentation verleiht XML große Flexibilität. Der raschen Verbreitung waren außerdem folgende Eigenschaften zuträglich, die sich ebenso positiv für das XML-Derivat SVG auswirken und neben dem bereits Genannten für den Einsatz beider Formate auch aus ökonomischer Sicht sprechen: • • • • • nicht-proprietärer, offener Standard keine Lizenzkosten plattformunabhängig selbstbeschreibend einfache Struktur • • • • • verifizierbar (Syntax) validierbar (Semantik) kombinierbar (Namensräume) erweiterbar einfach programmatisch verarbeitbar Gerade bei der Erzeugung von Diagrammen können diese Eigenschaften sehr gut ausgenutzt werden, da es sich um die schrittweise Überführung von Daten in numerische, textuelle und grafische Elemente handelt. Zudem können durch die Modularisierung der Aspekte Inhalt, Struktur und Präsentation damit einhergehende fachliche Tätigkeiten, die unterschiedliche Anforderung an das Know-how des Entwicklers stellen, im Entwicklungsprozess effizient verteilt werden. Für SVG lassen sich weitere positive Eigenschaften anführen, die sich für die Gestaltung von Diagrammen anbieten: • • • • • Hohe Abbildungsqualität (Vektorformat) Entkoppelung des Erscheinungsbilds vom Layout (Cascading Style Sheets – CSS) Textelemente extrahierbar, d. h. auch durchsuchbar Animation (Synchronized Multimedia Integration Language – SMIL) Interaktion (ECMAScript bzw. JavaScript)2 In Verbindung mit weiteren Dokumentenformaten der sog. XML-Familie ist – wie schon ausgeführt – eine Verarbeitung von Daten, die in XML-Dokumenten enthalten sind, und deren Transformation in unterschiedliche Strukturen und Zielformate möglich. Eine wichtige Funktion nimmt dabei die Extensible Stylesheet Language (XSL) ein, welche dazu dient, ein in der XML-Syntax vorliegendes Ausgangsdokument in ein Zieldokument zu transformieren. Genaugenommen besteht XSL aus zwei Spezifikationen: XSLT und XSL Formatting Objects (XSL-FO). Letztere widmet sich der Druckausgabe von XML-Dokumenten. Als Ergebnis können so aus einer XSL-Transformation HTML- oder WML-Dokumente entstehen, über 2 Bei ECMA-Script handelt es sich um den Sprachkern von JavaScript, der durch die European Computer Manufacturers Association (ECMA) 1998 als Standard definiert wurde. Der konkrete JavaScript-Umfang unterscheidet sich gegenüber ECMAScript je nach verwendetem Browser. 9 XML-FO als Zwischenschritt PDF-Dateien erzeugt werden oder es kann eine Umwandlung in ein Grafikformat wie SVG erfolgen. Schließlich ist eine dritte Dokumentenart der XML-Familie im Transformationsprozess von Belang: Damit festgelegt werden kann, welche konkreten Objekte (also Elemente und Attribute) in einem Dokument vorkommen dürfen, existiert XML Schema. Durch ein XML Schema-Dokument lässt sich über die Existenz von Elementen und Attributen zudem ihre Strukturierung, d. h. die Reihenfolge oder ihr Wertebereich erzwingen. Neben der syntaktischen Korrektheit lässt sich also auch in Grenzen eine semantische Überprüfung durchführen. Dies trägt stark zur Einschränkung von Fehlern in längeren Transformationsketten bei, da sich auch Zwischenergebnisse validieren lassen. SVG kennt abgesehen von üblichen geometrischen Primitiven (Rechteck, Kreis, Linie) und einfacher Farbgebung (Linienfarbe, homogene Füllung) auch komplexe Elemente wie Freihand-Zeichnungen, Farbverläufe und Filtereffekte, mit denen grafisch anspruchsvolle Visualisierungen möglich sind. Neben den Diagrammtypen, die sich in Standardsoftware für Informationsvisualisierung finden, können mit diesen Gestaltungsmitteln auch sehr individuelle Diagramme geschaffen werden, z. B. die Kombination aus CAD-Zeichnung und visualisierten Kennzahlen zur Überwachung des CAD-Objekts. Dabei ist die Einbindung des CADObjekts sowohl nativ in SVG oder als Rastergrafik (z. B. JPEG3 oder Portable Network Graphics – PNG) möglich. Neben der Referenz auf externe Ressourcen ist auch deren Einbettung über das für XML-Dokumente übliche Base64-Encoding möglich. Da SVG neben seinen grafischen Eigenschaften auch Interaktivität bietet, lässt es sich über die Funktion als reines 2D-Format hinaus, d. h. der Zeichenfunktion, auch als Dialogebene der Benutzerschnittstelle verwenden. Dadurch ist mit SVG ein Graphical User Interface (GUI) realisierbar. [5] Durch die Übernahme von Elementen aus dem Modul „Animation“ (2001) der Synchronized Multimedia Integration Language (SMIL) können zudem einfache Animationen umgesetzt werden, die eine benutzerfreundliche Gestaltung ermöglichen. Die Leistungsfähigkeit von SVG hängt wesentlich von der SVG-Version und -Variante ab, die zum Einsatz gelangen soll. Unterschieden werden können derzeit die Versionen SVG 1.0 (als W3C-Recommendation im Jahr 2000 verabschiedet) und SVG 1.1 (2003). Version 1.2 durchlief seit 2002 mehrere Draft-Stadien (letzter Draft von 2005) und soll offiziell Anfang 2009 (reduzierte Variante) bzw. 2010 (voller Umfang) verabschiedet werden. Version 1.1 stellt eine Modularisierung von SVG 1.0 sowie eine Korrektur von Fehlern dar, definiert aber keine wesentlich erweiterte Funktionalität. Für Version 1.1 (der volle Umfang wird als SVG Full bezeichnet) existieren Untermengen der Spezifikation, die sich speziell an Mobilen Endgeräten ausrichten (sie werden zusammen als SVG Mobile bezeichnet): Das Profil SVG Basic (SVGB) ist für den Personal Digital Assistant (PDA) ausgelegt, wohingegen SVG Tiny (SVGT) auf Elemente verzichtet, welche grafisch aufwändig realisiert werden, und auf Mobiltelefone abzielt. Für interaktive Diagramme ist der Gestaltungsumfang der vollen Spezifikation elementar, da sowohl anspruchsvolle grafische Objekte als auch eine benutzerfreundliche Interaktion realisiert werden. Auch Animationen können – sofern sie sich in Grenzen halten – dazu beitragen, die Lesbarkeit eines Diagramms zu erhöhen. Um die Möglichkeiten der Spezifikation ausschöpfen zu können, ist deren Unterstützung im Browser wichtig. Hier bietet der Adobe 3 JPEG steht für Joint Photographic Experts Group und ist ein Grafikformat, das aus den Aktivitäten dieses Gremiums hervorging. Es umfasst mehrere Standards. 10 SVG Viewer (ASV) in der Version 3.03 den größten Umfang. Er ist auf den Internet Explorer ausgerichtet. Die Browser Firefox und Opera unterstützen SVG dagegen nativ und nähern sich diesem Level der Unterstützung zunehmend an. Jedoch ist die Interaktivität und Animation in diesen Browsern derzeit noch stark eingeschränkt. Deshalb soll im Folgenden der ASV als Rendering Plug-in vorausgesetzt werden. Sofern der Einsatz einfach gehaltener Diagramme vorgesehen ist, lässt sich der Kreis der unterstützenden Browser für eine Applikation entsprechend erweitern. [6]4 Auch zur Verwendung von SVG existieren Alternativen. Als prominentestes Beispiel lassen sich die proprietären, wenngleich im Web weit verbreiteten Formate Adobe Flash bzw. der Nachfolger Flex nennen. Aus dem Hause Microsoft stammt als Pendant dazu seit jüngerer Zeit das Produkt Silverlight. Insbesondere mit Flash liegen langjährige Erfahrungen vor und es hat sich im Web breit etabliert. Mit der Funktionalität von Flash kann SVG nicht gleichziehen. So bleibt SVG hinter Flash in puncto Animationen und zeitlicher Synchronisation zurück, was sich allerdings mit der Version 1.2 ändern wird. Da Animation bei Diagrammen eine untergeordnete Rolle spielt, fällt dieser Punkt nicht ins Gewicht. Die Unterstützung durch eine Entwicklungsumgebung ist ein wesentlicherer Aspekt, bei dem Flash einen höheren Grad aufweist. Da SVG in erster Linie ein Grafikformat ist, unterstützen immerhin gängige Zeichenprogramme wie Adobe Illustrator, Corel Draw oder das Open Source-Programm Inkscape die WYSIWYG-Erstellung. Dagegen sind der Zugriff auf die Browserumgebung bzw. den DOM-Baum oder die deklarative Erstellung von Interaktion und Animation nicht gegeben. Allerdings sprechen neben den oben erwähnten Punkten auch Gründe für den Einsatz von SVG: Vor allem die mit XML realisierte Trennung von Inhalt, Struktur und Präsentation ermöglicht eine immense Flexibilität der Anwendungsarchitektur. Eine Erweiterbarkeit hin zu mehrschichtigen Architekturen mit mehreren Transformationsschritten ist gegeben. Zudem trägt die automatische Generierbarkeit von SVG zur Flexibilisierung bei; Vergleichbares ist mit Flash nur sehr bedingt umsetzbar. Sollte die Plattform geändert werden, ist bei SVG davon auszugehen, dass weiterhin Parser existieren, die bereits formulierte XML- und XSLTDokumente verarbeiten können. Ebenso ermöglicht die XML-Konformität die Nutzung einer Vielfalt an gängigen Web-Techniken, z. Β. Asynchronous JavaScript and XML (AJAX). Das Scripting betreffend ist Flash dagegen an das proprietäre ActionScript gebunden. Auch die im Web wichtige Linking-Funktionalität ist bei SVG weitaus mächtiger. Eine ähnliche Gegenüberstellung ergibt sich bei Silverlight, das mit Flex nahezu gleichziehen kann [7]. Zusammenfassend kann gesagt werden, dass SVG für das hier verfolgte Anwendungsszenario ideal geeignet und momentan anderen Grafik- und Interaktionsformaten vorzuziehen ist, die zudem für derartige, grafikintensive Applikationen ursprünglich nicht konzipiert wurden. Nur im Falle von hochfunktionalen Web-Applikationen, d. h. einer „Fat RIA“ [8] wäre der Einsatz von Flex oder Silverlight zu bedenken. 4 Ein großes Manko besteht darin, dass der ASV momentan nicht weiterentwickelt wird, was in der Übernahme der Firma Macromedia durch Adobe und der Wahl von Flash/Flex als strategischer Web-Plattform begründet ist. Die Preview der Version 6 ist die letzte veröffentlichte und inzwischen nicht mehr offiziell beziehbare Version. Teilweise können hier JavaScript-Bibliotheken Abhilfe schaffen, die SVG über nativ im Browser implementierte Formate – für den Internet Explorer wäre dies die von Microsoft propagierte Vector Markup Language (VML) – emulieren (z. B. Dojo). 11 Oracle XDK und XSQL Publishing Framework Neben der XML-Funktionalität innerhalb der Datenbank, unter dem Schlagwort XML Database (XDB) eingeführt, bietet Oracle mit dem XDK auch eine umfangreiche Unterstützung der XML-Verarbeitung im Middletier an. Auf einfache Weise lassen sich damit relational in der Datenbank vorliegende Daten in externe XML-Dokumente überführen und flexibel weiterverarbeiten. Das Extended Structured Query Language (XSQL) Publishing Framework ist Teil des XDK und kombiniert getrennt nutzbare Bestandteile des XDK (XML Parser, XSL Transformation Processor, XML SQL Utility …) zu einer Servlet-basierten XMLEntwicklungsplattform (Abb. 6). Oracle-spezifisch ist dabei das XML-Derivat XSQL, welches das Absetzen von SQL-Statements gegen die Datenbank ermöglicht und einem eigenen XML-Namensraum angehört. Den Kern des Framework bildet der XSQL Page Processor, der die Transformationsschritte steuert. Durch die Unterteilung in XSQL und XSLT ist eine klare Trennung zwischen Datenabfrage und Transformation ins Zielformat gegeben, wie es der beschriebenen Basisarchitektur entspricht. Mit geringem Entwicklungsaufwand lassen sich somit schnell Daten im Web publizieren, z. B. in Form von SVG-Diagrammen. Abb. 6: Oracle XSQL Publishing Framework Der Ablauf bei der Verarbeitung der XML-Dokumente sieht folgende Reihenfolge vor [9, 10, 11]: n Der Browser sendet einen Request mit dem Unified Ressource Locator (URL), z. B. http://www.myserver.de/myXSQLPage.xsql des angeforderten XSQLDokuments an den Server, auf dem das XSQL Servlet ausgeführt wird. Der XSQL Page Processor verarbeitet die XSQL-Seite, indem er sie parst und zentrale Elemente separat behandelt: Er extrahiert das vom Element <xsql:query> umschlossene SQL-Statement 12 und übergibt es an die XML SQL Utility. Die Referenz auf das Stylesheet, mit dem die von der Datenbank angeforderten Daten weiterverarbeitet werden sollen, wird ebenfalls extrahiert und zwischengespeichert. Eine XSQL-Seite ist wie folgt strukturiert (Codebsp. 4): <?xml version = '1.0'?> <?xml-stylesheet type="text/xsl" href="myStylesheet.xsl" ?> <page xmlns:xsql="urn:oracle-xsql" connection="myConn"> <xsql:query> SELECT * FROM dept WHERE dname = 'ACCOUNTING' </xsql:query> </page> Codebsp. 4: XML-Seite im Oracle-spezifischen XSQL-Format o Im zweiten Schritt lädt die XML SQL Utility die selektierten Daten aus der Datenbank und bringt sie in eine XML-konforme Struktur. Das Ergebnisdokument wird an den XSQL Page Processor zurück geliefert. Die Ausgabe des XML-Dokuments sieht für obiges Beispiel per Default wie folgt aus (Codebsp. 5): <?xml version = '1.0'?> <?xml-stylesheet type="text/xsl" href="myStylesheet.xsl" ?> <page xmlns:xsql="urn:oracle-xsql" connection="myConn"> <rowset> <row num="1"> <deptno>10</deptno> <dname>ACCOUNTING<dname> <loc>NEW YORK<loc> </row> <rowset> </page> Codebsp. 5: XML-Seite der XML SQL Utility In der Ausgabe ist im Beispiel die Referenz auf das Stylesheet notiert worden. Tatsächlich würde die XML-Seite mit den Daten nur dann im Browser zur Ansicht kommen, sofern die zweite Zeile mit <!-- foo --> auskommentiert würde. Die Möglichkeit, zunächst nur die reinen Daten in XML-Form im Browser zu betrachten, unterstützt den effizienten Test einzelner Entwicklungsschritte. p Das XML-Dokument wird vom XSQL Page Processor gemeinsam mit dem zwischengespeicherten Verweis auf das XML Stylesheet an den XSLT Processor übergeben. q Der XSLT Processor wandelt unter Verwendung der Transformationsanweisungen im XSTL-Dokument (.xsl) das XML-Dokument in ein Zielformat um; in unserem Fall ist dies SVG und liefert es an den XSQL Page Processor zurück. Dieser beantwortet den Re- 13 quest des Client, indem er das erzeugte SVG-Dokument über das XSQL Servlet an ihn ausliefert. Neben der gerade beschriebenen Standard-Funktionalität verfügt das XSQL Publishing Framework über weitreichende Möglichkeiten der Konfiguration und Erweiterung. So ist nicht nur die Selektion von Daten sondern prinzipiell jegliche Data Manipulation Language (DML)-Operation möglich. Unter Verzicht auf die Mappingfunktion von relationalen Daten auf die XML-Struktur kann die Verarbeitung auch unmittelbar auf XML-Ebene erfolgen. D. h., es lassen sich bereits in der Datenbank in XML-Form (entweder nativ über den Datentyp XMLType oder eine CLOB-Spalte) vorliegende Daten direkt als XML-Dokument beziehen. Ebenso kann der umgekehrte Weg gewählt werden, d. h. ein XML-Dokument in die Datenbank zurückgespeichert werden. Zudem lassen sich für die Ablaufumgebung in der Konfigurationsdatei XSQLConfig.xml differenzierte Caching- und Fetching-Parameter zur Optimierung der Performance einstellen. Der Connection Pool ist ebenfalls zu konfigurieren und die Verbindungen zu unterschiedlichen Datenbanken können über Aliasnamen abstrahiert werden. Für spezielle Funktionalität erlaubt das Framework sowohl die Erweiterung auf Datenebene (XSQL) als auch auf Transformationsebene (XSLT). So ist es möglich für die XSQLDatei eigene Action Handler via <xsql:action handler="myActionHandler"> zu implementieren, deren Verweis auf die jeweilige Java-Klasse ebenfalls in der XSQLConfig.xml notiert wird. Für XSLT können neben den bereits integrierten Serializern eigene Serializer über die Anweisung <?xml-stylesheet serializer="mySerializer"?> referenziert werden, die sowohl unter Verzicht auf ein Stylesheet als auch nach der Transformation zum Einsatz kommen können. Die über 500 Seiten umfassende Dokumentation des XDK beschreibt detailliert weitere Möglichkeiten, wie das Framework bestimmten Anforderungen gerecht werden kann, z. B. den Aufruf aus Java Server Pages (JSP), von der Kommandozeile oder über ein Java-Advanced Programming Interface (API) [9]. Ein großer Vorteil bei der Entwicklung mit dem XSQL Publishing Framework ist die Unterstützung des XDK durch das von Oracle stammende, frei verfügbare Integrated Development Environment (IDE) JDeveloper. Über dieses Entwicklungswerkzeug lässt sich der komplette Transformationsprozess (d. h. von der Datenextraktion bis zur Visualisierung im Browser) abbilden und über die integrierte Servlet Engine sofort testen. Da eine Neukompilation der XML-Dateien nicht erforderlich ist, sind Veränderungen am XML-Quellcode ohne Neustart des Servlets sofort sichtbar, was den Entwicklungsprozess deutlich beschleunigt. Als Production Release ist momentan die Version 10.1.3.4 des JDeveloper verfügbar, die das XDK 10.1.3.3 enthält.5 XSLT/XPath werden vom XKD durch die Java-Bibliotheken im Archiv xmlparserv2.jar in den Versionen 1.0 sowie mit wenigen Ausnahmen 2.0 vollständig unterstützt. 5 Die aktuelle Versionsnummer des XDK ist nicht einfach zu ermitteln und scheint je nach Produkt, in welches das XDK integriert ist, zu differieren: Als Standalone-Variante wird das XDK unter der Versionsnummer 10.1.0.2 (bzw. 10.1.0.3 für Unix-Systeme) bereit gestellt, als Teil der Datenbank 11g trägt es die Versionsnummer 11.1.0.7. Offensichtliche Unterschiede, auch in der Dokumentation konnten allerdings nicht ausgemacht werden. 14 Visualisierungs-Architektur Die Visualisierungs-Architektur hält den Prozess der Diagramm-Generierung und die im jeweiligen Schritt eingesetzten XML-Dokumente fest (Abb. 7). Abb. 7: Visualisierungs-Architektur Der Entscheidungsträger und Betrachter der Diagramme besitzt einen Informationsbedarf, der sich nicht an der technischen Implementierung orientiert. Entsprechend empfiehlt es sich ein eigenes XML-Format zu definieren, welches lediglich das Ziel des Prozesses, d. h. den Bedarf an Informationen sowie die gewünschten Diagrammtypen beschreibt und gemeinsam mit dem späteren Nutzer der Applikation erarbeitet wird. [3] Auf diese Weise lässt sich die Diagramm- und Datenbeschreibung von der Datenaufbereitung entkoppeln. Aufgrund der eingeschränkten programmatischen Möglichkeiten des XSQL Publishing Framework empfiehlt es sich allerdings, die Beschreibung des Datenimports aus dem separaten XMLKonfigurationsdokument heraus zu lösen und im XSQL-Dokument zu platzieren. Die Diagrammbeschreibung verbleibt dagegen in einem eigenen XML-Dokument und wird durch den Action Handler <xsql:include-xml href="myXML.xml"> in das XSQL-Dokument importiert. Da der XSQL Page Processor die sequenzielle Verarbeitung mehrerer Transformationen durch den Action Handler <xsql:include-xsql href="myXSQL.xsql"> bietet, kann in einem ersten Schritt die Transformation in eine für Diagramme optimierte Basisstruktur erfolgen, die als Grundlage für die Generierung jeglicher Diagramme dient. Sie kann wie auch die reine Diagramm- oder Datenbeschreibung durch ein XML-Schema (.xsd) beschrieben und validiert werden. Erst in einer zweiten Transformation erfolgt die Umwandlung in SVG. Durch die Fixierung einer Basisstruktur können die XSLT-Dateien zur Generierung des Mappings als SVG Diagram Templates wiederverwendet werden. Die Transformationslogik wird also nicht für jedes zu erzeugende Diagramm neu erdacht, sondern lediglich für jeden Diagrammtyp. Durch einen derartigen modularen Aufbau ist im Hinblick auf die Kombination verschiedener Diagrammtypen in einer einzigen Grafik hohe Flexibilität gegeben. Ebenso können dieselben Datenbeschreibungen mit unterschiedlichen Diagrammtypen kombiniert werden, sofern sie dieselbe Datenstruktur besitzen (z. B. zweidimensionale Daten in einem kartesischen Koordinatensystem). Das XML-Schema, das die Datenstruktur mitbeschreibt, wäre entsprechend allgemeingültig zu halten. Ferner eröffnet XSQL die Möglichkeit mehrere Datenquellen (auch statische XML-Dokumente) parallel einzubinden. Auf diese Weise kön- 15 nen z. B. fehlende Datensätze ergänzt und damit die Datenqualität verbessert werden. Für den Entwicklungsprozess der XML-Dokumente besteht der Vorteil, dass diese von unterschiedlichen Personen erstellt werden können, die sich auf die jeweiligen Aspekte konzentrieren (z. B. Datenselektion, Filtering, Mapping, Rendering, Design und Browserintegration). Die modulare Architektur birgt aber auch Nachteile: Der zweistufige Prozess führt zu mehr Komplexität und damit Fehleranfälligkeit. So müssen z. B. Parameter über beide Stufen hinweg übergeben werden, wenn ein Dimensionswechsel oder ein Drill-down (d. h. die Auswahl einer Ebene mit feinerer Granularität der Daten) erfolgen soll. Prinzipiell wäre auch eine einstufige Transformation denkbar, sofern Diagramm- und Datenbeschreibung in einem einzigen Dokument abgelegt werden können, und keine weiteren Filtering-Transformationen im Middletier nötig sind. Diagramme und Diagrammelemente Der Begriff „Diagramm“ verweist auf eine enorme Bandbreite unterschiedlichster Formen aus unterschiedlichsten Kontexten. Neben gängigen Formen wie Säulendiagramm, Tortendiagramm oder Liniendiagramm lassen sich auch Ablaufzeichnungen oder individuelle figürliche Darstellungen unter diesen Begriff fassen. Gemeinsam ist allen Diagrammen, dass sie eine Reduktion der realen Komplexität vor dem Hintergrund einer Zielsetzung vornehmen. Die Informationen über die von der Realität abstrahierten Entitäten (z. B. den Verkaufsumsatz) werden dabei mit grafisch-symbolischen Mitteln repräsentiert. Als Qualitätskriterien für Diagramme können Merkmale wie Klarheit, Einfachheit, gute Musterwiedergabe Validität, Fokussierung und Standardisierung genannt werden. [12] Diesen Kriterien sollte eine Visualisierung verpflichtet sein. Abstrahiert man von gängigen Diagrammtypen, die in der Wirtschaft Anwendung finden, so lassen sich mehrere Grundtypen isolieren. Eine Kategorisierung könnte (unter Orientierung an SHNEIDERMAN [13]) wie folgt aussehen: • eindimensional – X-Achse mit Skala – Bsp.: Thermometer • zweidimensional – logisches kartesisches Koordinatensystem – Bsp.: Liniendiagramm, Tortendiagramm • dreidimensional – logisches kartesisches Koordinatensystem mit zusätzlichem Merkmal – Bsp.: Blasendiagramm • mehrdimensional – Kombinationen möglicher Skalen – Bsp.: Netzdiagramm, • Zustände – binäre oder ternäre Skala6 – Bsp.: Schalter • Graphen – implizierte zeitliche, funktionale oder hierarchische Abhängigkeit – Bsp.: Prozessdiagramm Analog zu den vorgestellten Diagrammtypen werden konkrete Diagramme aus einer Reihe möglicher Diagrammelemente konstruiert. Als Diagrammelemente, die aus Daten beim Mapping in Zeichenobjekte erzeugt werden, lassen sich unterscheiden [12]: • • • • 6 Canvas = gesamte Zeichenfläche Diagram Area = eigentliche Diagrammzeichenfläche Data Object = Datenobjekte, z. B. Datenpunkt, Linie, Säule, Kreisausschnitt... Axis = Achse Genau genommen handelt es sich hierbei um den eindimensionalen Typ mit eingeschränktem Wertebereich. 16 • • • • • • • • • • • Scale = Skala Ticks = Skalenstriche Legend = Legende Title = Titel Container = grafisches Element zur Einbettung anderer grafischer Elemente, z. B. Trichter, Meter, Röhre … Marker = Markierung eines Wertebereichs, z. B. Schwellwert, Default-Wert Label = Beschriftung, sowohl für Achsen, Skala und Datenobjekte Annotation = textuelle Zusatzangaben Interactivity = Interaktivität Animation = Animation Visuals = visuelle Effekte, Design Hält man sich das konkrete Rendering eines der genannten Elemente im Kontext mehrerer Diagrammtypen vor Augen, wird deutlich, dass prinzipiell jedes der genannten Elemente in jeglichem Diagramm vorkommen kann. Das abstrakte visuelle Objekt könnte also logisch betrachtet prinzipiell immer gegeben sein, nur die grafische Realisierung differiert von Diagrammtyp zu Diagrammtyp. So verfügt selbst ein eindimensionales Schalterdiagramm mit nur zwei Werten, nämlich „an“ oder „aus“, genau genommen über eine Y-Achse mit exakt zwei Skalenstrichen, d. h. eine nominale Skalierung. Bei einem ebenfalls eindimensionalen Thermometer mit einem stetigen und theoretisch nur durch den absoluten Nullpunkt nach unten begrenzten Wertebereich käme dagegen eine kardinale Einteilung der Skala zum Zuge. Wesentlich für die grafische Visualisierung ist letztlich, ob das logische grafische Objekt tatsächlich gezeichnet wird oder nur als mathematisches Konstrukt zur Repräsentation eines Koordinatensystems in der Vorstellung dient. Entsprechend wird beim Schalter keine Achse gezeichnet, sondern ein Container-Element, das zwei funktional abhängige Boxen mit boolescher Ausprägung enthält. Beim Thermometer wird dagegen eine fortlaufende, kardinale Skala eingesetzt (i. d. R. intervallisch beschränkt, je nach Anwendungsfall z. B. für die Wetterbeschreibung zwischen -100 °C und +100 °C). Ergänzend könnten beim Thermometer noch zwei sich entsprechende Skalen z. B. Celsius und Fahrenheit gezeichnet werden. Auch ein Container-Element wird wie beim Schalter in Anlehnung an die physische Ausprägung abgebildet, in diesem Fall ein Quecksilberthermometer.7 Abb. 8 zeigt die Gegenüberstellung der Diagrammtypen und der logisch vorhandenen mathematischen bzw. grafischen Elemente. 7 Die Wahl von grafischen Objekten aus dem Erfahrungsbereich des Benutzers unterstützt die intuitive Erfassung und Interpretation eines Diagramms (vgl. typische Symbole der grafischen Benutzerschnittstelle wie den Mülleimer für Löschoperationen von Dokumenten o. ä.). 17 °C °F 100 212 50 122 0 32 -50 -58 -100 -148 100 212 50 122 0 -50 -100 1 0 0 1 -58 -148 Abb. 8: Logisch-mathematische und visuelle Repräsentation von Diagrammen Diagramminteraktionen Eine spezielle Kategorie von Diagrammelementen sind Elemente zur Repräsentation von Interaktivität. Sie können auf unterschiedliche Weise mit Funktionalität hinterlegt werden. Aus dem Bereich der BI und speziell aus dem Online Analytical Processing (OLAP) sind Interaktionen bekannt, die dem Benutzer ausgehend von einer Überblicksdarstellung erlauben, die aktuelle Ansicht seiner Datenmenge, des sog. „Data Cube“ zu modifizieren. Dabei lassen sich Interaktionen unterscheiden, die sich auf verschiedene Schritte des Visualisierungsprozesses beziehen (Abb. 9): Abb. 9: Interaktiver Einfluss auf den Visualisierungsprozess Analog zu dieser Unterteilung können folgende Interaktionen bzw. Operationen genannt werden (in Anlehnung an [3, 13, 14, 15, 16]): Interaktionen der Präsentations-Ebene • Overview = Übersicht über Datenmenge erlangen • Pan = Ansicht verschieben • Zoom = Ansicht vergrößern • History = zu einer bereits erzeugten Ansicht wechseln • Design Change = Wechsel der grafischen Details, z. B. Farbschema, visuelle Effekte (Schatten, Opazität …) • Relate = Anzeige oder Navigation zu Kontextinformationen, auch qualitativen Daten • Merge = Zusammenführung mehrerer Diagramme in einem einzigen • Extract = Export der angezeigten Datenobjekte in anderer Form zur Weiterverarbeitung Interaktionen der Mapping-Ebene: • Type Change = Wechsel des Diagrammtyps 18 Interaktionen der Filtering-Ebene: • Drill-up/down = Auswahl einer feineren Granularitätsstufe eines Datenausschnitts, z. B. Region Deutschland statt Region Europa • Drill-aside = Auswahl eines anderen Datenbereichs auf derselben Granularitätsstufe einer Dimension, z. B. Jahr 2001 statt Jahr 2002 • Slice & Dice = Auswahl anderer Dimensionen bzw. einer anderen Anordnung von Dimensionen8 • Sort = Datensätze nach einem Kriterium sortieren (alphabetisch, numerisch …) • Filter = Datensätze nach einem Filterkriterium einschränken • Group = Datensätze gruppieren • Aggregate = Berechnung statistischer Standardwerte • Relate = Datensätze vergleichen • Level of Detail (LOD)9 = Nachladen von Datenobjekten im Anschluss an eine Zoom-Operation Festzuhalten bleibt, dass die Zuordnung der Interaktion zur jeweiligen architektonischen Transformationsebene nicht trennscharf ist. Bei der Unterscheidung handelt es sich in erster Linie um eine Festlegung, in welchem Schritt des Visualisierungsprozesses (Filtering, Mapping, Rendering) die Operation zu verankern ist. Architektonisch kann die Operation aber auch in einer anderen Ebene erfolgen. D. h., das Filtern von Daten betrifft den Prozessschritt Filtering, kann aber programmatisch entweder durch eine Datenbank-Abfrage oder das reine Ausblenden von Elementen auf der Präsentationsebene umgesetzt werden. Diagrammkonstruktion Die Konstruktion eines Diagramms basiert auf den soeben beschriebenen, potenziell möglichen Diagrammelementen. Dabei wird es nötig sein, zunächst festzulegen, in welchem Kontext und für welche Erkenntnisziele das Diagramm eingesetzt werden soll. Nur für das Anwendungsszenario relevante Elemente wären bei der Konstruktion zu berücksichtigen. Prinzipiell sind zwei elementare Komponenten eines Diagramms zu verbinden: Zum einen ist eine Datenbeschreibung zu erstellen, d. h. eine Definition der Datenmenge, die in einem Diagramm visualisiert werden soll. Dies ist im verfolgten Szenario über die deklarative Sprache SQL, die in eine XSQL-Datei eingebettet wird, und – falls nötig – anschließenden Datentransformations-Operationen in XSLT möglich (in der Visualisierungs-Architektur als „Datenbeschreibung“ und Transformation des Filtering existent). Zum anderen handelt es sich um die Diagrammbeschreibung, d. h. eine Festlegung, welchen Typs das Diagramm sein soll und welche der genannten Interaktionsmechanismen es enthalten soll. Dies geschieht mit Hilfe des in der Visualisierungs-Architektur charakterisierten, separaten XML-Dokuments, das als „Diagrammbeschreibung“ bezeichnet ist. Beide Komponenten einer Diagrammkonstruktion sollen kurz beschrieben werden: 8 9 Dies kann ebenso über Drill-up/down als auch Drill-aside auf den Einstiegsebenen erfolgen. Auch als „Details-on-demand“ bezeichnet [Shneiderman]. 19 Datenbeschreibung Alle Diagrammelemente bis auf die Datenobjekte selbst geben den Kontext vor, in dem die Daten zu interpretieren sind, und scheinen auf den ersten Blick unabhängig von den Daten zu sein. Tatsächlich hängen allerdings auch die Diagrammzeichenfläche, Achsen, Skalen inkl. Skalenstrichen, Achsen- und Skalenbeschriftungen sowie Beschriftungen der Datenobjekte, Legende und Marker unmittelbar von den Quelldaten ab. So bestimmt bspw. die Datentopologie, welcher Art die verwendeten Skalen sind. Handelt es sich z. B. um unabhängige Datensätze (Einwohnerzahlen der Länder Europas, Umsätze pro Produktgruppe etc.), würde eine nominale Skala gewählt. Bei abhängigen Daten wäre dagegen eine ordinale oder kardinale Skalierung zu verwenden. [3, 17] Weiterhin bestimmt z. B. der maximale Y-Wert, wie groß die Diagrammzeichenfläche sein muss. Die enge Abhängigkeit zwischen allen Diagrammelementen ist nicht verwunderlich, da ja schließlich die Daten visualisiert werden sollen und alle Elemente diesem Zweck unterstellt sind. Indirekt sind demnach auch alle scheinbar frei bestimmbaren Elemente, z. B. das Farbschema (s. u.) davon abhängig und sollten sich an diesem Zweck ausrichten. Damit eine zweidimensionale Grafik entstehen kann, ist stets eine Transformation in einen zweidimensionalen Vektorraum nötig. Daher sind alle Daten zumindest in das Format eines kartesischen Koordinatensystems zu bringen. Sofern mehr als zweidimensionale Datenbestände in einem einzigen Diagramm abgebildet werden sollen, müssen die durch X-YKoordinaten definierten Datenpunkte um weitere grafische Elemente ergänzt werden. Im Blasendiagramm wird die Z-Dimension z. B. durch den Kreisradius repräsentiert. Prinzipiell wäre eine weitere Dimension aber ebenso gut durch Farbwerte oder andere visuelle Gestaltungsmittel darstellbar, z. B. die Simulation des dreidimensionalen Raums. Das Datenmodell, das aus dem Filtering-Schritt hervorgeht und als Grundlage für das Mapping von grafischen Objekten dient, muss die gewünschten Dimensionen berücksichtigen. Auf seiner Basis werden die grafischen Objekte durch den zweiten Transformationsschritt, d. h. im gewählten Szenario durch ein XSLT-Stylesheet (dem SVG Template) in Verbindung mit der Diagrammbeschreibung erzeugt. Diagrammbeschreibung Auch die Diagrammbeschreibung basiert auf den zu visualisierenden Daten, da sich nicht jeder Diagrammtyp wie schon angedeutet für jegliche Daten eignet. So impliziert ein Liniendiagramm einen zeitlichen Verlauf; es würde bei nominal vorliegenden Daten keinen Sinn ergeben. Zudem ist der semantische Kontext bzw. das Anwendungsszenario der Daten für die Wahl der Visualisierung wichtig. Da eine direkte Ableitung aus den Daten nicht oder zumindest nicht mit vertretbarem Aufwand möglich ist, erfolgt die Erstellung der Diagrammbeschreibung deklarativ durch den Menschen. Seinem qualitativen Einschätzungsvermögen wird die Maschine i. d. R. unterlegen sein. 20 XML-Diagramm-Basisstruktur Als Ergebnis der ersten Transformationsstufe, d. h. der Verbindung von Daten- und Diagrammbeschreibung sowie nötigen Strukturtransformationen ergibt sich analog zur oben konzipierten Visualisierungs-Architektur (Abb. 7) die Diagramm-Basisstruktur als XMLDokument. Sie bildet die Vorstufe der dynamischen Diagrammgenerierung. Die Modellierung eines XML-Schemas, das diese Basisstruktur fixiert, müsste demnach die XML-Elemente beider Komponenten, Daten- und Diagrammbeschreibung, definieren. XML-Schema für Diagramme Als Ausgangspunkt für eine Anpassung an das fachliche Anwendungsszenario und die eingesetzten Diagrammtypen könnte basierend auf den Ausführungen zur DiagrammKonstruktion eine hierarchische Struktur wie in Abb. 10 dienen.10 Die Nutzung dieser relativ generischen Grundstruktur ließe spätere Erweiterungen zu, ohne dass das Schema und damit die darauf basierenden Applikationsmodule modifiziert werden müssten. Ein völlig allgemeingültiges Schema ist aufgrund der Breite möglicher Diagrammtypen nicht realisierbar und ebenso wenig sinnvoll. Für ein spezielles Anwendungsszenario wird man darum bemüht sein, eine Balance zwischen generischer und fachspezifischer Gestaltung zu erreichen. Dadurch sind sowohl Lesbarkeit als auch Nachhaltigkeit gegeben. Abb. 10: XML-Schema für Diagramme Als Container-Element für alle folgenden XML-Elemente dient <diagramset>. Da es im Rahmen des grafischen Layouts einer Applikation zur Informationsanalyse nötig sein kann mehrere Diagramme parallel zu betrachten und flexibel zwischen Gruppen von Diagrammen hin- und herwechseln zu können, ist das Element <diagramgroup> als weiteres ContainerElement eine Hierarchiestufe darunter eingefügt. Die Existenz mehrerer Diagramme ergibt sich aus dem Vorkommen mehrerer Knoten des Elements <diagram> innerhalb dieses Containers. Schließlich ist mit den Elementen <config> und <dataset> eine grundsätzliche Unterteilung zwischen den deklarativ konfigurierbaren Objekten eines Diagramms und den sich unmittelbar aus den Daten ergebenden Objekten vorgenommen. Eine exakte Zuordnung der Elemente ist aufgrund der Interdependenz von Daten und Diagrammtyp ebenso wie für die Unterscheidung in generische und spezifische Konfigurationsparameter nicht zwingend 10 Sie entspricht dem, was Tang/Stolte/Bosch als „Specification“ bezeichnen: Einem „middle ground“, der die einfache Definition des vom Benutzer gewünschten Diagramms zulässt. [3] Diese XML-Datei bzw. die separaten Teile Daten- und Diagrammbeschreibung könnten benutzerfreundlich durch die Auswahl von Optionen in einem Web-Formular erzeugt werden. 21 vorzunehmen und kann je nach Szenario sicherlich modifiziert werden. Dennoch existieren im Rahmen des Gestaltungsprozesses diese grundlegenden Unterscheidungen. Im Bsp. (Abb. 11b) sind unter <specific> mögliche Ausprägungen für die Diagrammtypen Säulenund Liniendiagramm exemplarisch aufgeführt. Auch die Konfiguration der Skalen ist im Bsp. unter diesem Teilbaum realisiert. Abb. 11a: Teilbaum der generischen Diagrammbeschreibung Ein wichtiger eigener Bereich besteht im Knotenset <interaction>, das sowohl im Teilbaum der generischen als auch spezifischen Konfiguration existiert (Abb. 11a und 11b). Hier können klassische Interaktionsmechanismen von OLAP aktiviert werden, z. B. Drilldown oder Drill-aside. Die Existenz eines entsprechenden Elements zieht ggf. weitere Unterelemente nach sich, welche die Interaktion näher beschreiben. Leider lassen sich in einem XML-Schema Abhängigkeiten zwischen Elementen über die hierarchische Existenz, Reihenfolge und Anzahl hinaus nicht erzwingen. So können trotz der inhaltlich gegebenen Interdependenz z. B. keine logischen Abhängigkeiten zwischen Elementen des Teilbaums <dataset> und <config> definiert werden. Im Teilbaum <config> können neben interaktiv erreichbaren Informationen innerhalb des Elements <aggregation> statistische Standardberechnungen aktiviert werden, z. B. die Summe, der Mittelwert oder die Standardabweichung der angezeigten Datenpunkte. Das Element <colorscheme> schließlich legt die Art des Farbschemas, z. B. klassisch, modern oder Graustufen fest. 22 Abb. 11b: Teilbaum der spezifischen Diagrammbeschreibung Abb. 12: Teilbäume der Datenbeschreibung Das <dataset> gliedert sich in zwei Teilbäume, die zum einen datenspezifische Definitionen zulassen, zum anderen die generierten Daten unter der entsprechenden Rubrik (eindi- 23 mensional, zweidimensional, dreidimensional und multidimensional) sammeln (Abb. 12). Dabei ist sowohl eine Ableitung der Definitionen (<defs>) aus den Quelldaten als auch eine manuelle Festlegung denkbar, die direkt in der XML-Datenbeschreibung erfolgt. Eine mögliche Instanz eines Dokuments dieser Struktur ist in Codesbsp. 6 zu sehen. Es setzt sich wie oben geschildert aus der Diagramm- und Datenbeschreibung zusammen, die durch eine erste Transformation in die abgebildete Struktur überführt werden. <?xml version = '1.0'?> <diagramgroup> <diagram type="line"> <config> <generic> <colorscheme>classic</colorscheme> <interaction> <switch_colorstyle>false</switch_colorstyle> </interaction> </generic> <specific> <line_weight>3</line_weight> <dots_weight>5</dots_weight> <y_axis_ticks>adjusted</y_axis_ticks> <x_axis_scale>temporal</x_axis_scale> </specific> </config> <dataset> <defs> <title>Umsätze Business Unit “Music”</title> <x_axis> <unit>Jahre</unit> <label>Zeit</label> </x_axis> <y_axis> <unit>Anzahl in Mio.</unit> <label>Zugriffe</label> </y_axis> </defs> <data> <two_dim_item> <x_value>2001</x_value> <y_value>95</y_value> </two_dim_item> <two_dim_item> <x_value>2002</x_value> <y_value>110</y_value> </two_dim_item> ... </data> </dataset> </diagram> </diagramgroup> Codebsp. 6: XML-Instanz der Diagramm-Basisstruktur 24 Programmatische Erzeugung des XML-Schemas Analog zur Visualisierungs-Architektur ist die vorgestellte Basisstruktur als Ergebnis der ersten Transformation mit XSLT zur generieren. Dies geschieht einerseits in der XSQL-Datei der ersten Transformationsstufe (Codebsp. 7) durch das Zusammenführen von Diagrammund Datenbeschreibung mittels <xsql:include-xml>, andererseits durch die anschließende Strukturtransformation durch das Stylesheet. Im letztgenannten Schritt könnten zudem neben den bereits durch die Datenbank realisierten weitere Filtering-Operationen durchgeführt werden. Damit die korrekten XML-Elemente im resultierenden XML-Baum erzeugt werden, ist das Standardmapping (s. o.: rowset/row) von relationaler auf die XML-Struktur über die Attribute rowset-element und row-element zu modifizieren. Dadurch dass für die Xund Y-Werte des Koordinatensystems immer dieselben Aliasbezeichner verwendet werden (x_value bzw. y_value), kann das Stylesheet wiederverwendet werden. Prinzipiell wäre auch die Umbenennung der Knoten durch die erste Transformation möglich. An diesem konkreten Beispiel wird deutlich, dass aufgrund der hohen Flexibilität der Architektur bzw. der verwendeten Technologien meist mehrere Möglichkeiten der Realisation gegeben sind. Es ist anhand des Anwendungsszenarios zu entscheiden, welche Variante gewählt wird. Diese ist über alle Diagramme möglichst konsistent beizubehalten, um die Wartbarkeit des erzeugten Codes zu gewährleisten. <?xml version = '1.0'?> <?xml-stylesheet type="text/xsl" href="trans1.xsl" ?> <diagram> xmlns:xsql="urn:oracle-xsql" connection="myConn"> <xsql:include-xml href="dgr_config.xml"/> <dataset> <defs> <title>Umsätze Business Unit "Music"</title> <x_axis> <unit>Jahre</unit> <label>Zeit</label> </x_axis> <y_axis> <unit>Mio. EUR</unit> <label>Umsatz</label> </y_axis> </defs> <xsql:query rowset-element="data" row-element="two_dim_item"> SELECT year as x_value, sales as y_value FROM year_sales WHERE bu = 'MUSIC' </xsql:query> </dataset> </diagram> Codebsp. 7: XSQL-Seite der ersten Transformationsstufe Die inkludierte XML-Datei dgr_config.xml entspräche exakt dem Ausschnitt des Schemas für die Basisstruktur unterhalb des Teilbaums <config>. Sollen mehrere Diagrammbeschreibungen in einer einzelnen XML-Datei enthalten sein, müsste die Zusammen- 25 gehörigkeit der jeweiligen Diagramm- und Datenbeschreibung durch die konsistente Reihenfolge in XML- bzw. XSQL-Datei implizit festgelegt werden. Das umschließende Element <diagram> wäre dann durch <diagramset> zu ersetzen und die Stylesheet-Transformation entsprechend anzupassen. In der XML-Datei bildete <diagramgroup> das Wurzelelement. Auch in diesem Fall besteht eine Alternative: An Stelle der Strukturtransformation und Zuordnung von Diagramm- und Datenbeschreibung durch das Stylesheet kann auch die XSQL-Datei mehrere <xsql:query>- und <xsql:include-xml>-Elemente aufnehmen und so eine explizite Zuordnung vornehmen. Auf die Wiedergabe der XSLT-Datei, welche die Transformation in die DiagrammBasisstruktur vornimmt, wird hier verzichtet, da es sich um eine einfache Strukturtransformation handelt. Diagramme und SVG Im Rahmen der zweiten Transformationsstufe stellt sich die Frage, welche konkreten SVG-Elemente auf die Daten gemappt werden sollen. Da sich mit SVG Linien, Rechtecke und Kreise neben normalem Text darstellen lassen, können die entsprechenden klassischen Diagrammformen (Linien-, Säulen- und Tortendiagramm) leicht erzeugt werden.11 Allerdings existiert für derartige Diagramme eine Vielzahl an Standardsoftware, die eine Eigenentwicklung nur schwer rechtfertigen dürfte. Jedoch geht der Sprachumfang von SVG deutlich über diese einfachen grafischen Elemente hinaus und beinhaltet grafische Primitive wie Ellipsen, Polygone und Pfade, mit denen sich z. B. Béziers-Kurven erzeugen lassen. Auch Attribute wie Füllung, Strichbreite und Farbe lassen sich beeinflussen. Dabei sind nicht nur eine einfache Farbgebung sondern auch Farbverläufe und Muster sowie Filtereffekte anwendbar. Zudem können Transformationen des zweidimensionalen Vektorraums inkl. einfacher Matrixtransformationen durchgeführt werden. Durch dieses Potenzial lassen sich insbesondere sehr individuelle Diagramme effizient programmieren und durch die Kombination mit grafischen Objekten, die aus Zeichenprogrammen exportiert und in SVG eingebettet werden (z. B. aus CAD-Programmen), fachspezifisch gestalten. Einen entsprechenden Gestaltungsumfang kann Standardsoftware nicht bieten. Da SVG die Kombination und das flexible Layout unterschiedlicher eigenständiger SVGDateien zulässt, ist ein modularer Aufbau von komplexen Diagrammen möglich. Zudem kann SVG als Objekt in HTML eingebettet werden, sodass durch die Vermittlung von JavaScript, dem der komplette DOM-Baum zugänglich ist, übergreifende Interaktionen möglich werden. Exemplarisch zeigt folgender Ausschnitt aus einem XSLT-Dokument das Mapping von Daten auf grafische Objekte (Codebsp. 8): 11 Diese Aussage soll nicht darüber hinwegtäuschen, dass teilweise aufwändige mathematische Berechnungen für die Beeinflussung nötig sind. Bspw. können Kreisausschnitte nur durch den Einsatz trigonometrischer Formeln zufriedenstellend berechnet werden. [5, 18, 19, 20] 26 <?xml version = '1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output doctype-public="-//W3C//DTD SVG 20001102//EN" doctype-system="http://www.w3.org/TR/2000/CR-SVG20001102/DTD/svg-20001102.dtd" media-type="image/svg+xml" method="xml" /> <xsl:template match="/"> <svg xmlns="http://www.w3.org/2000/svg" width="500" height="500"> <g id="datapoints"> <xsl:for-each select="diagramset/diagramgroup/diagram/dataset/ data/two_dim_item"> <xsl:call-template name="datapoints"> <xsl:with-param name="rowIdx" select="position()"/> <xsl:with-param name="y_value" select="y_value"/> </xsl:call-template> </xsl:for-each> </g> </svg> </xsl:template> <xsl:template name="datapoints"> <xsl:param name="rowIdx"/> <xsl:param name="y_value"/> <circle id="dp_{$rowIdx}" cx="{$xoffset + $rowIdx * 20}" cy="{$yoffset + $y_value}" r="{$dp_weight}" class="dgrDatapoint"/> </xsl:template> Codebsp. 8: Mapping von Daten auf SVG-Elemente Für jeden Datensatz (two_dim_item) wird das Template mit dem Namen datapoints aufgerufen und ein Kreis mit dem Radius dp_weight erzeugt. Die Y-Position ergibt sich direkt aus dem Wert des Knotens y_value zuzüglich eines Offsets. Die X-Position ist dagegen abhängig von der relativen Position des Datensatzes im XML-Baum (rowIdx), dem Standardversatz 20 und ebenfalls einem Offset. Neben den Template-Anweisungen für die Erzeugung der SVG-Elemente wird in dem Stylesheet auch ein größerer Abschnitt der Berechnung wichtiger Diagrammeigenschaften gewidmet sein, die in Variablen mit der Anweisung <xsl:variable> abgelegt werden. Dies sind z. B. die Größe der Diagrammzeichenfläche, die Anzahl der Datensätze, das Skalierungsmaß für eine X- bzw. Y-Einheit oder der maximale X- und Y-Wert. Beim Aufruf eines Templates, das ein bestimmtes Diagrammelement zeichnet, werden dann diejenigen Variablen als Parameter übergeben, die für die Bestimmung der Eigenschaften des Elements (Position, Größe etc.) benötigt werden. 27 Diagramminteraktionen mit SVG und XSQL SVG und Interaktivität Neben dem Mapping auf SVG-Elemente, welche die Daten und ihren Kontext visualisieren, müssen zudem Elemente erzeugt werden, welche die gewünschten Diagramminteraktionen umsetzen. SVG bietet drei Möglichkeiten, um grafische Elemente bzw. Text mit Interaktivität auszustatten: Das simpelste, wenngleich effektiv einsetzbare Element ist der aus HTML bekannte <a>Tag. Analog zu HTML lassen sich hierüber Hyperlinks zu weiteren Diagrammen erzeugen (bzw. XSQL-Seiten, welche diese Diagramme generieren), wodurch z. B. ein Drill-down/-up oder -aside realisierbar ist. Animationen werden durch die in SVG integrierte SMIL ermöglicht. Auslöser für Animationen können neben der rein zeitlichen Steuerung Maus- oder Tastatur-Ereignisse sein. Auf diese Weise lässt sich die Aufmerksamkeit des Betrachters auf einzelne Elemente lenken (z. B. bei einem Marker) oder die Möglichkeit der Interaktivität bei mouseover signalisieren. Auch dynamische Grafiken sind denkbar, z. B. die Veränderung von Ländergrenzen im Geschichtsverlauf. Die weitaus mächtigste und komplexeste Funktionalität bietet ECMAScript, das i. d. R. als JavaScript implementiert ist, und mit dem sich das Document Object Model (DOM), d. h. der komplette SVG-Elementbaum manipulieren lässt. In Verbindung mit der verfügbaren, umfangreichen Ereignisbehandlung kann damit die direkte Manipulation von Steuerelementen der Benutzerschnittstelle (z. B. Schieberegler) oder Diagrammelementen selbst erfolgen. Im ersten Fall könnten Zoom und Pan realisiert werden, in letzterem ließen sich damit weitere typische OLAP-Diagramminteraktionen wie Drill-aside, Slice oder Dice unterstützen. Auch What-if-Szenarien sind denkbar. Konzeptionell ist die für einzelne Diagrammtypen grundlegende Interaktivität – wie gezeigt – separat in der oben angeführten Basisstruktur zu beschreiben. Individuelle, komplexe Interaktionen müssten dagegen im SVG Template des jeweiligen Diagrammtyps situativ ergänzt werden. Interaktive Operationen mit XSQL Die vorgestellte Visualisierungs-Architektur sieht eine Aufspaltung in mehrere Ebenen bzw. Module vor, um Flexibilität der Applikation zu erzielen. Dies bringt neben der separation of concerns aber auch Komplexität mit sich, da Diagramme – wie oben ausgeführt – nur im Kontext adäquat zu erfassen sind, und dieser Kontext prinzipiell auf jeder Transformationsstufe vorliegen muss. [3] Speziell im Hinblick auf interaktive Diagrammoperationen ist dies zu betonen. So muss für das auf einen Drill-down folgende Diagramm feststehen, welcher Datenausschnitt gewählt werden soll. Umgekehrt muss bei einem Drill-up bekannt sein, aus welchem Datenausschnitt der Drill-down erfolgte, d. h. wohin zurück zu kehren ist. Auch ein Drill-aside sollte nur dann erfolgen können, sofern für das anschließende „Slice“ auch Daten vorhanden sind. Diese einfachen Beispiele zeigen bereits die große Bedeutung des Diagrammkontexts für die Navigation im Datenraum. Insbesondere sofern eine Interaktion erfolgt, die sich der Transformation Filtering zuordnen lässt, sind komplexe Kontextoperationen nötig. 28 Das XSQL Publishing Framework bringt durch seinen allgemeingültigen Ansatz die Einschränkungen mit sich, dass die volle programmatische Umgebung nicht „out-of-the-box“ zur Verfügung steht. In erster Linie sind bereitgestellte Action Handler zu nutzen; nur für sehr spezielle Anwendungen wird man den Weg des Customizing gehen wollen und auf die angebotenen APIs zurückgreifen. Wird eine Seiten-basierte Navigation der Applikation gewählt, sind zwischen den SVG-Seiten daher Parameter zu übergeben, die den Diagrammkontext repräsentieren. Dies ist bei einer mehrstufigen Architektur und Seiten-basierter Navigation nicht trivial, lässt sich aber durch verfügbare Action Handler realisieren: • Die Referenz {@param} auf einen mit der URL übergebenen Parameter kann in einer XSQL-Seite zur dynamischen Anpassung von Attributen oder Elementinhalten dienen. • <xsql:include-request-params> integriert sämtliche mit der URL übergebenen Parameter in die vom XSQL Page Processor erzeugte XML-Datei der Daten, sodass diese im anschließenden Stylesheet als XML-Elemente zur Verfügung stehen. • <xsql:set-stylesheet-params> erlaubt das Setzen eines im anschließenden Stylesheet verfügbaren Parameters, der dort über <xsl:param/> deklariert ist. • <xsql:set-session-param> erlaubt das Setzen eines Parameters, der für die Dauer der HTTP-Sitzung zur Verfügung steht. • <xsql:if-param> erlaubt die Kontrollflusssteuerung basierend auf der Existenz oder dem Wert eines Parameters. Durch die Übergabe von Parametern mit der URL und deren flexible Weiterverwendung kann eine Verkettung von XML-Seiten sowohl über die Transformationsstufen hinweg als auch entlang der Navigation durch den Datenraum erfolgen. So könnte die URL http://www.myserver.de/olap/diagram1.xsql?dimx=time&dimy=sales&dim0= 2001&dim1=Jan semantisch bedeuten, dass es sich um eine zweidimensionale Ansicht der Dimensionen Umsatz und Zeit handelt, die Quellgranularität im Jahr 2001 und die Zielgranularität im Monat Januar besteht. Damit wäre durch den Navigationspfad der elementare Kontext für das Zieldiagramm gegeben. Evaluation Prototyp Zur Evaluation des Konzepts wurden zwei Diagramme mit unterschiedlichen Eigenschaften als Prototypen umgesetzt. Zunächst wurde ein Liniendiagramm als klassisches und leicht nachvollziehbares Diagramm realisiert. Über Hyperlinks und unter Verwendung desselben SVG Template ist hier der Drill-down zu detaillierteren Dimensionsgraden möglich. ECMAScript-Ereignisse liefern im Diagramm kontextsensitive Zusatzinformationen (Abb. 13). 29 Abb. 13: Screenshot des Prototyps „Liniendiagramm“ Zudem wurde ein individualisiertes Diagramm umgesetzt, welches die Spezifika von SVG stärker als klassische Diagrammtypen ausschöpft (Abb. 14). Dazu wurde ein Bild im PNG-Format eingebunden, das die Szenerie eines Wintersportgebiets zeigt. Auf diesen visuellen Kontext werden weitere, steuerbare SVG-Elemente gezeichnet. Neben einer Überblicksansicht ist die Möglichkeit einer Level of Detail-Interaktion gegeben. So lassen sich wichtige Informationen für das Gesamtsystem (z. B. Zustand der Lifte, Verteilung der Skifahrer) in der Überblicksansicht erfassen und bei einem Indiz für eine vom Soll-Zustand abweichende Information auf der Makroebene ein Zoom in die Mikroebene vornehmen. Hier werden zusätzliche grafische Elemente nachgeladen bzw. sofern im DOM-Baum bereits vorhanden über die Änderung des Style-Attributs visibility zur Ansicht gebracht.12 12 Exemplarisch wurde dabei die Integration von bereits existierenden ECMAScript-Bibliotheken zur Verarbeitung von SVG erprobt. Der Prototyp wurde unter Verwendung der ursprünglich für Karten entwickelten Bibliotheken von carto.net [26] umgesetzt. Die Module des Open Source-Frameworks bieten eine gute Basis für komplexe Interaktivität, die durch ECMAScript realisiert wird. 30 Abb. 14: Screenshot des Prototyps „Individuelles Diagramm“ Lessons Learned Einige wichtige Erkenntnisse lassen sich in Verbindung mit der Evaluation festhalten: Zum einen soll nochmals betont werden, wie wichtig der Diagrammkontext für eine adäquate Visualisierung einschließlich der komfortablen Navigation im Datenraum ist (vgl. auch [21]). Erst wenn dieser Kontext vorliegt, lässt sich das Potenzial von SVG, nämlich die differenzierte grafische Gestaltung bei der Repräsentation von Informationen und die weitreichende Interaktivität ausschöpfen. Hier sind der Kreativität gerade im Hinblick auf eine benutzerfreundliche Gestaltung kaum Grenzen gesetzt. Möchte man z. B. bereits auf einer höheren Ebene der Datengranularität Hinweise auf darunter liegende Anomalien (eingeschränkt verfügbare Daten, Abweichungen vom Soll-Wert etc.) wiedergeben, muss zugleich der Kontext der darunter liegenden Ebenen vorhanden sein. Diesen herzustellen ist nicht einfach. Der enge Zusammenhang aller Diagrammelemente wurde schon erwähnt. Insbesondere die Wahl der richtigen Skalierung – neben nominal, ordinal, kardinal müssen temporale Skalen als eigene Kategorie betrachtet werden, da sie eine eigene Qualität besitzen [13] – scheint eine gute Basis für alle übrigen grafischen Berechnungen zu sein. Überhaupt können selbst für visuell einfach gehaltene Diagramme umfangreiche mathematische Operationen durchzuführen sein. Was die Modellierung eines XML-Schemas der Diagramm-Basisstruktur angeht, ist die Auffassung über eine Balance zwischen Allgemeingültigkeit und Ausrichtung auf spezielle Diagrammtypen diskussionsbedürftig. Besonders wichtig ist daher eine umfassende Analyse 31 des Anwendungsszenarios der Diagramme und der zukünftigen Entwicklung einer Applikation. Das sog. Painter Model von SVG, d. h. die Überdeckung von Elementen bei nachfolgender Zeichnung an derselben Stelle, muss – so einfach es ist – stets berücksichtigt werde. Dies verbietet die Abarbeitung von Mapping-Transformationen in einem Schritt, obwohl sie der gleichen Logik unterworfen sind. Hier hilft nur die Auslagerung der Berechnung in ein eigenes Template, um Redundanzen im Code zu vermeiden. Neben der Auslagerung von Berechnungen empfiehlt sich unbedingt die Kapselung der Funktionalität zur Generierung der oben unterschiedenen Diagrammelemente in eigenen Templates. Dadurch können diese wie Funktionen mit Parametern aufgerufen werden. Das Ergebnis ist ein flexibler Baukasten für die Generierung verschiedener Diagrammelemente. Da XSLT-Dateien in andere eingebunden werden können, lassen sich die SVG Templates zur Generierung spezieller Diagramme aus bereits vorhandenen Stylesheets modular konstruieren, indem nur die dafür benötigten Templates integriert werden. Die Modularisierung sollte sich zudem auch auf gesamte Diagramme beziehen, damit Ansichten mit mehreren unterschiedlichen Diagrammtypen zusammengestellt werden können (Dashboards, Diagramm im Diagramm etc.). Hinsichtlich der Werkzeug-Unterstützung der Entwicklung besteht noch Bedarf. So existiert im JDeveloper über die Prüfung der XML-Konformität hinaus momentan keine Unterstützung der Syntax von SVG. Entsprechend lassen sich komfortable Unterstützungsfunktionen wie z. B. Code Complete nicht nutzen. Zudem ist das Debuggen von gemischtem Code, d. h. SVG innerhalb XSLT, schwierig. Hier ist man auf die Unterstützung des Debuggers im SVG-Viewer angewiesen, der Hinweise auf syntaktische oder semantische Fehler gibt. Ausblick Das XSQL Publishing Framework verfügt über eine Reihe von Action Handlern und Konfigurationsparametern, die hier nicht vorgestellt wurden. Sie lassen sich ebenso wie die Möglichkeit der Erweiterung des Framework um benutzerdefinierte Java-Funktionen und fortgeschrittene XML-Techniken [22] zur Verbesserung einer Applikation einsetzen. Allerdings ist angesichts der Komplexität der Parameterübergabe über mehrere Stufen einer Architektur hinweg auch über die Seiten-basierte Navigation und den dabei schwer herzustellenden Diagrammkontext nachzudenken. Bei funktional mächtigeren Applikationen ließen sich weitere Web-Technologien einbinden, die jeweils ihre Stärken einbringen könnten. Neben der Einbettung von SVG in HTML zur Nutzung von Formularen oder weiteren medialen Objekten [23] ist die Verwendung von AJAX aufgrund der Wahl von XML als Kerntechnologie des XSQL Publishing Frameworks naheliegend [24]. Auf diese Weise könnten wichtige Kontextvariablen in JavaScript repräsentiert sein, die Navigation durch Modifikation eines womöglich über mehrere Ebenen der Datengranularität aufgebauten XML-Baums erfolgen und nur im Falle eines Dimensionswechsels oder Unterschreiten einer Detailstufe das Nachladen von Daten über einen XSQL-Aufruf erfolgen. Frameworks, die auf eine komfortable interaktive Benutzerschnittstelle im Web abzielen (z. B. Oracle ADF oder das Google Web Toolkit – GWT ) könnten ergänzend für eine benutzerfreundliche Gestaltung eingesetzt werden. Das Filtering ließe sich ggf. verstärkt im Middletier, d. h. durch XSLT vornehmen. Dies hätte Vorteile für die Integration von Datenquellen, die nur XML als Format liefern können und keine mächtigen Datentransformationen anbieten. Durch die Weiterentwicklung der 32 XML-Technologie werden die Performance-Nachteile zunehmend eine untergeordnete Rolle spielen. So hat Oracle mit der neuen Java-Umgebung in der Datenbank-Version 11 einen sog. „Scalable DOM“ eingeführt, der die Performance von Parsing-Operationen deutlich steigert. Hinsichtlich der Reaktionszeit einer Applikation kann SVG bei großen Datenmengen, die in einem Diagramm analysiert werden sollen, an seine Grenzen stoßen. In diesem Fall wird zu anderen Technologien, z. B. Applets mit Java 2D-Komponenten gegriffen. Entsprechend sind die Hersteller der SVG-Viewer gefragt, auch ein schnelles Rendering für SVG anzubieten. Einen großen Vorteil besitzt SVG gegenüber Web-Technologien wie Flex und Silverlight: Es bleibt durch seine Repräsentation als XML-Dokument flexibel weiterverarbeitbar. Das genannte XSQL Publishing Framework von Oracle ist nur eine Möglichkeit dieses Potenzial auszuschöpfen. Darüber hinaus existieren (z. B. im Umfeld des Apache Project) mannigfaltige Möglichkeiten, die vorgestellte Architektur zu erweitern und um Funktionalität zu ergänzen und damit für spezielle Anwendungsszenarien attraktiv zu machen. Auf der Präsentationsebene könnten parallel Formate wie PDF oder RSS für unterschiedliche Information Consumer erzeugt werden und im Middletier könnte die Integration von anderen XMLDerivaten wie die Extensible Business Reporting Language (XBRL) [25] erfolgen. Literatur [1] http://www.oracle.com/technology/tech/xml/xdkhome.html [2] http://www.w3.org/Graphics/SVG [3] Tang, Diane; Stolte, Chris; Bosch, Robert: Design Choices when Architecting Visualizations. In: Proceedings of the IEEE Symposium on Information Visualization 2003 (INFOVIS 2003). [4] Card, Stuart K.; Mackinlay, Jock D.; Shneiderman, Ben: Readings in Information Visualization: Using Vision to Think. San Francisco: Morgan Kaufmann 1999. [5] Rathert, Nikolas A.: Knowledge Visualization Using Dynamic SVG Charts. In: Geroimenko, Vladimir; Chen, Chaomei (Hrsg.): Visualizing Information Using SVG and X3D. XML-based Technologies for the XML-based Web. London: Springer 2005, S. 245-255. [6] http://wiki.svg.org/Viewer_Matrix [7] König, Kai; Trask, John-Daniel: Im Wettstreit. Flex vs. Silverlight: Unterschiede und Gemeinsamkeiten. In: iX 2008, Hft. 8, S. 42-46. [8] Walter, H.-D.: „Rich Internet Applications“ – Eine perfekte Kombination benutzerfreundlicher Schnittstellen mit Webtechnologie. In: Informatik Spektrum 31 (2008), S. 333-343. [9] Oracle XML Developer's Kit – Programmer’s Guide. 10g Rel. 2 (B14252-01). [10] Thomas, Michael D.: Oracle XSQL. Combining SQL, Oracle Text, XSLT, and Java to Publish Dynamic Web Content. Indianapolis (IA): Wiley 2003. [11] Muench, Steve: Building Oracle XML Applications. Sebastopol (CA): O’Reilly 2000. [12] White, Jan V.: Using charts and graphs: 1000 ideas for visual persuasion. New Providence (NJ): Bowker 1984. [13] Shneiderman, Ben: A Task by Data Type Taxonomy for Information Visualization. In: Proceedings of the IEEE Symposium on Visual Languages 1996 (VL 96). [14] Kemper, Hans-Georg; Mehanna, Walid; Unger, Carsten: Business Intelligence. Grundlagen und praktische Anwendungen. 2. Aufl. Wiesbaden: Vieweg 2006. [15] Ueberschär, Nicole; Winter, André M.: Visualisieren von Geodaten mit SVG im Internet. Band1: Scalable Vector Graphics – Einführung, clientseitige Interaktionen und Dynamik. Heidelberg: Wichmann 2006. 33 [16] Rodrigues Jr., Jos´e F.; Traina, Agma J. M.; de Oliveira, Maria Cristina F.; Traina Jr., Caetano: Reviewing Data Visualization: an Analytical Taxonomical Study. In: Proceedings of the IEEE Conference on Information Visualization 2006 (INFOVIS 2006). [17] Tory, Melanie; Möller, Torsten: Rethinking Visualization: A High-Level Taxonomy. In: Proceedings of the IEEE Conference on Information Visualization 2004 (INFOVIS 2004). [18] Bader, Herbert: SVG Reporting. Vektorgrafiken im Web einsetzen. Frankfurt: Software & Support 2004. [19] Tidwell, Doug: XSLT. 2. Aufl. Sebastopol (CA): O’Reilly 2008. [20] Mangano, Sal: XSLT Cookbook. 2. Aufl. Sebastopol (CA): O’Reilly 2006. [21] Chen, Chaomei: Information Visualization. Beyond the Horizon. 2. Aufl. London: Springer 2004. [22] Scardina, Marc; Chang, Ben; Wang, Jinyu: Oracle Database 10g XML & SQL: Design, Build, & Manage XML Applications in Java, C, C++, & PL/SQL. New York: McGraw-Hill 2004. [23] Eisenberg, J. David: SVG Essentials. Sebastopol (CA): O’Reilly 2002. [24] Powers, Shelley: Adding Ajax. Sebastopol (CA): O’Reilly 2007. [25] http://www.xbrl.org [26] http://www.carto.net Kontaktadresse: Florian Werner Universität Tübingen – Lehrstuhl Wirtschaftsinformatik Melanchthonstr. 30 72074 Tübingen E-Mail: [email protected] Telefon: +49(0)7071-2975421 34