Nottelmann-Hennies Bachelorarbeit_TTviaWS_Final

Werbung
Universität Paderborn
Studienarbeit
zur Erlangung des Grades
Bachelor of Computer Science
für den integrierten Studiengang Informatik
Web-Service-basierte Kommunikation zwischen
einer semistrukturierten Systemumgebung
und einer Projektmanagementanwendung
mit strukturierter Datenspeicherung
Grundlagen und Prototyp am Beispiel von
PAVONE TimeTracking, einer Lotus Notes/Domino-Anwendung,
und Microsoft Enterprise Project Management
Prof. Dr. Ludwig Nastansky
Sommersemester 2004
Betreut von:
Dipl.-Wirt.-Inform. Ingo Erdmann
Björn Reinhold (PAVONE AG)
Vorgelegt von:
Hermann Nottelmann
Informatik
Matrikel-Nr. 6090810
Ferdinandstraße 30
33102 Paderborn
Patrick Hennies
Informatik
Matrikel-Nr. 6079800
Hasenberg 1
33100 Paderborn
I
Inhaltsverzeichnis
1
2
Einleitung ...............................................................................................................1
1.1
Szenario und Zielsetzung ........................................................................................ 1
1.2
Aufbau der Arbeit ................................................................................................... 3
Begriffe und Konzepte ..........................................................................................4
2.1
2.1.1
Client-Server-Modell......................................................................................................... 5
2.1.2
Middleware........................................................................................................................ 6
2.1.3
Nachrichtenbasierte Kommunikation ................................................................................ 8
2.1.4
RPC-basierte Kommunikation........................................................................................... 9
2.2
Datenmodelle.......................................................................................................... 11
2.2.1
Semistrukturiertes Datenmodell ...................................................................................... 11
2.2.2
Relationales Datenmodell................................................................................................ 14
2.3
XML........................................................................................................................ 16
2.3.1
Einordnung von XML ..................................................................................................... 16
2.3.2
Strukturieren von XML-Dokumenten ............................................................................. 17
2.3.3
Verarbeiten von XML-Dokumenten ............................................................................... 18
2.3.4
Transformieren von XML-Dokumenten ......................................................................... 19
2.4
Web Services .......................................................................................................... 21
2.4.1
Architektur ...................................................................................................................... 22
2.4.2
Erkennung (UDDI).......................................................................................................... 25
2.4.3
Beschreibung (WSDL) .................................................................................................... 26
2.4.4
Nachrichtenformat (SOAP) ............................................................................................. 27
2.5
3
Verteilte Systeme ..................................................................................................... 4
Einführung in softwaregestützte Projektverwaltung ......................................... 30
2.5.1
Projekte ........................................................................................................................... 30
2.5.2
Projektmanagement ......................................................................................................... 30
2.5.3
Bedeutung von Zeitphasendaten in Projekten ................................................................. 31
Kommunikation in verteilten Systemen............................................................32
3.1
Integrationsaspekt der Kommunikation ............................................................. 32
3.1.1
Zielsetzung der Geschäftsprozessintegration .................................................................. 32
3.1.2
Heterogene Systemarchitektur als Integrationstreiber..................................................... 33
3.1.3
Konzept der Enterprise Application Integration.............................................................. 35
3.2
3.2.1
Paradigmen der Datenspeicherung...................................................................... 37
Semistrukturierte Datenspeicherung................................................................................ 37
II
3.2.2
Relationale Datenspeicherung ......................................................................................... 40
3.2.3
Koexistenz beider Paradigmen ........................................................................................ 41
3.3
XML als Austauschformat.................................................................................... 41
3.3.1
Konvertierung zwischen XML und semistrukturierten Datenbanken ............................. 43
3.3.2
Konvertierung zwischen XML und relationalen Datenbanken ....................................... 44
3.3.3
Zusammenfassung ........................................................................................................... 47
3.4
Kommunikation..................................................................................................... 48
3.4.1
3.4.1.1
Java RMI................................................................................................................ 49
3.4.1.2
CORBA.................................................................................................................. 50
3.4.1.3
DCOM und .NET Remoting .................................................................................. 51
3.4.1.4
Web Services ......................................................................................................... 52
3.4.2
Kommunikationskonzept................................................................................................. 54
3.4.2.1
Auswahlentscheidung ............................................................................................ 54
3.4.2.2
Modellcharakteristika ............................................................................................ 55
3.5
4
Kommunikationsalternativen .......................................................................................... 48
Limitationen und Entwicklungspotenziale.......................................................... 57
3.5.1
Sicherheit......................................................................................................................... 58
3.5.2
Management und Quality of Service ............................................................................... 60
Prototypische Realisierung des Kommunikationsmodells ..............................61
4.1
Microsoft Project ................................................................................................... 62
4.1.1
Microsoft Project Datenmodell ....................................................................................... 63
4.1.2
.NET Framework............................................................................................................. 66
4.1.2.1
ADO.NET.............................................................................................................. 67
4.1.2.2
ASP.NET ............................................................................................................... 69
4.1.2.3
Visual Studio .NET................................................................................................ 69
4.2
PAVONE TimeTracking....................................................................................... 71
4.2.1
Struktureller Aufbau von TimeSheet-Dokumenten......................................................... 72
4.2.2
Datenaustausch mit Microsoft Project............................................................................. 74
4.2.2.1
Import von Projektstrukturdaten ............................................................................ 75
4.2.2.2
Export von Aufwandsdaten.................................................................................... 81
4.3
Kommunikationselement ...................................................................................... 83
4.3.1
DIME-Attachments ......................................................................................................... 83
4.3.2
Web Service Enhancements ............................................................................................ 85
4.3.3
Microsoft SOAP Toolkit ................................................................................................. 85
4.3.3.1
Verbindungsaufbau und Nachrichtengenerierung.................................................. 87
4.3.3.2
Verarbeitung von Nachrichtenanhängen................................................................ 88
III
4.4
Kommunikationsablauf im Detail ........................................................................ 89
4.5
Einschränkungen und offene Problemstellungen ............................................... 92
4.6
Installationsanweisungen und –besonderheiten.................................................. 94
4.6.1
Installation des Web Service ........................................................................................... 94
4.6.2
Installation des Lotus Notes Clients ................................................................................ 95
5
Zusammenfassung und Ausblick.......................................................................97
6
Literaturverzeichnis............................................................................................99
IV
Abkürzungsverzeichnis
ADO
ActiveX Data Objects
API
Application Programming Interface
ASP
Active Server Pages
B2B
Business-to-Business
B2C
Business-to-Consumer
C#
C-Sharp
CLR
Common Language Runtime
COM
Component Object Model
CORBA
Common Object Request Broker Architecture
CSS
Cascading Stylesheet
DB
Datenbank
DBMS
Database Management System
DCOM
Distributed Component Object Model
DIME
Direct Internet Message Encapsulation
DOM
Document Object Model
DTD
Document Type Definition
EAI
Enterprise Application Integration
ERP
Enterprise Resource Planning
FTP
File Transfer Protocol
HTML
Hypertext Markup Language
HTTP
Hypertext Transfer Protocol
IDL
Interface Definition Language
V
IETF
Internet Engineering Task Force
IIOP
Internet Inter-ORB Protocol
IIS
Internet Information Server
IP
Internet Protocol
IT
Information Technology
JVM
Java Virtual Machine
MIME
Multipurpose Internet Mail Extensions
MOM
Message Oriented Middleware
NF
Normalform
OASIS
Organization for the Advancement of Structured
Information Standards
ODBC
Open Database Connectivity
OEM
Object Exchange Model
OLE
Object Linking and Embedding
OMG
Object Management Group
ORB
Object Request Broker
RDBMS
Relational Database Management System
RDBS
Relational Database System
RMI
Remote Method Invocation
RPC
Remote Procedure Call
SAX
Simple API for XML
SGML
Standard Generalized Markup Language
SMTP
Simple Message Transfer Protocol
SOAP
Simple Object Access Protocol
VI
SQL
Structured Query Language
TCP
Transfer Control Protocol
UDDI
Universal Description Discovery and Integration
W3C
World Wide Web Consortium
WSDL
Web Service Description Language
WSE
Web Service Enhancements
WWW
World Wide Web
XML
Extended Markup Language
XSL
Extensible Stylesheet Language
XSLT
Extensible Stylesheet Language Transformations
VII
Abbildungsverzeichnis
Abb. 1 Client-Server-Interaktion ...........................................................................6
Abb. 2 Software- und Hardware-Serviceschichten in verteilten Systemen ........6
Abb. 3 Middleware – Broker Architektur .............................................................8
Abb. 4 RPC-Methodenaufruf .................................................................................10
Abb. 5 Graphbasierte Repräsentation semistrukturierter Daten .......................13
Abb. 6 Veranschaulichung eines Relationenschemas und einer Relation ..........14
Abb. 7 XML-Element - Beispiel..............................................................................17
Abb. 8 XML-Schema ...............................................................................................18
Abb. 9 Umwandlung mittels XSLT - Beispiel........................................................21
Abb. 10 Web-Service-Rollenmodell........................................................................23
Abb. 11 Web-Service-Schichtenmodell .................................................................24
Abb. 12 WSDL-Spezifikation .................................................................................26
Abb. 13 Das SOAP-Nachrichtenformat ................................................................28
Abb. 14 RPC-Style und Document-Style SOAP....................................................29
Abb. 15 Applikationstopologie ohne und mit EAI ...............................................35
Abb. 16 Ebenen der Integration .............................................................................36
Abb. 17 Daten- und dokumentenorientiertes XML ..............................................45
Abb. 18 Java RMI-Kommunikationsstruktur ......................................................49
Abb. 19 CORBA – ORB-Architektur ...................................................................51
Abb. 20 .NET Remoting – Übersicht .....................................................................52
Abb. 21 Kommunikationsverlauf in der Übersicht...............................................55
Abb. 22 Web-Service-Kommunikationsmodell .....................................................56
Abb. 23 Erweitertes Web-Service-Schichtenmodell .............................................58
Abb. 24 Web-Service-Kommunikationsmodell (modifiziert) ..............................61
Abb. 25 Technisches Kommunikationsmodell - Teil 1 .........................................62
Abb. 26 Datenmodell Microsoft Project.................................................................65
Abb. 27 Architektur .NET Framework ................................................................66
Abb. 28 ADO.NET-Objektmodell ..........................................................................67
Abb. 29 Connection-Objekt ....................................................................................67
Abb. 30 DataAdapter UpdateCommand ...............................................................68
Abb. 31 DataSet - Beispiel .......................................................................................69
Abb. 32 Technisches Kommunikationsmodell – Teil 2.........................................71
VIII
Abb. 33 Darstellung eines TimeSheet-Dokuments................................................73
Abb. 34 Felderzusammenhänge zwischen TimeSheet u. Microsoft Project .......74
Abb. 35 Projektstrukturdaten aus Microsoft Project – Codebeispiel.................76
Abb. 36 Zugriff auf DOM-Tree-Elemente .............................................................77
Abb. 37 Arbeitsweise XSLT-Prozessor ..................................................................77
Abb. 38 Partielle Datenbankrepräsentation mittels DXL ....................................78
Abb. 39 Pipelining - Codebeispiel ...........................................................................78
Abb. 40 Import – Schritt 1 ......................................................................................79
Abb. 41 Import – Schritt 2 ......................................................................................79
Abb. 42 Import – Schritt 3 ......................................................................................80
Abb. 43 Exportprozess schematisch .......................................................................81
Abb. 44 TimeSheet-Daten für den Export nach MS Project – Codebeispiel......82
Abb. 45 Technisches Kommunikationsmodell - Teil 3 .........................................83
Abb. 46 DIME Attachments - Codebeispiel...........................................................85
Abb. 47 Rolle des Microsoft SOAP Toolkits..........................................................86
Abb. 48 Verbindungsaufbau und Nachrichtengenerierung - Codebeispiel........87
Abb. 49 DIME-Attachments clientseitig - Codebeispiel .......................................88
Abb. 50 Kommunikationsablauf - Schritt 1...........................................................89
Abb. 51 Kommunikationsablauf - Schritt 2...........................................................89
Abb. 52 Kommunikationsablauf - Schritt 3...........................................................90
Abb. 53 Kommunikationsablauf - Schritt 4...........................................................90
Abb. 54 Kommunikationsablauf - Schritt 5...........................................................91
Abb. 55 Kommunikationsablauf - Schritt 6...........................................................91
Abb. 56 Änderungen an der Datenbank PAVONE TimeSheet ...........................96
1
1 Einleitung
[Hermann Nottelmann, Patrick Hennies]
1.1
Szenario und Zielsetzung
In jüngster Zeit hat die Informationstechnik für das betriebliche Umfeld immer
größere Bedeutung gewonnen. Unternehmenserfolg wird maßgeblich durch den
Einsatz und die Nutzung des Internets beeinflusst oder entsteht sogar ausschließlich
daraus. Diese Bedeutungszunahme geht einher mit einer Veränderung der ausgetauschten Daten. Unternehmen sind zunehmend dezentral aufgebaut, was zum einen
aus der steigenden Bedeutung der Projektarbeit, zum anderen aus der Tendenz zur
unternehmensübergreifenden Kooperation resultiert. Mit dieser Entwicklung einher
geht eine zunehmende Heterogenität der Datenspeicherung. Der Integration und
Kommunikation verschiedener Datenbanksysteme kommt daher heutzutage eine
maßgebliche Rolle zu.
Eine funktionierende Kommunikation ist der Grundstein eines jeden Informationsaustauschs. Im Zeitalter der Informationsgesellschaft unterliegen Unternehmen einem
regelrechten Zwang zur Kommunikation, wenn sie als internationaler Akteur
konkurrenz- und damit langfristig überlebensfähig sein wollen.
Voraussetzung einer effizienten Kommunikation sind eine funktionierende
Infrastruktur, ein Kommunikationsmedium und ein Kommunikationsformat. Um die
benötigten Informationen zu erhalten, muss ein geeigneter Kommunikationspartner
gefunden und ein Übertragungsmedium ausgewählt werden. Für den anschließenden
Austausch ist ein geeignetes Format zu wählen, welches die Struktur und Sprache der
übermittelten Informationen festlegt.
In der heutigen Zeit steht mit dem Internet eine moderne, effiziente und global
verfügbare Infrastruktur zur Informationsübermittlung bereit. In der Vergangenheit
war zum Auffinden des betreffenden Informationsanbieters meist ein aufwendiges
Eingreifen des Menschen nötig. Seit einigen Jahren ist jedoch eine fortschreitende
Automatisierung der Informationsextraktion und –verarbeitung zu beobachten. Damit
liegt der Untersuchungsschwerpunkt in zunehmendem Maße auf dem
Kommunikationsformat und der Schnittstellenkomponente an den Endpunkten der
Kommunikation.
Die Aufgabe der Schnittstellen besteht darin, die gewonnenen Informationen in
bestehende Datenstrukturen zu integrieren. Die Datenspeicherung der kommuni-
2
zierenden Anwendungen ist allerdings durch starke Heterogenität gekennzeichnet,
verursacht durch die Verfolgung verschiedener Paradigmen der Datenhaltung.
Einerseits besteht der etablierte Ansatz Daten zentral und in strukturierter Form zu
speichern. Die hierfür eingesetzten Datenbanksysteme sind optimiert für die
Speicherung großer Mengen gleichartiger Daten und werden typischerweise in
Zusammenhang mit monolithischen Anwendungen benutzt.
Andererseits besteht gegenwärtig eine Tendenz zu spezialisierten Applikationen, was
die Modularisierung fördert. Durch diese Entwicklung wird die zentralistische
Datenhaltung um den dezentralen Datenhaltungsansatz ergänzt, bei welchem die
benötigten Informationen bei Bedarf aus heterogenen Datenquellen gewonnen werden.
Es ist somit für die Kommunikation zweckmäßig, von den zugrunde liegenden
Datenquellen durch ein standardisiertes Austauschformat zu abstrahieren. Bei
Einigung auf ein solches Format können Konvertierungsmechanismen in den
Schnittstellen der verschiedenen Datenquellen implementiert werden. Es findet also
eine Verlagerung der Rolle des Kommunikationspartners von den Anwendungen hin
zu Schnittstellen statt.
In diesem Fall ist es sinnvoll, eine Schnittstelle in standardisierter Form zu
dokumentieren, um deren Funktionalität allen potenziellen Kommunikationspartnern
bekannt zu machen. Werden die Forderungen nach Standardisierung der
verschiedenen Komponenten der Kommunikation umgesetzt, führt dies zu einer
Konvergenz von Datenübermittlung, -verarbeitung und -speicherung.
Ziel dieser Arbeit ist es, eine Anwendungskommunikation zu realisieren, die diesen
Anforderungen genügt. Als Vertreter des zentralistischen Ansatzes wird eine
Applikation mit relationaler Datenspeicherung betrachtet. Der dezentrale Ansatz wird
repräsentiert durch eine Anwendung basierend auf Lotus Notes/Domino. Bei
letztgenannten Anwendung handelt es sich um PAVONE TimeTracking, bei der
erstgenannten um Microsoft Enterprise Project Management. Microsoft Enterprise
Project Management dient der Verwaltung und Steuerung von Projekten, während
PAVONE TimeTracking auf die dezentrale Erfassung von Zeitphasendaten in
Projekten fokussiert ist. Für die Kommunikationslösung sollen Projektstrukturdaten in
Microsoft Enterprise Project Management angelegt und bearbeitet werden,
wohingegen die Zeitphasendatenerfassung in PAVONE TimeTracking erfolgt. In
Microsoft Enterprise Project Management erfasste Projektstrukturdaten sollen aus
PAVONE TimeTracking heraus angefordert werden und nach Hinzufügen der
zugehörigen Zeitphasendaten zurücktransferiert werden können.
Die Kommunikation soll mittels eines Web Service implementiert werden, welcher die
Schnittstellenfunktion beider Seiten übernimmt. Wie im Verlauf der Arbeit gezeigt
3
werden wird, ist die Nutzung des Internets als Kommunikationsinfrastruktur und XML
als Austauschformat für diese Architektur zweckmäßig.
1.2
Aufbau der Arbeit
Im folgenden Kapitel wird zunächst auf die verwendeten Technologien und Begriffe
eingegangen. Nach einer Einführung in verteilte Systeme und verschiedene
Datenbanktechnologien erfolgt eine detaillierte Betrachtung der Markup-Sprache
XML und des Web-Service-Konzepts. Geschlossen wird das Kapitel mit einem kurzen
Exkurs zur Bestimmung des Formats und Inhalts von Zeitphasendaten in Projekten.
Im dritten Kapitel erfolgt eine Einordnung der Kommunikationsthematik in den
technologischen und organisatorischen Kontext. Diesem schließt sich ein Vergleich
der Datenspeicherungsparadigmen semistrukturierter und relationaler Datenbanksysteme an. In Kapitel 3.3 wird dann XML in Beziehung zu diesen beiden Datenbanksystemen gesetzt und die Rolle von XML als Austauschformat näher erklärt. Kapitel
3.4 widmet sich schließlich dem Entwurf einer Kommunikationslösung. Dies
geschieht mittels eines Vergleichs gängiger Kommunikationslösungen unter
Einbeziehung des relativ jungen Konzepts der Web Services. Der Vergleich schließt
mit der Auswahlentscheidung zwischen den betrachteten Alternativen. Es folgen der
Entwurf eines daraus resultierenden Kommunikationsmodells sowie die Darstellung
des Kommunikationsverlaufs. Abgerundet wird das Kapitel mit einer Analyse
verschiedener Probleme und Potenziale der gewählten Kommunikationslösung.
Das vierte Kapitel behandelt die Implementierungsdetails des Prototyps. Hierzu wird
das entworfene Kommunikationsmodell in seine Kernelemente unterteilt und
anschließend technisch konkretisiert. Im Anschluss daran erfolgt in Kapitel 4.4 eine
Betrachtung des tatsächlichen Kommunikationsverlaufs. Die fortschreitende
Konkretisierung mündet in der kritischen Leistungsbeurteilung des Prototyps und den
Installationshinweisen.
Im abschließenden 5. Kapitel erfolgen ein Resümee der wichtigsten Aspekte dieser
Arbeit sowie ein Ausblick auf Potenziale und Entwicklungstendenzen.
4
2 Begriffe und Konzepte
Neben der Definition von Begriffen werden in diesem Kapitel grundlegende Konzepte
eingeführt, welche im weiteren Verlauf der Arbeit Verwendung finden.
2.1
Verteilte Systeme
[Hermann Nottelmann]
Aufbauend auf einer begrifflichen Definition werden wesentliche Aspekte verteilter
Systeme herausgestellt, die bei der Kommunikation in einem solchen Umfeld
berücksichtigt werden müssen. Die nachfolgenden Unterkapitel behandeln
grundlegende Konzepte der Kommunikation in verteilten Systemen.
Im Rahmen dieser Arbeit soll die Definition verteilter
(Coulouris/Dollimore/Kindberg 2001, S. 2) benutzt werden:
Systeme
nach
„We define a distributed system as one in which hardware or software
components located at networked computers communicate and coordinate their
actions only by passing messages.”
Diese Definition betont zwei wesentliche Charakteristika eines verteilten Systems: Als
einzige Voraussetzung wird die physikalische Verbindung der beteiligten
Kommunikationspartner genannt; eine Kommunikation ist nur über den Austausch
von Nachrichten möglich.
Die folgenden Aspekte sind bei der Umsetzung verteilter Systeme in besonderer
Weise zu berücksichtigen1:
1
•
Heterogenität: Ein verteiltes System setzt sich zusammen aus einer Vielzahl
verschiedener Netzwerke, Betriebssysteme, Computerhardware und Programmiersprachen.
•
Offenheit: Die Bereitstellung von Schnittstellenbeschreibungen soll die
Integration einzelner Komponenten verschiedener Anwendungen ermöglichen.
•
Sicherheit: Die nachrichtenbasierte Kommunikation stellt bestimmte
Anforderungen an die Sicherheit in verteilten Systemen. Um den
unautorisierten Zugriff auf Ressourcen zu verhindern, muss die Vertraulichkeit
gewährleistet sein. Während des Nachrichtenaustauschs müssen die Integrität
der Daten sowie die Erreichbarkeit des Kommunikationspartners sichergestellt
sein.
Vgl. Coulouris/Dollimore/Kindberg 2001, S. 16-26, sowie Tari/Bukhres 2001, S. 30-32.
5
•
Skalierbarkeit: Ein skalierbares System zeichnet sich dadurch aus, dass es auch
bei einem signifikanten Anstieg der Ressourcen und Benutzer durch hinzufügen zusätzlicher Kapazitäten weiterhin leistungsfähig arbeitet.
•
Fehlerbehandlung: In jedem Prozess, Computer oder Netzwerk können
unabhängig voneinander Fehler auftreten. Somit müssen die einzelnen
Komponenten eines verteilten Systems Fehlerbehandlungsmechanismen für die
abhängigen Komponenten implementieren. Dies umfasst zur Erhöhung der
Fehlerrobustheit neben der Entdeckung auch die Maskierung bzw. Tolerierung
von Fehlern oder die Einführung redundant ausgelegter Komponenten.
•
Nebenläufigkeit: Durch das Vorhandensein von vielen Benutzern besteht die
Möglichkeit simultaner Zugriffe auf dieselbe Ressource. Die Datenkonsistenz
muss auch für dieses Szenario gewährleistet sein.
•
Transparenz: Im Sinne der Komplexitätsreduktion sollen bestimmte Aspekte
der Verteilung dem Anwendungsprogrammierer verborgen bleiben. Das
verteilte System soll nicht als eine Menge isolierter Komponenten, sondern
vielmehr als Ganzheit begriffen werden.
2.1.1 Client-Server-Modell
[Hermann Nottelmann]
Die grundlegende Architektur eines verteilten Systems wird häufig anhand des ClientServer-Modells beschrieben2. Kommunikation in verteilten Systemen kann als
Interaktion zwischen Prozessen mit klar abgegrenzten Zuständigkeiten aufgefasst
werden. Die Prozesse üben zwei verschiedene Rollen aus: Während der Serverprozess
einen Dienst anbietet, wird dieser vom Clientprozess angefragt. Der Server reagiert
auf die Anfrage mit einer Antwort. Die ausgeübte Rolle eines Prozesses beschränkt
sich nicht ausschließlich auf die des Clients bzw. Servers und kann sich im Zeitverlauf
ändern. So kann ein Server wiederum als Client eines anderen Serverprozesses
fungieren (vgl. Abb. 1).
2
Vgl. Tanenbaum/van Steen 2003, S. 62.
6
Client
Anfrage
Server
Anfrage
Antwort
Antwort
Server
Anfrage
Client
Antwort
Prozess:
Computer:
Abb. 1 Client-Server-Interaktion3
2.1.2 Middleware
[Hermann Nottelmann, Patrick Hennies]
Middleware lässt sich allgemein als eine Softwareschicht definieren, deren Aufgabe
die Maskierung von Heterogenität und Bereitstellung eines geeigneten Modells zur
Applikationsprogrammierung in einem solchen Umfeld ist.4
Wichtige Zielsetzungen von Middleware sind die Schaffung von Ortstransparenz und
Unabhängigkeit von Details der Kommunikationsprotokolle, Betriebssysteme oder der
beteiligten Hardware (vgl. Abb. 2).
Hierdurch wird ein Abstraktionsmaß erreicht, welches eine Kommunikation zwischen
Prozessen beteiligter Applikationen weitgehend unabhängig von der unterliegenden
Systemarchitektur ermöglicht.
Applikationen, Dienste
Middleware
Betriebssystem
Computer- und Netzwerkhardware
Abb. 2 Software- und Hardware-Serviceschichten in verteilten Systemen5
3
Aus Coulouris/Dollimore/Kindberg 2001, S. 34.
Vgl. ebenda, S. 32-33.
5
Aus ebenda, S. 32.
4
7
Es existiert eine Reihe von Middleware-Modellen. Mit dem entfernten Prozeduraufruf
(engl. Remote Procedure Call) wird ein frühes Modell in Kapitel 2.1.4 vorgestellt. Im
Zusammenhang mit der Objektorientierung erfolgte eine Erweiterung dieses
Konzeptes um verteilte Objekte. Im Rahmen des Kapitels 3.4.1 werden noch drei
jüngere Modelle betrachtet. Hierbei handelt es sich im Einzelnen um Java RMI,
CORBA und Microsofts Ansätze DCOM bzw. .NET Remoting.
Um die für verteilte Systeme angestrebte Offenheit zu erreichen, bedarf es einer
Schnittstellenbeschreibung. Mittels dieser Beschreibungen sind die einzelnen
Komponenten in der Lage, ihre angebotenen Dienste in Form von Standardregeln
bezogen auf Syntax und ggf. Semantik zu spezifizieren.6 Die Schnittstellenbeschreibung erfolgt typischerweise in einer Schnittstellendefinitionssprache (engl.
Interface Definition Language - IDL). Syntaktisch beschrieben werden etwa die
vorhandenen Funktionen mit den Typen ihrer Parameter bzw. Rückgabewerte sowie
mögliche Ausnahmen zur Fehlerbehandlung.
Die durch die IDL spezifizierte Schnittstelle wird sowohl client- als auch serverseitig
implementiert. Die beiden Instanzen der Schnittstellenbeschreibung werden als Stub
oder auch Proxy bezeichnet. Serverseitig spricht man häufig auch von einem
Skeleton.7 Dieses Modell ermöglicht die transparente Kommunikation zwischen Client
und Server innerhalb verteilter Systeme.
In vielen Fällen wird von der Middlewarelösung auch eine Vermittlungsinstanz
zwischen den Proxies auf Server- und Clientseite bereitgestellt. Eine solche Entität
wird als Broker bezeichnet. Dieser übernimmt entweder die komplette
Nachrichtenzuteilung, in welchem Fall eine indirekte Kommunikation zwischen den
Proxies besteht, oder er stellt nur die initiale Verbindung her und die Proxies
kommunizieren direkt. Oft wird ein Brückenobjekt für die Interaktion zwischen
Brokern eingesetzt (vgl. Abb. 3).
6
7
Vgl. Tanenbaum/van Steen 2003, S. 24-25.
Vgl. ebenda, S. 109.
8
Abb. 3 Middleware – Broker Architektur8
2.1.3 Nachrichtenbasierte Kommunikation
[Patrick Hennies]
Unter nachrichtenbasierter Kommunikation wird im Allgemeinen der Nachrichtenaustausch zwischen Applikationen über ein Netzwerk verstanden.
Man unterscheidet zwischen synchronen und asynchronen Nachrichten. Für die
Übertragung lassen sich entweder Standardprotokolle wie HTTP oder SMTP einsetzen
oder es wird eine spezielle nachrichtenorientierte Middleware (engl. Message Oriented
Middleware - MOM) für das Übertragen der Nachricht verwendet.9 Die
nachrichtenbasierte Kommunikation stellt nur minimale strukturelle Anforderungen
und erfordert als einzige Koordination die Einigung von Server und Client auf ein
gleiches Nachrichtenformat. Client und Server sind daher nur lose gekoppelt und die
Übertragung ist grundsätzlich programmiersprachen- sowie protokollunabhängig
definiert.
8
9
Aus Plášil/Stal 1998, S. 17.
Vgl. Wyke/Rehman/Leupen 2002, S.271-285.
9
Der Einsatz nachrichtenbasierter Kommunikation ist besonders verbreitet, wenn
heterogene Systeme miteinander kommunizieren oder eine engere Systemintegration
nicht möglich oder gewollt ist.
2.1.4 RPC-basierte Kommunikation
[Patrick Hennies]
Der Remote Procedure Call (RPC) ist wie das nachrichtenbasierte Modell ein
Lösungsansatz für die Interaktion in einem verteilten System. Anders als bei der
nachrichtenbasierten Kommunikation arbeitet ein RPC nur mit Low-LevelKommunikationsprotokollen wie TCP/IP. Die Funktionsweise ist der eines lokalen
Prozeduraufrufs sehr ähnlich. Der Client ruft eine Methode auf dem Server auf und
übergibt entsprechende Parameter. Der Server führt die Methode lokal aus und sendet
das Ergebnis als Nachricht zurück. Dieser Routine voraus geht eine so genannte
„Interface Definition“, in welcher die Parameter, Funktionen und Ergebnisformate der
Schnittstellen festgelegt werden. Dies geschieht mittels eines Stub- oder ProxyObjekts aufseiten des Clients und eines Skeleton-Objekts auf Serverseite (vgl. Abb. 4).
Der Stub stellt eine lokale Repräsentation des entfernten Servers dar und kann mit den
definierten Parametern wie eine lokale Präsenz angesprochen werden. Ebenso erhält
das Skeleton-Objekt die Prozedurergebnisse vom Server und behandelt dann den
eigentlichen Transfer. Anders als eine nachrichtenbasierte Interaktion ist ein RPC
somit an eine rigide Einhaltung von Richtlinien gebunden. Bei einer typischen RPCImplementierung wird keine Brokerfunktion benötigt.
10
Abb. 4 RPC-Methodenaufruf 10
10
Aus Tari/Bukhres 2001, S. 18.
11
2.2
Datenmodelle
[Hermann Nottelmann]
Im Rahmen dieses Kapitels werden zwei grundlegend verschiedene Datenmodelle
eingeführt. Dem Datenmodell für semistrukturierte Daten wird das relationale
gegenübergestellt. Bei einem Datenmodell unterscheidet man zwischen der
Beschreibung der Struktur der Datenbank und dem Inhalt in Form von Daten. Unter
diesem Gesichtspunkt soll eine Vorstellung der beiden Datenmodelle erfolgen.
2.2.1 Semistrukturiertes Datenmodell
[Hermann Nottelmann]
Dieses Kapitel beginnt mit einer Motivation für die Notwendigkeit eines
semistrukturierten Datenmodells und mündet in der eigentlichen Begriffsbildung.
Geendet wird mit der Nennung zweier typischer Modellvertreter.
Daten in elektronischer Form entsprechen häufig nicht traditionellen Datenmodellen.
Eine Vielzahl von Anwendungen speichert Daten in proprietären, nicht
standardisierten Formaten. Ein weiteres Beispiel ist die Integration unternehmensexterner heterogener Datenquellen, die sich nicht im Kontrollbereich der jeweiligen
Anwendung befinden. Die zugrunde liegende Struktur derartiger Datenspeicher ist
häufig nur teilweise bekannt und kann sich im Zeitverlauf unbemerkt von der
Anwendung verändern.
Die besondere Herausforderung der Aufstellung eines Datenmodells ist also darin zu
sehen, dass sich die Menge der Datenspeicher sowie deren Inhalt und Semantik
theoretisch ständig verändern können. Dieses Kernproblem bei der Integration
unternehmensübergreifender heterogener Datenquellen wird auch als die Dynamik der
Umgebung11 bezeichnet.
Nur teilweise strukturierte Daten lassen sich häufig nicht durch ein bestimmtes
Schema beschreiben. An die Stelle des Schemas treten selbstbeschreibende Daten.
Semistrukturierte Daten werden daher häufig als schemalos bzw. selbstbeschreibend
charakterisiert. Für traditionelle Datenmodelle werden zuerst die Struktur und die
Datentypen festgelegt; anschließend werden gemäß dieser Festlegung Instanzen
gebildet. Für semistrukturierte Daten wird diese Trennung aufgehoben, da die Daten
direkt beschrieben werden. Diese interne Struktur wechselt häufig und ist nicht streng
typisiert.
11
Vgl. Papakonstantinou/Garcia-Molina/Widom 1995, S. 2.
12
Nach dem intuitiven Gebrauch des Begriffs „semistrukturiert“ im vorhergehenden
Absatz soll nun eine Begriffsbildung anhand charakteristischer Merkmale erfolgen, die
semistrukturierte Daten gänzlich oder teilweise aufweisen12:
•
Es existiert kein an zentraler Stelle gespeichertes Schema für Daten gleichen
Typs; dieses ist vielmehr implizit in jedem Dokument enthalten.
•
Daten besitzen eine wechselnde Struktur. Daten desselben Typs können
abweichende, fehlende oder zusätzliche Attribute haben.
•
Im Zeitverlauf unterliegen die Attribute und die Strukturierung der Dokumente
weiterhin häufigen Veränderungen.
•
Die Trennung zwischen Schema und Daten ist sehr unscharf.
•
Daten wie beispielsweise Volltext unterliegen keiner weiteren durch Attribute
abbildbaren Struktur.
•
Sofern für Attribute Datentypen angegeben sind, ist diese Typisierung nicht als
Integritätsbedingung für die aufzunehmenden Daten zu verstehen.
•
Die Anzahl der potenziellen Attribute und die Vielfalt der internen
Strukturierung sind sehr groß.
Die Repräsentation semistrukturierter Daten erfolgt häufig graphbasiert mittels Knoten
und gerichteter Kanten13 (vgl. Abb. 5). Im Gegensatz zu inneren Knoten sind einzig
den Blättern Daten zugeordnet. Die Kanten tragen Beschriftungen, welche die
Beziehung zwischen den verbundenen Knoten aufzeigen. Die Wurzel gilt als
Einstiegspunkt für alle nachfolgenden Knoten und repräsentiert somit die komplette
Datenbank. Es muss sich nicht um einen Baum handeln.
12
13
Vgl. Heuer 2000, S. 159-160.
Vgl. Garcia-Molina/Ullman/Widom 2002, S. 174-175, oder Abiteboul/Buneman/Suciu 2000, S. 11-13.
13
Projekt
Mitarbeiter
arbeitet an
Name
PAVONE #1
Beginn
Name
Alter
01.12.2003
32
Vorname
Tim
Nachname
Meier
Abb. 5 Graphbasierte Repräsentation semistrukturierter Daten
In (Suciu 1998b) wird ein Überblick der Ansätze für Datenbankensysteme und
Anfragesprachen semistrukturierter Daten gegeben. Im Rahmen dieser Arbeit ist
insbesondere die Verbindung von semistrukturierten Datenmodellen und XML von
Interesse.
Das Object Exchange Model (OEM)14 kann als Urmodell semistrukturierter Daten
angesehen werden. Wie auch andere semistrukturierte Datenmodelle verfolgt es einen
Integrationszweck. So wurde OEM explizit für den Datenaustausch zwischen
heterogenen Systemen konzipiert.15 Dieses schemalose, graphbasierte Datenmodell
wird in Kapitel 3.3 im Rahmen der Diskussion von Datenaustauschformaten noch
einmal näher beschrieben.
Allerdings werden semistrukturierte Daten heutzutage typischerweise in XMLDokumenten abgespeichert16. XML ist ebenfalls graphbasiert, aber durch die
Zeichenorientierung im Gegensatz zum OEM auch für den Menschen lesbar.
Insbesondere die optionale Möglichkeit, die Struktur in einem separaten Schema zu
erfassen, ist gegenüber dem OEM von Vorteil. So wird beispielsweise erst der
Datenaustausch mit relationalen Datenbanken ermöglicht, was im weiteren Verlauf der
14
Vgl. Papakonstantinou/Garcia-Molina/Widom 1995.
Vgl. Abiteboul/Buneman/Suciu 2000, S. 19.
16
Bei XML handelt es sich streng genommen um eine Auszeichnungssprache, der kein Datenmodell
zugrunde liegt. Aufgrund der großen Ähnlichkeit zu Instanzen des semistrukturierten Datenmodells
wird es aber in der Praxis zur Speicherung semistrukturierter Daten eingesetzt. Eine detaillierte
Betrachtung dieses Sachverhalts findet sich in (Suciu 1998a).
15
14
Arbeit aufzuzeigen ist. Eine detaillierte Beschreibung von XML und verwandter
Konzepte erfolgt in Kapitel 2.3.
2.2.2 Relationales Datenmodell
[Hermann Nottelmann]
Das relationale Datenmodell wurde von CODD Anfang der 70er Jahre entwickelt.17
Damit ein Datenbanksystem als vollständig relational bezeichnet werden kann, müssen
drei Architekturmerkmale erfüllt sein18:
•
Berücksichtigung der strukturellen Aspekte des relationalen Modells,
•
Existenz von Regeln zum Einfügen, Verändern und Löschen sowie
•
die Implementierung einer Sprache, die wenigstens so mächtig wie die
Relationenalgebra ist.
Diese Anforderungen sollen nachfolgend näher erläutert werden.
Relationenname
R
A1
…
…
…
…
Attribute
An
Relationenschema
Tupel
Relation
Abb. 6 Veranschaulichung eines Relationenschemas und einer Relation19
Eine relationale Datenbank besteht aus einer endlichen Menge von Relationen. Jede
Relation lässt sich anschaulich als zweidimensionale Tabelle auffassen (vgl. Abb. 6):
Den Kopf der Tabelle mit den einzelnen Spaltenüberschriften bildet das so genannte
Relationenschema. Hierbei handelt es sich um eine Menge von Attributen, denen
Wertebereiche (engl. Domains) zugeordnet sind. In der Praxis sind dies
Standarddatentypen, wie beispielsweise String oder Integer.
Die Zeilen der Tabelle werden als Tupel bezeichnet; sie enthalten die Daten, die in
dieser Relation abgelegt sind. Die Spalteneinträge besitzen den Wertebereich des
jeweiligen Attributs im Tabellenkopf.
17
Vgl. Codd 1970.
Vgl. Codd 1979, S. 398.
19
Aus Heuer 2000, S. 107.
18
15
Die Schemata aller Relationen bilden zusammen das Datenbankschema. Daten werden
auch als Instanz dieses Schemas bezeichnet.20 Die zum jeweiligen Datenbankschema
korrespondierende Relation bezeichnet man genauer als Basisrelation. Als
Architekturmerkmal relationaler Datenbanken kann also die logische Trennung von
Struktur in Form des Datenbankschemas und Inhalt in Form der Basisrelationen
festgehalten werden.
Zur Identifizierung der Tabelleneinträge bzw. Tupel einer Relation werden so
genannte Schlüssel eingeführt. Hierbei handelt es sich um eine minimale Menge von
Attributen zur eindeutigen Tupelkennzeichnung. Der Primärschlüssel identifiziert
eindeutig jedes Tupel einer Relation. Die Menge der Attribute, die in einer anderen
Relation derselben Datenbank als Primärschlüssel fungieren, wird als Fremdschlüssel
bezeichnet.
Mittels Integritätsregeln wird ein konsistenter und konfliktfreier Datenbankzustand
sichergestellt. Die Objektintegrität verlangt, dass der Primärschlüssel zu keinem
Zeitpunkt Nullwerte enthält. Referentielle Integrität sieht die Existenz eines Primärschlüssels zu jedem Fremdschlüssel vor.
Die schrittweise Zerlegung von Relationen in eine redundanzarme Form wird als
Normalisierung bezeichnet. Der Zustand im Normalisierungsprozess wird als n.
Normalform (NF) gekennzeichnet.
Mittels der Relationenalgebra sind im Wesentlichen vier generische Operationen21 auf
den Relationen einer Datenbank möglich, die als Ergebnis wiederum eine Relation
liefern:
•
die Selektion zur Auswahl von Tupeln aus einer Relation,
•
die Projektion zur Auswahl bestimmter Attribute einer Relation,
•
der natürliche Verbund (engl. Join) zur Verknüpfung über gemeinsamen
Attributen zweier Relationen sowie
•
Mengenoperationen wie Vereinigung, Differenz- und Durchschnittsbildung auf
Relationen mit gleichem Schema.
Diese Operationen sind alle in der Abfragesprache SQL (Structured Query Language)
implementiert, die in den meisten relationalen Datenbanksystemen eingesetzt wird.
20
21
Vgl. Garcia-Molina/Ullman/Widom 2002, S. 61.
Vgl. Heuer 2000, S. 114-117.
16
2.3
XML
[Patrick Hennies]
In diesem Kapitel erfolgt eine themenbezogene Betrachtung der Extensible Markup
Language (XML). 22
XML ist eine so genannte Datenbeschreibungssprache (engl. Markup Language); das
bedeutet, sie drückt die Struktur und Form von Daten aus. Die Veränderungen, die
durch die wachsende Bedeutung von XML in fast allen Bereichen des Internets
verursacht wurden, sind umfassend. XML und das World Wide Web sind in ihrer
Entwicklung eng miteinander verbunden und beide haben in vielen Bereichen
wesentlich zum Erfolg des jeweils Anderen beigetragen.
Struktur und Syntax von XML sind heutzutage hinreichend bekannt. Es wird daher
hier nur eine kurze Einführung in diese Bereiche geben. Stattdessen liegt der Fokus
auf den verschiedenen Möglichkeiten XML-Dokumente zu formatieren und zu
bearbeiten.
2.3.1 Einordnung von XML
[Patrick Hennies]
XML entwickelte sich aus der Beschreibungssprache SGML, da versucht wurde, eine
einfachere und damit verständlichere Version der sehr komplexen SGML zu erzeugen.
XML wurde vom W3C-Konsortium entwickelt und 1998 als Standard verabschiedet.
Seitdem hat XML eine kontinuierliche Erfolgsgeschichte hinter sich.
XML ist zusätzlich zu seiner Datenbeschreibungsfunktion auch eine Metasprache.
Also im eigentlichen Sinn eine Sprache um Sprachen zu beschreiben.
Die bekannteste Markup-Sprache ist die Hypertext Markup Language (HTML),
mittels derer Webseiten im Internet beschrieben werden können. Beim Vergleich von
XML und HTML lassen sich jedoch deutliche Unterschiede festhalten.
Der Schwerpunkt von HTML liegt klar auf der Präsentation von Daten und nicht auf
der Strukturierung dieser Daten. XML als Metasprache ist wesentlich abstrakter und
behandelt im Gegensatz dazu genau diese Strukturierungsfunktion, während die
Präsentation nicht berücksichtigt wird. XML unterscheidet sich von HTML auch
darin, dass sich beliebige Sprachstrukturen erzeugen lassen, während bei HTML mit
festen Strukturen gearbeitet werden muss.
22
Vgl. XML - W3C Recommendation, http://www.w3.org/TR/REC-xml/, 2004. Aufgerufen 02.07.2004
17
Daten liegen bei XML in textueller Form vor und werden ausgezeichnet durch XMLElemente, so genannte „Tags“. Es ist möglich, Elemente zu schachteln und somit in
inhaltliche Beziehung zueinander zu setzen. Elemente eines XML-Dokuments können
über Attribute verfügen. Mit Letzteren werden in diesem Fall die Eigenschaften eines
Elements bezeichnet.
Abbildung 7 liefert ein Beispiel für ein XML-Element:
<firma>
<name> PAVONE </name>
<ort land=“Deutschland“> Paderborn </ort>
</firma>
Abb. 7 XML-Element - Beispiel
Als letzter und wesentlichster Unterschied zu HTML kann ein XML-Dokument auch
optional über eine Grammatik- und Datentypenbeschreibung verfügen. Diese dient vor
allem der Strukturierung und Prüfung eines XML-Dokuments. Nachfolgend soll diese
Strukturierungsfunktionalität betrachtet werden.
2.3.2 Strukturieren von XML-Dokumenten
[Patrick Hennies]
Es gibt zwei Typen von Datenbeschreibungen, die gemeinhin als Schema bezeichnet
werden, wobei die ältere (DTD)23 zunehmend durch die neuere und mächtigere
Fassung (XML Schema)24 ersetzt wird. Beide sind in der Lage, eine Struktur in einem
XML-Dokument zu erzeugen und zu überprüfen.
Eine DTD (Document Type Definition) fokussiert im Wesentlichen auf der
Strukturbeschreibung von Daten; die Leistungsfähigkeit zum Erzeugen von
Datentypen als allerdings begrenzt. Eine DTD ist in einer eigenen Sprache und nicht in
XML verfasst, was daraus resultiert, dass DTDs ursprünglich für eine Nutzung
zusammen mit SGML entwickelt wurden. Es können keine spezifischen Datentypen
mittels einer DTD beschrieben werden, da hier nur Texttypen unterstützt werden.
Ein XML-Schema ist hingegen in XML verfasst. Es ist damit in der Lage auch sich
selbst als XML-Dokument zu betrachten und zu validieren. Zusätzlich kann ein XMLSchema durch diese Eigenschaft auch direkt in ein XML-Dokument eingebunden
23
24
Vgl. DTD - Revision 1.2, http://www.w3.org/XML/1998/06/xmlspec-report-19980910.htm, 1998.
Aufgerufen 02.07.2004.
Vgl. XML Schema - W3C Recommendation, http://www.w3.org/TR/xmlschema-0/, 2001.
Aufgerufen 02.07.2004.
18
werden und muss nicht mehr als separates Dokument behandelt werden. Ein solches
Schema wird dann als Inlay-Schema bezeichnet.
XML-Schemata sind gut geeignet, um XML-Dokumente zur Aufnahme von
Dateninhalten zu optimieren. Es lassen sich verschiedene Basisdatentypen auswählen
und - durch einen hierarchischen Vererbungsmechanismus - auch beliebige neue
komplexe Typen deklarieren.
Die folgende Abbildung gibt ein Beispiel für ein XML-Schema:
<xs:schema id="NewDataSet" xmlns:xs=http://www.w3.org/2001/XMLSchema>
<xs:element name="NewDataSet”>
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="MSP_RESOURCES">
<xs:complexType>
<xs:sequence>
<xs:element name="RES_UID" type="xs:int" minOccurs="0"/>
<xs:element name="RES_TYPE" type="xs:boolean" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Abb. 8 XML-Schema
Ein XML-Dokument hat den Vorteil auch für den Menschen lesbar und verständlich
zu sein. Es ist aber auch möglich, es für die Maschine-Maschine-Kommunikation
einzusetzen, da mittels eines Schemas die Einhaltung bestimmter struktureller
Vorgaben sichergestellt werden kann. Bei einer automatischen Verarbeitung wird die
Struktur eines XML-Dokuments anhand des beschreibenden Schemas geprüft. Im
Anschluss daran erfolgt die weitere Verarbeitung der Dateninhalte, die im Weiteren
untersucht werden soll.
2.3.3 Verarbeiten von XML-Dokumenten
[Patrick Hennies]
Für das Durchwandern (engl. Parsen) und Verarbeiten von XML-Dokumenten gibt es
zwei Hauptalternativen: zum einen das Document Object Model (DOM)25 und die
Simple API for XML (SAX).26
25
26
Vgl. DOM - W3C Level 3 Core, http://www.w3.org/DOM/, 2004. Aufgerufen 02.07.2004.
Vgl. SAX – Version 2.0, http://www.saxproject.org/, 2002. Aufgerufen 02.07.2004.
19
DOM ist eine standardisierte API (Application Programming Interface) des W3C und
bietet eine plattformunabhängige Möglichkeit auf Dokumente zuzugreifen und deren
Inhalte zu verändern. Man spricht im Fall von DOM auch von einer baumbasierten
API, da Dokumente auf eine interne Baumstruktur abgebildet werden. Diese
Baumstruktur wird dann zugreifenden Applikationen bereitgestellt. DOM lässt sich
auf XML- und HTML-Dokumente anwenden und in beliebigen Programmiersprachen
implementieren.
Aus der Initiative, eine weniger speicherintensive und stärker an Programmiersprachen
orientierte Lösung zu implementieren, entstand ein ereignisbasierter Lösungsansatz,
das SAX-API. Der wichtigste Unterschied zu DOM liegt bei SAX in dem
ereignisorientierten Verarbeitungsansatz. Dateninhalte werden über Ereignisse
abgearbeitet, welche dann in Programmen entsprechende Verarbeitungsmechanismen
auslösen können. In der ursprünglichen Version basierte SAX ausschließlich auf
JAVA. Als Open-Source-Produkt wird es aber ständig weiterentwickelt. Aktuelle
Versionen unterstützen auch weitere Programmiersprachen.
SAX ist einfacher gehalten als DOM und in vielen Fällen auch speichereffizienter. Es
muss aber bei der Ereignisbehandlung ständig der Dokumentenstatus geprüft werden.
Dies ist notwendig, um die aktuelle Position im Dokument nicht zu verlieren. Im
Ergebnis kann dies bei bestimmten Dokumentenarten zu sehr komplexen Programmen
führen.
DOM und SAX sind keine direkten Substitute, sondern haben ein jeweils spezifisches
Einsatzfeld entsprechend der zu verarbeitenden Dateninhalte eines Dokuments.
2.3.4 Transformieren von XML-Dokumenten
[Patrick Hennies]
Zusätzlich zu der Strukturierung und Verarbeitung von XML-Dokumenten ist als
drittes Element bei einer automatischen Nutzung von XML noch die Formatierung
und Präsentation von Dokumenten zu betrachten.
Die Präsentation von Daten in einem XML-Dokument wird durch die unterstützende
Technologie der Cascading Stylesheets (CSS)27 realisiert. CSS haben ähnlich wie
DTDs ihren Ursprung in der SGML-Welt und sind als Technologie bedeutsam, da sie
eine Trennung von Inhalt und Präsentation eines Dokuments ermöglichen.
27
Vgl. CSS – Spezifikation 2.1, http://www.w3.org/TR/CSS21/, 2004. Aufgerufen 02.07.2004.
20
Mittels CSS-Spezifikationen lassen sich Eigenschaften von Elementen wie Farbe,
Schriftart und Textformat eines Dokuments genau bestimmen. CSS lässt sich auf
HTML und XML anwenden und ist als W3C-Standard weit verbreitet.
CSS unterliegt aber insbesondere bei der Darstellung von XML einigen
Beschränkungen. So ist es beispielsweise nicht möglich, Elemente explizit von der
Darstellung auszunehmen. Stylesheets werden üblicherweise durch einen Web
Browser interpretiert und auf Zieldokumente angewendet. Dies ist bei HTML
sicherlich sinnvoll, im Fall eines XML-Dokuments aber potenziell nachteilig, da hier
auch andere Einsatzfelder als Webseiteninhalte bezweckt werden.
Hieraus entstand die W3C-Empfehlung Stylesheetfunktionen für XML-Dokumente
bereitzustellen.28 XSL steht für XML Stylesheet Language. Wenn der Name auch dem
Ursprung gerecht wird, ist die Funktionalität von XSL deutlich umfassender als bei
CSS. Zu der Funktionalität eine Dokumentenpräsentation zu bearbeiten, wie sie für
HTML-Dokumente ausreichte, kam jetzt noch die Fähigkeit zur Transformation eines
Dokuments. Diese erlaubt die Umwandlung eines XML-Dokuments in andere
Dokumententypen wie HTML oder in eine andere XML-Dokumentenstruktur. Diese
Umwandlungsfunktion von XSL wird als XSLT (XSL–Transformations) bezeichnet.
Für die Umwandlung wird ein XSLT-Prozessor eingesetzt, welcher ein XSLDokument auf ein XML-Dokument anwendet und damit ein neues Dokument erzeugt.
Umwandlungen werden umgesetzt durch so genannte „Templates“. Diese Templates
prüfen einen Dokumenteninhalt auf das Erfüllen bestimmter Anforderungen ab. Wird
eine solche Anforderung von einem Element erfüllt, so wird die im Template
festgehaltene Änderung ausgeführt.
Abbildung 9 gibt ein einfaches Beispiel für eine Elementumwandlung mittels eines
Templates. XML-Dokumente lassen sich mittels XSLT fast beliebig umwandeln und
verändern. Sie können so in für verschiedene Applikationen interpretierbare Formate
gebracht werden.
28
Vgl. XSL(T) – Working Draft V.2, http://www.w3.org/TR/xslt20/, 2003. Aufgerufen 02.07.2004.
21
Original Element eines Dokuments:
<Name> PAVONE </Name>
Template:
<xsl:template match=“Name”>
<Firma>
<xsl:value-of/>
</Firma>
</xsl:template>
Output:
<Firma> PAVONE </Firma>
Abb. 9 Umwandlung mittels XSLT - Beispiel
Zusammenfassend ist es also möglich, XML-Dokumente mittels eines Schemas zu
strukturieren, sie durch ein XSL-Stylesheet zu transformieren und anschließend durch
einen XML-Prozessor auszuwerten. XML-Dokumente sind somit eine gute Basis für
die Maschine-Maschine-Kommunikation.
2.4
Web Services
[Hermann Nottelmann, Patrick Hennies]
„Web Services are encapsulated, loosely coupled contracted functions offered
through standard protocols.“ (WebServices.org)
Diese relativ knappe Definition des Web-Service-Konzepts gibt eine gute einleitende
Übersicht über die wesentliche Zielsetzung, die mit der Einführung von Web Services
verfolgt wurde. Es ist aber sinnvoll sie durch eine praktikablere Definition zu ersetzen,
welche auch der entscheidenden Bedeutung verschiedener standardisierter Elemente
Rechnung trägt.
„A Web service is a software system designed to support interoperable
machine-to-machine interaction over a network. It has an interface described
in a machine-processable format (specifically WSDL). Other systems interact
with the Web service in a manner prescribed by its description using SOAP
messages, typically conveyed using HTTP with an XML serialization in
conjunction with other Web-related standards.“ 29
29
Vgl. Definition des W3C – http://www.w3.org/TR/ws-arch/, aufgerufen 02.07.2004.
22
Im Gegensatz zur ersten Definition ist diese deutlich konkreter, aber zugleich auch
wesentlich komplexer. Es ist daher angebracht, die einzelnen Elemente näher zu
erläutern, um zu verdeutlichen, dass der Aussagehalt beider Definitionen praktisch
deckungsgleich ist.
Ein Web Service erreicht eine Kapselung von den einzelnen Elementen der
Kommunikation durch den Einsatz einer in XML verfassten Dienstbeschreibung
(WSDL) für das Kommunikationsinterface. Die lose Kopplung zwischen einem
anfragenden Client und dem Web Service wird realisiert mittels einer
nachrichtenbasierten Interaktion. Diese Nachrichten werden ebenfalls in einem
standardisierten XML-Format (SOAP) ausgetauscht, welches systemunabhängig
verarbeitet werden kann. Zur eigentlichen, physikalischen Datenübertragung werden
nur Standard-Web-Protokolle eingesetzt.
Ein Web Service ist also nicht zwingend auf bestimmte Technologien oder Systeme
festgelegt.
Gemäß dieser Definition lässt sich die Kommunikationsarchitektur eines Web Service
formulieren, welche im Anschluss betrachtet werden soll.
2.4.1 Architektur
[Patrick Hennies]
Die Struktur eines Web Service lässt sich aus zwei Sichten beschreiben.
Das Web-Service-Schichtenmodell trägt vornehmlich dem Kommunikationsablauf aus
Sicht der verwendeten Protokolle Rechnung. Das Web-Service-Rollenmodell hingegen
unterteilt die einzelnen Kommunikationsschritte in Funktionen von drei Aufgabenträgern und betont somit stärker den zeitlichen Ablauf.
Die drei Entitäten des Web-Service-Rollenmodells geben in ihrer Interaktionsbeziehung eine gute Einführung in den strukturellen Aufbau eines Web Service. Die
zugrunde liegenden Technologien werden dann im Anschluss anhand des
Schichtenmodells näher erläutert.
Der Service Requester wird verkörpert durch eine Clientanwendung. Dieser ist der
eigentliche Konsument des Web Services. Er löst den Bearbeitungsprozess aus, indem
er eine Anfrage an den Server formuliert.
Der Service Provider ist der Web-Service-Anbieter. Die Bearbeitungsfunktionalität ist
hier implementiert. Die angebotenen Funktionen des Service Providers sind in einer
Dienstbeschreibung hinterlegt.
23
Der Service Broker ist ein Dienstverzeichnis. Ein Web Service meldet sich hier an und
stellt über eine eingereichte Dienstbeschreibung eine Übersicht der angebotenen
Funktionen bereit. Service Requester können diesen Broker abfragen und so an den
zutreffenden Web Service vermittelt werden. Der Einsatz eines Service Brokers ist
optional.
Die Funktionalität der Dienstbeschreibung, der Brokerabfrage und die Struktur der
Clientanfragen werden in den Folgekapiteln noch weiter detailliert.
Das Web-Service-Rollenmodell fasst die beschriebenen Entitäten und ihren Bezug
zueinander nochmals zusammen:
UDDI
Registry
Service
Broker
WSDL
UDDI
Service
Requester
SOAP
Client
Application
Service
Provider
Service
Implementation
Abb. 10 Web-Service-Rollenmodell
Eine andere Möglichkeit, die Architektur eines Web Service zu untersuchen, ist eine
Betrachtung der verschiedenen Ebenen einer Web-Service-Struktur im Schichtenmodell (vgl. Abb. 11). Letzteres lässt sich in fünf Ebenen unterteilen. Im Einzelnen
handelt es sich hierbei um die Elemente Discovery, Description, Packaging, Transport
und Network, welche die relevanten Aspekte der Struktur eines Web Service
widerspiegeln:
24
Discovery
UDDI
Description
WSDL
Packaging
Transport
Network
SOAP
HTTP
TCP/IP
Abb. 11 Web-Service-Schichtenmodell 30
In allen fünf Ebenen wurde in der Darstellung insbesondere ein spezifisches Protokoll
assoziiert, welches die übliche, aber nicht zwingend zu wählende Umsetzungsart
andeutet. Die Schichten dieses Modells bauen sequenziell aufeinander auf. Web
Services befinden sich aber bezüglich der eingesetzten Technologien in manchen
Bereichen noch innerhalb eines Standardisierungsprozesses, die hier genannten
Protokolle sind damit nicht als endgültige Standards zu sehen.
Die beiden unteren Ebenen adressieren die grundlegenden Aufgaben des Transports
über ein Netzwerk. Die drei höheren Schichten orientieren sich mehr an Leistungen
und Funktionen, die über die Datenübertragung hinausgehen.
Auf der untersten Ebene des Schichtenmodells erfolgt die Übertragung der
Kommunikationsdaten über das zugrunde liegende Netzwerk. Im Modell ist hier
beispielhaft das Transfer Control Protocol/Internet Protocol (TCP/IP) aufgeführt.
Hierbei handelt es sich um das Standardübertragungsprotokoll für die Internetkommunikation. Es wird hier aber nicht näher betrachtet. Vielmehr soll betont werden,
dass sich für die Datenübertragung durchgängig die Basistechnologien und Konzepte
der Internetkommunikation einsetzen lassen. Bei Verwendung eines Web Service sind
auf dieser Ebene der Kommunikation keine Eingriffe oder Veränderungen notwendig.
Auch auf der zweiten Ebene, dem Transport, werden Standardprotokolle eingesetzt.
Die Übertragungsverwaltung setzt auf den Funktionen der Netzwerkebene auf und
kann wahlweise mit HTTP, FTP, SMTP oder neueren Protokollvarianten umgesetzt
werden. Es handelt sich hierbei ebenfalls um standardisierte und weit verbreitete
Internetprotokolle.
30
Aus Tidwell/Snell/Kulchenko 2001, S. 10.
25
Web Services arbeiten also auf den unteren beiden Ebenen des Schichtenmodells mit
bestehenden und bekannten Technologien und verfügen hier über keine spezifischen
Eigenschaften. Auf den oberen drei Schichten können Web Services ebenfalls zumeist
an bestehende Technologien gekoppelt werden. Es wurden auf diesen Ebenen aber
auch speziell angepasste Protokolle und Sprachkonzepte entworfen, die Web-ServiceImplementierungen wesentlich prägen. Daher erfolgt nun eine detaillierte technologiegebundene Betrachtung der oberen drei Modellebenen Discovery, Description und
Packaging.
2.4.2 Erkennung (UDDI)
[Patrick Hennies]
Die Erkennungs- oder Entdeckungsschicht (Discovery) des Web-Service-Modells
wird durch UDDI repräsentiert. UDDI steht für Universal Description Discovery and
Integration und wurde ursprünglich von den Firmen Microsoft, IBM und Ariba
entworfen. Es wickelt, wie der Name andeutet, die Publikation und Entdeckung eines
Web Service ab. Daten, die in UDDI gehalten werden, sind in drei Kategorien, so
genannte Pages, eingeteilt.
•
In den White Pages werden allgemeine Informationen über Firmen abgelegt.
•
Klassifizierende Daten für entweder die Firma oder den bereitgestellten Dienst
sind Teil der Yellow Pages.
•
Inhalt der Green Pages sind technische Details zum Web Service, wie
beispielsweise der Verweis auf die Implementierung.
Das Datenmodell der UDDI-Architektur ist in Form eines XML-Schemas verfasst und
beschreibt die angebotenen Web Services. Es enthält Angaben über Business Entities,
welche die beteiligten Unternehmenseigenschaften repräsentieren. Assoziiert mit
diesen Unternehmen werden dann Business Services. Dies sind die von der BusinessEntität bereitgestellten Dienste und ihre Beschreibungen. Binding Templates, ebenfalls
Inhalt des Datenmodells, verweisen auf Spezifikationen und servicebezogene
Informationen und sind mit den Business-Service-Einträgen verbunden. Viertes und
letztes Element des Datenmodells sind Service Types (oft wird auch der Begriff
tModel verwendet). Diese sind ebenfalls Verweise auf (vornehmlich) technische
Spezifikationen. Diese Verweisart ist meist extern und kann von beliebig vielen
Instanzen referenziert werden, sofern die gleiche Technologie eingesetzt werden soll.
Ergänzend zum Datenmodell wird bei UDDI eine SOAP-basierte API eingesetzt,
welche Funktionen für das Suchen und Veröffentlichen von UDDI-Dateninhalten
anbietet.
26
Erwähnenswert in Bezug auf UDDI sind die Cloud Services. Hierbei handelt es sich
um Umsetzungen der UDDI-Spezifikation. Eine UDDI-Registrierung wird
bereitgestellt, an welcher Web Services angemeldet und gesucht werden können.
Anbieter eines solchen Dienstes sind IBM und Microsoft.
2.4.3 Beschreibung (WSDL)
[Patrick Hennies]
Eine weitere Technologie, die speziell für Web Services entwickelt wurde und eine
deutliche Stärke des Konzepts darstellt, ist die Web Service Description Language
(WSDL).31
Hierbei handelt es sich um eine Spezifikation zur Beschreibung eines Web Service.
Ein WSDL-Dokument ist in XML verfasst und unterliegt einer speziellen Grammatik.
Mittels dieses Dokuments kann ein Client die von einem Web Service angebotenen
Funktionen feststellen und aufrufen. Gemäß dem Web-Service-Rollenmodell ist das
WSDL-Dokument als Interface zwischen Client und Server zu interpretieren.
Die WSDL-Spezifikation unterteilt sich gemäß Abbildung 12 in sechs Kernelemente:
<definitions>
<types>: What Datatypes will be transmitted?
<message>: What Messages will be transmitted?
<portType>: What operations (functions) will be supported?
<binding>: How will the message be transmitted on the wire?
<service>: Where is the service located?
Abb. 12 WSDL-Spezifikation 32
•
31
32
Das definitions-Element ist die Wurzel des XML-basierten WSDL-Dokuments.
Es dient der Namensbezeichnung und enthält alle weiteren Elemente.
Vgl. WSDL – W3C Note 1.1, http://www.w3.org/TR/wsdl, 2001. Aufgerufen 02.07.2004.
Aus Cerami 2002, S. 104.
27
•
Datentypen, die in der Kommunikation verwendet werden können, sind im
types-Element abgelegt, üblicherweise in Anlehnung an die XML-SchemaVorgaben.
•
Nachrichten in eine Richtung werden mittels des message-Elements festgelegt.
Letzteres enthält ein oder mehrere part-Elemente, welche die Nachrichtenparameter festlegen.
•
Nachrichten werden im portType-Element gesammelt; einzelne Nachrichten
lassen sich so zu Operationen gruppieren.
Operationstypen umfassen verschiedene Kommunikationsvarianten wie
beispielsweise Einwegnachrichten (engl. One-way Messages) oder AnfrageAntwort-Nachrichten (engl. Request – Reply). Eine Anfrage-AntwortOperation, ähnlich einem RPC, ist die übliche Implementierung, wenn der
Transport mit dem SOAP-Protokoll realisiert wird.
•
Das binding-Element legt die Transferspezifikationen fest. Übliche
Alternativen für Übertragungsprotokolle sind HTTP POST/GET und SOAP.
•
Adressinformationen, im Wesentlichen die Adresse des Web Service, sind im
service-Element hinterlegt. Optional kann als Teil dieses Elements auch eine
Dokumentation der Bestandteile des WSDL-Dokuments gesetzt werden.
Ein großer Vorteil von WSDL-Dienstbeschreibungen ist, dass sie sich automatisch aus
dem eigentlichen Web Service generieren lassen und nur noch angepasst werden
müssen. Eine WSDL-Dienstbeschreibung ist nur ein optionales Element eines Web
Service, kann aber zu einer deutlichen Erleichterung der Interaktion mit dem Web
Service beitragen.
2.4.4 Nachrichtenformat (SOAP)
[Patrick Hennies]
Im Rahmen der Web-Service-Technologien übernimmt das Simple Object Access
Protocol (SOAP) die Aufgabe des Packaging und damit des Datentransfers über das
Netzwerk. Das SOAP-Protokoll ist ein Standard, der sich aus der XML-RPCSpezifikation der Firma Userland entwickelt hat. Es ist komplett in XML verfasst. Mit
der Verabschiedung des SOAP V1.1-Standards (aktuelle Version 1.2)33 durch das
W3C-Konsortium im Jahr 2000 begann SOAP sich erfolgreich durchzusetzen und
wurde bald von einer Vielzahl von Unternehmen eingesetzt.34 Das originäre Ziel war
33
Vgl. SOAP - W3C Recommendation Version 1.2, http://www.w3.org/TR/soap12-part0/, 2003.
Aufgerufen 02.07.2004.
34
Vgl. Newcomer 2002, S. 86.
28
ein möglichst einfaches Protokoll. SOAP wurde daher wie eine Erweiterung des
HTTP-Protokolls gestaltet. Anstatt aber statische HTML-Seiten abzurufen, werden
XML-Dokumente übertragen. Eine solche Kommunikation, bei der das
Nachrichtenformat in XML vorliegt, wird oft als XML-Messaging bezeichnet. Für die
Verarbeitung an den Kommunikationsendpunkten - im Rahmen von SOAP als SOAP
Nodes bezeichnet - muss ein SOAP-Prozessor das eintreffende XML-Dokument
bearbeiten.
Eine SOAP-Nachricht (vgl. Abb. 13) wird zunächst durch einen SOAP-Umschlag
(Envelope) repräsentiert; darin enthalten sind der Nachrichtenkopf (Header) und der
Nachrichtenkörper (Body).
Jeder Umschlag enthält genau ein Body-Element, in welchem die eigentliche
Nachricht abgelegt ist. Da eine SOAP-Nachricht in XML verfasst ist, sind auch die
Nachrichteninhalte des Body-Elements in XML gespeichert, sie enthalten aber keine
Schema- oder Verarbeitungselemente. Im Nachrichtenkopf sind Verarbeitungsinformationen für die SOAP-Nachricht enthalten. Routinginformationen sind ein
Beispiel für Headerinhalte. Header und Body können je nach Art und Anzahl der
Informationen in mehrere Blöcke eingeteilt sein.
Abb. 13 Das SOAP-Nachrichtenformat 35
SOAP-Nachrichteninhalte können auf zwei verschiedene Weisen strukturiert werden je nachdem, welche Anforderungen an die übertragenen Informationen gestellt
werden. Die beiden Varianten werden als „Document-Style“- und „RPC-Style“-SOAP
bezeichnet und spiegeln die in Kapitel 2.1.3 und 2.1.4 eingeführten Alternativen für
Kommunikationsprotokolle wider. Beim dokumentenorientierten SOAP werden
35
Aus Tidwell/Snell/Kulchenko 2001, S. 17.
29
SOAP-Nachrichteninhalte als komplettes Dokument betrachtet. Beim RPC-Style
SOAP werden über die SOAP-Nachricht Methoden angesprochen und deren
Parameter repräsentiert. Die Unterschiede werden in folgender Abbildung nochmals
beispielhaft betrachtet:
Rpc-style SOAP
<Envelope xmlns=“http://www.w3.org/2001/06/soap-envelope”>
<Header/>
<Body>
<LoadProject>
<ProjectName xsi:type=“string”>TeconeProjekt</ProjectName>
</LoadProject>
</Body>
</Envelope>
Document-Style SOAP
<Envelope xmlns=“http://www.w3.org/2001/06/soap-envelope”>
<Header/>
<Body>
<GetContract>
<from>
<person>Arno Rautmann</person>
<department>Einkauf</department>
</from>
<to>
<person>Arno Rautmann</person>
<department>Einkauf</department>
</to>
<itemtype>Contract</itemtype>
<Contract>Vertriebsleiter</Contract>
</getContract>
</Body>
</Envelope>
Abb. 14 RPC-Style und Document-Style SOAP
Wie deutlich zu erkennen ist, sind RPC-Style-Nachrichten deutlich knapper gehalten
und dienen ausschließlich zum Übertragen von Parametern für Methodenaufrufe. Die
Methode wird als ein XML-Element dargestellt und enthält die Parameter als weitere
Elemente.
Document-Style SOAP enthält Daten in semantischem Zusammenhang. Hiermit
können auch komplexe Strukturen übertragen werden. Wie schon zuvor bemerkt,
sollte hier keine Datentypisierung mittels eines Schemas erfolgen. Obwohl dies
möglich ist, kann dieses zusätzliche Schema die Grenze zwischen SOAP-Nachricht
und Dateninhalt verwischen und eine Verarbeitung der Nachricht erschweren.
30
Das SOAP-Protokoll ist so gehalten, dass es auch im Zusammenhang mit anderen
Kommunikationsprotokollen verwendet werden kann. Gegenwärtig ist aber nur das
HTTP-Protokoll explizit in der Spezifikation vermerkt. Da die SOAP-Spezifikation in
vielen Teilen nur hinweisenden Charakter hat, bestehen verschiedene und teilweise
zueinander inkompatible Implementierungen des SOAP-Protokolls.
Zusammenfassend ist das SOAP-Protokoll in der Lage, die gesamte Bandbreite der
Kommunikation - von einfachen Methodenaufrufen bis hin zum beliebig komplexen
Dokumentenaustausch - zu realisieren, auch wenn gegenwärtig ein einfacher
Methodenaufruf das überwiegende Einsatzfeld ist.36
2.5
Einführung in softwaregestützte Projektverwaltung
In diesem Kapitel erfolgt eine minimale Einführung in Grundlagenbegriffe
softwaregestützter Projektverwaltung, um die Bedeutung und Struktur der von der
Kommunikationslösung zu übertragenden Daten zu erläutern.
2.5.1 Projekte
[Hermann Nottelmann]
Nach DIN 69901 ist ein Projekt folgendermaßen definiert:
„Ein Vorhaben, das im Wesentlichen durch die Einmaligkeit der Bedingungen
in ihrer Gesamtheit gekennzeichnet ist, z. B. Zielvorgabe, zeitliche, finanzielle,
personelle und andere Begrenzungen, Abgrenzung gegenüber anderen
Vorhaben und projektspezifische Organisation.“
2.5.2 Projektmanagement
[Hermann Nottelmann]
Nach DIN 69901 ist „Projektmanagement die Gesamtheit von Führungsaufgaben,
-organisation, -techniken und –mitteln für die Abwicklung eines Projekts.“
Die funktionale Seite des Projektmanagements befasst sich mit den drei Aspekten
Planen, Steuern und Überwachen. Zur Bewältigung dieser Aufgaben wird eine
Vielzahl von Methoden angeboten. Für diese Zwecke eignen sich in besonderer Weise
unterstützend softwarebasierte Werkzeuge.
36
Vgl. Tidwell/Snell/Kulchenko 2001, S. 27.
31
2.5.3 Bedeutung von Zeitphasendaten in Projekten
[Hermann Nottelmann]
Für ein effektives Projektmanagement ist eine vollständige und aktuelle Datenbasis
wichtig. Dies gilt insbesondere für die Aufwandserfassung bezogen auf die beteiligten
Ressourcen. So wird mit den Zeitphasendaten der personelle Aufwand der
Projektteilnehmer ermittelt. Die Erfassung der personellen Aufwände erfolgt
typischerweise dezentral durch den einzelnen Teilnehmer selbst. Wie in der Definition
des Projektbegriffs angedeutet, erfordert ein solches Szenario eine temporäre
projektspezifische Organisation. Diese unterscheidet sich insbesondere von der
regulären Organisation der beteiligten Unternehmen. Es findet eine abteilungs-,
bereichs-, sparten- oder unternehmensübergreifende Zusammenarbeit statt. Weiterhin
arbeitet das Projektteam üblicherweise nicht an einem gemeinsamen Ort, sondern
verteilt an verschiedenen Arbeitsplätzen.
Dieser vorgegebene Rahmen stellt besondere Anforderungen an die softwaregestützte
Zeitphasendatenerfassung. Die Software zur individuellen Aufwandserfassung muss
für jeden Projektteilnehmer zugänglich sein. Da es sich hierbei um eine regelmäßig
wiederkehrende Tätigkeit handelt, sollte auch im Sinne des Kostenmanagements eine
Softwarelösung eingesetzt werden, die auf weit verbreitete Standardsoftware im
unternehmerischen Umfeld aufsetzt. Denkbar sind an dieser Stelle beispielsweise die
Groupwarelösung Lotus Notes/Domino oder aber ein Webinterface.
Die dezentral erfassten Aufwände müssen zeitnah auf der Ebene des Projektmanagers
aggregiert werden und führen ggf. zu einer Revision des Projektplans. Diese
Korrekturen haben dann umgekehrt direkte Konsequenzen für den einzelnen
Projektteilnehmer. So verschieben sich möglicherweise die Vorgangsdauer, die
Abfolge von Vorgängen oder es findet eine Umordnung der zugewiesenen Ressourcen
statt.
Diese wechselseitigen Abhängigkeiten zwischen der Ebene der Projektteilnehmer und
der Steuerungsebene bedingen einen bidirektionalen Kommunikationsfluss. Zum einen
muss die Aggregation der verteilt erfassten Zeitphasendaten gegeben sein, zum
anderen muss in der Gegenrichtung eine Verteilung der aktualisierten Projektstrukturdaten erfolgen.
32
3 Kommunikation in verteilten Systemen
[Hermann Nottelmann]
Kommunikation in verteilten Systemen erfüllt den Zweck der Integration von
heterogenen Anwendungen oder Datenquellen. In diesem Kapitel wird eingangs die
Notwendigkeit zur Integration solcher Anwendungen und Datenquellen motiviert.
Bedingt durch die unterschiedliche Strukturiertheit von Daten wird auf die
Existenzberechtigung zweier verbreiteter Datenbankmodelle eingegangen. Diese
werden auf ihre Kompatibilität mit XML untersucht, da Letzteres als Austauschformat
fungieren soll.
Die Gegenüberstellung verschiedener Kommunikationsalternativen mündet in einem
Web-Service-basierten Kommunikationsmodell.
3.1
Integrationsaspekt der Kommunikation
3.1.1 Zielsetzung der Geschäftsprozessintegration
[Hermann Nottelmann]
Um in der heutigen Zeit in Anbetracht der starken Konkurrenzsituation am Markt
bestehen zu können, müssen Unternehmen ein hohes Maß an Flexibilität aufweisen.
Erfolgreich sind solche Unternehmen, die es verstehen, sich kurzfristig sowohl
produktionstechnisch also auch organisatorisch an geänderte Rahmenbedingungen
anzupassen.
Die Geschwindigkeit, mit der Leistungen am Markt platziert werden können, stellt
einen entscheidenden Wettbewerbsfaktor dar. Ermöglicht wird dies erst durch effizient
gestaltete Geschäftsprozesse, die möglichst einen kontinuierlichen Ablauf der
notwendigen Aktivitäten gewährleisten. In diesem Zusammenhang liegt das
Augenmerk auf den darunter liegenden Softwaresystemen, welche die fachlichen
Funktionen dieser Aktivitäten im Rahmen von Softwareanwendungen realisieren.
Auch die Unternehmensorganisation ist ständigen Veränderungen unterworfen.
Gründe hierfür sind unternehmensinterne Reorganisationsmaßnahmen oder aber
Geschäftsbeziehungen zu externen Partnern. Exemplarisch für erstgenannte
Veränderungen seien Fusionen und Übernahmen, für letztere strategische oder
temporäre Partnerschaften genannt.
Die Unterscheidung zwischen unternehmensinternen einerseits und unternehmensexternen Ressourcen andererseits ist allerdings für die Betrachtung der beteiligten
33
Informationssysteme im Rahmen von unternehmensübergreifenden Geschäftsprozessen nicht mehr zweckmäßig: Hier steht der gemeinsame und einheitliche Zugriff
auf Geschäftslogik und relevante Daten im Vordergrund.
Der geschäftsprozessgetriebenen Integration sowohl unternehmensinterner als auch
unternehmensexterner IT-Systeme wird somit eine besondere Bedeutung beigemessen.
3.1.2 Heterogene Systemarchitektur als Integrationstreiber
[Hermann Nottelmann]
Innerhalb einer Organisation sind Informationen auf eine Vielzahl heterogener
Informationsquellen verteilt. Solche sind z. B. Datenbanken, Dateisysteme, WorkflowSysteme, Enterprise Resource Planning (ERP)-Systeme, Data Warehouses oder
Document-Retrieval-Systeme. Hier hat eine unzureichende Planung der Unternehmensarchitektur zu einer Verbreitung von verschiedenen, häufig nicht kompatiblen
Systemen und Technologien geführt und so die Entwicklung zu Datensilos37
begünstigt.
In großen Unternehmen ist es indes häufig unvermeidbar, dass innerhalb der
Organisation eine Vielzahl unterschiedlicher Systeme zur Datengenerierung und –
haltung zum Einsatz kommt. Hier spielen Faktoren wie z. B. mangelnde Koordination
zwischen den Geschäftsbereichen, unterschiedliche Anpassungsraten bei der Ablösung
von Anwendungssystemen, Fusionen und Übernahmen oder die räumliche Distanz
zwischen in Projekten zusammenarbeitenden Gruppen eine Rolle.38
Bis vor kurzem war im betrieblichen Umfeld der Einsatz von monolithischen und
proprietären Softwaresystemen gebräuchlich. Auswahlentscheidungen für derartige
Anwendungen waren somit strategischer Natur, legte sich die Unternehmung doch
langfristig auf bestimmte vom jeweiligen Hersteller favorisierte Technologien fest und
ging somit ein gewisses Abhängigkeitsverhältnis ein.
Trotz der beschriebenen Nachteile versprach insbesondere das Konzept des Enterprise
Resource Planning (ERP) Abhilfe - zumindest bzgl. der organisationsinternen Datenhaltungsproblematik. Es basiert auf der Idee, dass organisationsweit eine zentrale
Datenbank zuständig für die Datenhaltung und sämtliche Transaktionen ist.39 Doch
auch diese Softwarepakete können nicht alle betrieblich notwendigen Funktionalitäten
bereitstellen, sodass weiterhin eine Vielzahl von ergänzenden Anwendungen zum
Einsatz kommt.
37
Vgl. Sharma/Stearns/Ng 2001, S. 5.
Vgl. Haas/Lin/Roth 2002.
39
Vgl. Kaye 2003, o. S.
38
34
Von Bedeutung ist weiterhin die Rolle von so genannten Legacy-Systemen. Typische
systemimmanente Defizite aus heutiger Sicht werden z. B. in (Dangelmaier et al.
2002, S. 64) beschrieben. Die Autoren führen darüber hinaus zwingende Gründe für
die Beibehaltung von Legacy-Systemen in neuen Integrationsstrukturen auf. So
enthalten solche Systeme erprobte Basisalgorithmen und Funktionalitäten der
Kerngeschäftsprozesse. Sie arbeiten stabil, sicher und weitgehend fehlerfrei.
Durch die hohen Investitionen in bestehende Systeme, vor allem in Legacy- oder ERPSysteme, und bedingt durch aktuell sinkende IT-Investitionen muss die
Interoperabilität zwischen neuen und bereits vorhandenen Systemen sichergestellt
werden. Insbesondere der Integration der bereits vorhandenen Systeme kommt eine
entscheidende Rolle zu:
“It is critical for enterprises to be able to leverage their investments on their
existing enterprise infrastructure and architecture.” 40
Vorangetrieben durch das Web hat indes ein massiver Technologieumbruch begonnen.
Die beschriebenen integrierten Standardanwendungspakete werden durch wesentlich
schlankere Applikationen abgelöst, die klar abgegrenzte Anwendungsfunktionen
übernehmen. Die Fokussierung der Softwareanbieter auf einen klar abgegrenzten
Bereich innerhalb der betriebswirtschaftlichen Unterstützungsfunktionen erlaubt die
Etablierung als Spezialist am Markt. Dieser Trend zur Modularisierung von
Anwendungssystemen in einzelne Bausteine und die damit häufig einhergehende
verteilte Datenhaltung lässt der Integration eine zentrale Rolle zukommen.
Ein weiterer Grund für den Integrationsbedarf ist in der Architektur des Webs zu
sehen: Das Intranet bzw. Internet ist durch die Punkt-zu-Punkt-Kommunikation
charakterisiert; prinzipiell ist es somit allen Knoten möglich untereinander zu
kommunizieren.
Im geschäftlichen Sektor wandelt sich die Funktion des Internets. Wurde das Internet
dort bis vor kurzem noch als Handelsplattform im B2B- bzw. B2C-Bereich begriffen,
dient es Unternehmen in zunehmendem Maße als Basis für verteilte Systeme.
Dem zunehmenden Wettbewerbsdruck versuchen die Unternehmen mit einer
Fokussierung auf Kernkompetenzen zu begegnen. Als Folge dieser Spezialisierung
kommt es zu Outsourcingvorgängen.41 Die relevanten Daten sind zunächst nur
innerhalb des Firmenintranets verfügbar, müssen aber für dieses Szenario auch extern
zugreifbar sein. Somit gewinnt die Integration mit solchen Geschäftspartnern immer
mehr an Bedeutung.
40
41
Vgl. Sharma/Stearns/Ng 2001, S. 13.
Vgl. ebenda, S. 5.
35
3.1.3 Konzept der Enterprise Application Integration
[Hermann Nottelmann]
Die geschäftsprozessgetriebene Integration sowohl unternehmensinterner als auch
unternehmensexterner IT-Systeme ist Aufgabe der Enterprise Application Integration
(EAI). In der Literatur findet sich eine Vielzahl von Definitionen der verschiedenen
Ausprägungen des EAI-Konzepts. Für die Zwecke dieser Arbeit ist indes die
Grundidee ausreichend, wonach es allen Systemen innerhalb und außerhalb der
Organisationsgrenze ermöglicht werden soll, Informationen und Logik miteinander
auszutauschen.42
Eine EAI-Lösung kann somit als Kommunikations- und Konvertierungsplattform43
begriffen werden. In (Dangelmaier et al. 2002) wird zudem das Merkmal der
Prozessorientiertheit betont und die Funktion von EAI mit dem Bild der
„Datendrehscheibe“ beschrieben (vgl. hierzu auch Abb. 15).
E-Commerce
ERP
CRM
E-Commerce
Legacy-Systeme
ERP
CRM
Legacy-Systeme
EAI-Plattform
Kunden-Datenbank
SOP
Produkt-Datenbank Call Center
Kunden-Datenbank
SOP
Produkt-Datenbank Call Center
Abb. 15 Applikationstopologie ohne und mit EAI 44
Der Grad der Integration wird in der Literatur typischerweise mittels eines 3-EbenenModells beschrieben45. Dabei handelt sich im Einzelnen, beginnend mit der
niedrigsten Stufe, um die Integration auf Daten-, Objekt- oder Prozessebene (vgl. Abb.
16). Die Charakterisierung der einzelnen Ebenen erfolgt in Anlehnung an
(Dangelmaier et al. 2002, S. 62 f.).
42
Vgl. Linthicum 1999, S. 6.
Vgl. Kaye 2003, o. S.
44
Aus Knuth et al. 2003, S. 379.
45
Vgl. Ring/Ward-Dutton 1999, o. S.; ähnlich Knuth et al. 2003, S. 383 f.
43
36
Aufgabe der Datenebene ist der Transport der relevanten Datenobjekte wie
beispielsweise Dateien oder Nachrichten von der Datenquelle zur Datensenke. Hier
liegt der Schwerpunkt auf dem sicheren und verlässlichen Transport der Datenobjekte
über unterschiedliche Systemplattformen hinweg.
In der Objektebene findet die Konvertierung der Daten der Quellanwendung in ein
bzgl. der Zielanwendung kompatibles Format unter Beibehaltung der Semantik statt.
Im Gegensatz zu der Punkt-zu-Punkt-Verbindung kann allerdings durch die EAIArchitektur die Anzahl der notwendigen Schnittstellen verringert werden.
Die Prozessebene bildet schließlich die Planungs- und Steuerungslogik der beteiligten
Geschäftsprozesse in der Integrationsplattform ab. Die Geschäftsprozessintegration ist
die am weitesten fortgeschrittene Form der EAI, ist aber aufgrund ihrer Komplexität
auch mit den höchsten Investitionskosten verbunden.
Die Auswahl der adäquaten Integrationsebene ist stark von den Anforderungen des
jeweiligen Unternehmens abhängig; eine Integration auf Daten- oder Objektebene
kann im Einzelfall durchaus ausreichend sein.
Abb. 16 Ebenen der Integration46
Im Rahmen dieser Arbeit wird nur die Integration auf Objektebene angestrebt.
Gleichwohl dient dieses Kapitel dazu, die zu entwickelnde Kommunikationslösung für
heterogene Systeme in den größeren Zusammenhang der Integrationsproblematik zu
stellen und sie als Grundlage für die Geschäftsprozessoptimierung begreifbar zu
machen.
XML und verwandte Technologien sind insbesondere für die Integration auf
Objektebene von großem Nutzen. XML kann zur Repräsentation von Daten wie auch
46
Aus Ring/Ward-Dutton 1999, o. S.
37
als Austauschformat zwischen Datenquellen benutzt werden. Diese beiden Funktionen
von XML werden in den nachfolgenden Kapiteln 3.2 bzw. 3.3 thematisiert. Weiterhin
können XML-Dokumente mittels der in Kapitel 2.3 beschriebenen Technologien
transformiert werden.
3.2
Paradigmen der Datenspeicherung
[Hermann Nottelmann]
Abhängig vom Grad der Strukturiertheit der vorliegenden Daten bieten sich alternative
Datenbankmodelle zu ihrer Speicherung an. Diese Arbeit fokussiert auf den beiden in
Kapitel 2.2 beschriebenen Modellen, dem semistrukturierten einerseits und dem
relationalen Datenmodell andererseits.
Im Rahmen dieses Kapitels soll nun das Verhältnis dieser Datenmodelle zueinander
herausgearbeitet werden. Es gilt insbesondere zu klären, in wieweit es
Überschneidungen oder aber klar abgegrenzte Einsatzfelder für die betrachteten
Datenmodelle gibt. Dies mündet in der Fragestellung, ob im Kontext der
Datenintegration der kombinierte Einsatz beider Datenmodelle sinnvoll ist.
3.2.1 Semistrukturierte Datenspeicherung
[Hermann Nottelmann]
Das semistrukturierte Datenmodell erfüllt zwei Funktionen im Rahmen der
Datenspeicherung47: Es dient als Dokumentenmodell zur gemeinsamen Nutzung von
verteilten Informationen. Es dient weiterhin als Integrationsmodell, indem ähnliche
Daten mit verschiedenen Schemata zweier oder mehrerer Datenbanken beschrieben
werden.
Insbesondere die erstgenannte Funktion macht den Fokus semistrukturierter
Datenspeicherung in Abgrenzung zu relationalen Datenbanken deutlich. Informationen
werden im Kontext von Dokumenten betrachtet. Dabei können zwei inhaltlich
ähnliche Dokumente unterschiedlich strukturiert sein. Bei relationalen Datenbanken
existiert hingegen keine vergleichbare Aggregationsform. Die Daten eines Dokuments
sind hier auf verschiedene Relationen der Datenbank verteilt.
Geschäftsprozesse im Bereich der Büroinformations- und Kommunikationssysteme
sind dokumentenbasiert.48 Semistrukturierte Datenmodelle eignen sich somit in
47
Vgl. Garcia-Molina/Ullman/Widom 2002, S. 173.
48
Vgl. Fischer et al. 2000, S. 288.
38
besondere Weise für den Austausch von Dokumenten unter dem Aspekt der
Geschäftsprozessintegration (vgl. Kapitel 3.1.1).
Eine Speicherung der in Dokumenten gehaltenen Informationen in relationalen
Datenbanken ist oftmals nicht möglich oder zweckmäßig, da der Kontext, in dem die
Informationen stehen, verloren ginge. So wird im zeitlichen Verlauf eines
Geschäftsprozesses auf die Informationen nur insgesamt als Dokument zugegriffen.
Der Umweg über eine relationale Datenbank wäre, wenn überhaupt, nur mit großem
Konvertierungsaufwand möglich.
Nachfolgend soll die Integrationsfunktion des semistrukturierten Datenmodells
betrachtet werden. Eine Vielzahl der in elektronischer Form vorhandenen
Informationen ist gerade nicht in relationalen Datenbanken abgelegt. Hierfür gibt es
hauptsächlich zwei Gründe: Diese sind zum einen modellimmanent, zum anderen
historisch bedingt.
Das relationale Datenmodell ist ungeeignet, Daten mit irregulärer bzw. unbekannter,
sich im Zeitverlauf ggf. verändernder Struktur aufzunehmen. Diese Kennzeichen
gelten aber gerade für die Vielzahl der Web-Dokumente. Die Entwicklung von
semistrukturierten Datenbanken ist daher im Zusammenhang mit der Ausbreitung des
Internets zu sehen.
Große Datenmengen sind nach wie vor in Legacy-Systemen abgespeichert oder liegen
nur in nicht standardisierten und anwendungsspezifischen Formaten vor. Instanzen des
semistrukturierten Datenmodells bieten hier im Gegensatz zu relationalen
Datenbanken durch den Verzicht auf ein singuläres Schema die nötige Flexibilität, um
die beschriebenen strukturell heterogenen Daten einheitlich abzubilden. Sowohl Daten
mit, als auch solche ohne erkennbare Struktur können gleichermaßen und gemischt
modelliert werden.
Die Umsetzung der Integrationsfunktion der semistrukturierten Datenspeicherung
unterscheidet sich grundlegend von der relationaler Datenbanken. Während Letztere
als zentrale, persistente Datenspeicher fungieren, beschränken sich die beiden
verbreiteten Instanzen semistrukturierter Datenmodelle OEM und XML auf eine
Vermittlertätigkeit. Sie ermöglichen den Informationsaustausch zwischen heterogenen
Datenquellen.49
Auch Lotus Notes/Domino lässt sich in den Kontext semistrukturierter Datenspeicherung einordnen, wenngleich es bereits mehrere Jahre vor der eigentlichen
49
Diese Sichtweise der Integration wird im Fall von OEM bereits durch den Namensbestandteil
„Austauschformat“ (engl. Exchange Model) impliziert und findet sich auch in (Papakonstantinou/
Garcia-Molina/Widom 1995) wieder.
39
Begriffs- bzw. Modellbildung produktiv eingesetzt wurde.50 Wichtig erscheint hier der
Hinweis, dass bei Lotus Notes/Domino die Integration der Daten auf einer höheren
Stufe stattfindet. Die semistrukturierten Daten sind auf Dokumente verteilt und in
einer einzigen Datenbankdatei abgespeichert. Als semistrukturiertes Datenbanksystem
bietet Lotus Domino/Notes weiterhin Mechanismen zur Aggregation bzw.
Manipulation der Daten. Ersteres wird hauptsächlich mit dem Ansichtenkonzept (engl.
View), Letzteres mit dem Formularkonzept (engl. Form) ermöglicht.
Daten innerhalb der Dokumente, wie auch alle anderen Elemente der Datenbank (z. B.
die angesprochenen Views und Forms), sind insbesondere selbstbeschreibend
abgelegt, sodass Teile der Datenbank ohne Kontextverlust leicht extrahiert werden
können. Dabei kann eine Konvertierung u. a. in ein XML-Dokument mit Notesspezifischen Auszeichnungen gemäß der so genannten Domino XML (DXL)
stattfinden. Dieser Umstand wird für die Implementierung ausgenutzt und in Kapitel 4
genauer dargestellt.
50
Vgl. Mohan et al. 2000.
40
3.2.2 Relationale Datenspeicherung
[Hermann Nottelmann]
Hauptzweck relationaler Datenbanksysteme ist die dauerhafte Speicherung großer
Datenmengen. Sie fungieren typischerweise als zentrale Datenspeicher innerhalb einer
Unternehmung.
Daten, die in einer relationalen Datenbank abgelegt werden sollen, müssen sich
allerdings durch das bereits vorhandene und für die Zwecke der Unternehmung
etablierte Datenbankschema komplett beschreiben lassen. Es kommt allenfalls eine
Erweiterung der bereits vorhandenen Relationenschemata in Betracht. Insofern sind
die Strukturanforderungen an die zu integrierenden Daten verglichen mit dem
semistrukturierten Datenmodell restriktiver. Diese Einschränkung bringt allerdings
auch eine Reihe von Vorteilen mit sich, wie nachfolgend aufgezeigt wird.
Durch die Strukturvorgabe, der die Daten durch ein externes Schema unterworfen
sind, können effiziente Datenstrukturen für die interne Datenorganisation benutzt
werden. Integritätsregeln stellen bei Änderungsoperationen die Konsistenz des
Datenbestands sicher.
Mittels Normalisierung lässt sich die Datenbank in eine redundanzarme Form bringen.
Die Trennung von Schema und Daten führt zu einer Reduktion der Datenredundanz.
Insgesamt fällt also im Vergleich zur semistrukturierten Datenspeicherung der
Speicherbedarf für die gleiche Menge an Daten erheblich geringer aus.
Die auf der Relationenalgebra beruhende Abfragesprache SQL erlaubt eine effiziente
Suche bzw. Manipulation der gespeicherten Daten. Hierauf aufbauend existieren
mächtige Werkzeuge für Auswertungen und Analysen. So können die in den einzelnen
Tabellen enthaltenen Informationen über die Schlüsselbeziehungen kurzfristig zur
Ableitung von neuen Erkenntnissen verdichtet werden. Diese Möglichkeiten werden
z. B. zur Ermittlung von Vorgangsattributen beim Durchrechnen von Projektplänen
benötigt.
Integrierte Sicherheitskonzepte erlauben einen kontrollierten Datenzugriff abhängig
von den Nutzerrechten. So lässt sich der Datenzugriff mittels so genannter Sichten
(engl. Views) nutzerabhängig auf eine Teilmenge des kompletten Datenbestandes
beschränken.
Relationale Datenbanksysteme ermöglichen typischerweise den parallelen Zugriff
einer großen Benutzerzahl auf den Datenbestand. Durch die Verwendung von Sperrund Transaktionsmechanismen kann die Datenkonsistenz dennoch sichergestellt
werden.
41
3.2.3 Koexistenz beider Paradigmen
[Hermann Nottelmann]
Die beiden diskutierten Paradigmen stellen aufgrund ihrer abweichenden Architektur
unterschiedlich hohe Anforderungen an die strukturelle Beschaffenheit der
aufzunehmenden Daten. Wie gezeigt wurde, adressieren sie in der Regel unterschiedliche Felder des Informationsmanagements. Je nach weiterem Verwendungszweck der
Daten ist die Entscheidung für eine Datenbanklösung entweder auf Basis des
relationalen oder eines semistrukturierten Datenmodells eindeutig vorteilhaft. Die
Datenmodelle ergänzen sich und haben insofern beide ihre Berechtigung.
Bestehende traditionelle Datenmodelle sind für ihre Zwecke oft hervorragend
optimiert. Dies gilt insbesondere für relationale Datenbanken. Das semistrukturierte
Datenmodell soll also nicht zur Ablösung dieser etablierten Datenmodelle benutzt
werden, sondern vielmehr die Integration in Form des Austauschs von Daten aus
heterogenen Datenquellen erleichtern.
Gerade im Kontext von temporären, häufig bereichs- oder unternehmensübergreifenden Organisationsformen bei der Arbeiten in Projekten ist dieser Integrationsansatz vorteilhaft. Da eine derartige projektbezogene Zusammenarbeit zeitlich
beschränkt ist und häufig nur einmaliger Charakter hat, wird typischerweise eine
kurzfristige, flexible Integration der bestehenden Datenquellen angestrebt und nicht
eine Speicherung sämtlicher Daten in nur einer zentralen Datenbank.
3.3
XML als Austauschformat
[Patrick Hennies]
Da beide Datenspeicherungsparadigmen ihre Existenzberechtigung haben, ist es
sinnvoll ein Zwischenformat, welches eine Verbindung zwischen beiden Ansätzen
ermöglicht, einzusetzen. Ein solches Format oder Datenmodell muss in der Lage sein,
semistrukturierte Daten abzubilden und gleichzeitig eine schematische Strukturierung
von gleichartigen Daten zu unterstützen.
Ein Ansatz eines semistrukturierten Datenmodells wird vom Konzept des Object
Exchange Model (OEM) verfolgt. Das wesentliche Merkmal des OEM ist seine
Selbstbeschreibungsfähigkeit. Es wird also keine vorgegebene Struktur und kein festes
Schema angesetzt. Stattdessen hat jedes Objekt sein eigenes Schema.51 Das OEM steht
stellvertretend für den Großteil der Ansätze von Austauschformaten. Der Schwerpunkt
51
Vgl. Papakonstantinou/Garcia-Molina/Widom 1995, S. 4.
42
solcher Ansätze liegt immer auf einer Festlegung von möglichst wenig Regeln, um
eine hohe Anpassungsfähigkeit zu gewährleisten. Ein besonderes Kennzeichen von
OEM ist seine Ausrichtung auf die Integration explizit heterogener Datenquellen.52
Die Umsetzung von OEM ist allerdings nicht standardisiert, was bei einem rechnerinternen Modell von Nachteil ist.53
XML, als ein graphbasiertes Datenmodell, ist in seiner Struktur den wesentlichen
Kennzeichen des OEM sehr ähnlich. Als Beschreibungssprache ist es datenunabhängig
und an keine festen Formate gebunden. XML-Elemente können gut mit den
„Objectnodes“ aus OEM verglichen werden – in beiden Fällen können die Inhalte eine
beliebige Struktur annehmen.54 XML wurde aber explizit definiert, um nicht nur
verschiedenartige Datenquellen zu verbinden, sondern auch standortübergreifend
unterschiedliche Kommunikationspartner zu integrieren.
Ein weiterer wesentlicher Unterschied zum OEM ist darin zu sehen, dass die Struktur
eines XML-Graphen in Textform vorliegt und damit auch für Menschen lesbar ist;
dies ist bei OEM nicht der Fall.
Diese Unterschiede kategorisieren XML damit nicht als rechnerinternes Datenmodell,
sondern als Schnittstelle zwischen Mensch und Maschine oder zwischen nur lose
gekoppelten Systemen. Die Struktur eines XML-Dokuments ist auch ohne explizites
Vorwissen oder genaue Vereinbarungen der Kommunikationspartner durch den
Empfänger les- und verarbeitbar.
Bei XML ist es des Weiteren möglich, komplexe Datentypen mittels Schema explizit
zu definieren. Es lassen sich also auch strukturierte Daten effektiv erfassen.
Aufgrund dieser Eigenschaften ist XML ein geeignetes Austauschformat zwischen
heterogenen Systemen bei internetbasierter Kommunikation.
Im Fall der hier betrachteten Kommunikation zwischen einer semistrukturierten und
einer relationalen Datenbank ist nun noch die Schnittstelle zwischen XMLDokumenten und den beiden Kommunikationsendpunkten zu betrachten.
52
Vgl. Abiteboul/Buneman/Suciu 2000, S. 19.
Vgl. Rahm/Vossen 2003, S.7-9.
54
Vgl. Wyke/Rehman/Leupen 2002, o. S.
53
43
3.3.1 Konvertierung zwischen XML und semistrukturierten Datenbanken
[Patrick Hennies]
“XML unites the worlds of documents and data, and transformation technology
is needed for both worlds: to put data into documents and vice versa and to
transform one document format to another.“ 55
Bei einer Speicherung von XML-Dokumenten in ein dokumentenbasiertes Datenbanksystem wie Lotus Notes ist keine explizite Konvertierung notwendig; die Strukturen
sind in ihren wesentlichen Merkmalen sehr ähnlich. Es ist in diesem Fall vielmehr die
interne Dokumentenrepräsentation anzupassen, damit das Dokument effektiv
verarbeitet werden kann.
Hierzu werden XML-Prozessoren eingesetzt, welche nach vorgegebenen Definitionen
die XML-Dokumente parsen und Informationen auslesen. Die zwei bekanntesten
Umsetzungen sind das Document Object Model (DOM) und die Simple API for XML
(SAX) und wurden bereits in Kapitel 2.3.3 eingeführt. DOM verfolgt einen
baumorientierten Verarbeitungsansatz, wohingegen SAX ein ereignisorientiertes
Interface bietet.
SAX hat den Vorteil durch die Ereignisorientierung bei zielgerichteten Operationen
speichereffizienter zu arbeiten, da durch das Auslösen von Ereignissen vermieden
werden kann, eine komplette Abbildung des geparsten Dokuments zu erzeugen und
das zu lesende Dokument auch nur genau einmal durchlaufen wird.
Beim DOM wird der erzeugte Parserbaum vollständig generiert, bevor weitere
Operationen beginnen. Er kann und muss dann mehrfach durchlaufen werden, was die
Speicherung umfangreicher Datenbestände effektiver verlaufen lässt als bei SAX.
Ein Generieren von XML-Dokumenten aus Lotus Notes heraus ist ähnlich einfach.
Die Struktur der Datenspeicherung einer dokumentenorientierten Datenbank und die
Struktur eines XML-Dokuments sind sehr ähnlich. Es ist hier somit automatisch
möglich aus Datenbankinhalten ein XML-Dokument zu erzeugen. Dieses Dokument
wird bezeichnet als Domino XML (DXL)-Dokument und stellt eine (partielle)
Repräsentation einer Lotus-Notes-Datenbank dar. Auch wenn dieses Dokument eine
recht spezielle XML-Struktur aufweist, ist es vergleichsweise einfach in eine
allgemeine XML-Form zu bringen. Diese Umwandlung wird anhand der
Konvertierungsbetrachtung zwischen XML und einer relationalen Datenbank näher
erläutert.
55
Vgl. Newcomer 2002, S. 59.
44
3.3.2 Konvertierung zwischen XML und relationalen Datenbanken
[Patrick Hennies]
Das Datenmodell eines XML-Dokuments ist in vielen Aspekten andersartig als die
Struktur, die in den meisten Datenbanksystemen verwendet wird. Es ist ein deutlich
aufwendigeres Konvertierungsverfahren notwendig, um XML-Daten aus relationalen
Datenbanken zu extrahieren oder darin zu speichern als bei einer semistrukturierten
Datenbank.
Aufgrund der weiten Verbreitung und Nutzung von XML bieten aber praktisch alle
Datenbanksysteme bereits Automatismen für solche Konvertierungsprozesse. Im
Rahmen dieser automatischen Verfahren werden oft sehr explizite Anforderungen an
das zu importierende XML-Dokument gestellt. Im Fall einer relationalen Datenbank
ist die Hauptanforderung, dass eine explizite Repräsentation der XML-Dokumentenstruktur in Form eines Schemas vorliegen muss. Die Inhalte eines XML-Dokuments
können mittels des Schemas auf das relationale Datenbankschema abgebildet werden.
Dies ist notwendig, da in einer relationalen Datenbank Daten und deren Beschreibung
explizit getrennt gehalten werden. Um die Eignung von XML als Metaformat
zwischen semistrukturierten und relationalen Datenformaten zu unterstreichen, ist es
zuvor sinnvoll, eine Unterteilung von XML-Dokumenten in datenorientiert und
dokumentenorientiert vorzunehmen.
Dokumentenorientierte XML-Dokumente enthalten zumeist unstrukturierte oder nur
teilweise strukturierte Daten. Dokumentenorientierte XML-Dokumente benötigen kein
strukturierendes Schema. Eine DXL-Repräsentation der Daten einer Lotus NotesDatenbank ist ein Beispiel für ein dokumentenorientiertes XML-Dokument. Felder
eines dokumentenorientierten XML-Dokuments können variable Daten enthalten,
ohne dass diese festzulegen sind. Es kann daher im Voraus keine Annahme über den
Dateninhalt getroffen werden. Daten, die aus semistrukturierten Datenbanken
stammen, fallen üblicherweise in diese Kategorie.
Datenorientierte XML-Dokumente sind hingehen klar strukturiert und haben ein stark
spezifiziertes Schema. Sie sind potentiell komplexer als dokumentenorientierte XMLDokumente. Im Gegensatz zu dokumentenorientierten XML-Dokumenten sind hier
feste Vorgaben über Auftreten und Struktur der Dokumenteninhalte festgelegt.
Abbilder von Inhalten einer relationalen Datenbank sind typischerweise datenorientierte XML-Dokumente. Die nachfolgende Abbildung gibt ein Beispiel für
datenorientiertes und dokumentenorientiertes XML.
45
Data oriented
<invoice>
<orderDate>1999-01-21</orderDate>
<shipDate>1999-01-25</shipDate>
<billingAddress>
<name>Ashok Malhotra</name>
<street>123 Microsoft Ave.</street>
<city>Hawthorne</city>
<state>NY</state>
<zip>10532-0000</zip>
</billingAddress>
<voice>555-1234</voice>
<fax>555-4321</fax>
</invoice>
Document oriented
<memo importance='high' date='1999-03-23'>
<from>Paul V. Biron</from>
<to>Ashok Malhotra</to>
<subject>Latest draft</subject>
<body> We need to discuss the latest
draft<emph>immediately</emph>.
Either email me at <email>mailto:[email protected]</email>
or call <phone>555-9876</phone>
</body>
</memo>
Abb. 17 Daten- und dokumentenorientiertes XML56
Wie bereits beschrieben, bieten relationale Datenbanken Funktionen zum Erzeugen
und Importieren von datenorientierten XML-Dokumenten. Eine genauere Betrachtung
dieses Prozesses erfolgt im Rahmen der Implementierung in Kapitel 4.
Konzeptuell ist also bei einer Kommunikation zwischen einer semistrukturierten und
einer relationalen Datenbank die Umwandlung eines dokumentenorientierten in ein
datenorientiertes XML-Dokument notwendig. Der wesentliche Schritt vom
dokumentenorientierten zum datenorientierten XML ist die Schaffung einer klaren
Struktur mittels eines Schemas.
Eine Umwandlung eines XML-Dokuments wird mit der Extensible Stylesheet
Language (XSL) durchgeführt. Eine Komponente der XSL-Sprache ist der XSLTransformer (XSLT), der es erlaubt, unterschiedliche Darstellungen eines Dokuments
zu generieren oder Daten von einem XML-Format in ein anderes umzuwandeln.
XSLT funktioniert sowohl mit DOM als auch mit SAX. Es ist hiermit möglich, einem
56
Darstellung in Anlehnung an das W3C-Konsortium.
46
unstrukturierten Dokument ein strukturierendes Schema anzufügen oder Dateninhalte
umzuformatieren.
Um die Vollständigkeit der Repräsentation des XML-Dokuments im Hinblick auf den
relationalen Datenbankimport sicherzustellen, haben (Kappel, Kapsammer und
Retschitzegger)57 in ihrem Konzeptvergleich zwischen XML und relationalen
Datenbanksystemen sechs Kennzeichen definiert, welche in der Schemaerzeugung
berücksichtigt werden sollten.
57
•
Strukturierung und Typisierung
In einem XML-Schema wird die Struktur des Dokuments mit Hilfe von
Elementtypen und zugeordneten Attributen erzeugt. In relationalen
Datenbanken arbeiten Relationen und zugeordnete Attribute vergleichbar. Im
Wesentlichen lassen sich im XML-Schema durch Vererbung und
Elementenkombinationen deutlich komplexere Typen von Entitäten erzeugen
als für ein relationales Datenbanksystem vorgesehen sind.
•
Einzigartigkeit von Bezeichnern
Relationen dürfen mit gleicher Bezeichnung nicht mehrfach in einem
relationalen Datenbanksystem (RDBS) auftreten. Ebenso wenig erlaubt ein
XML-Schema eine Mehrfachbezeichnung. Es sollte allerdings vermieden
werden, dies im XML-Schema mit Hilfe von Namensräumen oder
Symbolräumen, welche eine gleiche Namensgebung innerhalb jeder Instanz
ermöglichen, zu umgehen.
•
Nullwerte und Defaultwerte
Null- und Defaultwerte sind auch in XML-Dokumenten vorgesehen. In einem
RDBS bezieht sich diese Möglichkeit nur auf Attribute - bei XMLDokumenten wird dies auf Elemente ausgeweitet. Auch Kardinalitäten lassen
sich in XML bestimmen.
•
Identifikation
Identifikation im RDBS funktioniert über Primärschlüssel. Im XML-Schema
sind Schlüssel ebenfalls vorgesehen und können auch eindeutig bestimmt
werden. Sie sind aber im Gegensatz zum relationalen Modell nicht zwingend
erforderlich.
•
Beziehungen
Die Funktionsweise von relationalen Fremdschlüsseln wird in XML mithilfe
des Keyref-Konzepts realisiert, das durch Element- bzw. Attributverweise
ähnlich einer Fremdschlüsselrelation verwendet wird.
Vgl. Kappel/Kapsammer/Retschitzegger 2001.
47
•
Reihenfolge und Ordnung
Es ist zu beachten, dass bei XML-Dokumenten sowohl eine explizite als auch
eine implizite Ordnung bestimmt werden kann. Explizit durch Verwendung des
Elementtyps Sequence und implizit durch die relative Position im Dokument.
Es bestehen Ansätze, solche Anforderungen an ein XML-Schema automatisch zu
prüfen und gegebenenfalls umzusetzen. Augenblicklich ist die Konvertierung
allerdings noch manuell mittels eines XSL-Stylesheets durchzuführen.
3.3.3 Zusammenfassung
[Patrick Hennies]
Es wurde in der vorangegangenen Betrachtung aufgezeigt, auf welche Weise es
möglich ist, Daten aus den jeweiligen Kommunikationsendpunkten einer
semistrukturierten und einer relationalen Datenbank in Form von XML zu extrahieren
oder sie darin zu speichern. Zusätzlich zur großen Ähnlichkeit von semistrukturierten
Datenbankinhalten und XML-Dokumenten wurde festgehalten, dass auch relationale
Datenbanken der Bedeutung von XML durch Kompatibilitätsunterstützung Rechnung
tragen. Das Konzept unterschiedlicher XML-Strukturformate wurde eingeführt und es
wurde im Anschluss daran erläutert, welche Möglichkeiten sich bieten, die beiden
betrachteten Darstellungsformen in die jeweils andere umzuwandeln.
Auch wenn XML der De-facto-Standard in Bereich des Datenaustauschs geworden ist,
sind XML-Dokumente in der Regel nicht gleichartig und es bedarf einer Umwandlung, um eine vollständige Kompatibilität zu anderen Applikationen zu
gewährleisten. Dennoch hat die Verbreitung und Nutzung eines stark standardisierten
Formats wie XML wesentlich zur Erleichterung der Datenkommunikation beigetragen.
48
3.4
Kommunikation
[Patrick Hennies]
Das Ziel dieses Kapitels ist der Vergleich verschiedener Möglichkeiten die eigentliche
Kommunikationslösung zu realisieren. Dieser Vergleich wird geschlossen mit einer
genaueren Analyse des gewählten Implementierungskonzepts.
Das entscheidende Merkmal einer das Internet als Infrastruktur nutzenden
Kommunikation ist, dass es sich hierbei um ein verteiltes System handelt. Gerade bei
der Interaktion innerhalb eines verteilten Systems ist eine organisatorische Steuerung
des miteinander Kommunizierens notwendig. Wie in Kapitel 2.1.2 eingeführt wurde,
ist in diesem Fall der Einsatz einer Middleware sinnvoll. Als Ergänzung der
Kommunikationsinfrastruktur ermöglicht es eine Middleware verteilen Anwendungen,
bekannte und lokale Techniken und Operationen zu nutzen. Die Middleware
übernimmt den Ausgleich der Hard- und Softwareunterschiede und die Kommunikationsverwaltung.
3.4.1 Kommunikationsalternativen
[Patrick Hennies]
Im nachfolgenden Kapitel werden vier Integrationsalternativen für die Umsetzung der
Kommunikation verglichen. Es wird ein Vertreter einer rein nachrichten- bzw.
transaktionsbasierten Middleware betrachtet, die Remote Method Invocation (RMI).
Mit CORBA folgt dann die Untersuchung einer verbreiteten, objektorientierten
Lösung. Microsofts DCOM, die dritte Alternative, ist ebenfalls objektorientiert und
wird vornehmlich als Grundlage für die Weiterentwicklung im Rahmen der .NETEntwicklungsumgebung von Microsoft betrachtet. Als letzte Alternative folgt das hier
favorisierte Konzept der Web Services, welches sich von den vorherigen Alternativen
unter anderem durch seinen stärkeren Abstraktionscharakter unterscheidet.
49
3.4.1.1 Java RMI
[Patrick Hennies]
RMI ist eine Java-basierte RPC-Erweiterung. Ihre Struktur ist im Gegensatz zum
klassischen RPC objektorientiert. Sie ist lauffähig auf einer Java Virtual Machine
(JVM), einer systemunabhängigen Java-Umgebung. Damit ist RMI zwar
systemunabhängig, aber gleichzeitig an eine bestimmte Programmiersprache
gebunden. Zusätzlich zu der Eigenschaft auf einer objektorientierten (Java-) IDL zu
basieren, müssen sich Serverobjekte im Gegensatz zum RPC noch an einer so
genannten RMI-Registry anmelden und dort ihre Dienste veröffentlichen. Die
Interface-Definition sowie die Methodenaufrufe laufen über diese Registry. RMI
verwendet also eine Broker-basierte Architektur und eine Kommunikation wird mittels
einer Interaktion des Clients und lokalen Proxies realisiert. Zusammenfassend lässt
sich RMI im Wesentlichen als objektorientierter Java-RPC bezeichnen. Vor allem
durch die häufige Verwendung von Java-basierten Lösungen hat RMI breitere
Anwendung finden können. Die nachfolgende Abbildung betont nochmals die
Ähnlichkeit der RMI-Kommunikation zum RPC.
Abb. 18 Java RMI-Kommunikationsstruktur 58
58
Aus Tari/Bukhres 2001, S. 21.
50
3.4.1.2 CORBA
[Patrick Hennies]
In CORBA (Common Object Request Broker Architecture) wird der Begriff der
Objektorientierung sehr streng interpretiert. CORBA wurde von der Object
Management Group (OMG) entworfen. In der ursprünglichen Version lag der Schwerpunkt auf der Definition einer Interface Definition Language (IDL), welche die
Systemunabhängigkeit unterstützten sollte. Der Object Request Broker (ORB) ist eine
Entität, die es Objekten ermöglicht, transparent Anfragen und Antworten in einem
verteilten Umfeld zu stellen und zu empfangen.59 Diese Funktionalität wird im
Wesentlichen durch vier Elemente sichergestellt.
•
Common Object Services – Basisdienste wie beispielsweise Ereignisverwaltung.
•
Common Frameworks – Objektgruppen der Common Object Services, sortiert
nach Anwendungsbereich. Ein Beispiel sind Dienste, die sich mit der
Agentenverwaltung befassen.
•
Domain Objects – Geschäftsobjekte, welche domänenspezifische
Modelldefinitionen bereitstellen. Sie nutzen Common Frameworks und
Common Object Services.
•
Application Objects – Anwendungsspezifische Objekte, welche aus allen
vorhergehenden Kategorien zusammengestellt werden können.
Anfragen von Clients an den Server werden in CORBA über eine Objektreferenz auf
das Serverobjekt realisiert. Der Object Request Broker sucht dann die dem Objekt
zugehörige Implementierung und stellt eine Verbindung her. Die CORBA IDL verfügt
mittlerweile auch über Schnittstellen zu vielen gängigen Programmiersprachen.
CORBA ist somit plattformübergreifend einsetzbar, sofern eine ORB-Implementierung von dieser Plattform unterstützt wird (vgl. Abb. 19).
59
Vgl. Myerson 2002, o. S.
51
Abb. 19 CORBA – ORB-Architektur 60
3.4.1.3 DCOM und .NET Remoting
[Patrick Hennies]
Das Component Object Model (COM) ist eine von Microsoft stammende
Entwicklungsumgebung für Windows. Das Grundkonzept im COM-Modell ist das
COM-Objekt, eine Erweiterung von klassischen Objekten zu einer Component. Der
Begriff Component steht hierbei für eine Gruppierung mehrere Objekte und das
Bereitstellen entsprechender Zugriffsinterfaces.
DCOM (Distributed COM) ist die Erweiterung des COM-Modells für verteilte
Umgebungen. DCOM funktioniert auf ähnliche Weise wie CORBA und verwendet
wie alle vorherigen Alternativen eine Broker-Methodik. Anders als bei RMI oder
CORBA werden jedoch explizit temporäre Verbindungen bevorzugt. Anfragen werden
via RPC gestellt und beantwortet, wobei DCOM anders als COM zwingend
objektorientierte RPCs verwendet. Das Interface wird mit der MIDL (Microsoft
Interface Definition Language) beschrieben; hier bestehen ähnliche Wahlmöglichkeiten und Beschränkungen wie bei der CORBA IDL.
COM, und damit auch DCOM, sind trotz ihrer hohen Komplexität aufgrund der
marktbeherrschenden Position der Windows-Plattform weit verbreitet.
.NET Remoting ist die Weiterführung der Entwicklung von DCOM im Rahmen der
Microsoft .NET-Umgebung. Auch wenn noch nicht viele Umsetzungen mit dieser
60
Aus Tari/Bukhres 2001, S. 46.
52
Technik bestehen, ist sie in ihre Funktionsweise weitestgehend deckungsgleich zu
DCOM.
Die COM-Weiterentwicklung COM+ ist ebenfalls Teil des .NET Frameworks. In
beiden Fällen bestehen Schnittstellen für die Migration der älteren auf die neue
Umgebung.
Ein großer Vorteil beim Einsatz von .NET-Remoting im Vergleich zu DCOM ist, dass
hier keine spezielle IDL mehr verwendet wird, sondern diese Funktion vielmehr als
Teil der so genannten .NET Assemblies realisiert wird. Diese Assemblies benötigen
keine weitere Formatierung und können direkt in Anwendungen eingebunden werden.
.NET Remoting ist damit weniger systemabhängig und schwächer gekoppelt als sein
Vorgänger. Die Kommunikationsarchitektur von .NET Remoting unterteilt sich in
Proxyobjekte, Kanalobjekte und Nachrichten. Die Proxyobjekte arbeiten auf die in
Kapitel 2.1.2 beschriebene Weise, wobei das serverseitige Proxyobjekt als
Stackbuilder bezeichnet wird. Die Kanalobjekte dienen der Abstraktion der zugrunde
liegenden Kommunikationsverbindung und verfügen über einen Formatter, um einund ausgehende Nachrichten, je nach Art des gewählten Kommunikationskanals, zu
bearbeiten.
Abb. 20 .NET Remoting – Übersicht 61
Die .NET-Architektur integriert auch das Konzept der Web Services, der vierten
betrachteten Alternative, und wird, da sie auch als Grundlage der Implementierung
gewählt wurde, im 4. Kapitel näher betrachtet.
3.4.1.4 Web Services
[Patrick Hennies]
61
Aus Barnaby 2002, S. 109.
53
Web Services sind eine Weiterentwicklung der bisherigen Alternativen; sie
unterscheiden sich allerdings deutlich in einigen Eigenschaften. Operierend auf einer
höheren Abstraktionsebene als die anderen Middleware-Technologien verwenden
Web Services eine RPC-Emulation und arbeiten mittels asynchronen Nachrichtenaustauschs. Sie sind mehr als Konzept zu verstehen denn als tatsächliche
Implementierung und lassen sich auf bestehende Applikation aufsetzen.
Das Besondere an Web Services ist, dass sie die Technologiegrenzen überwinden
können und nicht von einer bestimmten Programmiersprache oder einem Datenformat
abhängen. Sie arbeiten in einer nur lose gekoppelten Architektur - im Gegensatz zu
CORBA und DCOM, die eine vergleichsweise stärkere Kopplung erfordern. Das
Erzeugen eines ORB ist somit beispielsweise nicht mehr notwendig.62 Dies wird
realisiert mittels einer durchgängigen Verwendung von XML. Web Services gestatten
es auf der Client- und Serverseite unterschiedliche Kommunikationsimplementierungen einzusetzen und miteinander zu verbinden. Trotz ihrer nachrichtenbasierten
und asynchronen Struktur sind Web-Services-Implementierungen aber auch dazu
fähig, eine Anfrage-Antwort-synchrone Kommunikation bereitzustellen. Sie lassen
sich daher auch auf Technologien wie CORBA oder DCOM aufsetzen.63
Besonders im Hinblick auf Applikationsintegration bieten die XML-basierten Web
Services große Vorteile. Es lassen sich Dienste und Anwendungen verschiedenster Art
unter einem Web Service zusammenfassen. Gleichzeitig bietet XML den Standard für
Informationsaustausch und erzwingt durch seine weite Verbreitung auch eine
Unterstützung durch alle wesentlichen Kommunikationsteilnehmer.
Als Kritik an Web Services ist allerdings zu bemerken, dass diese Fähigkeiten
eigentlich nicht neu sind. CORBA und DCOM haben mit der Strategie der verteilten
Objekte schon viel früher ein sehr ähnliches Ziel verfolgt. Hinzu kommt, dass es
gegenwärtig noch mehrere konkurrierende „Standards“ für verschiedene Aspekte der
Web-Service-Architektur gibt. Die Technologie ist jung; es wird wohl auch noch
einige Zeit dauern, bis sich definitive Standards für alle Aspekte durchgesetzt haben.64
Es war nicht primäres Ziel des vergangenen Kapitels eine detaillierte Einführung in
alle existierenden Technologien zu geben. Vielmehr sollten nach einem kurzen
Einstieg vor allem die Ähnlichkeiten der verbreiteten Umsetzungen aufgezeigt
werden. In Relation hierzu wurde dann das neue Konzept der Web Services gesetzt,
was andere, aber bei genauerer Betrachtung nicht immer neue Ansätze in diese
Thematik einbringt.
62
Vgl. Myerson 2002, o. S.
Vgl. Newcomer 2002, S. 8-32.
64
Vgl. Linthicum 2003, o. S.
63
54
3.4.2 Kommunikationskonzept
3.4.2.1 Auswahlentscheidung
[Hermann Nottelmann, Patrick Hennies]
In dem vorangegangenen Kapitel wurden vier verbreitete Möglichkeiten aufgezeigt
eine verteilte Kommunikation zu implementieren. Die Auswahlentscheidung erfolgt
zugunsten von Web Services, da diese eine maximale Unabhängigkeit in Bezug auf
einzusetzende Technologien und Protokolle gewährleisten und damit die flexibelste
Alternative darstellen.
Diese Unabhängigkeit wird erreicht durch eine intensive Nutzung bestehender,
standardisierter und allgemein anerkannter Formate und Protokolle. Es wird auf die
existierende Web-Infrastruktur aufgesetzt, ohne deren Protokollsatz durch zusätzliche
proprietäre Standards auszudehnen. Web Services lassen sich somit als eine das Interund Intranet überbrückende Lösung einsetzen. Eine Kommunikation kann auch
ausschließlich über den HTTP-Port 80 ablaufen und somit sind keine einschneidenden
Änderungen, beispielsweise in unternehmensinternen Sicherheitsroutinen, notwendig.
Ein weiterer De-facto-Standard, den Web Services intensiv nutzen, ist die
Beschreibungssprache XML.
Die durchgängige Verwendung von XML ist einer der zentralen Vorteile von Web
Services. XML wird auf allen Ebenen der Architektur eingesetzt und ist somit Basis
für die Erkennung, Beschreibung, Formatierung und den Austausch von Daten. Der
Kommunikationsfluss zwischen der semistrukturierten und relationalen Datenquelle
kann durchgängig mittels XML-Dokumenten durchgeführt werden (siehe Kapitel 3.3).
Es entfallen zusätzliche Konvertierungen in Zwischen- oder Übertragungsformate.
Durch ihre offene Struktur sind Web Services auch dazu fähig heterogene
Architekturen zu verbinden. Anders als bei eng gekoppelten Systemen können also
Client und Server auf andersartigen Plattformen laufen. Die Erweiterbarkeit wird
hiermit deutlich gestärkt, da neue Kommunikationspartner leicht und ohne wesentliche
Anpassungen mit dem Web Service in Kontakt treten können. Gerade Zeitphasendaten
in Projekten werden oft verteilt erfasst und haben einen zeitlich befristeten,
kurzfristigen Charakter. Ein Web Service ist somit die bestmögliche
Implementierungsalternative.
55
3.4.2.2 Modellcharakteristika
[Hermann Nottelmann, Patrick Hennies]
Ausgangspunkt dieser Arbeit war die Realisierung einer webbasierte Kommunikation
und Integration zwischen Microsoft Enterprise Project Management und PAVONE
TimeTracking. Hierbei handelt es sich allerdings weniger um eine interaktive
Kommunikation, sondern vielmehr um eine reine Informationsübertragung. Auch die
Kommunikationspartner sind nicht die eigentlichen Anwendungen, sondern die
zugrunde liegenden Datenbanksysteme. Es handelt sich also um eine Datenübertragung zwischen Lotus Notes/Domino - einer dokumentenbasierten, semistrukturierten Datenbank - und einer relationalen Datenbank auf einem Microsoft SQL Server.
Der Kommunikationsverlauf hat in der Theorie die folgende Form:
Es wird ein Projekt inklusive aller Vorgänge angelegt und die wesentliche Struktur des
Projekts mit allen relevanten Terminen bestimmt. Diese Eingaben erfolgen in Microsoft Project.
Dieses erstellte Projekt in Form der Projektstrukturdaten wird nach Lotus Notes bzw.
PAVONE TimeTracking übertragen.
Hier werden im Projektverlauf tatsächliche Daten von Projektteilnehmern erfasst und
eingetragen. Zu beliebigen Zeitpunkten erfolgt dann eine Rückübertragung der
erfassten Zeitphasendaten eines Projektteilnehmers zurück nach Microsoft Project.
Zusammenfassend findet also eine bidirektionale Kommunikation statt. Nicht nur in
der Form, dass Parameter für eine Anfrage übertragen werden, sondern dass zwei
unterschiedliche und gegenläufige Informationsflüsse bestehen, die zeitlich
auseinander fallen. Abbildung 21 fasst diesen Ablauf zusammen.
PAVONE
MS-Project
3
Projektdaten
einlesen
2
Projektdaten
übertragen
1
Projekt anlegen
4
Tatsächliche Daten
werden erfasst
5
Erfasste Daten
übertragen
6
Projekt
aktualisieren
…
Abb. 21 Kommunikationsverlauf in der Übersicht
56
Nachdem eine einführende Betrachtung beider Kommunikationsteilnehmer und des
theoretischen Kommunikationsverlaufs erfolgt ist, soll im Folgenden das resultierende
Kommunikationsmodell skizziert werden. Eine detaillierte Betrachtung der
Modellimplementierung erfolgt dann in Kapitel 4.
Sowohl die in der Lotus Notes-Datenbank gehaltenen Aufwandsdaten, also auch die in
der relationalen Datenbank abgelegten Projektstrukturdaten lassen sich mit den in
Kapitel 3.3 beschriebenen Mechanismen in einem XML-Dokument ablegen. Es wurde
dort auch aufgezeigt, dass Inhalte von XML-Dokumenten - sofern sie bestimmte
Strukturanforderungen erfüllen - ebenfalls automatisiert in die jeweilige Datenbank
eingelesen werden können.
Die Übertragung der XML-Dokumente übernimmt ein Web Service. Dieser basiert auf
der Client-Server-Architektur. Der Server stellt Funktionen bereit, welche vom Client
angefragt werden können (siehe Kapitel 2.1.1). Im Detail wurde aufseiten des
Microsoft SQL Servers der Server implementiert, während Lotus Notes-seitig die
Clientanfragen erzeugt werden. Für die Übertragung wird das standardmäßig mit Web
Services assoziierte SOAP-Protokoll verwendet. Auf den Einsatz eines UDDIDienstes wird verzichtet, da eine Entdeckung von Diensten aufgrund gegenseitiger
Kenntnis der Kommunikationspartner hinfällig ist. Die Kommunikation erfolgt direkt.
Die Entscheidung für die Lage des Servers beruht auf einem wesentlichen
Charakteristikum der Zeitdatenerfassung. Aufwände werden mittels Lotus Notes von
den Projektteammitgliedern explizit dezentral erfasst, um dann gebündelt in die
relationale Datenbank transferiert zu werden. Anschließend lassen sich in Microsoft
Project, basierend auf der nun aktualisierten Datenbasis, Projektstrukturanpassungen
vornehmen. Die Aufteilung der Web-Service-Struktur spiegelt diesen Zusammenhang
wider (Abb. 22).
Web Service
XML
Soap
XML
Pavone
Abb. 22 Web-Service-Kommunikationsmodell
Server
NSF
Client
Project
XML
SQL
57
Der Server übernimmt in der Kommunikation die Aufgabe, Daten aus der SQLDatenbank zu erfragen oder sie in dieser zu speichern. Es werden hierzu vom Client
spezifische Methoden aufgerufen und bei Bedarf wird vom Client das entsprechende
XML-Dokument mitgesendet. Bei einer Anfrage nach den Projektstrukturdaten aus
Microsoft Project wird vom Server als Antwort ein strukturiertes XML-Dokument
zurückgeliefert. In der Gegenrichtung speichert der Server die Inhalte des erhaltenen
Dokuments in der Datenbank. Wie in Kapitel 3.2 aufgezeigt, ist für den XML-Import
in eine relationale Datenbank ein durch ein Schema beschriebenes XML-Dokument
notwendig. Das XML-Schema wandelt ein dokumentenorientiertes in ein datenorientiertes XML-Dokument um.
Der Umwandlungsprozess wird allerdings bereits clientseitig durchgeführt. Dies
begründet sich in der Tatsache, dass eine Umwandlung eines XML-Dokuments mittels
XSLT manuell zu erfolgen hat. Da aber eine Vorgabe gewesen ist, möglichst wenige
Strukturannahmen über Client und Server zu treffen, kann der Server nicht von einer
einheitlichen Struktur der vom Client erhaltenen Daten ausgehen. So könnte man sich
zum Beispiel auch eine Zeitdatenerfassung mittels Web-Interface als Alternative zu
der Implementierung PAVONE TimeTracking vorstellen. Dies würde eine
andersartige Datenstruktur zurückliefern, welche der Server dann nicht verarbeiten
könnte. Eine generische Erzeugung von Konvertierungsmechanismen ist mittels
heutiger Konzepte noch nicht möglich. Es müsste also für jede mögliche Alternative
eine Implementierung im Server hinterlegt werden. Dies ist allerdings aufwendiger als
eine clientseitige Umwandlung, da hier bei der Erzeugung der XML-Dokumente
ohnehin bereits ein Konvertierungsprozess abläuft, der nur ergänzt werden muss.
3.5
Limitationen und Entwicklungspotenziale
[Hermann Nottelmann]
Web Services sind eine relativ neue Technologie und unterliegen daher in Teilen
ständigen Veränderungen. Einige Bestandteile befinden sich zum jetzigen Zeitpunkt
noch in einem frühen Entwicklungsstadium und sind in mancher Hinsicht noch nicht
ausgereift. Es bleibt aber festzustellen, dass den beteiligten Standardisierungsgremien
durch die eingesetzten Arbeitsgruppen ein Steuerungsinstrument an die Hand gegeben
wurde, welches die Weiterentwicklung von weithin akzeptierten Technologiebausteinen durch ihre Standardisierungsbestrebungen forciert. Trotz der beschriebenen
Einschränkungen wird allgemein ein großer Erfolg für Web Services vorhergesagt.65
Als grundlegendes Element des Erfolgs ist jedoch die breite Akzeptanz der
verabschiedeten Standards anzusehen.
65
Vgl. Cerami 2002, S.24-26
Description
WSDL
Packaging
Transport
Network
SOAP
HTTP
Quality of Service
UDDI
Management
Discovery
Security
58
TCP/IP
Abb. 23 Erweitertes Web-Service-Schichtenmodell
Das erweiterte Web-Service-Schichtenmodell von Abbildung 23, dessen linke Säule
dem Web-Service-Schichtenmodell aus Kapitel 2.4.1 entspricht, führt drei wesentliche
Aspekte im Zusammenhang mit der nachrichtenbasierten Kommunikation auf, die
somit auch für Web Services relevant sind und die in einer finalen
Implementierungsstufe einer solchen Kommunikationslösung Berücksichtigung finden
sollten. Es handelt sich hierbei im Einzelnen um Sicherheit sowie Management und
Quality of Service. Diese werden in Kapitel 3.5.1 respektive 3.5.2 behandelt.
3.5.1 Sicherheit
[Hermann Nottelmann]
Es empfiehlt sich für die Auseinandersetzung mit der Sicherheit von Web Services,
zunächst von der Implementierungsseite zu abstrahieren und allgemeine Sicherheitscharakteristika nachrichtenbasierter Kommunikation zu betrachten66:
Neben dem Identitätsnachweis der Kommunikationsendpunkte mittels Authentifizierung und Autorisierung basierend auf Rechten spielt die Unleugbarkeit (engl.
Non-Repudiation) eine wichtige Rolle.
Im vorliegenden Fall liegt der Fokus von Web Services auf der Integration von
verteilten Datenquellen; die Unleugbarkeit sichert in Verbindung mit der Revision
(engl. Auditing) die eindeutige Bestimmung des Urhebers von Änderungen am
Datenbestand zu einem beliebigen späteren Zeitpunkt. Hier werden Technologien wie
beispielsweise digitale Signaturen eingesetzt.
Bezüglich der ausgetauschten Nachrichten muss deren Integrität gesichert werden; auf
Empfängerseite muss der Nachrichteneingang in unverfälschter Form gewährleistet
66
Vgl. in Teilen Hartman et al., S. 95-96.
59
sein. Die Vertraulichkeit (engl. Confidentiality) der übermittelten Inhalte wird
typischerweise durch Verschlüsselungstechniken sichergestellt.
Bestehende verbindungsorientierte Sicherheitsimplementierungen sind nur bedingt für
die Anforderungen einer Web-Service-Architektur geeignet. Auf einen Web Service
wird typischerweise über das Internet zugegriffen. Der Weg der Nachrichten ist im
Vorfeld nicht bekannt bzw. kann sich im Kommunikationsverlauf verändern; daraus
erwachsen bestimmte zu adressierende Sicherheitsrisiken. Es handelt sich hier genauer
um die Forderung nach der End-to-End-Sicherheit.67 Dies bedeutet, dass die
verschiedenen Sicherheitsaspekte unabhängig von der gewählten Route vom Sender
bis zum Empfänger gewährleistet sein müssen.
Bezüglich der SOAP-Nachricht ist es deshalb zweckmäßig, Header und Body bei der
Konzeption einer Sicherheitslösung getrennt voneinander zu betrachten. Während der
Header ggf. auch von zwischengeschalteten Einheiten, den so genannten Intermediaries ausgewertet wird, ist der eigentliche Nachrichteninhalt nur für den
Empfänger bestimmt.
Es geht darüber hinaus um die Schaffung eines Sicherheitskontextes, der nicht nur auf
den einmaligen Nachrichtenaustausch beschränkt ist. Dazu müssen sicherheitsrelevante Informationen innerhalb der SOAP-Nachricht mit dem Inhalt verknüpft sein.
Die XML-Prägung der Web-Service-Architektur setzt sich auch in ihrer Erweiterung
um Sicherheitsaspekte vorangetrieben durch Standardisierungsgremien fort. Bislang
existiert mit der Web Services Security68 allerdings nur eine sehr allgemein gehaltene
Spezifikation der OASIS bezüglich der Sicherheit von SOAP-Nachrichten. Diese
überträgt im Wesentlichen die beiden, zuvor für den allgemeinen XML-Kontext
entwickelten, Standards XML Signature69 und XML Encryption70 auf Web Services.
Erstgenannter Standard wurde gemeinschaftlich vom W3C und der IETF entwickelt
und adressiert den Sicherheitsaspekt der Datenintegrität mithilfe digitaler Signaturen.
Beim Letztgenannten geht es um die teilweise Verschlüsselung von XMLDokumenten. Grundlage hierfür bilden die im allgemeinen Sicherheitskontext
verwendeten etablierten Verschlüsselungsprotokolle.
67
Vgl. Web Services Architecture, W3C Working Group Note, 11 Feb 2004. Aufgerufen 02.07.2004.
Vgl. Web Services Security 1.0 (WS-Security 2004), OASIS Standard 200401, March 2004.
Aufgerufen 02.07.2004.
69
Vgl. XML-Signature Syntax and Processing, W3C Recommendation, 12 Feb 2002. Aufgerufen
02.07.2004.
70
Vgl. XML Encryption Syntax and Processing, W3C Recommendation, 10 Dec 2002. Aufgerufen
02.07.2004.
68
60
Der Web-Services-Security-Standard bildet den Ausgangspunkt für eine Reihe
weiterer, noch im Entstehungsprozess befindlicher, herstellerunabhängiger Standards
bzw. Spezifikationen.71
3.5.2 Management und Quality of Service
[Hermann Nottelmann]
Im Kontext verteilter Systeme basierend auf dem Internet als infrastruktureller
Grundlage ist eine Vielzahl von Fehler- bzw. Ausnahmeszenarien denkbar. Um die
Qualität der beteiligten Web Services zu erhöhen, ist es notwendig, zum einen die
Fehlerhäufigkeit zu reduzieren und zum anderen die Qualität der im Fehlerfall
bereitgestellten Informationen zu erhöhen. Quality-of-Service-Eigenschaften sind im
Kontext von Web Services eng mit dem Aspekt der Verlässlichkeit (engl. Reliability)72
verknüpft.
Von zentraler Bedeutung aufgrund der Kommunikationsform von Web Services ist die
verlässliche Nachrichtenübertragung. Die Forderungen an eine solche sind:
•
Garantierte Auslieferung der Nachricht beim Empfänger; andernfalls wird das
Scheitern der Auslieferung dem Sender mitgeteilt.
•
Jede Nachricht wird genau einmal ausgeliefert. Duplikate werden als solche
erkannt und gelöscht.
•
Korrekte Nachrichtenreihenfolge. Die Nachrichten kommen beim Empfänger
in der Reihenfolge an, wie sie vom Sender abgeschickt wurden.
Sichergestellt wird dies typischerweise durch eine Abfolge von Nachrichtenbestätigungen (engl. Acknowledgements) zur Empfangs- bzw. Validitätsbestätigung.
Das Web Services Reliable Messaging Protocol73 und Web Services Reliability74 sind
hier als Ergebnis standardvorbereitender, herstellerspezifischer Bemühungen zu
nennen.
Auf einer höheren Aggregationsstufe wird die Etablierung eines Transaktionsmanagements bezweckt. Web-Service-Management beruht auf der Idee, dass alle Web
Services standardisierte Methoden bereitstellen, über welche diese gemäß vorhandener
Zugriffsrechte kontrolliert und gesteuert werden können.
71
Eine Übersicht findet sich u.a. in (Hartman et al., S. 95-96).
Vgl. Web Services Architecture, W3C Working Group Note, 11 Feb 2004. Aufgerufen 02.07.2004.
73
Vgl. Web Services Reliable Messaging Protocol (WS-ReliableMessaging), March 2004. Aufgerufen
02.07.2004.
74
Vgl. Web Services Reliability (WS-Reliability), Vers. 1, 8 Jan 2003. Aufgerufen 02.07.2004.
72
61
4 Prototypische Realisierung des Kommunikationsmodells
[Patrick Hennies]
Für die Erläuterung der technischen Umsetzung der einzelnen Komponenten der
Kommunikationsstruktur wird nochmals das Modellbild aus Kapitel 3.4.2.2
untersucht.
3
2
1
Kommunikation
PAVONE TimeTracking
Microsoft Project
XML
Soap
XML
Server
NSF
Client
Project
XML
SQL
Pavone
Abb. 24 Web-Service-Kommunikationsmodell (modifiziert)
Dieses Modell lässt sich für eine technische Betrachtung in drei Grundelemente
unterteilen:
1. Microsoft Project, auf dessen Seite der Web-Service-Server implementiert ist,
die SQL-Datenbank liegt und auf welcher ein Web Server die Anbindung an
das Internet ermöglicht.
2. PAVONE TimeTracking, welches aus Lotus Notes heraus operiert und zu
welchem auch der Web-Service-Client zählt.
3. Das Kommunikationselement, welches insbesondere das Format der
übertragenen Nachrichten detailliert und die technische Umsetzung der
Schnittstellen betrachtet.
In diesem Kapitel wird vor allem die technische Umsetzung des gewählten Modells
beschrieben. Hierzu werden zunächst die drei Teilelemente des Kommunikationsmodells in ihren technischen Bausteinen erläutert und ihre Nutzung in der
Implementierung gezeigt. Im Anschluss wird der Kommunikationsverlauf (nochmals)
62
mittels Screenshots detailliert. Geendet wird mit einer Übersicht der getroffenen
Annahmen und gegenwärtigen Beschränkungen der Implementierung sowie
Installations- und Konfigurationshinweisen.
4.1
Microsoft Project
XML
DataSet
Web
Anfragen
Web Service
[Patrick Hennies]
ADO
DataAdapter MS-SQL
MS-Project
Projektdaten
.NET Framework
IIS
Abb. 25 Technisches Kommunikationsmodell - Teil 1
Dies ist eine Detaillierung des rechten Teils des Kommunikationsmodells, also der
Seite, auf welcher die relationale Datenbank und der Web Service liegen.
Zur Implementierung des Web Service ist zunächst ein Web Server einzusetzen.
Dieser ermöglicht die Erreichbarkeit des Web Service aus dem Internet. Da sowohl
Microsoft Project als auch der Microsoft SQL Server auf der Windows-Plattform
basieren, lag es nahe, für die prototypische Entwicklung den Microsoft Internet
Information Server (IIS) - welcher bei Windows XP und 2000 bereits integriert ist - zu
verwenden. Aufsetzend auf dem Web Service wurde das, ebenfalls von Microsoft
entwickelte, .NET Framework als Entwicklungsumgebung ausgewählt. Mittels des
.NET Frameworks wird die Anbindung an die SQL-Datenbank realisiert und die Daten
für den Web Service extrahiert. Microsoft Project wird nicht über den Framework
angesprochen, sondern ist direkt an die Datenbank angebunden. Projektdaten werden
dort in Tabellenform direkt eingespeichert.
63
Das .NET Framework, die Speicherung der Projekttabellen durch Microsoft Project
und die eingesetzten Werkzeuge der Entwicklungsumgebung werden in den
Folgekapiteln 4.1.1 und 4.1.2 näher betrachtet.
4.1.1 Microsoft Project Datenmodell
[Patrick Hennies]
Projektdaten, welche in Microsoft Project erfasst werden, speichert das Programm
üblicherweise in einem eigenen Format. Microsoft Project hat allerdings auch die
Möglichkeit integriert, mittels einer ODBC-Verbindung in Datenbanksysteme, insbesondere SQL-basierte, zu speichern, was für größere Projekte und damit auch
größere Datenmengen sinnvoll ist.
Microsoft Project legt in der SQL-Datenbank bei dieser Speichermethode insgesamt
29 Tabellen an, welche die gesamten Inhalte wiedergeben. Für die abgelegte
Projektstruktur und die Zeitphasendaten sind allerdings nur 5 Tabellen unmittelbar
relevant.
Hierbei handelt es sich um die Tabellen MSP_PROJECTS, MSP_RESOURCES,
MSP_TASKS, MSP_ASSIGNMENTS und MSP_TIMEPHASED_DATA.
•
MSP_PROJECTS
In dieser Tabelle werden Informationen zum angelegten Projekt gespeichert.
Allerdings sind hier keine Informationen zu Projektbeteiligten oder der
Projektstruktur hinterlegt. Für die Implementierung wurden nur zwei Felder
bearbeitet: PROJ_NAME, in welchem der Projektname hinterlegt ist und
PROJ_EXT_EDITED. Dieses Feld muss bei einer externen (also nicht aus
Microsoft Project heraus erfolgten) Änderung an der Datenbank gesetzt
werden, damit Microsoft Project über die Änderungen informiert ist und sie
verarbeiten kann. Fast alle Tabellen, die externe Bearbeitung unterstützen,
besitzen ein solches Feld. Ebenso verfügen alle 5 relevanten Tabellen über ein
UID-Feld. Dies steht für Unique ID und ist der Tabellenprimärschlüssel.
•
MSP_RESOURCES
In der MSP_RESOURCES-Tabelle sind alle Informationen über beteiligte
Ressourcen, also Personal oder Maschinen, hinterlegt. Im vorliegenden Fall
werden nur personelle Ressourcen betrachtet. Wichtig sind hier das
Namensfeld und das Arbeitsleistungsfeld der Ressource sowie der
Fremdschlüsselverweis auf das Projekt, welchem der Mitarbeiter zugeordnet
ist. Die Tabelle wird allerdings nicht bearbeitet; es wird nur der
Primärschlüssel durch einen Namensvergleich ausgelesen.
64
•
MSP_TASKS
Hier sind die Projektvorgänge gespeichert. Informationen wie geplante(r/s)/
tatsächliche(r/s) Start / Ende sind Inhalte dieser Tabelle. Wichtige Felder des
Prototyps waren die TASK_ID, welche die Reihenfolge der Tasks wiedergibt,
der TASK_OUTLINE_LEVEL und das TASK_IS_SUMMARY-Feld, die
zusammen mit der TASK_ID dann die gesamte Vorgangshierarchie inklusive
aller Sammelvorgänge abbilden können. Meilensteine werden über das
TASK_IS_MILESTONE-Feld gekennzeichnet.
•
MSP_ASSIGNMENTS
Diese Tabelle enthält die Assignments, also die Zuweisung einer Ressource zu
einem Vorgang. Sie verweist mittels Fremdschlüsseleinträgen auf die zugehörigen MSP_RESOURCES- und MSP_TASKS-Einträge. Die bereits von
einer Ressource an der Aufgabe geleistete sowie die noch verbleibende Arbeit
sind in dieser Tabelle gespeichert. Sie werden durch die Felder ASSN_WORK
(geplante Arbeit), ASSN_ACT_WORK (geleistete Arbeit), ASSN_REM_
WORK (noch zu erledigende Arbeit) ausgedrückt. Diese Felder werden durch
den Prototyp auch extern angepasst, sollte sich die in PAVONE TimeTracking
erfasste Arbeit über oder unter den geplanten Wert begeben oder sollte ein
Assignment vorzeitig beendet werden.
•
MSP_TIMEPHASED_DATA
Dies ist die Tabelle, in welcher die eigentlichen Zeitphasendaten abgelegt sind.
Zeitphasendaten lassen sich entweder für eine Ressource, einen Vorgang oder
eine Zuweisung erfassen. Daher wird in dieser Tabelle zunächst mittels
TD_CATEGORY die Datenart festgelegt und dann mit TD_REF_UID der
Fremdschlüssel auf die jeweilige Tabelle gesetzt. TD_START und
TD_FINISH bestimmen die Dauer der Zeitphase, während mit TD_UNITS die
zugrunde liegende Einheit gewählt wird. Möglich sind Minuten, Stunden,
Tage, Wochen, Monate oder Jahre. In TD_FIELD_ID wird die Art der
Zeitphasendaten (noch ausstehende Arbeit, tatsächliche Arbeit etc.) festgelegt.
In den Feldern TD_VALUE 1-7 folgen dann die tatsächlichen
Zeitphasen-daten-Werte. Der Großteil der Daten aus PAVONE TimeTracking
wird über neue Einträge in dieser Tabelle transferiert.
Abbildung 26 fasst die verschiedenen Tabellen mit den relevanten Feldern und den
zugehörigen Fremdschlüsselrelationen zusammen.
65
MSP_PROJECTS
MSP_ASSIGNMENTS
PROJ_ID
ASSN_UID
PROJ_NAME
TASK_UID
TASK_UID
PROJ_EXT_EDITED
RES_UID
PROJ_ID
[…]
PROJ_ID
TASK_NAME
EXT_EDIT_REF_DATA
TASK_OUTLINE_LEVEL
ASSN_START_DATE
MSP_RESOURCES
RES_UID
PROJ_ID
ASSN_FINISH_DATE
ASSN_WORK
ASSN_ACT_WORK
RES_NAME
ASSN_REM_WORK
RES_WORK
[…]
[…]
MSP_TIMEPHASED_DATA
TD_UID
PROJ_ID
TD_FIELD_ID
TD_CATEGORY
TD_REF_UID
TD_START
TD_FINISH
TD_UNITS
TD_VALUE1-7
TD_EXT_EDITED
[…]
Abb. 26 Datenmodell Microsoft Project
MSP_TASKS
TASK_IS_MILESTONE
TASK_IS_SUMMARY
TASK_WORK
TASK_ID
[…]
66
4.1.2 .NET Framework
[Patrick Hennies]
Als Grundlage für die Implementierung des Web Service wurde das .NET Framework
von Microsoft ausgewählt. Mit Visual Studio .NET stand hier eine mächtige
Entwicklungsumgebung bereit. Das Framework war als Kernelement der .NETPlattform-Strategie von Microsoft, besonders im Hinblick auf Schnittstellen gut
dokumentiert.
Die Architektur des .NET Frameworks stellt sich wie folgt dar:
.NET Framework Components
Web Services
ASP.NET
ADO.NET
Base Class Library
Common Language Runtime
Abb. 27 Architektur .NET Framework 75
Die Common Language Runtime (CLR) ist eines der zentralen Elemente des .NET
Frameworks und verantwortlich für die Ausführung und Verwaltung des kompilierten
Codes. Aufgaben wie Garbage Collection und das Laden der erforderlichen
Basisklassen sind Funktionen, die typischerweise die CLR übernimmt. Dies ist
vergleichbar mit der Java Virtual Machine bei RMI.
Die Basisklassen (Base Class Libraries) stellen die wichtigsten Grundfunktionalitäten
vorgefertigt bereit. Die Objektorientierung ist elementarer Bestandteil des Frameworks. Neue Klassen erben üblicherweise von der Klasse System.Object. Weitere
wichtige Klassen sind System.Data, welche Funktionen für den Daten(bank-)zugriff
75
Aus Johnson et al. 2002, S. 55.
67
bereitstellt und System.Web, mittels welcher ASP.NET-Seiten generiert werden
können.
4.1.2.1 ADO.NET
[Patrick Hennies]
Der Zugriff auf die Funktionen der Klasse System.Data wird im Framework mittels
ADO.NET durchgeführt. ADO.NET ist eine Weiterentwicklung der ActiveX Data
Objects (ADO), wobei die Namenserweiterung um .NET im Wesentlichen die
Anbindung an Microsofts neue Plattform und eine stärkere Objektorientierung betont.
ADO bildet die Schnittstelle zu Datenbanksystemen und hat bereits alle Funktionen
für Zugriffe auf OLE-DB- und SQL-Datenquellen integriert.
ADO.NET
Data Providers
DataAdapter
Connection
Command
Data Consumers
DataSet
Web Forms
Web Service
DataReader
Abb. 28 ADO.NET-Objektmodell76
Die ADO.NET-Klassen sind unterteilt in Datenprovider (Data Providers), welche die
Verbindung zum Datenbanksystem aufbauen, im vorliegenden Fall also zu der SQLDatenbank, und Datenkonsumenten (Data Consumers), dem Web Service. Innerhalb
des Aufgabenbereichs der Datenprovider wird zunächst ein Connection-Objekt
erzeugt, welches die Verbindung zum Datenbanksystem aufbaut.
baseConnection = new SqlConnection
("server=(local); database=XMLTest; Trusted_Connection=yes");
Abb. 29 Connection-Objekt
76
Aus Riordan 2002, S. 8.
68
Mittels eines DataAdapters werden dann Anfragestrukturen auf die Datenbank
abgebildet. Der DataAdapter ist das komplexeste Element der Datenprovider, da er die
Zusammenführung von Datenbank und DataSet realisiert. Dem DataAdapter werden
Command-Objekte zugewiesen. Diese stellen die typischen Datenbankoperationen dar.
Es gibt Select-, Update-, Delete- und InsertCommands. Diese Befehle können
automatisch erzeugt oder manuell formuliert werden.
Die folgende Abbildung stellt dar, wie in der gegenwärtigen Implementierung eine
einfache Formulierung des Update-Befehls auf einer der betrachteten Datenbanktabellen aussieht.
resourceAdapter0 = new SqlDataAdapter
("SELECT * FROM MSP_PROJECTS", updateConnection);
SqlCommand resourceAdapter0UpdateCmd = new SqlCommand
("Update MSP_PROJECTS set PROJ_EXT_EDITED = @pPROJ_EXT_EDITED,
PROJ_OPT_EXPAND_TIMEPHASED = @pPROJ_OPT_EXPAND_TIMEPHASED
where PROJ_ID = @pPROJ_ID", resourceAdapter0.SelectCommand.Connection);
resourceAdapter0.UpdateCommand = resourceAdapter0UpdateCmd;
Abb. 30 DataAdapter UpdateCommand
Das wichtigste Element der ADO-Architektur ist zweifelsfrei das DataSet. Hierbei
handelt es sich um ein Speicherabbild von Inhalten der Datenbank. Ein DataSet ist
prinzipiell eine vereinfachte Version einer relationalen Datenbank - allerdings
losgelöst von der Datenquelle. Ein DataSet bildet die (gesamte) inhaltliche Struktur
der Datenbank in XML ab. Es enthält Tabellenelemente, Reihenelemente und
(optional) Beschränkungselemente. Datentypen werden über ein Inlayschema
abgebildet. Ein DataSet bildet die ideale Basis für eine XML-basierte
Datenübertragung, da es bereits Funktionen bereitstellt, seine Informationen in einem
XML-Dokument abzuspeichern, und dieses Dokument dann direkt übertragen werden
kann. Für Updateoperationen auf der Datenbank ist die Nutzung eines DataSets
ebenfalls vorteilhaft. Änderungen können zunächst auf einem DataSet durchgeführt
werden, ohne dass bereits direkt die Datenbank geändert wird. Wurden alle Updates
korrekt durchgeführt, können die bearbeiteten Tabellen vollständig und in konsistenter
Form zurückgeschrieben werden.
69
<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://tempuri.org/">
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="de-DE">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="MSP_RESOURCES">
<xs:complexType>
<xs:sequence>
<xs:element name="RESERVED_DATA" type="xs:string" minOccurs="0" />
<xs:element name="PROJ_ID" type="xs:int" minOccurs="0" />
<xs:element name="RES_UID" type="xs:int" minOccurs="0" />
<xs:element name="RES_TYPE" type="xs:boolean" minOccurs="0" />
<xs:element name="RES_HAS_NOTES" type="xs:boolean" minOccurs="0" />
<xs:element name="RES_CAN_LEVEL" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
#***Actual values would be stored here***#
</NewDataSet>
</diffgr:diffgram>
</DataSet>
Abb. 31 DataSet - Beispiel
4.1.2.2 ASP.NET
[Patrick Hennies]
ASP.NET vereinigt die bisher benannten Elemente des Frameworks. Mittels ASP.NET
werden Web Forms dynamisch erzeugt. Das besondere an ASP.NET ist die so
genannte code behind-Struktur. Code behind steht für eine lokale Trennung der
Programmlogik und des präsentierten Outputs, wobei das Output im Fall von
ASP.NET zumeist eine HTML-Seite ist.
Web Services sind im Rahmen des .NET Frameworks in ASP.NET integriert und
können auf die gleichen Funktionen und Schnittstellen zugreifen. ASP.NET adressiert
aber ein wesentlich weiteres Problemfeld als das hier vorliegende und soll im Rahmen
dieser Arbeit daher nicht betrachtet werden.
4.1.2.3 Visual Studio .NET
[Patrick Hennies]
Visual Studio .NET ist die von Microsoft veröffentlichte Entwicklungsumgebung zum
.NET Framework und wurde zur Erstellung des Web-Service-Prototypen eingesetzt.
70
Es integriert bereits die eigens als Teil des .NET Frameworks entwickelte Sprache C#
(C-Sharp), welche syntaktisch eng mit Java verwandt ist. Es ist natürlich auch möglich
andere Programmiersprachen wie beispielsweise Visual Basic .Net oder C++
einzusetzen. Für diese Arbeit wurde C# ausgewählt. Die nachfolgende Beschreibung
eines Web Service orientiert sich durchgängig an der C#-Syntax.
Einen Web Service zu generieren wird durch Visual Studio erleichtert, da viele
Grundlagenaufgaben übernommen werden. Hierzu legt Visual Studio .NET fünf
unterstützende Programmdateien an.
•
AssemblyInfo.cs
Diese Informationsdatei regelt den Zugriff des Compilers auf so genannte
Assemblies. Eine Assembly ist ein Bibliothekselement und bündelt Typen und
Ressourcen, stellt diese dann der CLR bereit und kann von Anwendungen
referenziert werden.
•
Global.asax
Die Ereignisbehandlung auf Anwendungsebene und Verwaltung übergeordneter Elemente werden in dieser Datei festgehalten.
•
Web.Config
Ein XML-Dokument, welches Konfigurationseinstellungen speichert.
Eventuelle Erweiterungen oder Add-Ins können hier eingesetzt werden. (Siehe
Web Service Enhancements im Kapitel 4.3.2)
•
[WebServiceName].asmx
Über diese Datei, die den Namen des Web Service trägt, wird eine Verbindung
zum Web Service hergestellt. Sie ist mehr als kompilierte und
programmiersprachenabstrakte Schnittstelle zu verstehen und verweist gemäß
der ASP.NET code behind-Struktur auf die Datei in der spezifischen
Programmiersprache.
•
[WebServiceName].asmx.cs
Diese Datei enthält den eigentlichen Programmcode und wird von der asmxDatei referenziert. Das cs weist in diesem Fall auch bereits auf eine
Implementierung in C# hin.
Visual Studio stellt mit dieser Struktur bereits das komplette Grundgerüst für einen
Web Service bereit. Um spezifische Methoden oder Funktionen zu veröffentlichen,
reicht es bereits aus, eine Methode mit dem Attribut <WebMethod> zu versehen. Eine
WSDL-Web-Service-Beschreibung lässt sich ebenfalls automatisch aus der asmxDatei erzeugen und muss dann nur noch angepasst werden. Sie umfasst bereits alle
gekennzeichneten Methoden und deren Parameter.
71
4.2
PAVONE TimeTracking
Webbasierte
Kommunikation
mit Server
Web Service Client
[Hermann Nottelmann]
Konvertierung
XML
XSLTransformer,
TimeSheet
PAVONE
TimeSheet
DOMParser,
DXLImporter etc.
LotusScript
Lotus Notes
Abb. 32 Technisches Kommunikationsmodell – Teil 2
Nachfolgend wird der linke Teil des Kommunikationsmodells im Detail betrachtet. Es
handelt sich also um die Seite, die die Daten in einer Lotus Notes-Datenbank
abspeichert und die mittels des diesseitig implementierten Web-Service-Clients
Anfragen an den Web-Service-Server stellt.
Die Lotus Notes-basierte Anwendung PAVONE TimeTracking fungiert als Frontend
zur dezentralen Aufwandserfassung. Die Aufwände für die Vorgangszuweisungen an
verschiedenen Projekten werden von jedem Projektteilnehmer wochenweise in einem
so genannten TimeSheet gepflegt. Letztere sind in der PAVONE TimeSheetDatenbank unter Lotus Notes abgelegt.
Zwecks Datenaustausch mit der relationalen Datenbank, in welcher Microsoft Project
im vorliegenden Fall sämtliche Projektdaten abspeichert, wurden Konvertierungsmechanismen zwischen einem solchen TimeSheet und einem XML-Dokument gemäß
den Anforderungen der Microsoft-Project-Seite implementiert.
Ausgehend von einer strukturellen Betrachtung eines TimeSheet-Dokuments in
Kapitel 4.2.1 wird in Kapitel 4.2.2 die Realisierung des Datenaustauschs mit Microsoft
Project getrennt nach Datenimport und –export beschrieben.
72
4.2.1 Struktureller Aufbau von TimeSheet-Dokumenten
[Hermann Nottelmann]
Der strukturelle Aufbau beschreibt, wie die Daten intern in den TimeSheetDokumenten abgespeichert sind. Hiervon zu unterscheiden ist die Präsentation der
Daten aus Nutzersicht. Diese wird unter Lotus Notes wie in Kapitel 3.2.1 angedeutet
mittels des Form-Konzepts realisiert.
Die Datenpräsentation weist allerdings einige Besonderheiten mit Einfluss auf den
strukturellen Aufbau der TimeSheet-Dokumente auf. Diese sollen anhand der
Abbildung 33 erläutert werden.
Zentrales Element eines TimeSheets ist eine Tabelle, die von einem Java Applet
aufgrund der vorhandenen Daten erzeugt wird. Jede Zeile weist geordnet nach
Projekten die in der ausgewählten Woche zugeordneten Vorgänge in chronologischer
Reihenfolge aus. Die Tabelle enthält nicht editierbare, vom Java Applet berechnete
Felder. So werden beispielsweise über den tagesgenau erfassten Aufwänden Zeilenund Spaltensummen gebildet oder Restaufwände entsprechend korrigiert. Weiterhin ist
es dem Projektteilnehmer möglich, den nach dieser Woche verbleibenden
Restaufwand zu erhöhen bzw. zu verringern und eine Zuordnung durch Eintragung des
Ist-Ende-Datums abzuschließen.
Standardmäßig können in dieser Tabelle in den drei letzten Spalten auch aufgelaufene
Kosten, Fakturierungsoptionen und Bemerkungen eingetragen werden. Diese
Möglichkeiten finden in der prototypischen Realisierung keine Berücksichtigung.
Bedingt durch den Fokus auf die Unterstützungsfunktion der Projektarbeit wurde die
Aufwandserfassung des Tagesgeschäfts nicht weiter betrachtet.
Für die dokumenteninterne Struktur werden die in der Tabelle aufbereiteten Daten
spaltenweise in Felder geschrieben. So enthält das Feld List_ProjectID eine Liste mit
eindeutigen Projektnamen. Die Anzahl der Listenelemente ist abhängig von der
Anzahl der Zuordnungen und für alle Felder identisch. Die letzten drei Listenelemente
bilden jeweils die Summenzeilen ab und enthalten ggf. Dummy-Werte.
73
Abb. 33 Darstellung eines TimeSheet-Dokuments
Bedingt durch die in Kapitel 3.2 herausgearbeiteten, strukturellen Unterschiede
zwischen semistrukturierter und relationaler Datenspeicherung ist eine gegenseitige
Überführung der gespeicherten Daten mit gewissem Aufwand verbunden.
Als Grundlage für den Datenaustausch empfiehlt es sich, in einem ersten Schritt einen
Zusammenhang zwischen den Feldern des TimeSheet-Dokuments einerseits und den
Attributen der Microsoft Project-Tabellen andererseits herzustellen.
Abbildung 34 stellt diesen Zusammenhang in vereinfachter Form dar. Die erste
Tabellenspalte enthält zusätzlich noch die relevanten Feldnamenbeschriftungen bzw.
Kopfzeileneinträge aus der TimeSheet-Form.
74
Beschreibung
Feldnamen TimeSheet
Attribute Microsoft Project
Person
Username
RES_NAME
Kalenderwoche
CALWEEK, CALYEAR,
CalWeekStartDate, CalWeekEndDate
./.
Projekt
List_ProjectID
PROJ_NAME
Vorgang
List_CategoriesPSP
TASK_NAME
Anfang
List_SchedStartDate
ASSN_START_DATE
Ende
List_SchedDueDate
ASSN_FINISH_DATE
Aufwand
List_SchedEffort
ASSN_WORK
Ist-Anfang
List_ActStartDate
ASSN_ACT_START
Ist-Ende
List_ActDueDate
ASSN_ACT_FINISH
Ist-Aufwand
List_ActEffort
ASSN_ACT_WORK
Ist-Restaufwand
List_ActRemEffort
ASSN_REM_WORK
Mo. – Fr.
List_ActDay1 – List_Actday5
TD_VALUE1 - TD_VALUE5
Abb. 34 Felderzusammenhänge zwischen TimeSheet u. Microsoft Project
Im TimeSheet-Dokument existiert noch eine Reihe von Feldern mit dem
Namenszusatz „Old“. Diese enthalten in der vorliegenden Implementierung die Werte
zu Wochenbeginn und werden zur Aufdeckung der manuellen Restaufwandsänderung
genutzt.
4.2.2 Datenaustausch mit Microsoft Project
[Hermann Nottelmann]
Für den Import der Projektstrukturdaten aus Microsoft Project, genauer aus der
zugehörigen relationalen Datenbank, wurde stark auf die verschiedenen in Lotus Notes
integrierten Möglichkeiten zur XML-Unterstützung zurückgegriffen.
Der Export der Aufwandsdaten nach Microsoft Project hingegen unterscheidet sich
durch den Verzicht auf Letztgenannte deutlich davon. Für diese Richtung wurde aus
Praktizitätsgründen eine zeilenweise Erzeugung einer XML-basierte Repräsentation
der im TimeSheet erfassten Daten gewählt.
Dennoch gibt es einige Gemeinsamkeiten bzgl. der grundsätzlichen Implementierung,
die nachfolgend kurz aufgeführt werden sollen:
75
•
Für beide Richtungen existieren zwei LotusScript-Agenten.77 Ein Agent
implementiert den Web-Service-Client, während der andere die Transformation zwischen TimeSheet-Dokument und XML-Dokument vornimmt.
•
In beiden Fällen ist ein XML-Dokument beteiligt; dieses bildet für den Import
den Ausgangspunkt, für den Export den Endpunkt der Transformation.
•
Zentrale Eigenschaften des Web Service, wie z. B. die IP-Adresse und der
virtuelle Pfad zur WSDL-Datei des Servers, werden in einem gemeinsamen
Konfigurationsdokument namens „WSCommunicationSettings“ gehalten.
•
Für beide Richtungen sind im Wesentlichen drei Arten von Formatänderungen
vorzunehmen: Die Formate von Datum/Uhrzeit-Werten müssen ineinander
überführt werden. Weiterhin weichen noch Aufwandswerte und
Vorgangsnamen voneinander ab. PAVONE TimeTracking speichert die
Vorgangsbezeichnung in hierarchischer Form (vgl. 1. Eintrag in Abb. 33).
4.2.2.1 Import von Projektstrukturdaten
4.2.2.1.1 Struktur und Inhalt des angefragten XML-Dokuments
[Hermann Nottelmann]
Das vom Web-Service-Server angeforderte XML-Dokument enthält drei Arten von
Einträgen (vgl. Abb. 35):
77
•
Eine Liste mit sämtlichen Projekten, für die dem betrachteten Projektteilnehmer Vorgänge in der jeweiligen Woche zugewiesen worden sind.
•
Eine Liste mit den Zuweisungen der Woche. Diese enthält neben den aktuell
geplanten auch die tatsächlichen Start- bzw., soweit vorhanden, Endzeiten.
Weiterhin sind der geplante Aufwand sowie der tatsächliche Aufwand und der
Restaufwand vermerkt.
•
Eine Liste mit allen Vorgängen der beteiligten Projekte, unabhängig von den
betrachteten Zuweisungen. Diese Einträge werden zur Rekonstruktion der
hierarchischen Vorgangsnamen in PAVONE TimeTracking benutzt.
Im Anschluss an die Installationshinweise in Kapitel 4.5 findet sich eine Auflistung sämtlicher Lotus
Notes-seitiger Lösungsbestandteile mit kurzer Funktionserläuterung.
76
<NewDataSet>
<MSP_PROJECTS>
<PROJ_ID>1</PROJ_ID>
<PROJ_NAME>Tecone42</PROJ_NAME>
</MSP_PROJECTS>
<MSP_ASSIGNMENTS>
<PROJ_ID>1</PROJ_ID>
<TASK_UID>2</TASK_UID>
<ASSN_START_DATE>2004-05-20T08:00:00.0000000+02:00</ASSN_START_DATE>
<ASSN_FINISH_DATE>2004-05-28T17:00:00.0000000+02:00</ASSN_FINISH_DATE>
<ASSN_WORK>2880000.000000</ASSN_WORK>
<ASSN_ACT_START>2004-05-20T08:00:00.0000000+02:00</ASSN_ACT_START>
<ASSN_ACT_WORK>1440000.000000</ASSN_ACT_WORK>
<ASSN_REM_WORK>1440000.000000</ASSN_REM_WORK>
</MSP_ASSIGNMENTS>
<MSP_TASKS>
<PROJ_ID>1</PROJ_ID>
<TASK_NAME>V1.1</TASK_NAME>
<TASK_ID>2</TASK_ID>
<TASK_UID>2</TASK_UID>
<TASK_IS_MILESTONE>false</TASK_IS_MILESTONE>
<TASK_IS_SUMMARY>false</TASK_IS_SUMMARY>
<TASK_OUTLINE_LEVEL>2</TASK_OUTLINE_LEVEL>
</MSP_TASKS>
#***Further MSP_TASKS entries to reconstruct hierarchical names***#
</NewDataSet>
Abb. 35 Projektstrukturdaten aus Microsoft Project – Codebeispiel
4.2.2.1.2 XML-Verarbeitung unter Lotus Notes
[Hermann Nottelmann]
Zum besseren Verständnis der im nachfolgenden Kapitel beschriebenen
Transformationsschritte sollen an dieser Stelle vier benutzte Basiskonstrukte im
Zusammenhang mit der Verarbeitung von XML-Dokumenten eingeführt werden.
(1) Erzeugung von und Navigation in einem DOM-Tree
Wie in Kapitel 2.3.3 erläutert, existieren zwei standardisierte Modelle zur
rechnerinternen XML-Verarbeitung. Für diese Implementierung wurde DOM
ausgewählt, das unter LotusScript als NotesDOMParser-Objekt umgesetzt ist und mit
einem XML-Dokument initialisiert wird. Der generierte Baum besteht aus Knoten
unterschiedlichen Typs (vgl. Abb. 36). Die Knoten werden durch ihren Namen
identifiziert. Zum Auslesen der im Baum gespeicherten Daten wird dieser rekursiv
durchlaufen. Mittels der Attributes-Methode kann auf die zugehörigen Attribute
zugegriffen werden. Zu den Nachbarknoten wird mittels der NextSibling-Methode
gewechselt.
77
NodeType
Attributes()
NextSibling()
Attributes
Object node
sibling
Attributes
sibling
sibling
Attributes
Attributes
Abb. 36 Zugriff auf DOM-Tree-Elemente
(2) Stylesheet-basierte Transformationen
Weiterhin kommen zwei XSL-basierte Stylesheets zum Einsatz. Diese werden
allerdings nicht in dem in Kapitel 2.3.4 erläuterten Präsentationskontext benutzt. Sie
werden als Manipulationswerkzeug für strukturelle Änderungen am XML-Dokument
eingesetzt (vgl. Abb. 37). Intern erzeugt das NotesXSLTransformer-Objekt wiederum
DOM-Trees für das Input- und Outputdokument sowie für das Stylesheet.
Letzteres setzt sich, wie in Kap. 2.3.4 beschrieben, aus Templates zusammen. Im
vorliegenden Fall wurden darüber hinaus Variablen und Template-Übergabeparameter
benutzt. Neben der bereits vorgestellten regelbasierten Template-Ausführung können
diese auch ähnlich wie Methoden über ihren Namen aufgerufen werden.
XML
NotesXSLTransformer
Stylesheet
XML
DXL
Abb. 37 Arbeitsweise XSLT-Prozessor
(3) Darstellung von Notes-Dokumenten mit DXL
Als drittes Verarbeitungselement ist DXL (vgl. Kap. 3.2.1) zu nennen. Grundsätzlich
kann eine Lotus Notes-Datenbank ganz oder in Teilen in einem DXL-Dokument
abgebildet werden (vgl. Abb. 38). Hierbei handelt sich um ein entsprechend der
Regeln der Domino-DTD gebildetes XML-Dokument. Für die Implementierung
wurde dieser Sachverhalt für die Gegenrichtung ausgenutzt. Mittels eines NotesDXLImporter-Objekts werden die Daten eines DXL-konformen XML-Dokuments in die
78
Notes-Datenbank importiert, was die Erzeugung eines TimeSheet-Dokuments zur
Konsequenz hat.
DXL
NSF
Database
NoteCollection
DocumentCollection
Document
Abb. 38 Partielle Datenbankrepräsentation mittels DXL
(4) Pipelining
Wie der Name bereits impliziert, kann durch das Pipelining auf die Erzeugung von
zwischengeschaltetem Output in Dateiform verzichtet werden. Stattdessen bildet das
jeweilige Transformationsobjekt den Input der nächsten Stufe.
Im nachstehenden Codebeispiel wird ein XML-Dokument mittels Stylesheet
transformiert. Das erzeugte XML-Dokument wird allerdings nicht zwischengespeichert. Vielmehr kann das NotesXSLTransformer-Objekt direkt als Input für die
DOM-Tree-Erzeugung der nächsten Stufe benutzt werden.
#***Declare used variables;
set inputStream and stylesheet***#
Set transformer = session.CreateXSLTransformer
(inputStream, stylesheet)
Set domParser=session.CreateDOMParser
(transformer)
transformer.Process
Abb. 39 Pipelining - Codebeispiel
4.2.2.1.3 Transformationsschritte zur TimeSheet-Erzeugung
[Hermann Nottelmann]
Der Transformationsprozess, der das XML-Dokument aus Microsoft Project
schrittweise in ein DXL-Dokument umwandelt, um durch den Import des
Letztgenannten ein neues TimeSheet zu erzeugen, lässt sich in drei Teilprozesse
unterteilen.
79
(1) Erzeugung eines DOM-Trees zur Rekonstruktion hierarchischer Vorgangsnamen
Pipeline
Input
XML
MSP
NotesXSLTransformer
NotesDOMParser
DOM Tree
Stylesheet
DOM
Abb. 40 Import – Schritt 1
Ergebnis des ersten Schritts des Transformationsprozesses soll ein DOM-Tree sein,
der im Wesentlichen alle relevanten Informationen über die hierarchische Einordnung
der aktuell zugeordneten Vorgänge enthält.
Dazu wird zunächst ein geeignetes Stylesheet auf das vom Web-Service-Server
erhaltene XML-Dokument angewandt. Auf Basis dieses Zwischendokuments wird
dann besagter DOM-Tree erstellt.
(2) Erzeugung des endgültigen Stylesheets zur Transformation in DXL-Dokument
Project List
DOM Tree
Task List
+
Envir.Variables
Stylesheet
Dynamic
Stylesheet
DXL
+
Settings WS
Stylesheet
Static
Abb. 41 Import – Schritt 2
Ergebnis dieses Schritts soll ein Stylesheet sein, das auf das ursprüngliche XMLDokument angewandt die DXL-Repräsentation eines TimeSheets erzeugt.
Dazu werden die Daten des im vorangegangen Schritt erzeugten DOM-Trees
extrahiert und in zwei Listen abgespeichert. Die erste Liste enthält die Zuordnung von
Projekt-ID und Projektnamen, die zweite bildet die Vorgangs-ID auf den
rekonstruierten hierarchischen Vorgangsnamen ab.
80
Aus den Einträgen dieser Listen, Konfigurationsparametern des Web Service sowie
Umgebungsvariablen, die im Wesentlichen den Ressourcennamen und den
betrachteten Zeitraum enthalten, wird schließlich der „dynamische“ Teil des zu
erzeugenden Stylesheets konstruiert. Zusammen mit dem statischen Teil, der für alle
TimeSheets identisch ist, erhält man abschließend gewünschtes DXL-Stylesheet.
(3) Transformation auf Basis des DXL-Stylesheets und Erzeugung eines TimeSheets
Pipeline
Input
XML
MSP
NotesXSLTransformer
NotesDXLImporter
TimeSheet
Stylesheet
DXL
Abb. 42 Import – Schritt 3
Ergebnis des dritten und letzten Schritts ist die Erzeugung des TimeSheets auf Basis
der Daten aus Microsoft Project.
Die Benutzung einer Pipeline erfolgt analog zum ersten Schritt. Das im letzten Schritt
erzeugte Stylesheet ermöglicht die Transformation des ursprünglichen XMLDokuments in eine DXL-konforme TimeSheet-Repräsentation. Durch den Import
dieses DXL-Dokuments wird der Importvorgang abgeschlossen. Nachfolgend kann
der Projektteilnehmer die Zeitphasendaten für die gewählte Woche erfassen.
81
4.2.2.2 Export von Aufwandsdaten
4.2.2.2.1 Datenextraktion aus TimeSheet-Dokument
[Hermann Nottelmann]
B
TimeSheet
B
A
A‘
C
Extract
C‘
Convert
…
Output
Output
XML
MSP
…
Abb. 43 Exportprozess schematisch
Ergebnis des Exportprozesses soll die Konstruktion eines XML-Dokuments sein, dass
mittels standardisierter Methoden die Überführung der enthaltenen Daten in die
relationale Datenbank von Microsoft Project ermöglicht.
Wie in Kapitel 4.2.1 erläutert, handelt es sich bei den Feldern des TimeSheets in den
meisten Fällen um Listen. Diese werden aus dem Dokument extrahiert und in Arrays
zwischengespeichert. In einigen Fällen müssen mithilfe dafür geschaffener
Konvertierungsmethoden Formatumwandlungen vorgenommen werden, so z. B. zur
Auflösung des hierarchischen Vorgangsnamens. Aus den angepassten Werten kann
nun zeilenweise das gewünschte XML-Dokument erzeugt werden.
4.2.2.2.2 Struktur und Inhalt des zurückgesandten XML-Dokuments
[Hermann Nottelmann]
Neben der von der relationalen Datenbank benötigten Definition eines Inlay-Schemas
(vgl. z. B. Abb. 31) enthält das erzeugte XML-Dokument drei Arten von Einträgen:
•
Eine Liste mit den Namen der tangierten Projekte.
•
Eine Liste mit den Aufwänden von Montag bis Freitag. Durch die
Berücksichtigung eines Konvertierungsfaktors ergibt sich etwa für das Beispiel
aus Abbildung 45, dass an Vorgang „V1.1“ Montag 4h und am Mittwoch 8h
gearbeitet wurden.
•
In bestimmten Fällen wird weiterhin eine Liste mit Korrektureinträgen für
solche Zuordnungen, die vorzeitig abgeschlossen wurden oder deren
Restaufwand im TimeSheet manuell korrigiert wurde, angefügt. Für das
82
betrachtete Beispiel wurde die Zuweisung an Vorgang „V1.1“ bereits
Mittwoch beendet; der ggf. korrigierte Aufwand der Ressource beträgt 48h.
<DataSet xmlns='http://tempuri.org/'>
<xs:schema id='NewDataSet'
#***Further attributes: namespace declarations***# >
<xs:element name='NewDataSet'
msdata:IsDataSet='true' msdata:Locale='de-DE'>
#***Inlay schema for the 3 tables MSP_PROJECTS,
MSP_TIMEPHASED_DATA and MSP_ASSIGNMENTS***#
</xs:schema>
<NewDataSet xmlns=''>
<MSP_PROJECTS>
<PROJ_NAME>Tecone42</PROJ_NAME>
</MSP_PROJECTS>
<MSP_TIMEPHASED_DATA>
<TD_CATEGORY>3</TD_CATEGORY>
<TD_FIELD_ID>2</TD_FIELD_ID>
<TASK_NAME>V1.1</TASK_NAME>
<RES_NAME>Patrick Hennies</RES_NAME>
<PROJ_NAME>Tecone42</PROJ_NAME>
<TD_START>2004-05-17T08:00:00.0000000+01:00</TD_START>
<TD_FINISH>21.05.2004T17:00:00.0000000+01:00</TD_FINISH>
<TD_UNITS>2</TD_UNITS>
<TD_VALUE1>240000</TD_VALUE1>
<TD_VALUE2>0</TD_VALUE2>
<TD_VALUE3>480000</TD_VALUE3>
<TD_VALUE4>0</TD_VALUE4>
<TD_VALUE5>0</TD_VALUE5>
</MSP_TIMEPHASED_DATA>
<MSP_ASSIGNMENTS>
<TASK_NAME>V1.1</TASK_NAME>
<RES_NAME>Patrick Hennies</RES_NAME>
<PROJ_NAME>Tecone42</PROJ_NAME>
<ASSN_WORK>2880000</ASSN_WORK>
<ASSN_REM_WORK>0</ASSN_REM_WORK>
</MSP_ASSIGNMENTS>
</NewDataSet>
</DataSet>
Abb. 44 TimeSheet-Daten für den Export nach MS Project – Codebeispiel
83
4.3
Kommunikationselement
SOAP
XML
.NET Web Service
DIME
Web Service Extensions
MS-SOAP Toolkit
Lotus Notes
[Patrick Hennies]
Abb. 45 Technisches Kommunikationsmodell - Teil 3
Die Kommunikationsseite als drittes und letztes Element des Kommunikationsmodells
führt die Notwendigkeit ein, die zu versendende Nachricht zusätzlich zu SOAP noch
in ein weiteres Format namens DIME zu verpacken. DIME steht für Direct Internet
Message Encapsulation und ist eine Weiterentwicklung des MIME (Multipurpose
Internet Mail Extensions)-Mechanismus, der auch bei Email-Anhängen verwendet
wird. Um DIME nutzen zu können, sind zusätzlich zum .NET Framework noch die
Microsoft Web Service Extensions (WSE) zu installieren. Diese ermöglichen es dann,
den DIME-Kontext einer SOAP-Nachricht abzufragen und zu bearbeiten. Beim
Microsoft SOAP Toolkit ist diese Unterstützung bereits integriert. Die Web Service
Extensions und das Microsoft SOAP Toolkit werden im Anschluss an eine Einführung
in DIME-Attachments noch genauer betrachtet.
4.3.1 DIME-Attachments
[Patrick Hennies]
Mit DIME ist es möglich einer SOAP-Nachricht eine beliebige Anzahl von Anhängen
(Attachments) mitzugeben. Es bestehen bereits verschiedene Ansätze zur Lösung
84
dieses Problems, da innerhalb von SOAP-Nachrichten nur textuelle Inhalte transferiert
werden können. Bei vollständigen und mit einem Schema versehenen XMLDokumenten als Nachrichteninhalt könnte außerdem die Trennung von Elementen der
SOAP-Nachricht und dem eigentlichen Nachrichteninhalt verwischen und die
Verarbeitung erschweren. Die Übertragung wäre zwar möglich, ist aber mittels DIME
deutlich effizienter.
Ein bekannter Lösungsansatz war MIME als Kapselungsmechanismus für Web
Services einzusetzen. Dies wurde in der W3C-Spezifikation „SOAP Messages with
Attachments“78 festgehalten. Der Kapselungsmechanismus, mittels dem auch EmailAnhänge versendet werden, ist allerdings auf einen sehr allgemeinen und flexiblen
Einsatz ausgerichtet und somit nicht effizient. DIME adressiert dieses Problem und ist
deutlich simpler gehalten. Es wurde gemeinsam von Microsoft und IBM entwickelt
und ist ausgerichtet (allerdings nicht begrenzt) auf den Einsatz mit SOAP und XML.
DIME ist somit deutlich effizienter und einfacher als MIME.
Um eine DIME-Nachricht zu versenden, werden ebenso wie bei SOAP StandardInternetprotokolle eingesetzt. Allerdings enthält DIME keine Metadaten mit
Informationen zur Verarbeitung der Nachricht, hierfür wird weiterhin die SOAPNachricht verwendet. Die DIME-Kapselung ist wie ein weiterer Umschlag um die
SOAP-Nachricht aufgebaut, dabei ist sie in verschiedene DIME Records unterteilt.
Der erste Record enthält die eigentliche SOAP-Nachricht; alle (optionalen)
Folgerecords enthalten die Anhänge. Innerhalb der eigentlichen SOAP-Nachricht ist
ein Verweis auf das jeweilige Attachment in einem bestimmten Record enthalten.
In der vorliegenden Implementierung ist eine Einteilung in zwei Records, einen mit
der SOAP-Nachricht und einen mit dem angehängten XML-Dokument, ausreichend.
In den Folgekapiteln 4.3.2 und 4.3.3 wird der Umgang der Kommunikationsendpunkte
mit DIME-Nachrichten am Beispiel erläutert.
78
Vgl. WSE - http://www.w3.org/TR/SOAP-attachments. Aufgerufen 02.07.2004.
85
4.3.2 Web Service Enhancements
[Patrick Hennies]
Web Service Enhancements (WSE) sind eine von Microsoft veröffentlichte
Erweiterung zu .NET und erlauben es „interoperable, secure, and routable Web
Services“79 zu erzeugen. Sie integrieren die Funktionalität der Verarbeitung von
DIME-Nachrichten und ermöglichen auch Sicherheitsverbesserungen wie digitale
Signaturen und Verschlüsselung. Mit WSE ist die Verarbeitung einer DIME-Nachricht
denkbar einfach. Es ist nur notwendig den Kontext einer SOAP-Nachricht abzufragen;
eventuell angehängte Attachments können dann direkt gespeichert werden. Bei einem
Anhängen eines Attachments wird ein Attachment-Objekt eingelesen und dann über
eine Add-Methode dem Nachrichtenkontext hinzugefügt.
***Speichern eines eingehenden Attachments***
SoapContext myContext = HttpSoapContext.RequestContext
SaveFile(path,myContext.Attachments[0].Stream);
***Einfügen eines Attachments in eine SOAP Antwort***
DimeAttachment attachment = new DimeAttachment(“plain/text”; charset= utf-8”,
TypeFormatEnum.MediaType, path)
HttpSoapContext.ResponseContext.Attachments.Add(attachment);
Abb. 46 DIME Attachments - Codebeispiel
4.3.3 Microsoft SOAP Toolkit
[Hermann Nottelmann]
Unter Lotus Notes existiert eine Reihe von Möglichkeiten einen Web-Service-Client
zu implementieren. Diese sind alle dadurch gekennzeichnet, dass sie das vorhandene
Klassen-Framework direkt oder indirekt um weitere Klassen ergänzen. Als
Programmiersprache kann entweder LotusScript oder Java verwendet werden. Im
vorliegenden Fall wurde Lotus Notes-seitig durchgehend in LotusScript programmiert.
Die Anforderung, einerseits SOAP-Nachrichten erzeugen und andererseits Antwortnachrichten im SOAP-Format auslesen zu können, wird von allen Lösungen
unterstützt. Insofern ist die Wahl des von Microsoft angebotenen SOAP Toolkits in
der aktuellen Version 3 nicht unbedingt zwingend und eher auf die grundsätzlich
Microsoft-lastige Gesamtlösung zurückzuführen.
79
Vgl. Microsoft Web Service Enhancements - Release Notes. Aufgerufen 02.07.2004.
86
Die Einbindung der vom Toolkit bereitgestellten Klassen erfolgt indirekt auf Basis
von COM80. Aus Kompatibilitätsgründen zu der in .NET entwickelten Serverseite des
Web-Service wurde die so genannte „Low-Level-API“ des Toolkits eingesetzt. Der
programmiertechnische Mehraufwand wird aber durch eine bessere Kontrolle über die
Erzeugung der SOAP-Nachrichten relativiert. Die Nachrichten sind im RPC-Style
verfasst (vgl. Kap.2.4.4)
Abbildung 47 verdeutlicht noch einmal die Rolle des Microsoft SOAP Toolkits für die
clientseitige Web-Service-Implementierung. Die Erzeugung von Objekten aus vom
Toolkit angebotenen Klassen erfolgt über die SOAP-COM-API. Die Konstruktion der
SOAP-Nachricht erfolgt konform zum existierenden WSDL-Dokument und der
Nachrichtenaustausch wird mittels HTTP-Protokoll realisiert.
WSDL
Notes
LS
Agent
MS
SOAP
Toolkit
Web
Service
SOAP COM API
HTTP
Abb. 47 Rolle des Microsoft SOAP Toolkits
80
Vgl. auch Kapitel 3.4.1.3. Für eine umfassende Behandlung siehe (Rubin/Brain 1999, S. 1-228).
87
4.3.3.1 Verbindungsaufbau und Nachrichtengenerierung
[Hermann Nottelmann]
Nachfolgend soll kurz der Umgang mit SOAP-Nachrichten erläutert werden. Die
Ausführungen beziehen sich auf das Codebeispiel in Abbildung 48.
Für den Verbindungsaufbau zum Web Service wird ein MSSOAP.HttpConnector30Objekt angelegt. Als Eigenschaft der Verbindung wird der Pfad zum beschreibenden
WSDL-Dokument angegeben. Dieser setzt sich zusammen aus der IP-Adresse und
dem virtuellen Pfad des Web Service auf dem IIS. Als zweite Eigenschaft wird die
benutzte Methode unter Berücksichtigung des gültigen Namenraums übergeben. Die
Connect-Methode baut die zuvor definierte Verbindung auf.
Die Konstruktion der eigentlichen SOAP-Nachricht wird durch den Methodenaufruf
BeginMessage gestartet bzw. durch EndMessage beendet.
Auf Basis eines MSSOAP.SoapSerializer30-Objekts wird der Nachrichtenstrom
erzeugt. Auf diesem Objekt existieren Methoden, die die jeweiligen Teile der SOAPNachricht in Form von XML-Tags erzeugen. So wird z. B. durch StartBody bzw.
EndBody der Nachrichtenrumpf ausgezeichnet. Methodennamen und die Namen ihrer
Übergabeparameter werden mit StartElement respektive EndElement in den
Nachrichtenstrom geschrieben. Für die Parameterwerte existieren typabhängige
Methoden.
***Verbindungsaufbau***
EndPointURL = "http://192.168.0.20/Tecone_Project/Tecone.asmx?wsdl"
Set connector = CreateObject("MSSOAP.HttpConnector30")
connector.Property("EndPointURL") = EndPointURL
connector.Property("SoapAction") = "http://tempuri.org/RetrieveProject"
connector.Connect
***Nachrichtengenerierung***
connector.BeginMessage
Set Serializer = CreateObject("MSSOAP.SoapSerializer30")
Serializer.Init connector.InputStream
Serializer.StartEnvelope
Serializer.StartBody
Serializer.StartElement "RetrieveProject", "http://tempuri.org/"
Serializer.StartElement "input_name"
Serializer.WriteString "Müller"
Serializer.EndElement
#***Further input parameters***#
Serializer.EndElement
Serializer.EndBody
Serializer.EndEnvelope
Serializer.Finished
connector.EndMessage
Abb. 48 Verbindungsaufbau und Nachrichtengenerierung – Codebeispiel
88
4.3.3.2 Verarbeitung von Nachrichtenanhängen
[Hermann Nottelmann]
Anders als beim .NET-Framework ist im Microsoft SOAP Toolkit die Unterstützung
von DIME-Nachrichten mit den in Kapitel 4.3.1 beschriebenen Vorteilen bereits
integriert.
Das Codebeispiel von Abbildung 49 verdeutlicht den Umgang mit DIME-Nachrichten
in den für die Implementierung relevanten Formen. Im Unterschied zur Erzeugung
von SOAP-Nachrichten wird das MSSOAP.SoapSerializer30-Objekt mit einem
MSSOAP.DimeComposer30-Objekt initialisiert. Ein Attachment wird ähnlich wie ein
Übergabeparameter in die DIME-Nachricht eingebunden. Auf die in der DIMEAntwortnachricht enthaltenen Attachments kann über ein Array zugegriffen werden.
***DIME-Attachment zusammen mit Request-Message versenden***
Set FileAttach = CreateObject("MSSOAP.FileAttachment30")
FileAttach.FileName = "c:\temp\TimeSheetOutput.xml"
connector.BeginMessage
Set composer = CreateObject("MSSOAP.DimeComposer30")
Set Serializer = CreateObject("MSSOAP.SoapSerializer30")
Serializer.InitWithComposer connector.InputStream, composer
Serializer.StartEnvelope
Serializer.StartBody
Serializer.StartElement "Insert", "http://tempuri.org"
Serializer.EndElement
Serializer.AddAttachment FileAttach
Serializer.EndBody
Serializer.EndEnvelope
Serializer.Finished
connector.EndMessage
***DIME-Attachment aus Response-Message auslesen***
Set Reader = CreateObject("MSSOAP.SoapReader30")
Set Parser = CreateObject("MSSOAP.DimeParser30")
Reader.LoadWithParser connector.OutputStream, Parser
Set FileAttach = Reader.Attachments.Item(0)
FileAttach.SaveToFile "c:\temp\TimeSheetInput.xml"
Abb. 49 DIME-Attachments clientseitig - Codebeispiel
89
4.4
Kommunikationsablauf im Detail
[Hermann Nottelmann, Patrick Hennies]
Abschließend soll der implementierte Kommunikationsablauf noch einmal anhand von
Screenshots aus den beteiligten Anwendungen Microsoft Project (Schritte 1, 5 und 6)
und PAVONE TimeTracking (Schritte 2 bis 4) - wie er sich auch den Projektteilnehmern bzw. dem Projektleiter darstellt - aufgezeigt werden.
Die Abfolge richtet sich nach den in Kapitel 3.4.2.2 herausgearbeiteten Modellcharakteristika.81
1. Projekt anlegen
Abb. 50 Kommunikationsablauf - Schritt 1
Es wurde für dieses Ablaufbeispiel ein Projekt mit 4 Vorgängen angelegt.
Die Vorgänge unterteilten sich in V1, V1.1, V1.2 und V2, wobei V1.1 und V1.2
Untervorgänge des Sammelvorgangs V1 sind. Als Bearbeiter wurde die personelle
Ressource „Patrick Hennies“ ausgewählt und dem Teilvorgang V1.1 zugewiesen.
Es sind bisher 4 Arbeitstage für Vorgang V1.1 geplant und es ist noch keine aktuelle
Arbeit erfasst.
2. Projektdaten übertragen
Abb. 51 Kommunikationsablauf - Schritt 2
81
Eine zusammenfassende Übersicht bietet Abbildung 21.
90
Diese Projektplandaten werden nun aus PAVONE TimeTracking heraus angefragt.
Für die Ressource Patrick Hennies wird für den betreffenden Zeitraum ein neues
TimeSheet angelegt. Der Web Service wird kontaktiert und überträgt die Plandaten,
um das TimeSheet anzulegen.
3. Projektdaten einlesen
Abb. 52 Kommunikationsablauf - Schritt 3
Die Daten wurden transferiert und in das TimeSheet übernommen. Wie zu sehen ist,
wurde der Vorgang V1.1, der einzige relevante Projektvorgang für den betrachteten
Zeitraum, nun in das TimeSheet übernommen. Auch die geplanten Anfangs-, Endeund Aufwandswerte wurden übertragen. In Kalenderwoche 21 wurden bereits 16h an
dem Vorgang gearbeitet.
4. Tatsächliche Daten erfassen
Abb. 53 Kommunikationsablauf - Schritt 4
Es erfolgt nun eine Erfassung von tatsächlichen Aufwänden an verschiedenen Tagen
der Kalenderwoche 22. Die Arbeit an V1.1 wird von Patrick Hennies wie geplant am
25. Mai 2004 beendet, jedoch mit einem um 6h reduzierten Gesamtaufwand.
91
5. Erfasste Daten übertragen
Abb. 54 Kommunikationsablauf - Schritt 5
Die erfassten Daten werden wieder nach Microsoft Project übertragen. Wie zu sehen
ist, sind nun die geplanten Arbeitseinträge auch durch aktuelle Arbeitsleistungen
ergänzt.
6. Projektplan aktualisieren
Abb. 55 Kommunikationsablauf - Schritt 6
In der Projektplanungsübersicht wird der Vorgang V1.1 somit nun als abgeschlossen
angezeigt, die geplante Arbeit wurde durch die tatsächlichen Arbeitsleistungen
ergänzt. Es kann nun also eine weitere Planung des Projektverlaufs durchgeführt
werden.
92
4.5
Einschränkungen und offene Problemstellungen
[Hermann Nottelmann, Patrick Hennies]
Im Bezug auf die Implementierung des Prototyps wurden insbesondere folgende
Annahmen getroffen und Einschränkungen festgestellt, die bei einer finalen Version
noch zu beheben oder verbessern wären:
•
Projekterfassungs- und Kommunikationsverlauf
Es wird angenommen, dass es keine Unterbrechung oder Veränderung des
entwickelten Kommunikationsverlaufs gibt. Dies bedeutet, dass insbesondere
keine Zeitphasendaten in Microsoft Project und keine Projektstrukturänderungen in PAVONE TimeTracking erfasst werden. Sollte dies dennoch
geschehen, werden diese Änderungen mit großer Wahrscheinlichkeit nicht in
den jeweiligen Kommunikationspartner übernommen.
•
Umlaute
Die Verwendung von Umlauten bei Namensbezeichnern führt für den
Importfall der Projektstrukturdaten aus Microsoft Project zu Problemen bei der
Konvertierung. Dies ist nur durch die durchgängige Verwendung der
alternativen Kodierung „ISO-8859-1“ zu lösen.
•
Beschränkung der Anzahl an Mitarbeitern und Projekten
Die Anwendung wurde explizit nur für ein Projekt und einen beteiligten
Mitarbeiter getestet. Die Implementierung berücksichtigt zwar theoretisch
mehrere Beteiligte und auch mehrere Projekte, aber hierfür liegt keine
Testgewährleistung vor.
•
Namensgleichheit
Es wurde explizit eine hundertprozentige Namensgleichheit der Projekte,
Vorgänge, Personen und Zuweisungen in PAVONE TimeTracking und
Microsoft Project angenommen. Dies steht aber in Übereinstimmung mit der
Annahme zum Projekterfassungsverlauf.
•
Namenseindeutigkeit
Es sollte keine gleichen Namen bei verschiedenen Projekten oder Mitarbeitern
geben. Vorgänge müssen innerhalb eines Projekts einen eindeutigen Namen
haben.
Folgende Leistungsmängel sind Teil des entwickelten Prototyps:
•
Anlegen von TimeSheet-Dokumenten
TimeSheet-Dokumente werden unabhängig von bereits Vorliegenden in der
letzten Stufe aus einem DXL-Dokument erzeugt. Sollte der Projektteilnehmer
93
bereits ein TimeSheet für den gleichen Zeitraum erzeugt haben, besteht durch
die Verwechslungsgefahr die Möglichkeit von Inkonsistenzen.
•
Festschreibung von alten Aufwänden
Die Festschreibung von alten (bereits gesendeten) Aufwänden ist nicht
garantiert und wird nicht erzwungen. Es ist also möglich, erfasste
Zeitphasendaten nach Microsoft Project zu übertragen und das TimeSheetDokument anschließend noch einmal zu ändern und abzuspeichern, was eine
Dateninkonsistenz verursacht.
•
Ende-Start-Beziehung
Es erfolgt nur eine begrenzte Berücksichtigung strenger Ende/StartBeziehungen. Zeitdaten aus einem Vorgang können somit bereits erfasste
Daten eines anderen, in Beziehung stehenden, Vorgangs ändern. Wenngleich
dies oft sinnvoll ist, sind die Änderungen allerdings nicht sofort ersichtlich.
•
Zeitzonen-Konflikt
In manchen Fällen kann es zu einem Zeitzonenkonflikt zwischen der LotusNotes-Seite und der Microsoft-Project-Seite kommen. Befindet sich einer der
beiden beteiligten in einer anderen Zeitzone oder es ist eine der involvierten
Softwarekomponenten auf eine abweichende Zeitzone eingestellt, so führt dies
zu falschen Tagesarbeitszeiten. Die übliche Tagesarbeit ist von 08:00-17:00h
eingestellt. Durch eine Zeitzonenverschiebung kann diese Arbeitszeit jetzt
unter Umständen verschoben werden, was dann potenziell zu einer
Umverteilung der geleisteten Stunden auf Folgetage führen kann. Die
eigentlichen Summenwerte werden hierbei nicht beeinflusst.
94
4.6
Installationsanweisungen und –besonderheiten
4.6.1 Installation des Web Service
[Patrick Hennies]
Folgende Software sollte auf dem Zielrechner installiert sein:
(Die Installationsreihenfolge ist wichtig, daher sollten die Komponenten in der hier
verwendeten Reihenfolge installiert werden.)
Als Betriebsystemgrundlage dient Microsoft Windows XP - SP1.
•
Microsoft Internet Information Server (IIS) Version 5.1
Das IIS-Lockdown-Tool sollte nicht ausgeführt werden.
•
Microsoft SQL Server 2000 Gold (ohne Service Pack 3)
•
Microsoft .NET Framework in der Version 1.1.4322; höhere Versionen sind
wahrscheinlich kompatibel, wurden aber nicht getestet, da keine zur
Entwicklungszeit vorlag.
•
Microsoft Web Service Enhancements in der Version 1.0
•
Microsoft Project Professional 2002
•
(Optional) Visual Studio .NET 2003
Folgende Konfigurationseinstellungen müssen nach der Installation durchgeführt
werden:
•
Die zu benutzende Datenbank (Bezeichnung: XMLTest) muss im SQLEnterprise-Manager-Tool angelegt und von Microsoft Project aus referenziert
werden. Der Name kann auch abweichend gewählt werden, dies muss dann
aber im Programmcode angepasst werden. Die Datenbank wird bei Microsoft
Project unter Datei/Speichern_unter/ODBC/Computerdatenquelle/Neu... angelegt. Es muss in den Folgedialogen nur der SQL-Server ausgewählt werden.
Alle Tabellen legt Microsoft Project nach Auswahl der Datenbank
selbstständig an.
•
Für den Zugriff des Web Service auf die SQL-Datenbank muss das ASP.NETBenutzerkonto als db_owner in der Datenbank eingetragen werden.
•
Falls Visual Studio .NET verwendet werden soll, muss der Benutzer den
Gruppen Administratoren, Debuggerbenutzer und VS Developers angehören.
95
•
Das Gast-Konto des Computers darf deaktiviert sein, die Konten
IUSR_Benutzername,
IWAM_Benutzername,
SQLDebugger,
ASPNET
allerdings nicht.
Anschließend kann die auf der CD hinterlegte Installationsroutine ausgeführt werden.
Sie prüft unter anderem auch das Vorhandensein des IIS und .NET Frameworks ab.
Sollte die Installationsroutine für den Web Service nicht starten oder trotz korrekter
Installation aller Komponenten nicht funktionieren, ist das Visual Studio .NET-Projekt
auch direkt auf der CD hinterlegt. (In diesem Fall muss allerdings der Tecone_ProjektOrdner in das IIS-root-Verzeichnis kopiert werden. (Typischerweise unter
C:\Inetpub\wwwroot)
Zusätzlich müssen in manchen Fällen auch die Web Service Enhancements noch als
Add-In unter Visual Studio .NET referenziert werden. Die Installationsroutine sollte
allerdings im Normalfall die Assembly-Dateien mitintegrieren.
4.6.2 Installation des Lotus Notes Clients
[Hermann Nottelmann]
Nachstehende Software muss auf den Clientrechnern installiert sein:
Als Betriebssystems kann Microsoft Windows ab Version 9x eingesetzt werden.
•
Lotus Notes Release 6.0
•
PAVONE TimeTracking 6
•
Microsoft SOAP Toolkit 3.0
•
(Optional) Lotus Domino Designer Release 6.0
Die notwendigen Änderungen an der Datenbank PAVONE TimeSheet (vgl. Abb. 56)
können vorgenommen werden, indem die Datenbankdatei gp_ts_d.nsf durch die
gleichnamige Version auf der beigefügten CD-ROM ersetzt wird.
Für den Import der Projektstrukturdaten aus Microsoft Project müssen die IP-Adresse
des Web-Service-Servers, das zugehörige virtuelle Verzeichnis sowie die Dateipfade
der ausgetauschten XML-Dokumente im Web-Service-Konfigurationsdokument in der
PAVONE TimeSheet-Datenbank eingetragen werden. Dies geschieht bei Neuanlage
eines TimeSheets über die Schaltfläche „Konfiguration WebService“.
96
Forms
Neues TimeSheet MSP
Actions:
neu
Auswahl Person
Auswahl eines Lotus Notes-konformen Ressourcennamens
TimeSheet anlegen
Aufruf von InvokeWebServiceSendTimeSheet, ImportDataFromXML
u. DeleteNewTS
Konfiguration WebService
Öffnen von WSCommunicationSettings
WSCommunicationSettings
Actions:
neu
Speichern und Schließen
Änderungen speichern u. Fenster schließen
Bearbeiten
Dokument editieren
TimeSheet
modifiziert
Actions:
Speichern
Änderungen im TimeSheet-Dokument speichern
Export nach MS Project
Aufruf von ExportDataToXML u. InvokeWebServiceSendTimeSheet
View
1.1 TimeSheets nach Person
Action:
TimeSheet erstellen
modifiziert
Neues Dokument in der Form „Neues TimeSheet MSP“ anzeigen
Agents
InvokeWebServiceGetData
Übergibt Resourcenname u. Woche; erhält XML-Dokument
mit Projektstrukturdaten als Attachment
ImportDataFromXML
Transformiert XML-Dokument in TimeSheet
ExportDataToXML
Schreibt Aufwandsdaten aus aktuellem TimeSheet in XML-Dokument
InvokeWebServiceSendTimeSheet
Übergibt XML-Dokument an Web-Service-Server als Attachment
DeleteNewTS
Löscht aktuelles Dokument
Abb. 56 Änderungen an der Datenbank PAVONE TimeSheet
97
5 Zusammenfassung und Ausblick
[Hermann Nottelmann, Patrick Hennies]
Ziel der vorliegenden Arbeit war der Entwurf einer Kommunikationslösung zwischen
PAVONE TimeTracking, einer Lotus Notes/Domino-Anwendung und Microsoft
Enterprise Project Management, mit der Datenspeicherung auf relationaler Basis.
Es wurde versucht, eine möglichst offene und erweiterbare Lösung zu implementieren.
Insbesondere war keine enge Kopplung oder Integration der beiden Applikationen das
Ziel, sondern vielmehr eine Interaktion auf der Datenebene - oder genauer eine
Kommunikation zwischen einem semistrukturierten und einem relationalen Datenbanksystem. Dazu wurden im Wesentlichen zwei Technologien eingesetzt: XML und
Web Services.
Es wurde aufgezeigt, dass XML durch den starken Abstraktionslevel und die
durchgängige Verbreitung das geeignete Datenaustauschformat ist. XML und
verwandte Technologien bieten Schnittstellen und Automatismen, um alle
notwendigen Umwandlungsprozesse effizient durchzuführen und gestatten außerdem
eine leichte Erweiterbarkeit für die Kommunikation mit Drittanwendungen.
Web Services wurden als eine sehr neue und in mancher Hinsicht im
Entwicklungsprozess befindliche Technologie vorgestellt. Ihre aktuelle Verbreitung ist
begrenzt, weshalb auch nur wenige Erfahrungsberichte über ihren Einsatz vorliegen.
Allerdings lassen Web Services die Integration von Altanwendungen und
insbesondere auch von Legacy-Systemen mit gegenwärtigen wie auch zukünftigen
Applikationen zu. Dies ermöglicht eine Vereinheitlichung der Kommunikationsstruktur, ohne eine von Grund auf neue Architektur schaffen zu müssen. Ferner wurde
untersucht, in welchem Kontext Web Services zu bisherigen Implementierungen
stehen, wo Stärken liegen und wo noch Verbesserungen notwendig sind.
Nach Einführung dieser beider Technologien wurden sie zu den Kommunikationsendpunkten ins Verhältnis gesetzt. Anschließend wurde das Kommunikationsmodell entworfen und eine kleinschrittige Betrachtung des Kommunikationsverlaufs unternommen. Anhand dieser wurden dann nochmals die verschiedenen
Methoden und Prozesse zur Konvertierung und Bearbeitung der Daten während des
Kommunikationsablaufs untersucht.
Abgerundet wurde diese Analyse durch den Entwurf eines Kommunikationsprototyps,
welcher die zuvor untersuchten Technologien inkorporiert und eine Kommunikationsmöglichkeit aufzeigt.
98
Im Fall der beiden eingesetzten Technologien gibt es zahlreiche Entwicklungspotenziale. Dass XML in seiner Bedeutung noch steigen wird, ist zweifelsfrei. Die
Überlegung von Microsoft, die nächste Generation ihres Dateisystems in XML zu
entwerfen, ist hierfür nur ein Beispiel von vielen.
Auch dem Konzept der Web Services wird von vielen ein großer Siegeszug
vorhergesagt, nicht zuletzt dank der durchgängigen Nutzung von XML. Sollten sich
schließlich klare Strukturen in Form von Standards und Sicherheitsrichtlinien
herausgebildet haben, sind Web Services eine mächtige Technologie und werden mit
großer Wahrscheinlichkeit ein wichtiges Element vieler Kommunikationslösungen
sein.
So prognostiziert unter anderem die IDC eine Verzehnfachung der Investitionen in
Web Services vom Jahr 2003 auf 2008.82 Die Ursache für dieses Wachstum wird
zumeist in steigendem Vertrauen auch kleinerer Firmen gesehen. Initial wurden Web
Services zwar von den Marktführern unterstützt, waren aber eine riskante und
potenziell kostspielige Technologie. Dies wird sich voraussichtlich in naher Zukunft
ändern, da Web Services gerade durch ihren komplementären und nicht substituierenden Ansatz eine zukunftsträchtige Positionierung aufweisen.
Der implementierte Prototyp macht sich bereits diese Entwicklungspotenziale zunutze
und ist somit insbesondere leicht integrier- und erweiterbar. So wäre es denkbar, die
Zeitaufwände auch über ein Web-Interface zu erfassen.
Eine Weiterentwicklung des Prototyps sollte einerseits das Fähigkeitsspektrum des
Prototyps weiter ausbauen. Möglich wäre beispielsweise zusätzlich zur
Zeitphasendatenübertragung auch die erfassten Kosten zu transferieren. Auch die
Schwächen des Prototyps im Hinblick auf Konsistenzprüfung und Fehlerrobustheit
sollten adressiert werden.
Andererseits sollte eine Weiterentwicklung auch im Hinblick auf die Grenzen der
Web-Service-Technologie erfolgen. Sicherheitsaspekte sind wegen des unternehmensübergreifenden Einsatzes von zentraler Bedeutung und werden bislang von WebService-Standards nicht zufrieden stellend gelöst. Die Dynamik der gegenwärtigen
Standardisierungsbestrebungen lässt jedoch Positives für die zukünftige Entwicklung
im diesem Bereich erwarten.
82
Vgl. Rogers, S.: Worldwide Web Services Software 2004-2008 Forecast: Cautious Adoption
Continues, IDC Market Analysis, Document No. 31079, Apr 2004.
99
6 Literaturverzeichnis
Abiteboul/Buneman/Suciu 2000:
Abiteboul, S.; Buneman, P.; Suciu, D.: Data on the Web: From Relations to
Semistructured Data and XML, Morgan Kaufmann, San Francisco 2000.
Barnaby 2002:
Barnaby, T.: Distributed .NET Programming in C#, Apress, 2002.
Cerami 2002:
Cerami, E.: Web Service Essentials, O`Reilly, 2002.
Codd 1970:
Codd, E. F.: A Relational Model for Large Shared Data Banks, In: Communication
of the ACM, Vol. 13, No. 6., June 1970, S. 377-378.
Codd 1979:
Codd, E. F.: Extending the Database Relational Model to Capture More Meaning,
In: ACM Transactions on Database Systems, Vol. 4, No. 4, Dec. 1979, S. 397-434.
Coulouris/Dollimore/Kindberg 2001:
Coulouris, G.; Dollimore, J.; Kindberg, T.: Distributed Systems: Concepts and
Design, Third Edition, Addison-Wesley, 2001.
Dangelmaier et al. 2002:
Dangelmaier et al.: Klassifikation von EAI-Systemen, In: HMD - Praxis der
Wirtschaftsinformatik, Vol. 39, Heft 225, 2002, S. 61-71.
Fischer et al. 2000:
Fischer, J. et al.: Bausteine der Wirtschaftsinformatik: Grundlagen, Anwendungen,
PC-Praxis, 2. Aufl., Erich Schmidt Verlag, Berlin 2000.
Garcia-Molina/Ullman/Widom 2002:
Garcia-Molina, H.; Ullman, J. D.; Widom, J.: Database Systems: The Complete
Book, Prentice Hall, New Jersey 2002.
100
Haas/Lin/Roth 2002:
Haas, L. M.; Lin, E. T.; Roth, M. A.: Data Integration through Database Federation,
IBM Systems Journal, Vol. 41, No. 4, 2002.
Hartman et al. 2003:
Hartman, B.; Flinn, D. J.; Beznosov, K.; Kawamoto, S.: Mastering Web Services
Security, Wiley, Indianapolis 2003.
Heuer 2000:
Heuer, A.: Datenbanken: Konzepte und Sprachen, 2. Aufl., mitp-Verlag, Bonn
2000.
Johnson et al. 2002:
Johnson, D. et al.: Developing .NET Web Services with XML, Syngress
Publishing, 2002.
Kappel/Kapsammer/Retschitzegger 2001:
Kappel, G.; Kapsammer, E.; Retschitzegger, W: XML and Relational Databases –
A Comparison of Concepts, In: Proceedings of the International Conference on
Internet Computing (IC'01), Las Vegas, Nevada, USA, June 25-28, 2001.
Kaye 2003:
Kaye, D: Loosely Coupled: The Missing Pieces of Web Services, RDS Press, o. O.
2003.
Knuth et al. 2003:
Knuth, M. et al.: Web Services. Einführung und Übersicht, Software & Support
Verlag GmbH, Frankfurt 2003.
Linthicum 1999:
Linthicum, D. S.: Enterprise Application Integration, Addison-Wesley, 1999.
Linthicum 2003:
Linthicum, D. S.: Next Generation Application Integration – From Simple
Information to Web Services, Addision Wesley, 2003
101
Mohan et al. 2000:
Mohan, C. et al.: Evolution of Groupware for Business Applications: A Database
Perspective on Lotus Domino/Notes, In: Proceedings of the 26th VLDB
Conference, Cairo, Egypt, Sept. 2000.
Myerson 2002:
Myerson, J. M.: The Complete Book of Middleware, Auerbach Publications,
London 2002.
Newcomer 2002:
Newcomer, E.: Understanding Web Services: XML, WSDL, SOAP and UDDI,
Addison-Wesley, 2002.
Papakonstantinou/Garcia-Molina/Widom 1995:
Papakonstantinou, Y.; Garcia-Molina, H.; Widom, J.: Object Exchange Across
Heterogeneous Information Sources, In: Proceedings of the IEEE International
Conference on Data Engineering (ICDE’95), Taipei, Taiwan, March 1995.
Plášil/Stal 1998:
Plášil, F.; Stal, M.: An Architectural View of Distributed Objects and Components
in CORBA, Java RMI, and COM/DCOM, In: Software - Concepts & Tools, Vol.
19, No. 1, Springer-Verlag, Heidelberg 1998, S. 14-28.
Rahm/Vossen 2003:
Rahm, E.; Vossen, G.: Web & Datenbanken: Konzepte, Architekturen,
Anwendungen, dpunkt-Verlag, Heidelberg 2003.
Ring/Ward-Dutton 1999:
Ring, K.; Ward-Dutton, N.: Enterprise Application Integration: Making the Right
Connections, Ovum Ltd., London 1999.
Riordan 2002:
Riordan, R. M.: Microsoft ADO.NET Step-by-Step, Microsoft Press, 2002.
Rubin/Brain 1999:
Rubin, W.; Brain, M.: Understanding DCOM, Prentice Hall, 1999.
102
Sharma/Stearns/Ng 2001:
Sharma, R.; Stearns, B.; Ng, T.: J2EE Connector Architecture and Enterprise
Application Integration, Addison-Wesley, 2001.
Suciu 1998a:
Suciu, D.: Semistructured Data and XML, In: Proceedings of the International
Conference on the Foundations of Data Organization (FODO’98), Kobe, Japan,
Nov. 1998.
Suciu 1998b:
Suciu, D.: An Overview of Semistructured Data, In: ACM SIGACT News, Vol. 29,
No. 4, Dec. 1998, S. 28-38.
Tanenbaum/van Steen 2003:
Tanenbaum, A.; van Steen, M.: Verteilte Systeme: Grundlagen und Paradigmen,
Pearson Studium, München 2003.
Tari/Bukhres 2001:
Tari, Z.; Bukhres, O.: Fundamentals of Distributed Object Systems: The CORBA
Perspective, Wiley, 2001.
Tidwell/Snell/Kulchenko 2001:
Tidwell, D.; Snell, J.; Kulchenko, P.: Programming Web Services with SOAP,
O`Reilly, 2001.
Wyke/Rehman/Leupen 2002:
Wyke, A.; Rehman, S.; Leupen, B.: XML Programming (Core Reference),
Microsoft Press, Redmond 2002.
103
Eidesstattliche Erklärung
Ich erkläre hiermit an Eides Statt, dass ich die namentlich kenntlich gemachten Teile
der vorliegenden Arbeit selbständig und nur unter Verwendung der angegebenen
Hilfsmittel angefertigt habe; die aus fremden Quellen direkt oder indirekt
übernommenen Gedanken sind als solche kenntlich gemacht.
Die Arbeit wurde bisher keiner anderen Prüfungsbehörde vorgelegt und auch noch
nicht veröffentlicht.
Paderborn, den 08.07.2004
Hermann Nottelmann
Ich erkläre hiermit an Eides Statt, dass ich die namentlich kenntlich gemachten Teile
der vorliegenden Arbeit selbständig und nur unter Verwendung der angegebenen
Hilfsmittel angefertigt habe; die aus fremden Quellen direkt oder indirekt
übernommenen Gedanken sind als solche kenntlich gemacht.
Die Arbeit wurde bisher keiner anderen Prüfungsbehörde vorgelegt und auch noch
nicht veröffentlicht.
Paderborn, den 08.07.2004
Patrick Hennies
Herunterladen