Anwendungen mit Tamino 4.4 entwickeln

Vierter Aufzug, vierte Szene
Kommentare

Die Version 4.4 des Tamino XML Servers der Software AG bietet umfassende neue Funktionalität für die XML-basierte Informationsintegration und die Entwicklung von XML-basierten Anwendungen. Anhand eines Beispiels werden einige der neuen Features demonstriert.

In den letzten Jahren hat XML seinen Siegeszug als Standardformat für den Datenaustausch fortgesetzt. Neuen Schub hat diese Entwicklung durch den Hype der serviceorientierten Architekturen (SOA) erhalten. Dies verstärkt die Notwendigkeit, große Mengen von XML-Daten zu verwalten. Dieser Umstand hat die namhaften Datenbankhersteller dazu bewogen, native XML-Datenbanksysteme zu entwickeln oder zumindest eine Form der nativen XML-Verarbeitung in ihre Systeme zu integrieren. Durch die Nutzung von XML als Speicher- und Datenaustauschformat erhöhen sich die Anteile einer Applikation, die sich mit der Verarbeitung von XML beschäftigen. Die Software AG hat im 4. Quartal 2005 eine neue Version ihres Tamino XML Servers [1] auf den Markt gebracht, um den höheren Anforderungen an die Verwaltung von XML in modernen Applikationen zu begegnen.

Die Neuerungen in Tamino Version 4.4 wurden vornehmlich unter der Berücksichtigung folgender Blickrichtungen entwickelt. Zur performanten Unterstützung der WebDAV-Technologie [2], auch als Web Folders bezeichnet, wurde die zur Verfügung stehende Funktionalität direkt in den Kern des XML Servers verlagert und neu konzipiert. Somit steht heute eine hochskalierende WebDAV-Unterstützung zur Verfügung, die vollständig auf XML-Standards setzt und dem Tamino-Anwender die Möglichkeit gibt, über andere Tamino-Schnittstellen, wie beispielsweise XQuery [3], auf die gespeicherten Daten zugreifen zu können.

Ein weiterer Punkt ist die verbesserte Unterstützung der W3C-Standards XML Schema und XQuery. Die Abdeckung von XML Schema ist nahezu komplett. Die wichtigsten XQuery-Neuerungen sind die Einführung von benutzerdefinierten XQuery-Funktionen und Modulen. Hierdurch wird die Ausdrucksmächtigkeit des angebotenen XQuery-Sprachumfangs entscheidend erweitert. Gleichzeitig ermöglichen die Module eine Aufteilung und Wiederverwendbarkeit von XQuery-Anfragen. Durch die Möglichkeit, Anfragen an ODBC-konforme relationale Datenbanksysteme zu stellen, erlaubt Tamino 4.4 über das Modulkonzept XQuery-Sichten über verteilte und heterogene Datenquellen zu definieren und zu verwalten. Komplexe Anfragen lassen sich nun leicht durch die Kombination von benutzerdefinierten Funktionen formulieren.

Nachdem der Tamino XML Server mehr und mehr in mittleren und großen Produktiv-Systemen zum Einsatz kommt, ist es geboten, nicht nur die Performanz und Effektivität zu erhöhen, auch Sicherheit im Sinne einer Hochverfügbarkeit (High Availability – HA) spielt hier eine sehr große Rolle. Somit sorgt die neue Version für erhöhte Robustheit und Verfügbarkeit. Die Unterstützung eines SOAP-API (SOAP v1.2) ermöglicht die Integration von Tamino in eine serviceorientierte Architektur. Darüber hinaus kann Tamino über sein UDDI-3.0-API als Web Services Registry eingesetzt werden.

Die vorliegenden Tamino-Neuerungen erleichtern das Erstellen von XML-basierten Applikationen. Am besten lässt sich dies anhand eines Beispiels beschreiben.

Ein verteiltes XML-basiertes Bestellsystem

Als Beispiel soll hier ein System zur Verwaltung von Bestellungen betrachtet werden. Wie in Abbildung 1 dargestellt, verwaltet das Beispielsystem Daten über Bestellungen, Kunden und Produkte. Die Bestellungen werden in einer relationalen Datenbank verwaltet. Eine Bestellung verweist auf die bestellten Produkte, den Kunden und das Bestelldatum. Die Produkt- und Bestelldaten befinden sich im Tamino XML Server. Die Produktdaten bestehen aus einem XML-Dokument, das Grundinformationen wie Name, ProduktId, Preis und Kategorie enthält, und einer umfangreichen Beschreibung, die in Form von WordML vorliegt, das heißt, dass es sich bei den Detailbeschreibungen um Microsoft-Word-Dokumente handelt. Die Bestelldaten liegen in Form von XML-Dokumenten vor. Der Zugriff auf die Daten inklusive der Kundendaten erfolgt über die XQuery-Schnittstelle des Tamino XML Servers. Möglich wird dies durch die Fähigkeit des Tamino XML Servers, über XQuery auf ODBC-konforme Datenquellen zuzugreifen. Wie in [4] vorgestellt, lassen sich mittels XQuery in Tamino beliebige XML-Dokumente erzeugen. Insbesondere ist es möglich, Reports in Form von WordML zu erzeugen. Diese können in Tamino abgelegt werden. Der Zugriff kann direkt von Microsoft Word aus über die Tamino-WebDAV-Schnittstelle erfolgen.

Komponenten und Kommunikation im Beispielsystem
Reportgenerierung

Zur Reportgenerierung unter Einbeziehung der Kundendaten muss die ODBC-Datenquelle zunächst dem Tamino-Server zugänglich gemacht werden. Zu diesem Zweck wird die Tamino-X-Node-Technologie eingesetzt. Beim Zugriff auf SQL-Tabellen werden diese auf virtuelle XML-Dokumente abgebildet. Hierzu muss ein XML Schema definiert werden, das XML-Strukturen auf SQL-Tabellen und deren Spalten abbildet. Abbildung 2 zeigt Ausschnitte aus dem über den Tamino-Schema-Editor dargestellten XML Schema, die im Beispiel verwendet werden. Das XML Schema für Dokumente mit dem Root-Element Kunde ist auf eine Tabelle eines RDBMS gemapped, somit kann diese Tabelle wie ein XML-Dokument benutzt werden, das in Tamino gespeichert ist. Folgende Anfrage liefert die Anzahl der Kunden mit Sitz in den USA. Für die Anfrageformulierung spielt es keine Rolle, dass es sich tatsächlich um eine SQL-Tabelle und nicht um ein XML-Dokument handelt.

Schemas der verwendeten XML-Typen
count(
  for $kunde in collection("Shop")/Kunde
  where $kunde/Land = "USA"
  return $kunde
)

Mittels XQuery ist es nun möglich, die SQL-Datenquelle mit den in Tamino gespeicherten Dokumenten zu verknüpfen. Aufgrund der Informationen in den Kundendaten können nun z.B. alle Bestellungen für Kunden aus einem speziellen Land ermittelt werden. Die entsprechende XQuery-Anfrage, die eine Bestellübersicht für die USA liefert, zeigt Listing 1.

Listing 1
============================


{
for $kunde in collection("Shop")/Kunde
where $kunde/Land = "USA"
order by $kunde/@KundenId
return

{
for $bestellung in collection("Shop")/Bestellung
where $kunde/@KundenId = $bestellung/KundenId
order by $bestellung/Datum
return

{
string($bestellung/@BestellungsId)
}

{
$bestellung/Datum
}

}

}

Sie liefert folgendes Ergebnis:

12342006-01-05T10:10:10+010012392006-01-06T12:12:10+0100

Bloßes XML ist als Report-Format denkbar ungeeignet. Trotz der Verwendung von anwenderverständlichen Tags ist das Ergebnis nur schwer lesbar. Insofern ist es wünschenswert, die Anfrageergebnisse in eine lesbare Darstellung zu überführen. Wie in [4] beschrieben, lassen sich mittels XQuery WordML- oder XHTML-Dokumente erzeugen. Hierzu müsste man jedoch die Beispielanfragen mit Formatierungsanweisungen anreichern. Um den Teil einer Anfrage, der die Daten beschafft, von den Formatierungsanweisungen sauber zu trennen, können XQuery-Funktionen und Module verwendet werden.

Reportgenerierung

Durch eine Trennung von Datenbeschaffung und Formatierung kann das Ausgabeformat nach Belieben variiert werden, ohne dass davon die Datenbeschaffung betroffen ist. Diese Trennung lässt sich erreichen, indem ein Modul zur Datenbeschaffung und ein weiteres für die Formatierung definiert werden. Der folgende Code definiert ein Datenbeschaffungsmodul mit den benutzerdefinierten Funktionen zur Kapselung der Anfragen zur Kundenermittlung und der Aufstellung einer Bestellübersicht für ein gegebenes Land (Listing 2).

Listing 2
============================

sichergemodule
namespace data = "www.example.org/
xquery-module/data-retrieval";
declare function data:getKunden($land as xs:string)
{
for $kunde in collection("Shop")/Kunde
where $kunde/Land = $land
return $kunde
};
declare function data:getBestellUebersicht
($land as xs:string)
{

{
for $kunde in data:getKunden($land)
order by $kunde/@KundenId
return

{
for $bestellung in collection("Shop")/Bestellung
where $kunde/@KundenId = $bestellung/KundenId
order by $bestellung/Datum
return

{
string($bestellung/@BestellungsId)
}

{
$bestellung/Datum
}

}

}

};

Das Formatierungsmodul enthält die Funktionen zur Generierung von WordML. Diese haben als Argument die zu formatierenden Daten sowie den Namen eines Word-Dokuments, das als Formatierungs-Template dient [4].

module namespace format = "www.example.org/xquery-module/wordml-formatting";

declare function format:formatKunden($kunden as element()*, $temp as xs:string)
{
  .
};

declare function format:formatBestellUebersicht
($bestellUebersicht as element()*,  $temp as xs:string)
{
  .
};

Die Anfrage, die die Reportgenerierung anstößt, braucht nur noch beide Module zu importieren und die entsprechenden Funktionen aufzurufen. Dabei bildet das Ergebnis der Datenbeschaffung die Eingabe für die Formatierungsfunktion. Folgende Anfrage liefert ein WordML-Dokument, das eine Bestellübersicht enthält.

import module namespace data = "www.example.org/xquery-module/data-retrieval"
import module namespace format = "www.example.org/xquery-module/wordml-formatting"
 
format:formatBestellUebersicht(data:getBestellUebersicht("USA"), "myTemplate")

Die Anfrage hat eine hohe Komplexität, die in den aufgerufenen Funktionen verborgen ist. Um für solche komplexe Anfragen eine angemessene Performanz zu gewährleisten, bietet Tamino 4.4 eine Reihe von Optimierungsmöglichkeiten. Hierzu gehören das Vorübersetzen von Anfragen und das Inlining von benutzerdefinierten Funktionen.

Speicherung via WebDAV

In unserem Beispiel-Bestellsystem haben wir uns entschieden, die Detailbeschreibungen als Word-Dokumente im WordML-Format abzulegen. Das hat den Vorteil, dass die Beschreibungen mit einem weit verbreiteten Editor (also MS Word) bearbeitet werden können. Dank des WebDAV-Interface im Tamino Server ist dies kein Problem, denn in Word 2003 wird das WebDAV-Protokoll zum Speichern und Laden von Dokumenten unterstützt. Neben XML-Dokumenten mit einem passenden XML Schema können im Tamino XML Server auch beliebige Dokumente im Binärformat oder XML-Dokumente ohne XML Schemas gespeichert werden. Im Fall von WordML stehen XML Schemas von Microsoft zur Verfügung, die direkt in Tamino definiert werden können. Durch die automatische Schema-Validierung wird somit sichergestellt, dass nur gültige WordML-Dokumente gespeichert werden. Die Nutzung von Schemas ermöglicht zudem die Definition von Indizes auf der XML-Struktur zur Optimierung der XQuery-Auswertungen.

Aus der WebDAV-Perspektive können in Tamino einzelne Folder auf XML-Collections gemapped werden und somit die XML-Einschränkungen, wie z.B. die Schema-Validierung, beim Speichern via WebDAV angewendet werden. In unserem Bestellsystem wurden die WordML Schemas für eine XML-Collection definiert und spezielle WebDAV-Folder auf diese Collection gemapped. WordML-Dokumente, die via WebDAV in die entsprechenden Folder gespeichert werden, werden via Schema-Validierung überprüft und die definierten Indexwerte erzeugt. Mit der „Security-Extension“ im Tamino XML Server (Bestandteil der Tamino-Distribution) können die gespeicherten Dokumente zudem automatisch signiert oder mit Zeitstempeln versehen werden. Somit wird garantiert, dass die Dokumente nach der Speicherung nicht mehr modifiziert wurden bzw. jede Veränderung nachvollziehbar ist. Ein wesentlicher Vorteil von WebDAV ist auch die Dokumentversionierung, die als Bestandteil von RFC3253 (DeltaV) im Tamino Server vorhanden ist. Somit können Dokumente manuell unter Versionskontrolle gesetzt werden oder auch automatisch mit der Auto-Version-Control-Option beim Speichern und Ändern implizit versioniert werden. Im Fall des Bestellsystems, in dem die Produktbeschreibungen als WordML-Dokumente gespeichert sind, kann somit jederzeit auf alte Produktbeschreibungen zurückgegriffen werden.

Fazit

Die Erweiterungen im Tamino XML Server 4.4 bieten neue Möglichkeiten für die Entwicklung XML-basierter Applikationen. Die Schwerpunkte hierbei sind die effiziente Verwaltung von XML-Daten sowie die Unterstützung verschiedener XML-Standards. Wie am Beispiel gezeigt, können dadurch große Teile von XML-basierten Applikationen komplett von Tamino 4.4 bearbeitet werden. Gleichzeitig ist eine reibungslose Interaktion mit anderen auf XML-Standards beruhenden Komponenten einer komplexen Software-Architektur gewährleistet. Dies sind entscheidende Faktoren, um das Time-to-Market von Neuentwicklungen zu reduzieren und somit schnell ein Return-on-Investment zu erreichen.

Thorsten Fiebig und Heiko Weber arbeiten als Software Engineer Specialists im Entwicklungsteam des Tamino XML-Servers. Eric Scholz ist Product Manager im Fachbereich XML Business Integration der Software AG.

[1] Tamino-Website [2] WebDAV Resource Site [3] XML Query Website [4] Thorsten Fiebig, Heiko Weber: „Nachgefragt“, in: XML & Web Services Magazin 4.2005, S. 53-55

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -