Mobile Erfassung von Dispositionsinformationen einer
Transcription
Mobile Erfassung von Dispositionsinformationen einer
Diplomarbeit mit dem Thema: Mobile Erfassung von Dispositionsinformationen einer Werkseisenbahn in Form einer verteilten Anwendung Philipp Bönisch Matr.-Nr.: 2839385 Fakultät Informatik TU Dresden 31.03.2007 Mobile Endgeräte, wie PDAs, werden immer wichtiger, wenn es um die Effizienzsteigerung von Abläufen in Unternehmen geht. Eine zunehmende Anzahl an Mitarbeitern wird mit ihnen ausgerüstet, um Kommunikationskosten zu sparen und sie bei ihrer Arbeit möglichst gut zu unterstützen. Doch ist die Einbindung mobiler Geräte in bereits vorhandene Systeme mit etlichen Problemen verbunden. Darum beschäftigt sich diese Arbeit mit der Integration eines mobilen Clients in eine bestehende Client-Server-Architektur. Der Schwerpunkt liegt dabei besonders auf der Offline-Fähigkeit der mobilen Anwendung, um auch im verbindungslosen Zustand die Arbeitsfähigkeit der Anwendung zu gewährleisten. Dafür werden bereits vorhandene Standards und Technologien untersucht, um sie auf ihre Eignung zu prüfen und um Lösungsstrategien für Probleme aufzuzeigen. Aufbauend darauf wird ein eigenes Konzept entwickelt und vorgestellt. Im Anschluss erfolgt eine Realisierung des Konzepts für eine verteilte Dispositionssoftware für (Werks-)Eisenbahnen. Mittels verschiedener Testreihen wird danach die entstandene Lösung untersucht und bewertet. Darüber hinaus beschäftigt sich die Arbeit mit dynamischen Netzwerken, mit dem Ziel, eine Architektur zu schaffen, die die Vorteile von einer Client-ServerArchitektur und einer Peer-to-Peer-Architektur vereint. Das erarbeitete Konzept ermöglicht selbstständige Clients, die sich gegenseitig unterstützen können und erlaubt den Einsatz von Servern für Routine-Aufgaben, um die einzelnen Clients zu entlasten. Inhaltsverzeichnis Inhaltsverzeichnis 1 Aufgabenstellung 9 1.1 Interpretation und Anmerkungen zu der Aufgabenstellung . . . . 11 Teil I 13 2 Einleitung 14 2.1 Analyse der Ausgangssituation . . . . . . . . . . . . . . . . . . . 14 2.2 Integration des mobilen Clients . . . . . . . . . . . . . . . . . . . 15 3 Begriffe, Konzepte und Klassifizierung 3.1 Synchronisation . . . . . . . . . . . . . . 3.1.1 Synchrone Replikation . . . . . . . 3.1.2 Asynchrone Replikation . . . . . . 3.1.3 Unidirektionale Synchronisation . . 3.1.4 Bidirektionale Synchronisation . . 3.1.5 SlowSync und PushSync . . . . . . 3.1.6 Funktions- versus Datenreplikation 3.2 Differenzerkennung . . . . . . . . . . . . . 3.3 Die Sprache SyncML . . . . . . . . . . . . 3.3.1 Details zu SyncML . . . . . . . . . 3.3.2 Die Kommunikation . . . . . . . . 3.3.2.1 Identifikation der Daten . 3.3.2.2 Der Ablauf . . . . . . . . 3.3.2.2.1 Initialisierung . . 3.3.2.2.2 Datenaustausch 3.3.2.2.3 Mapping . . . . 3.3.3 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 18 19 19 19 19 20 20 21 22 22 22 23 23 23 24 24 4 Verfügbare Standards und Lösungen 4.1 Service Oriented Architecture? . . . . . . . . . . . 4.1.1 Der Nutzen von SOA für mobile Endgeräte 4.1.2 Der Einsatz von Agenten . . . . . . . . . . 4.1.3 Entwicklung von Diensten und Agenten . . 4.1.4 Mögliche Problemstellen . . . . . . . . . . . 4.1.5 Fazit . . . . . . . . . . . . . . . . . . . . . . 4.2 OneBridge Mobile Platform . . . . . . . . . . . . . 4.2.1 OneBridge Mobile Groupware . . . . . . . . 4.2.2 OneBridge Mobile Data Suite . . . . . . . . 4.2.3 OneBridge Monitoring Service . . . . . . . . 4.2.4 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 25 26 28 28 29 30 31 33 33 34 34 5 Skizzierung der Lösung 5.1 Bewertung der einzelnen Möglichkeiten . . . . . . . . . . . . . . 5.1.1 Komplette oder teilweise Portierung der Geschäftslogik? 5.1.2 Die Warteschlange . . . . . . . . . . . . . . . . . . . . . 5.1.3 Die lokale Datenhaltung . . . . . . . . . . . . . . . . . . . . . . 34 35 35 36 36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Inhaltsverzeichnis 5.2 5.1.4 Die lokale Geschäftslogik . . . . . . . . . . . . . . . . . 5.1.5 Die Synchronisation . . . . . . . . . . . . . . . . . . . 5.1.6 Aufbau der Synchronisations-Nachrichten . . . . . . . 5.1.7 Das Konfliktmanagement . . . . . . . . . . . . . . . . Umfang der zu portierenden Geschäftslogik und Daten . . . . 5.2.1 Analyse der Webservice-Aufrufe und Datenstrukturen 5.2.2 Auswertung der Analyse . . . . . . . . . . . . . . . . . 6 Die Lösung 6.1 Die Entwicklungsumgebung . . . . . . . . . 6.2 Die Implementierung . . . . . . . . . . . . . 6.2.1 Die Organisation des Clients . . . . 6.2.2 Der Agent . . . . . . . . . . . . . . . 6.2.3 Die Warteschlange . . . . . . . . . . 6.2.4 Die lokale Datenhaltung . . . . . . . 6.2.5 Die lokale Geschäftslogik/BIS-Logik 6.2.6 Die Synchronisation . . . . . . . . . 6.2.7 Das Konfliktmanagement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 38 39 41 43 43 48 . . . . . . . . . 49 49 49 50 52 55 57 57 57 64 7 Auswertung und Bewertung 65 7.1 Das Testszenario . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.2 Die Testumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.3 Die Auswertung und Bewertung . . . . . . . . . . . . . . . . . . . 66 8 Abschluss und Ausblick 69 Teil II 73 9 Die Weiterentwicklung des BIS-Systems 9.1 Peer-to-Peer: Die neue Architektur für das BIS? . 9.1.1 Historische Entwicklung von Peer-to-Peer 9.2 Die neue Architektur . . . . . . . . . . . . . . . . 9.2.1 Die Anforderungen . . . . . . . . . . . . . 9.2.2 Die Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 74 75 76 76 77 10 nBIS im Detail 10.1 Die Client-Architektur . . . . . . . . . . . . . 10.2 Der Aufbau der Clients . . . . . . . . . . . . . 10.2.1 Abläufe mit Verbindung zum Server . 10.2.2 Abläufe ohne Verbindung zum Server . 10.2.3 Abläufe ohne Verbindung zum Master 10.2.4 Die Aufgaben des Masters . . . . . . . 10.2.5 Die Aufgaben der Server . . . . . . . . 10.2.6 Das Leeren der Warteschlangen . . . . 10.2.7 Bewertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 79 80 87 89 90 91 92 92 92 11 Verallgemeinerung des Konzepts nBIS 6 . . . . . . . . . . . . . . . . . . 96 Inhaltsverzeichnis 12 Abschluss und Ausblick Anhang Literaturverzeichnis . . . . . . . . . . . . . Tabellenverzeichnis . . . . . . . . . . . . . . Abbildungsverzeichnis . . . . . . . . . . . . Liste der Algorithmen . . . . . . . . . . . . Listingverzeichnis . . . . . . . . . . . . . . . Eine kurze Einführung in die Arbeitsabläufe Einblicke in die Anwendung moBIS . . . . . Glossar . . . . . . . . . . . . . . . . . . . . Eigenständigkeitserklärung . . . . . . . . . 97 . . . . . . . . . . . . . . . . . . . . . . . . . des BIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 . i . v . vi . vi . vi . vi . vii . x . xvii 7 Fakultät Informatik Institut für Systemarchitektur, Professur Rechnernetze Aufgabenstellung für die Diplomarbeit Name, Vorname: Studiengang: Matr.-Nr.: Bönisch, Philipp Informatik 2839385 Thema: „Mobile Erfassung von Dispositionsinformationen einer Werkseisenbahn in Form einer verteilten Anwendung“ Zielstellung: Die Dispositions- und Betriebsdaten von Werkseisenbahnen werden in einem Betriebsinformationssystem (BIS) verwaltet. Diese Softwareanwendung ist in Drei-SchichtArchitektur aufgebaut. Als Präsentationsschicht dienen dabei sowohl ortsfeste Leitstellensysteme (Rich Clients) als auch Mobilcomputer, mit denen Mitarbeiter prozessnah Daten erfassen und bearbeiten sollen. Die Leitstellensysteme kommunizieren über eine Webservice-Schnittstelle mit der Geschäftslogik und verfügen über keine eigene Datenhaltung. Die mobilen Clients kommunizieren über GSM mit dem Serversystem, wobei im rauen Umfeld von Werkseisenbahnen von einer eingeschränkten örtlichen Verfügbarkeit des Funknetzes ausgegangen werden muss. Daten zur Bearbeitung mit dem mobilen Client sollen deshalb lokal auf dem Mobilgerät gehalten werden, kleine Teile der Geschäftslogik sollen ebenfalls lokal ausgeführt werden können. Der Umfang der lokalen Geschäftslogik ist jedoch vom konkreten Anwendungsfall abhängig. Aufgabe der vorzulegenden Diplomarbeit ist es, in der Literatur beschriebene Lösungsansätze für die Integration der mobilen Clients zu analysieren und aufbauend auf der vorhandenen Infrastruktur und Architektur des BIS-Systems eine Lösung zur Integration mobiler Clients vorzuschlagen, die ein auf den jeweiligen Anwendungsfall abgestimmtes Kommunikationsverhalten ermöglicht. Einen besonderen Schwerpunkt sollen hierbei Anwendungsfälle bilden, in denen eine Bearbeitung der Dispositionsdaten völlig ohne Kommunikation mit dem Serversystem erfolgt, d.h. die aktualisierten Daten erst nach dem Abschluss der Bearbeitung an das Zentralsystem zurück übermittelt werden können. Ausgehend von einem typischen Anwendungsfall sollen softwaretechnische Lösungsansätze vorgeschlagen und auf ihre Anwendbarkeit hin untersucht werden. Außerdem sollte die Diplomarbeit eine Strategie (Schema) vorschlagen, um dynamische Kooperation zwischen mobilen Geräten zu ermöglichen, wenn die horizontale Kommunikation und Datenaustausch wichtig ist. Die Kooperation kann optimale "`Daten routing"', dynamische Geräteerkennung usw. einschließen. Die für die vorgeschlagene Lösung zu erstellenden Softwaremodule sollen spezifiziert und prototypisch implementiert werden. Externer Betreuer: Betreuer TUD: Verantwortlicher Hochschullehrer: Institut: Beginn am: Einzureichen am: Dr.-Ing. Steffen Oettich, CSC Ploenzke AG Dr.-Ing. Waltegenius Dargie Prof. Dr. rer. Nat. habil. Dr. h. c. Alexander Schill Institut für Systemarchitektur 01. Oktober 2006 31. März 2007 Unterschicht des verantwortlichen Hochschullehrers Verteiler: 1 x Prüfungsamt, 1 x HSL, 1 x Betreuer, 1 x Student 1 Aufgabenstellung 1.1 Interpretation und Anmerkungen zu der Aufgabenstellung Im Verlauf der Entstehungszeit dieser Diplomarbeit hat der CSC-Mitarbeiter Dipl.-Ing. Wolfgang Ehmeier von Dr. S. Oettich die Betreuung der Diplomarbeit übernommen. Die Aufgabenstellung teilt sich in zwei Bereiche auf. In dem ersten Teil, der Hauptaufgabe, geht es um die Verbesserung eines mobilen Clients einer bereits vorhandenen Client-Server-Architektur. Im Gegensatz zu den stationären Clients muss die mobile Anwendung auch ohne Verbindung zu einem Server in der Lage sein, die Arbeit des Anwenders zu unterstützen, was bisher nicht der Fall ist. Um dies zu erreichen müssen geeignete Strategien gefunden, untersucht und angepasst oder entwickelt werden. Dem voraus geht eine genau Analyse des jetzigen Systems, um mögliche Problemstellen aufzuzeigen. Im Anschluss daran sind bereits existierende Lösungen und Technologien zu untersuchen, um daraus deren Lösungsstrategien zu ermitteln und Anforderungen für eine eigene Realisierung abzuleiten. Das daraufhin entwickelte Konzept muss die ermittelten Probleme lösen und die gestellten Anforderungen erfüllen. Dabei sollen möglichst vorhandene Technologien einbezogen werden, um den Entwicklungsaufwand so gering wie möglich zu halten. Zur Demonstration der Praxistauglichkeit des Konzepts soll es so implementiert werden, dass damit typische Anwendungsfälle ausführbar sind. Der zweite Teil beschäftigt sich damit, wie die Kommunikation noch zuverlässiger und effizienter gestaltet werden kann. Insbesondere soll hier betrachtet werden, ob es noch weitere Möglichkeiten, außer den im ersten Teil betrachteten, gibt, wie der mobile Client auch ohne eine direkte Verbindung arbeitsfähig bleiben kann. Ein Stichwort in diesem Zusammenhang sind Peer-to-Peer-Netze. Für das Verständnis einzelner Abläufe ist es hilfreich, Grundkenntnisse über den Ablauf im Bahnbetrieb, insbesondere einer Werkseisenbahnen, zu besitzen. Der Abschnitt „Eine kurze Einführung in die Arbeitsabläufe des BIS“ im Anhang gibt einen kurzen Überblick über die typischen Abläufe in einem (Werks-) Eisenbahnunternehmen, die von dem BIS-System unterstützt werden. 11 Teil I 13 2 Einleitung 2 Einleitung Der erste Teil dieser Arbeit beschäftigt sich mit der Weiterentwicklung eines mobilen Client, der bereits Teil einer existierenden verteilten Anwendung ist. Der Schwerpunkt liegt hierbei auf der Realisierung einer Offline-Fähigkeit, so dass der mobile Client auch noch ohne Verbindung zum Server arbeitsfähig wird. Warum der mobile Client momentan dazu nicht in der Lage ist zeigt eine kurze Betrachtung der Ausgangssituation. Anschließend werden einige Begriffe und Konzepte vorgestellt, um einen Überblick über das Themengebiet zu geben und grundlegende Konzepte vorzustellen. Daraus leiten sich die Anforderungen an eine konkrete Realisierung ab, die daraufhin dementsprechend entworfen und realisiert wird. In der nachfolgenden Bewertung wird die Implementierung beurteilt und mittels einiger Kennzahlen auf ihre Effizienz hin untersucht. Abschließend erfolgt ein kurzer Ausblick über zukünftige Weiterentwicklungen, bevor es in den zweiten Teil übergeht. 2.1 Analyse der Ausgangssituation Seit vielen Jahren stellt die Firma CSC die Anwendung BIS (Betriebsinformationssystem) in der Zweigstelle in Dresden her. Hierbei handelt es sich um eine verteilte Anwendung zur Disponierung und Verwaltung von Betriebsdaten einer Werkseisenbahn und wird beispielsweise von den Stahlwerken Bremen eingesetzt. Mit ihr können Rangieraufträge verwaltet (Welche Lok soll welchen Wagen von wo nach wo fahren? Wie ist der aktuelle Status?), Ein- und Ausgangszüge erfasst (Wurde die vorgemeldete Reihenfolge eingehalten? Stimmen die technischen Kenndaten?), Vorgänge protokolliert, Rechnungen erstellt und das aktuelle Gleisbild dargestellt werden. Zudem beinhaltet es noch einige Schnittstellen zu Fremdsystemen wie denen von SAP. Das BIS-System ist als Client-Server-Architektur organisiert, die aus drei Schichten besteht. Vereinfacht kann sie mit dem MVC-Modell (Model View Controller) (siehe Abbildung 1) beschrieben werden.1 Die Sicht (View) wird durch die einzelnen Anwendungen auf den Clients präsentiert. Diese bereitet die Daten für die Nutzer auf und stellt sie dar. Des Weiteren nimmt sie die Aktionen des Anwenders entgegen und leitet diese über ein an SOAP (ehemals Simple Object Access Protocol) angelehntes Protokoll an die Steuerung (Controller) weiter. Diese besteht aus einem Webserver, der entsprechende Webservices zur Verfügung stellt, die die gesamte Geschäftslogik, inklusive der Schnittstellen zu Fremdsystemen, kapseln. Die Daten werden aus der Datenbank (Model) entnommen. 1 Aus softwaretechnologischer Sicht mag die Einordnung nicht ganz korrekt sein. In diesem Fall soll das Modell nur anschaulich die Architektur des Systems charakterisieren. Bei genauerer Betrachtung müsste man eine viel feingranularere Betrachtung vornehmen. So besteht der Client selbst wieder aus dem MVC-Modell. Dies ist im Rahmen dieser Arbeit aber nicht weiter von Interesse und wird deshalb vernachlässigt. 14 2 Einleitung Abbildung 1: Die drei Schichten des MVC-Modells Zur einfacheren Gestaltung der verteilten Datenhaltung verfügen die Clients über keine eigene Datenspeicherung und besitzen damit auch keine eigene Geschäftslogik, da eine Geschäftslogik ohne verfügbare Daten nutzlos ist. Immer wenn ein Client neue Daten benötigt, startet dieser einen Webservice-Aufruf, um sich diese zu beschaffen. Manipulationen der Daten erfolgen nur durch den Webservice. Somit sind Konflikte ausgeschlossen, die durch die parallele Änderung von Daten auftreten können. Eine Ausnahme bilden die sogenannten Stammdaten. Darunter fallen alle Daten, die sich gar nicht oder nur sehr selten ändern, wie beispielsweise Übersetzungstabellen von Kodes nach Text oder Gleislisten. Da diese zum einen relativ häufig benötigt werden und zum anderen deren Anzahl relativ hoch ist (mehrere 10.000 Datensätze), werden sie bei jedem Start der Client-Anwendung komplett geladen und auf Vorrat gehalten. Dadurch erhöht sich die Arbeitsgeschwindigkeit. Als weiteren Mechanismus zur Konfliktreduzierung gibt es ein Event-Management. Jedes Mal, wenn es zu einer Änderung in der Datenbank kommt, wird ein Event an alle Clients gesendet, welches diese über die Änderung informiert. Ein Automatismus auf den Clients sorgt dann dafür, dass bei Bedarf die entsprechenden Daten nachgeladen werden. Dank dieser Mechanismen und der zuverlässigen Anbindung der Clients an die Server über ein LAN (Local Area Network) ist das Konfliktpotential sehr niedrig und es kommt im laufenden Betrieb nur selten zu Problemen (meist das Überschreiben von noch nicht gespeicherter Änderungen). 2.2 Integration des mobilen Clients Im Jahr 2004 begann die Entwicklung eines mobilen Clients (moBIS (mobiles BIS)), der für die Ausführung auf einem PDA (Personal Digital Assistant) ausgelegt ist. Hauptanwender sind die Lokrangierführer. Es sollen damit in erster Linie die Geschäftsprozesse zwischen ihnen und den Disponenten optimiert werden, indem der Kommunikationsaufwand gesenkt wird. Die mobile ClientAnwendung erlaubt es dem Nutzer sich alle wichtigen Daten aus dem BIS anzeigen zu lassen und ermöglicht die Ausführung grundlegender Funktionalitäten. 15 2 Einleitung Auf diese Weise können die Lokrangierführer und die Disponenten ihren originären Aufgaben nachgehen und werden nicht mehr durch eine gegenseitige Kommunikation unterbrochen. Die Grundfunktionalitäten bestehen aus der Rangierauftragsverarbeitung und der Eingangszugbehandlung und erlauben eine zeitnahe Aktualisierung und Änderung der Daten im BIS-System. In den bisherigen Realisierungen ist der mobile Client über GPRS (General Packet Radio Service), einer recht langsamen und unsicheren2 Verbindungstechnik, mit dem BIS-System verbunden. Der mobile Client ist nach den gleichen Prinzipien entwickelt worden wie die stationäre Variante. Auch er besitzt keine lokale Datenhaltung3 und Geschäftslogik. Wegen technischer Probleme4 nimmt er nur halb am Event-Management teil. Zwar lösen auch seine Aufrufe, die zu Änderungen in den Daten führen, Events aus, aber diese werden nicht an die mobilen Anwendungen weitergeleitet. Durch diese Konstruktion kann es zu vielen Problemen kommen, die im Folgenden gelöst werden müssen. Inaktuelle Daten können zu Konflikten führen. Aufgrund seiner Daten entscheidet sich ein Client für eine bestimmte Aktion und startet einen entsprechenden Aufruf. Zwischenzeitlich können sich die Daten aber geändert haben und es kann dementsprechend zu einem Konflikt kommen, der erkannt werden muss. Ansonsten gerät das System in einen inkonsistenten Zustand und das Abbild der Realität stimmt mit ihr nicht mehr überein. Sollte ein mobiles Gerät nicht über eine Verbindung zum Server verfügen, was wesentlich wahrscheinlicher ist als bei einem stationären Client, ist die Anwendung faktisch nutzlos. Dem Nutzer können keine weiteren Informationen vermittelt werden als die, die gerade angezeigt werden, da, abgesehen von den Stammdaten, keine weiteren Daten auf dem Gerät verfügbar sind. Weiterhin können auch keine Aktionen ausgeführt werden, da eine lokale Geschäftslogik fehlt und die Aufrufe auch nicht zwischengespeichert werden können.5 Als einzige Optimierung gegenüber den stationären Clients sind die Webservices für den mobilen Client nach dem DTO-Muster (Data Transfer Object) realisiert. Dieses sieht vor, in eine Nachricht möglichst viele Informationen aufzunehmen, um zusätzliche Aufrufe zu dem gleichen Bereich einsparen zu können. Abbildung 2 gibt einen zusammenfassenden Überblick über das komplette BISSystem und zeigt nochmals die einzelnen Kommunikationspfade auf. 2 Sicherheit bezieht sich in diesem Zusammenhang auf die Verfügbarkeit. Auf einem großen Werksgelände kann es durch schlechte Ausleuchtung oder störende Produktionsanlagen immer wieder zu einem Verbindungsabbruch kommen. 3 Wieder mit Ausnahme der Stammdaten, die auf dem mobilen Gerät auch über das Beenden der Anwendung hinweg verfügbar bleiben. 4 Es ist nicht ohne weiteres möglich, bei Bedarf eine Verbindung vom Server zum Client über GPRS aufzubauen. 5 Auch wenn die Anwendung über eine lokale Geschäftslogik verfügen würden, muss dennoch ein entsprechender Aufruf an das BIS-System gesendet werden. Entweder, um dort die Geschäftslogik nochmals ablaufen zu lassen oder um die geänderten Daten mitzuteilen. 16 3 Begriffe, Konzepte und Klassifizierung Abbildung 2: Architektur des BIS-Systems inklusive mobiler Clients Für eine Offline-Fähigkeit der mobilen Clients, also der Möglichkeit, dass der Anwender auch ohne eine Verbindung zum Server arbeiten kann, ist demnach eine lokale Datenhaltung und Geschäftslogik notwendig. Die lokale Datenspeicherung hält möglichst viele Daten auf Vorrat, um den Anwender damit versorgen zu können und um Webservice-Aufrufe für eine spätere Absendung zwischenspeichern zu können. Die lokale Geschäftslogik simuliert im verbindungslosen Fall einen Webservice-Aufruf. Um die Steigerung des Konfliktpotentials gering zu halten, müssen die Daten auf den mobilen Geräten durch geeignete Mechanismen möglichst aktuell gehalten werden (Synchronisationsmechanismen). Dennoch auftretende Konflikte sollten möglicht alle erkannt und automatisch gelöst werden. 3 Begriffe, Konzepte und Klassifizierung 3.1 Synchronisation Der regelmäßige Abgleich der lokalen Daten auf den mobilen Geräten mit den Server-Daten ist wichtig für die Konfliktminimierung und steigert so den Nutzwert der mobilen Anwendung. Die Daten auf dem Server können sich teilweise sehr schnell ändern und es ist wichtig, dass alle Teilnehmer über diese Änderungen informiert werden. Synchronisation ist der Oberbegriff für eine Vielzahl von Verfahren zum Abgleich verschiedener Datenspeicher. Das Wort Synchronisation leitet sich aus den beiden griechischen Wörtern „sýn“ (zusammen) und „chrónos“ (Zeit) ab und bedeutet wörtlich so viel wie „Herstellen von Gleichlauf“. Es steht für das zeitliche 17 3 Begriffe, Konzepte und Klassifizierung aufeinander Abstimmen von Vorgängen, also dafür, dass Vorgänge in einer bestimmten Reihenfolge beziehungsweise gleichzeitig auftreten. In der Informatik wird unter Synchronisation auch das Abgleichen von Daten in einem verteiltem System verstanden. Dieser Vorgang wird auch als Replikation bezeichnet. Dabei kann man zwischen der unidirektionalen/Einwege-Synchronisation und der bidirektionalen/Zweiwege-Synchronisation unterscheiden, die jeweils synchron oder asynchron ausgeführt werden kann. [19] 3.1.1 Synchrone Replikation Bei der synchronen Replikation sind die Quell- und die replizierten Daten immer identisch. Dies kann durch das 2-Phasen-Commit-Protokoll gewährleistet werden. Dabei werden die einzelnen Datenmanipulationen in eine Schlange eingereiht und nacheinander abgearbeitet. Der Empfang und die erfolgreiche Durchführung der Manipulation müssen jeweils quittiert werden. Erst danach wird die Nächste gesendet. Sollte es währenddessen zu einem Fehler kommen, wird der gesamte Vorgang als nichtig angesehen und der Ausgangszustand wiederhergestellt (Rollback) (siehe Abbildung 3). Abbildung 3: Erfolgreicher und nicht erfolgreicher Nachrichtenaustausch mit dem 2-Phasen-Commit-Protokoll Verwendung findet das Verfahren beispielsweise bei der ROWA-Strategie (Read One Write All) in Datenbanksystemen (zum Beispiel Hot Standby Replikation von SQL-Server Microsoft Datenbanken). Hierbei wird eine Schreiboperation auch auf allen Replikaten durchgeführt (write all). Eine Leseoperationen kann dann auf einem beliebigen Replikat oder dem Original (read one) ausgeführt werden, da durch die write all-Taktik alle Replikate identisch sind. [59] 18 3 Begriffe, Konzepte und Klassifizierung 3.1.2 Asynchrone Replikation Bei der asynchronen Synchronisation können sich die Ausgangsdaten und die Replikate durchaus unterscheiden. Lediglich zum Zeitpunkt der Replikation sind die beiden Datensätze identisch (synchron). Eine einfache Variante wäre das Transferieren von Dateien beispielsweise via FTP oder SSH. Somit stellen die Replikate nur eine Momentaufnahme der Ausgangsdaten dar. Häufig kommt diese Art der Replikation bei mobilen Datenbanken auf Notebooks zum Einsatz. Ein Problem, welches sich automatisch aus der Asynchronität ergibt, ist, dass es bei einer späteren Synchronisation zu Konflikten kommen kann. Einzelne Änderungen werden bei diesem Verfahren nur an einem Objekt durchgeführt (Original oder Replikat). Bei einer Zusammenführung dieser beiden Daten (Synchronisation) kann es zu Konflikten kommen, wenn sowohl das Original als auch das Replikat manipuliert worden sind. 3.1.3 Unidirektionale Synchronisation Hier findet die Synchronisation nur in eine Richtung statt und die Gegenseite wird „ignoriert“. Angenommen, es gilt die Daten zwischen einem PDA und einem Notebook abzugleichen. In diesem Fall würden nur die aktuellen Daten vom Notebook auf den PDA oder umgekehrt übertragen werden und nicht darauf geachtet, ob es nicht auch Änderungen auf der Gegenseite gegeben hat. 3.1.4 Bidirektionale Synchronisation Bei dieser Variante werden beide Seiten in den Synchronisationsprozess einbezogen. Das heißt nach dem vorherigen Beispiel, dass das Notebook dem PDA seine Änderungen mitteilt und ebenso der PDA dem Notebook. Sie sind somit gleichberechtigte Partner. Allerdings kann es hierbei unter Umständen zu Konflikten kommen. Diese können beispielsweise mittels Priorisierung gelöst werden. Hierbei legt man fest, dass immer das jüngere Datum bevorzugt wird oder immer das Notebook. Natürlich ist auch eine manuelle Auflösung durch den Nutzer denkbar. Des Weiteren gibt es auch noch automatische Systeme, die selbstständig aufgrund einer Analyse der vorliegenden Daten versuchen den Konflikt zu lösen. 3.1.5 SlowSync und PushSync Neben der normalen Synchronisation gibt es noch das so genannte SlowSyncVerfahren. Hier werden nicht die Änderungsinformationen ausgetauscht, sondern die kompletten Daten. SlowSync kommt in der Regel zum Einsatz, wenn die Gegenseite noch keine Daten hat oder diese vollkommen veraltet sind. Bei der Push-Synchronisation werden die Änderungsinformationen sofort übertragen, wenn eine Änderung anliegt (ähnlich dem Event-Management). Das 19 3 Begriffe, Konzepte und Klassifizierung Push-Verfahren kommt zum Beispiel bei Informationsdiensten, wie einem Kamerasystem, zum Einsatz, das Sensordaten bei bestimmten Ereignissen an ein Mobiltelefon überträgt. 3.1.6 Funktions- versus Datenreplikation Hierbei handelt es sich um zwei Konzepte, wie getrennte Datenspeicher synchron gehalten werden können. Die Datenreplikation (in der Literatur oft auch als Replikation bezeichnet) führt den Abgleich über den Austausch der eigentlichen Daten aus (siehe Abbildung 4). Bei der Funktionsreplikation (in der Literatur oft auch als Synchronisation bezeichnet) werden die einzelnen Funktion, die zu einer Änderung führen, ausgetauscht und jeweils auf beiden Seiten ausgeführt (siehe Abbildung 5). Dies können direkt Datenbankbefehle sein oder Anweisungen einer abstrakten Schicht, wie zum Beispiel eines Webservices. Abbildung 4: Funktionsweise der Datenreplikation 3.2 Differenzerkennung Basis fast jeder Synchronisation ist die Ermittlung von Unterschieden (Differenzen) zwischen den abzugleichenden Datenspeichern, um nur die Änderungen übertragen zu müssen. Je nach Szenario und Anforderungen können verschiedene Verfahren zum Einsatz kommen, von denen einige kurz vorgestellt werden. Der einfachste Ansatz vergleicht die beiden zu synchronisierenden Datenbestände miteinander und stellt so die Unterschiede fest. Dies setzt allerdings voraus, 20 3 Begriffe, Konzepte und Klassifizierung Abbildung 5: Funktionsweise der Funktionsreplikation dass demjenigen, der den Vergleich durchführt, beide Datenbestände zur Verfügung stehen. Durch das ständige Gegenprüfen der Daten der Gegenstelle kann es zudem zu einem sehr hohen Datenaufkommen kommen. Eine zweite Möglichkeit ist das Führen einer Liste mit Änderungsinformationen. Diese hält fest, welche Daten seit der letzten Synchronisation geändert worden sind. So stehen zum Zeitpunkt der Synchronisation bereits alle nötigen Informationen zur Verfügung und es muss nicht erst die Differenz gebildet werden. Dies entspricht dem Ansatz der Funktionsreplikation. Allerdings kann der dafür notwendige Verwaltungsaufwand recht hoch werden, besonders wenn die Daten auf der einen Seite sehr komplex sind und auf der anderen Seite nur wenige davon benötigt werden. Durch den Einsatz von Prüfsummen, Änderungszähler oder Zeitstempel kann eine Minimierung des Datenaufkommen erreicht werden. So brauchen zu Anfang nur die Prüfsummen ausgetaucht werden, anhand derer die Gegenseite dann ermitteln kann, ob sich diese von den eigenen Prüfsummen unterscheiden. Mit Änderungszählern kann relativ einfach zur Laufzeit ermittelt werden, welche Daten sich überhaupt geändert haben. 3.3 Die Sprache SyncML Die Sprache SyncML ist eine Beschreibungssprache, die den Nachrichtenverkehr zu Synchronisationszwecken zwischen zwei Geräten, beispielsweise einem PC und einem Handheld, spezifiziert. Vorgestellt wird sie, um einen kurzen Überblick über dieses komplexe Themengebiet zu vermitteln und um aufzuzeigen, welche Probleme gelöst werden müssen. Aktuell wird SyncML durch die OMA (Open Mobile Alliance) weiterentwickelt. Nähere Details zu der Spezifikation können [11] und [17] entnommen werden. Unter [20] sind OpenSource-Realisierungen für verschiedene Sprachen zu finden. 21 3 Begriffe, Konzepte und Klassifizierung 3.3.1 Details zu SyncML In Anlehnung an die WSDL (WebService Description Language) handelt es sich bei dieser Sprache ebenfalls um ein XML-Derivat (eXtensible Markup Language). Ebenso wie bei WSDL erfolgt die gesamte Kommunikation über XML. Durch die Verwendung dieses offenen Standards ist eine plattformübergreifende Realisierung möglich. Allerdings ist das Datenaufkommen sehr hoch, wenn man die XML-Daten in Klartext überträgt. Deswegen werden in vielen Realisierungen die Daten binär mittels WBXML (WAP (Wireless Application Protocol) Binary XML) übertragen. Dieses kodiert wiederholt vorkommende Tags als binäre Token, die meist nur ein Byte Platz beanspruchen. Ein weiterer Vorteil der Sprache liegt in der Verwendung des HTTP-Protokolls (HyperText Transfer Protocol) für den Transport der Daten. Falls eine sichere Verbindung benötigt wird kann auch das HTTPS-Protokoll (HTTP Secure) eingesetzt werden. Der Einsatz dieser Protokolle bietet den großen Vorteil, dass in der Regel keine Probleme mit Firewalls entstehen. Da dies auch das Protokoll des Internets ist, haben die meisten Unternehmen deswegen den dafür notwendigen Port 80 freigeschaltet. Falls die Synchronisation über eine USB-Schnittstelle, Infrarot oder Bluetooth erfolgt, kommt häufig OBEX (OBject EXchange) zum Einsatz, eine Art verschlanktes HTTP mit sparsameren binär kodierten Headern. Hin und wieder wird in Mobiltelefonen auch WSP (Wireless Session Protocol) genutzt, ebenfalls ein eingeschränktes HTTP, welches für WAP entwickelt worden ist. 3.3.2 Die Kommunikation 3.3.2.1 Identifikation der Daten Damit die Synchronisation erfolgreich durchgeführt werden kann, müssen die Daten auf beiden Seiten eindeutig identifizierbar sein. SyncML sieht dafür eindeutige IDs vor. Allerdings müssen die gleichen Daten auf der Client- und Server-Seite nicht die gleiche ID besitzen. Stattdessen nutzt der Standard ein ID-Mapping, dass in der Regel aus einer Tabelle mit ID-Pärchen besteht. Üblicherweise wird diese Tabelle vom Server verwaltet. Die IDs selber können beliebige Strings sein und müssen nur server-, statt systemweit eindeutig sein. Zudem ist es notwendig, dass der Server und Client in der Lage sind, Änderungen an den Datensätzen (gelöscht, geändert oder neu seit der letzten Synchronisation) festzustellen. Auf der Client-Seite gibt es die Vereinfachung, dass dieser nicht zwischen geänderten und neuen Datensätzen unterscheiden können muss. Zum Einsatz kommen kann hier jedes beliebige Verfahren. SyncML schreibt nur vor, dass die auf dem Client und dem Server eingesetzten Verfahren unabhängig voneinander sein müssen, um die Flexibilität des Systems zu wahren. 22 3 Begriffe, Konzepte und Klassifizierung 3.3.2.2 Der Ablauf Der Start der Synchronisation erfolgt immer durch den Client und besteht aus einer Abfolge von Anfragen und Serverantworten, die über eine SyncML-Nachricht ausgetauscht werden. Eine Nachricht besteht aus dem Kopf, in SyncML mit SyncHdr bezeichnet, und dem Rumpf, dem sogenannten SyncBody. Der Kopf enthält die Version des genutzten Protokolls, eine laufende Nummer für die Session, den Nachrichtentyp, den Absender und das Ziel. Eine Angabe der Nachrichtengröße ist insbesondere bei „kleinen6 “ Mobiltelefonen wichtig, da diese oft nur wenige Kilobyte bearbeiten können. Der Rumpf enthält die eigentlichen Kommandos, die für die Durchführung der Synchronisation notwendig sind. Diese gliedert sich in drei Phasen: • Initialisierung • Datenaustausch • Mapping 3.3.2.2.1 Initialisierung Zu Beginn dieser Phase teilt der Client dem Server durch ein so genanntes AlertCommand über einen numerischen Kode seinen Synchronisationswunsch mit. 200 würde zum Beispiel zu einer „normalen“ Zweiwege-Synchronisation führen. Über den Anchor-Eintrag in der Nachricht prüfen der Client und der Server, ob sie beide von derselben vorhergegangenen Synchronisations-Session ausgehen. Dafür enthält das Next-Feld eine Referenz auf die aktuelle Session für den Client und das Last-Feld den entsprechenden Wert für die vorangegangene Session. Die Überprüfung erfolgt auf Server-Seite. Dazu speichert dieser das Next-Feld am Ende einer erfolgreichen Session. Bei Eintreffen eines neuen Alerts vergleicht der Server das Last-Feld mit dem gespeicherten Next-Feld. Stimmen die beiden Werte nicht überein, so ist die vermeintlich letzte Session nicht auf beiden Seiten die gleiche und es kommt zu einem SlowSync. Des Weiteren können die beiden Parteien ihre devInf (Device Information) austauschen, um festzustellen, welche Daten überhaupt synchronisiert werden können. 3.3.2.2.2 Datenaustausch Nachdem die Initialisierungsphase abgeschlossen ist, steht fest, auf welche Art und Weise die Synchronisation stattfinden soll. Über den Austausch der devInfs wissen beide Seiten auch, welche Felder und Features unterstützt werden. Der 6 Klein im Sinne von wenig Speicher. Dies hängt im Allgemeinen nicht von der Größe des Geräts ab. 23 3 Begriffe, Konzepte und Klassifizierung Client sendet jetzt seine geänderten Daten (im Falle eines SlowSync seine kompletten Daten) an den Server. Dieser antwortet seinerseits mit seinen geänderten Daten. Dabei können diese Daten beliebig formatiert sein. Damit aber ein gewisses Minimum an Kompabilität gewährleistet werden kann schreibt SyncML ein paar unter PDAs weit verbreitete Formate vor, die unterstützt werden müssen. Dazu zählen beispielsweise vCard für Kontakte und das Internet Message Format gemäß RFC 2822 für E-Mails. 3.3.2.2.3 Mapping In der letzten Phase der Synchronisation teilt der Client dem Server seine IDs mit, damit dieser seine Mapping-Tabelle aktualisieren kann. Beendet wird die komplette Session durch das Senden eines OK-Status an den Client. Erst danach gilt die Session für den Client und den Server als abgeschlossen und der Server kann das ganz am Anfang gesendete Next-Anchor abspeichern. Einen Sonderfall bildet der Sync-Konflikt. Dieser tritt auf, wenn auf beiden Seiten an dem gleichen Datensatz Änderungen vorgenommen worden sind. Die Auflösung des Konflikts ist Sache des Servers. Allerdings schreibt SyncML nicht vor, wie dies zu geschehen hat. Möglich wären beispielsweise einfache Priorisierung (Server überschreibt Änderungen des Client), Speichern beider Versionen oder auch Algorithmen, die die Daten analysieren und zusammenführen können. Nicht vorgesehen ist ein interaktives Eingreifen des Nutzers. Realisieren lässt sich dieses aber, indem zunächst beide Versionen gespeichert werden, um dann im Nachhinein die falsche Version durch den Anwender löschen zu lassen. 3.3.3 Fazit Durch die Verwendung offener Standards und der Nutzung von HTTP als Transportprotokoll setzt sich SyncML zunehmend durch. So bieten bereits über 250 Hersteller [11] Produkte an, die mit einer SyncML-Schnittstelle ausgerüstet sind. Zudem wird der Standard immer weiter entwickelt und an neue Bedürfnisse und Technologien angepasst. So sehen aktuelle Entwicklungen auch die Wiederaufnahme von abgebrochenen Synchronisationsvorgängen vor, damit bei einem Verbindungsfehler die Synchronisation nicht komplett neu gestartet werden muss. Abschließend sind aus der vorangegangenen Diskussion teils schon bekannte, teils neue Problemfelder erkennbar: • Zuordnung: Wie können die Client- und Server-Daten identifiziert werden? • Nachrichtenformat: Wie werden die Informationen übertragen (Löschen, Neu, Änderung)? • Kommunikationsablauf: Wer startet die Synchronisation? Wann ist sie beendet? In welcher Reihenfolge werden die Nachrichten ausgetauscht? 24 4 Verfügbare Standards und Lösungen • Differenzerkennung: Wie werden unabhängig von der Gegenseite Unterschiede festgestellt? • Synchronisationsrichtung: Teilt nur der Server seine Änderungen mit, oder auch der Client? • Konflikterkennung: Wie kann man Konflikte erkennen/vermeiden/beheben? • Datenreduktion: Wie kann das Übertragungsvolumen so gering wie möglich gehalten werden? • Übertragungsweg: Welche Protokolle erlauben einen möglichst flexiblen Einsatz? Wie kann die Kommunikation gesichert werden? Wie können beispielsweise Firewall-Hürden überwunden werden? 4 Verfügbare Standards und Lösungen 4.1 Service Oriented Architecture? Im Kontext verteilter Anwendungen, wie das BIS eine ist, fällt häufig das Schlagwort SOA (Service Oriented Architecture). Hinter diesem Begriff verbirgt sich mehr eine Idee als eine Technik. Es beschreibt das Verwalten, Erstellen und Kombinieren von Softwareprozessen mit dem Ziel, die IT-Infrastruktur auf die Geschäftsprozesse auszurichten. Sie soll so schnell auf geänderte Anforderungen reagieren können und durch die Mehrfachnutzung der Dienste Kosten einsparen. [27] Ob man das BIS-System als dienstorientierte Architektur bezeichnen kann hängt ganz von der Definition von SOA ab, derer es viele, teils sogar widersprüchliche, gibt. Die OASIS-Gruppe (Organization for the Advancement of Structured Information Standards), die auch ein Referenzmodell für SOA entwickelt hat (siehe [43]), definiert SOA als „. . . paradigm for organizing and utilizing distributed capabilities that may be under the control of different ownership domains“ [38]. Demnach besteht die Architektur aus beliebig vielen dynamischen7 und örtlich verteilten Diensten, die von verteilten Anwendungen zur Erfüllung ihrer Aufgaben genutzt werden können. Abbildung 6 verschafft einen Überblick über den Aufbau einer solchen Architektur. Nach dieser Definition kann man BIS nicht zu den dienstorientierten Architekturen zählen, da es keine dynamischen Dienste gibt. Entweder ist der Webservice verfügbar und dem Nutzer stehen alle Dienste zur Verfügung, oder der Webservice ist nicht verfügbar und demnach sind keine Dienste erreichbar. 7 Nicht jeder Dienst muss jederzeit verfügbar sein. 25 4 Verfügbare Standards und Lösungen Abbildung 6: Übersicht über Basistechnologien für den Einsatz mit SOA [47] Microsoft definiert SOA als „. . . eine Software-Infrastruktur, in der die wesentlichen Funktionen einer Anwendung bzw. Softwaremodule als Service organisiert sind. Services können beliebig verteilt sein und lassen sich dynamisch zu Geschäftsprozessen verbinden. SOA legt hierbei die Schnittstellen fest, über die andere Systeme via Netzwerk diese Dienste nutzen können“ [44]. Hier liegt das Hauptaugenmerk darauf, dass alle wesentlichen Funktionen einer Anwendung als Dienst zur Verfügung gestellt werden. Ob diese verteilt und wie dynamisch diese sind, ist nebensächlich. Hiernach kann das BIS als eine dienstorientierte Architektur bezeichnet werden. Viel wichtiger8 aber als die Frage, ob sich das BIS-System als Service Oriented Architecture bezeichnen darf, sind die Techniken, die bei SOA zum Einsatz kommen – insbesondere die Konzepte zur Realisierung einer offline-fähigen Anwendung. In den kommenden Unterabschnitte werden einige von ihnen näher erläutert, um die Ideen für die Realisierung guter9 , verteilter und offline-fähiger Anwendungen darzulegen. 4.1.1 Der Nutzen von SOA für mobile Endgeräte Viele Implementierungen setzen den Client nur als Vermittler in einer serverbasierten Anwendung ein – so auch das aktuelle moBIS. Er stößt Prozesse an und übermittelt Daten an den Server. Die Validierung der Daten und Ausführung der Geschäftslogik obliegt der Server-Anwendung. Diese Rollenverteilung ist nicht immer möglich, befriedigt aber sehr viele Szenarios und ist relativ einfach zu 8 Zumindest aus technischer Sicht. Als modisches Schlagwort kann es ein wichtiges Argument für das Marketing sein. 9 Im Sinne von Wartbarkeit und Wiederverwendbarkeit. 26 4 Verfügbare Standards und Lösungen realisieren. Ein umgekehrtes Szenario ist deutlich aufwendiger und bringt viele Probleme mit sich, wie zum Beispiel die dauerhafte Sicherung der Daten oder das Ausführen der Geschäftslogik (beispielsweise zeitkritische Prozesse auf langsamen10 Geräten). Im Gegenzug wird der Client dadurch aber selbstständiger und eine Weiterarbeit im verbindungslosen Zustand ermöglicht. Um die einzelnen Bereiche Client-Logik, Geschäfts-Logik und Server-Logik klar trennen zu können, muss zunächst der Begriff „Dienst“ genauer beschrieben werden. Ein Dienst (Service) stellt im Prinzip eine Applikation mit einer Nachrichten-basierten, eventuell auch asynchronen, Schnittstelle dar, die ihre Daten kapselt und unterstützt durch das 2-Phasen-CommitProtokoll für eine sichere11 Ausführung der Geschäftslogik sorgt. [36] Aufgrund der Kapselung der Daten und den frei zugänglichen Schnittstellen können Dienste auch beliebig kombiniert werden. So kann man mit nur einfachen Diensten eine komplexe Geschäftslogik realisieren. Typischerweise bestehen diese aus vier Schichten: • Schnittstelle • Geschäftsprozessfassade • Geschäftsregeln • Datenzugriff Die Schnittstelle bildet die Brücke zwischen dem Client und der Geschäftsprozessfassade. Ein einzelner Dienst kann verschiedene Schnittstellen haben, zum Beispiel für einen Webservice und ein Warteschlangen-System. Im Allgemeinen sind die Schnittstellen zustandslos. Dadurch gibt es keine Probleme, wenn beispielsweise nach einem Fehler die Schnittstelle erneut aufgerufen wird [23]. Eine typische zustandslose Funktion könnte so aussehen: ändereKunde( Kunde ), im Gegensatz zur zustandsbehafteten Funktion: ändereKundenName( String ). Die Geschäftsprozessfassade wird über die Schnittstelle aufgerufen und implementiert das Controller-Pattern um die eigentlichen Geschäftsprozesse mit den zugehörigen Regeln aufzurufen. Des Weiteren findet hier eine Transformation der Daten von dem öffentlichen Format der Schnittstelle in die interne Datenstruktur statt. Die Geschäftsregeln sind das Rahmenwerk für die eigentliche Durchführung eines Dienstes. Sie legen zum Beispiel fest, wie die Mehrwertsteuer von einem Produkt 10 Im Vergleich zu einem Server-System bieten PDAs wesentlich geringere Speicher- und Rechenkapazitäten. 11 Sicherheit meint in diesem Zusammenhang die Einhaltung der ACID-Eigenschaften (atomic (atomar), consistent (konsistent), isolated (isoliert) und durable (dauerhaft)). 27 4 Verfügbare Standards und Lösungen berechnet werden soll. Erst mit Hilfe der Regeln werden Prozesse universell und dadurch wiederverwendbar. Über den Datenzugriff wird sichergestellt, dass die Daten auf Server-Seite immer korrekt sind. Auch sollte der Dienst so gestaltet sein, dass er nicht blockierend wirken kann, beispielsweise indem der Client ein Benachrichtigungsfenster öffnet, welches der Nutzer bestätigen muss, damit die Verarbeitung weiterlaufen kann. 4.1.2 Der Einsatz von Agenten Durch die strikte Trennung zwischen Client und Server (Datenkapselung, Geschäftslogik) und den Anspruch, die Client-Software möglichst flexibel zu gestalten, werden auf Client-Seite häufig Agenten eingesetzt, die dort die Ablaufsteuerung übernehmen. Agenten können als Mittler zwischen Diensten und Clients betrachtet werden und nehmen die Rolle eines Proxy wahr. [36] Typischerweise besteht die Arbeit aus eine Abfolge vielzähliger kleiner Schritte. Um zum Beispiel eine E-Mail zu schreiben muss man den Empfänger angeben, eine Betreffzeile eintragen, die Nachricht schreiben und so weiter. Die Aufgabe des Agenten besteht nun darin, die Eingaben zu sammeln, zu überprüfen und gebündelt abzuschicken. Dabei ist der Agent selbst kein Bestandteil eines Dienstes und ist so aus dessen Sichtweise per se nicht vertrauenswürdig. Deswegen wird jeder Austausch zwischen dem Agenten und dem Dienst authentifiziert und autorisiert12 , sowie die übermittelten Daten vom Dienst validiert. Je nach Dienst und System sind die einzelnen Prüfungen unterschiedlich streng. Ein weiteres großes Unterscheidungsmerkmal zwischen einem Agenten und einem Dienst ist die Datenhaltung. Während es ein Agent in der Regel nur mit einem Client zu tun hat, muss ein Dienst viele Clients bedienen und auch deren Daten verwalten können. Je nach Anzahl der Clients kann dies ein sehr komplexer Vorgang sein (eventuell viele Schreiboperationen, Datenkonsistenz, Autorisierung). Oft ist dies auch der Hauptgrund, warum sich ein Dienst relativ schlecht skalieren lässt. 4.1.3 Entwicklung von Diensten und Agenten Damit die Anwendung für mobile Endgeräte möglichst robust und zuverlässig arbeiten kann, sollte der Agent im verbindungslosen Zustand in der Lage sein, einen benötigten Dienst teilweise oder ganz zu simulieren. Dafür müssen die zu simulierende Funktion genau analysiert und spezifiziert werden. Gleiches gilt 12 Authentifizierung und Autorisierung spielen in dem Zusammenhang diese Arbeit nur eine sehr untergeordnete Rolle, da die Webservice-Schnittstelle des BIS-Systems von sich aus nicht öffentlich ist. Nähere Informationen siehe zum Beispiel [18], [45] oder auch [53]. 28 4 Verfügbare Standards und Lösungen für die Daten, die für die Ausführung der Dienste benötigt werden. Allgemein erweist sich folgende Herangehensweise als günstig: 1. Identifizierung der Anwendung, die mobil gemacht werden soll 2. Erstellen oder Ermitteln einer Schnittstelle, die den mobilen Kommunikationstechniken (GSM/UMTS, Bluetooth, Infrarot, WLAN) gerecht wird 3. Sicherstellen, dass der Client auch an die Daten kommen kann, die dieser für den verbindungslosen Fall benötigt 4. Herausarbeiten, welche Funktionalitäten auch im Offline-Modus verfügbar sein sollten. Diese als Ein-Wege-Ruf realisieren, um Abhängigkeiten zwischen Client und Server zu vermeiden 5. Funktionen, die nur mit einer Verbindung sinnvoll sind, sollten als RequestResponse-Ruf realisiert werden, um sicherzustellen, dass die Funktion auf dem Server erfolgreich ausgeführt worden ist 6. Für die Funktionen unter Punkt 4 einen Agenten erstellen • Benötigte Daten und Geschäftslogik finden • Erstellen einer Schnittstelle für den Agenten, welche die eigentliche Dienst-Schnittstelle kapselt. Dadurch ist der Dienst-Zugriff für die Anwendung immer gleich und der Agent kümmert sich um die Online/Offline-Verwaltung 7. Implementieren eine Benutzer-Schnittstelle, die vom Agenten unterstützt wird Die Abbildung 7 stellt die einzelnen Schichten einer offline-fähigen Anwendung schematisch dar. 4.1.4 Mögliche Problemstellen Häufig benötigt die portierte Geschäftslogik lokale Daten auf dem mobilen Gerät. Die Replikation dieser Daten kann zu Problemen führen. Manchmal ist es nicht möglich Daten zu replizieren, weil die Dienste keinen Zugriff darauf erlauben. Oft stellen sie auch nur aggregierte Daten zu Verfügung, um das Übertragungsvolumen klein zu halten. Die Geschäftslogik benötigt aber gelegentlich noch weitere Daten, beispielsweise für Prüffunktionen. In diesem Fall müssen dann mehr Daten auf den Client übertragen werden, als dieser eigentlich benötigt. Mobile Geräte gibt es in den unterschiedlichsten Ausführungen (PDA, Smartphone, Mobiltelefone, UMPC (Ultra Mobile PC), Tablet-PC, (Sub-)Notebooks), die sich sehr in Hardware (Prozessorausstattung, Speichergröße, Verbindungstechnologien) und Software (Dateisystem, Betriebssystem) unterscheiden. Deswegen muss die Client-Anwendung sehr flexibel und anpassbar gestaltet werden, 29 4 Verfügbare Standards und Lösungen Abbildung 7: Schichten in einer offline-fähigen mobilen Anwendung so dass die Geräte-Spezifika berücksichtigt werden können und dennoch der Wiederverwendungssgrad möglichst hoch ist. Dadurch werden Entwicklungs- und Wartungskosten niedrig gehalten. Problematisch kann es auch werden, wenn das System über Schnittstellen zu Fremdsystemen verfügt. Auch bei offlinedurchgeführten Aufrufen muss gewährleistet sein, dass diese angesprochen werden. Und auch hier treten wieder die Probleme mit den notwendigerweise verteilten Daten und den daraus resultierenden Konfliktmöglichkeiten auf. 4.1.5 Fazit Es gibt viele Möglichkeiten eine offline-fähige Anwendung zu entwerfen. Die skizzierte Vorgehensweise hat den Vorteil, dass es eine klare Trennung zwischen Client und Server gibt. Durch den Einsatz des Agenten, der im Prinzip den Server auf dem Client simuliert, bedeutet es für die eigentliche Client-Anwendung keinen Unterschied, ob das Gerät gerade über eine Verbindung verfügt oder nicht. Ohne großen Aufwand können so auch bereits existierende Anwendungen offline-fähig gemacht werden. Einen Gesamtüberblick über das System gibt die Abbildung 8. Es besteht aus dem Agenten und der Anwendung auf der Client-Seite, sowie der Geschäftslogik und Synchronisationsanwendung auf der Server-Seite. Die Dienste kommunizieren über wohldefinierte öffentliche Schnittstellen. Ein XML-Schemata beschreibt die eigentlichen Nachrichtenstrukturen. 30 4 Verfügbare Standards und Lösungen Abbildung 8: Architektur von SOA Der Agent selbst bietet der Client-Anwendung eine feingranulare programmatische Schnittstelle an. Im verbindungslosen Fall kann er Teile der Geschäftslogik simulieren, so dass die Anwendung normal weiterarbeiten kann und im besten Fall davon nichts mitbekommt. Problematisch für die Umsetzung ist die genaue Festlegung des Funktionsumfangs der zu simulierenden Geschäftslogik. Je umfangreicher sie ist, um so mehr Daten benötigt der Client zur Ausführung. Aber andererseits ist ein sinnvolles Arbeiten im Offline-Fall nicht mehr gegeben, wenn der Umfang zu klein ist. Die Bestimmung des Umfangs sollte auf dem Motto beruhen: „So viel lokale Geschäftslogik wie nötig und so wenig wie möglich“. Das größte Problem ist aber die Aktualität der Daten auf dem Client, da sich diese jederzeit auf dem Server ändern können. Um Konflikte zu vermeiden sollte deswegen versucht werden, die Daten auf dem Client so aktuell wie möglich zu halten, damit die dort getroffenen Entscheidung auf korrekten Daten beruhen. Weitere Hinweise und Tipps für die Realisierung können unter anderem [36] entnommen werden. 4.2 OneBridge Mobile Platform Auf dem Markt existieren bereits fertige Lösungen, die damit werben, dass sie mit mehr oder minder großem Aufwand existierende Anwendungen offline-fähig machen können und sich damit auch leicht Offline-Anwendungen realisieren lassen. Diese werden direkt von Datenbankherstellern oder von Dritt-Anbietern angeboten. Lösungen direkt von Datenbankanbietern scheiden meist sofort aus, weil diese auf ein bestimmtes Datenbanksystem festgelegt sind. Damit wäre die Lösung nicht mehr unabhängig von der Umgebung, in der sie eingesetzt werden kann. Die OneBridge Mobile Platform arbeitet unabhängig von einem bestimmten Datenbanksystem und wird deswegen kurz vorgestellt. Hierbei handelt es sich 31 4 Verfügbare Standards und Lösungen um eine Plattform zur Entwicklung mobiler Anwendungen. Sie besteht aus den drei Teilen: • OneBridge Mobile Groupware • OneBridge Mobile Data Suite • OneBridge Monitoring Service Bis 2005 wurde sie von Extended Systems entwickelt und vertrieben. Dann wurde sie von Sybase für circa 71,3 Millionen Dollar (siehe [32]) übernommen und ist jetzt in deren Tochterfirma iAnywhere Solutions Inc., welche Marktführer im Bereich mobiler Infrastruktur ist [33], eingegliedert. Nach Angaben des Herstellers ermöglicht die Plattform eine „einfache und nahtlose Portierung bestehender Unternehmensanwendungen auf mobile Umgebungen. Dies garantiert einen sicheren und zuverlässigen Informationsfluss zwischen mobilen Mitarbeitern und dem Unternehmen. Die Plattform bietet einen integrierten, lösungsorientierten Ansatz und unterstützt jedes mobile Gerät, jedes Unternehmenssystem und jeden Kommunikationsmodus – darunter Online, Offline, Real-Time (Echtzeit), Push oder Synchronisation“ [28]. Die Abbildung 9 zeigt eine Übersicht über den Aufbau der Infrastruktur unter Verwendung dieser Plattform. Abbildung 9: Infrastruktur der OneBridge Mobile Platform [30] 32 4 Verfügbare Standards und Lösungen 4.2.1 OneBridge Mobile Groupware Ursprünglich ist die Plattform entwickelt worden, um kostengünstig E-Mails und PIM-Daten (Personal Information Manager) wie Termine, Kontakte und Aufgaben an mobile Endgeräte zu übertragen. Die OneBridge Mobile Groupware selbst ist dabei unabhängig von den eingesetzten Geräten, dem Verbindungsmodus und der Groupware-Anwendung. Unterstützt werden unter anderem Microsoft Exchange, Lotus Domino und Novell GroupWise. [28] 4.2.2 OneBridge Mobile Data Suite Die OneBridge Mobile Data Suite beinhaltet eine Reihe von Entwicklungswerkzeugen, die die Entwickler mobiler Software vom Design bis zur Implementierung unterstützen sollen. Sie beinhaltet Sync-Libraries, welche die Daten-Replizierungsprozesse unterstützen. Des Weiteren ist das OMAAT (OneBridge Mobile Application Acceleration Toolkit) enthalten, welches die Entwicklung mobiler Anwendungen erleichtert. Bereits vorhandene Anwendungen können ohne „Umbau“ mit Push-Eigenschaften nachgerüstet werden. Durch das Embedded Toolkit ist es möglich, mobile Anwendung in .NET oder Java ME (Java Micro Edition) zu entwickeln, die Synchronisationsfähigkeiten, Webservices oder PushTechnologien integrieren, ohne dass separate Komponenten auf dem Client benötigt werden. Das Toolkit ist für .NET, .NET Compact Framework und Java Micro Edition verfügbar. Angeblich soll man damit Anwendungen für mobile Nutzer entwickeln können, „ohne sich Gedanken über Datenintegrität, Speicher und Konektivität machen zu müssen“ [29]. Im Jahr 2005 ist die OneBridge Mobile Data Suite mit dem „Best of TechEd 2005“ in der Kategorie „Mobile Lösungen“ von den Magazinen Windows IT Pro und SQL Server Magazine ausgezeichnet worden und hat sich damit gegen 260 Bewerber in insgesamt 10 Kategorien durchgesetzt. [22] Neben den klassischen Synchronisationsverfahren, wie sie in Kapitel 3.1 beschrieben worden sind, bietet die Data Suite auch noch ein so genanntes Live Connect an. Dieses synchronisiert automatisch die Daten im Hintergrund, sobald Änderungen vorgenommen worden sind. Im Gegensatz zum Push-Verfahren erlaubt dieses auch eine Zwei-Wege-Kommunikation. Das Konfliktmanagement der Synchronisation ist frei konfigurierbar. Es stehen Priorisierung, sowie Regel-basierte und automatische Konfliktlösungen zur Verfügung. Als Protokoll kommt auch hier SyncML zum Einsatz (siehe Kapitel 3.3). Ein weiteres interessantes Merkmal ist, dass auch eine „multiple server table to single device table“-Option vorhanden ist (Synchronisation aggregierter Daten). Das heißt, dass mehrere serverseitige Tabellen während der Replikation/Synchronisation zu einer zusammengefasst werden können. Zusätzlich werden auch noch diverse Logging- und Sicherheitsfeatures angeboten. 33 5 Skizzierung der Lösung 4.2.3 OneBridge Monitoring Service Dieser Dienst kann alle OneBridge-Komponenten in einem Unternehmen beobachten. Sobald ein Problem auftritt können geeignete Gegenmaßnahmen ergriffen werden und so die Verfügbarkeit des Servers erhöht werden. Die Maßnahmen erstrecken sich von dem Verschicken von Status-Meldungen bis hin zu so genannten Selbstheilungsprozessen. [31] 4.2.4 Fazit Die OneBridge Mobile Platform, besonders die Data Suite, bietet viele interessante Features an. Besonders attraktiv im Kontext dieser Arbeit sind das Live Connect und die „multiple server table to single device table“-Option. Um jedoch nicht den zeitlichen Rahmen für diese Arbeit zu sprengen wird erst einmal auf die Nutzung der Plattform verzichtet. Perspektivisch gesehen kann ihr Einsatz oder der ähnlicher Produkte aber sinnvoll sein. Dies hängt vor allem von den zukünftig zu lösenden Problemen und der Kundenakzeptanz, ein Drittsystem einzusetzen, ab. 5 Skizzierung der Lösung Durch die vorangegangene Diskussion sind viele Problemfelder aufgezeigt worden, die bei dem Hinzufügen einer Offline-Fähigkeit berücksichtigt werden müssen. Dies sind unter anderem: • Umfang der lokalen Datenhaltung und Geschäftslogik – Einbeziehung von Schnittstellen zu Fremdsystemen • Art und Weise der Datensynchronisation – Ablaufsteuerung der Synchronisation – Aufbau der Nachrichten – Daten- oder Funktionsreplikation – Konflikterkennung und -behebung • Integration der Offline-Fähigkeiten in die Client-Anwendung Die Lösungen dieser Probleme werden in den nachfolgenden Unterabschnitten näher erläutert und basieren teilweise auf den bereits vorgestellten Konzepten. Neben diesen Problemen muss die Lösung auch noch den allgemeinen Anforderungen an die mobile Anwendung gerecht werden, die durch die verschiedenen Eigenschaften der einzelnen Aufrufe geprägt sind: 34 5 Skizzierung der Lösung • Zeitgenaue Erfassung von Abläufen für die statistische Auswertung und die richtige Wiedergabe der realen Welt durch das BIS • Korrekte Erfassung der Abläufe für die Buchhaltung • Reine Datenerfassung für die Datenpflege des Systems Daneben sollte die Anwendung nach Möglichkeit immer über aktuelle Daten verfügen, damit der Anwender bei seiner Arbeit so gut wie möglich unterstützt wird und Konflikte weitestgehend vermieden werden. 5.1 Bewertung der einzelnen Möglichkeiten 5.1.1 Komplette oder teilweise Portierung der Geschäftslogik? Der Umfang der lokalen Geschäftslogik, die auf den mobilen Client portiert wird, beeinflusst das Design maßgeblich. Er legt implizit die Art der Datensynchronisation fest und welche Daten der Client lokal für den Offline-Fall vorhalten muss. Nur wenn die Geschäftslogik komplett portiert wird, kann die Synchronisation rein datenorientiert (Datenreplikation) erfolgen. Wird sie nur teilweise portiert, muss es einen Mechanismus geben, der den Server anweist, den nicht portierten Teil auszuführen. Durch die komplette Portierung kann das Konfliktpotential gesenkt werden. Die Prüfung, ob ein Aufruf ausgeführt werden darf oder nicht, kann vollständig auf dem Client durchgeführt werden. Bei einer nur teilweisen Portierung kann es passieren, dass die lokale Logik einer Aktion zustimmt, obwohl der Server nach einer Prüfung nicht zustimmen würde. Im Gegenzug benötigt der Client dafür aber sehr viele Daten, die er für seine eigentliche Tätigkeit nicht braucht (Protokolldaten, komplette Tabellen anstelle von aggregierten Daten). Das erhöht den Synchronisationsaufwand und das zu übertragende Datenvolumen13 , sowie die Komplexität der auszuführenden Logik14 . Neben den mobilen Clients gibt es weiterhin noch die stationären Clients, die auf Basis der Webservices arbeiten. Wird deren Geschäftslogik komplett auf die mobilen Clients portiert, existiert diese zwei Mal und muss damit auch doppelt entwickelt und getestet werden. Des Weiteren leidet die Wartbarkeit. Ändern sich Abläufe in einem Geschäftsprozess oder kommen neue hinzu, müssen die Änderungen immer an zwei Stellen vorgenommen werden. Aus diesen Gründen erfolgt die Portierung nach dem Prinzip aus Kapitel 4.1.5. Das ermöglicht eine recht einfache Geschäftslogik unter Nutzung der Funktionsreplikation (dienstorientierte Kommunikation) und Zwischenspeicherung der 13 GPRS bietet zum Beispiel nur eine Übertragungsgeschwindigkeit von maximal 55,6 kbit/s in der Praxis. 14 Komplexe Datenbankanweisungen können sich schnell zu einem Engpass auf einem mobilen Gerät entwickeln. 35 5 Skizzierung der Lösung eigentlichen Aufrufe. Der Umfang der Daten, die auf dem Client verfügbar sein müssen, wird durch die Portierung nicht erhöht. Die lokale Logik arbeitet nur auf den Daten, die der Client auch wirklich braucht und kann diese manipulieren. Zu einem späteren Zeitpunkt wird dann der eigentliche Aufruf und nicht die geänderten Daten übertragen. Daraufhin kann die Server-Geschäftslogik im kompletten Umfang ausgeführt werden, inklusive Bedienung der Schnittstellen zu Fremdsystemen. Diese Variante bietet zudem den Vorteil, dass sich etwaige Fehler in der lokalen Geschäftslogik nicht auf das BIS-System auswirken. Zwar bekommt der Anwender zunächst falsche Ergebnisse durch sie geliefert, diese werden aber nicht an den Server übermittelt und können durch einen späteren Datenabgleich wieder behoben werden. 5.1.2 Die Warteschlange Die zuvor beschriebene Kommunikation macht es notwendig, dass WebserviceAufrufe gespeichert werden können, um sie zu einem späteren Zeitpunkt übermitteln zu können. Dabei ist es wichtig, dass die Reihenfolge eingehalten wird, um Probleme durch logische oder fachliche Abhängigkeiten zu vermeiden. Muss beispielsweise Aufruf A vor B ausgeführt werden, müssen diese Aufrufe so auch an den Server übermittelt werden. Ansonsten treten Konflikte auf, die bei Einhaltung der Reihenfolge nicht aufgetreten wären. Des Weiteren müssen gespeicherte Aufrufe über die Lebenszeit der Anwendung hinaus erhalten bleiben, sofern sie noch nicht gesendet worden sind. Das bedeutet, dass auch ein Neustart der Anwendung oder ein Absturz des mobilen Geräts nicht zu einem Datenverlust führen darf. Ansonsten könnte die geleistete Arbeit nicht dem Server mitgeteilt werden und damit auch nicht protokolliert und abgerechnet werden. Um Verwirrungen zu vermeiden, die zwischen einem Disponenten und einem Lokrangierführer auftreten können, wenn ein Aufruf noch nicht vom BIS-System erfasst worden ist und damit beide über unterschiedliche Daten verfügen, sollte der Anwender jederzeit in der Lage sein, seine aktuelle Warteschlange einzusehen. Das schafft Klarheit und erhöht die Nutzerakzeptanz. 5.1.3 Die lokale Datenhaltung Die Speicherung von Daten auf dem mobilen Gerät ist ein wichtiger Bestandteil der Realisierung einer Offline-Fähigkeit. Dadurch ist es der Anwendung möglich, den Nutzer auch im verbindungslosen Fall mit Daten zu versorgen. Allerdings nur, wenn der Umfang genügend groß ist. Ansonsten kann es passieren, das zwar lokale Daten vorhanden sind, diese aber nicht ausreichen. Andererseits erhöhen zu viele Daten nur unnötig den Aufwand. Deswegen gilt auch hier wieder die Maxime: „So viel wie nötig, so wenig wie möglich“. 36 5 Skizzierung der Lösung Da sich die Daten relativ häufig ändern können, muss es einen Mechanismus geben, der die lokalen Daten mit den Server-Daten synchronisiert. Dennoch kann es passieren, dass der Nutzer Entscheidungen auf der Basis veralteter, und somit falscher, Daten trifft. Dies muss nach Möglichkeit erkannt werden und ist Aufgabe des Konfliktmanagements. Um den Bediener nicht von seiner Arbeit abzulenken, sollte der Abgleich automatisch und im Hintergrund ausgeführt werden. Kommt es dadurch zu einer Änderung an den Daten, ist der Nutzer gegebenenfalls darüber in Kenntnis zu setzen. Damit sich die lokale Datenhaltung nicht als Flaschenhals der mobilen Anwendung entpuppt, muss ein schneller und einfacher Zugriff gewährleistet sein. Je nach Umfang muss sie mehrere hundert Datensätze exklusive der Stammdaten aufnehmen können. Sind diese Dinge gewährleistet, so eröffnet dies neue Arbeitsabläufe in der mobilen Anwendung, die die Arbeit beschleunigen können. Anstelle eines WebserviceAufrufs zum Holen von Daten können diese einfach der lokalen Datenhaltung entnommen und so die Aufrufzeit15 eingespart werden. 5.1.4 Die lokale Geschäftslogik Nachdem der Umfang der lokalen Geschäftslogik festgelegt worden ist sollte die Server-Geschäftslogik so gut wie möglich nachgebaut werden. Dadurch reduziert sich das Konfliktpotential gegenüber Varianten, bei denen komplett auf die Prüfungen, ob ein Aufruf ausgeführt werden darf, verzichtet wird. Die Prüfungen werden zwar im Allgemeinen nicht im vollen Umfang realisierbar sein, da der lokalen Geschäftslogik nicht alle Daten des BIS zur Verfügung stehen, sorgen aber dennoch für etwas mehr Sicherheit und somit für eine Reduzierung des Risikos. Die „vollständige“ Simulation soll auch dafür sorgen, dass es für den Anwender der mobilen Anwendung anhand der Daten nicht ersichtlich ist, ob ein Aufruf lokal oder entfernt ausgeführt worden ist. Simulierte Aufrufe müssen inklusive Angabe des Zeitpunkts in die Warteschlange aufgenommen werden, um sie später an den Server zu senden. Der Original-Aufrufzeitpunkt kann dann vom Server, beispielsweise für die Protokollierung, ausgewertet werden. Die Einführung der lokalen Geschäftslogik ermöglicht zudem neue Arbeitsabläufe auf dem Gerät. Auch wenn es über eine Verbindung verfügt können einzelne Aufrufe zunächst nur simuliert und später gebündelt an den Server übermittelt werden. Sinnvoll kann diese Vorgehensweise beispielsweise in Bereichen sein, in denen schnell verschiedene Änderungen vorgenommen werden müssen oder aus anderen Gründen Zeit gespart werden soll.15 Durch das spätere Senden eines Aufrufs kann es zu Positiv-Falsch-Konflikten kommen. 15 Im Durchschnitt dauert ein Aufruf mindestens 1 Sekunde (1 Sekunde Sende- und Empfangszeit plus Verarbeitung (meist kaum von Bedeutung)). 37 5 Skizzierung der Lösung Positiv-Falsch-Konflikte bezeichnen Probleme, die dadurch entstehen, dass die lokale Logik einen Aufruf erlaubt und ausführt, die Server-Logik zu einem späteren Zeitpunkt aber feststellt, dass der Aufruf nicht zulässig war. In diesem Fall ist es wieder die Aufgabe des Konfliktmanagements den Fehler zu erkennen und zu beheben. Eine weitere Gefahr, wie schon im vorherigen Abschnitt erwähnt, besteht darin, dass der Nutzer aufgrund veralterter Daten handelt und Aktionen deswegen nicht vollständig oder fehlerhaft ausgeführt werden. Dies wird hier mit dem Begriff Alt-Daten-Konflikt bezeichnet. Alt-Daten-Konflikte treten auf, wenn der Nutzer der mobilen Anwendung aufgrund veralteter Daten, die lokal auf dem mobilen Gerät sind, Anweisungen falsch oder unvollständig ausführt. Diese Probleme zu finden und zu lösen ist ebenfalls Aufgabe des Konfliktmanagements. 5.1.5 Die Synchronisation Die nur teilweise Portierung der Geschäftslogik erlaubt eine recht einfache Synchronisation. Die Server-Geschäftslogik ist nach wie vor im vollen Umfang vorhanden und hat im Zweifelsfall immer Recht. Deswegen ist es ausreichend, wenn der Abgleich unidirektional vom Server auf den Client mit Server-Priorisierung erfolgt. Das bedeutet, dass der Client die mitgeteilten Änderungen immer ohne Prüfung übernehmen kann und so gegebenenfalls seine eigenen Änderungen überschreibt. Dadurch werden Konflikte vermieden, eine Konfliktbehandlung kann entfallen und falsche Daten auf dem Client, verursacht von einer fehlerhaften lokalen Geschäftslogik, werden hinfällig. Bei der Implementierung des Synchronisationsverfahren muss berücksichtigt werden, dass die mobilen Geräte im Allgemeinen technisch wesentlich schlechter ausgerüstet sind als der Datenbank- und der Webservice-Server. Aus diesem Grund sollte die Verarbeitung auf dem Client möglichst einfach sein und vom Server so gut wie möglich unterstützt werden – auch wenn das mehr Aufwand für den Server bedeutet. Das gleiche gilt für die Menge der auszutauschenden Informationen zwischen Client und Server. Da die Verbindung sehr langsam ist, sollten sie möglichst klein gehalten werden, auch wenn es dadurch zu einer höheren Belastung des Servers kommt. Die Haupteinflussgröße auf die auszutauschende Datenmenge (die Synchronisations-Informationen an die Clients) und das Laufzeitverhalten des Algorithmus für die Differenzbildung hat die Granularität der Differenz. Diese kann beliebig grob- beziehungsweise feingranular sein. Möglich ist die Übertragung einer kompletten Tabelle, sobald sich ein Eintrag in ihr geändert hat, bis hin zur 38 5 Skizzierung der Lösung Übertragung einzelner Zellen, deren Werte sich geändert haben. Allgemein gilt, dass je grobgranularer die Differenzbildung, desto besser ist das Laufzeitverhalten und desto größer die zu übertragende Datenmenge. Bei der grobgranularen Variante kann der Vergleich bereits nach der Feststellung nur einer Änderung abgebrochen werden. Bei dem anderen Extrem muss immer für jede Zelle geprüft werden, ob eine Änderung stattgefunden hat oder nicht. Wenn sich zwischen den Synchronisationen nur vereinzelt Datensätze ändern, sollten feingranulare Verfahren gewählt werden, damit nicht unnötig viele Daten übertragen werden müssen, die sich gar nicht geändert haben. Je größer der Änderungsumfang ist, desto grobgranularer kann auch die Differenzbildung sein. Gemäß der Maxime, die Ressourcen des mobilen Geräts zu schonen und die Datenmenge möglichst klein zu halten – auch wenn es mehr Aufwand für den Server bedeutet – sollte ein möglichst feingranulares Verfahren bevorzugt werden, das nur zellenweise Änderungen überträgt. Viele Änderungen im BIS beziehen sich nur auf Teile einzelner Spalten. Würden die kompletten Datensätze dieser geänderten Spalten übertragen werden, wären darunter sehr viele Informationen, über die der Client schon verfügt und damit wertlos für ihn sind. 5.1.6 Aufbau der Synchronisations-Nachrichten Der Aufbau der Synchronisations-Nachrichten ist eng mit dem eingesetzten Synchronisationsverfahren verzahnt und sollte daran angepasst sein. Generell gibt es im BIS drei verschiedene Varianten, wie Daten übertragen werden können: mit einer homogenen Wertetabelle, mit einer inhomogenen Wertetabelle oder mit einzelnen Datensätzen. In der homogenen Wertetabelle hat jeder Datensatz/jede Zeile die gleichen Spalten. Vorteil dieser Tabelle ist, dass die Beschreibung (Spaltenname, Typen der Spalten) pro Tabelle nur einmal übertragen werden müssen. Dafür muss aber auch für jeden Datensatz jeder Spaltenwert übertragen werden. In der inhomogenen Variante kann jeder Datensatz über unterschiedliche Spalten verfügen. Für jede Spalten-Kombination muss deswegen eine Beschreibung übermittelt werden. Im Gegenzug enthält die Tabelle dafür aber auch nur noch Werte, die auch von Interesse sind. Verwandt zu dieser Variante ist die Übertragung einzelner Datensätze. Allerdings ist hier für jeden Datensatz eine eigene Beschreibung notwendig und nicht nur für jede Spaltenkombination. Weil allgemein gilt, dass |Beschreibungen Datensätze| ≥ |Beschreibungen Spaltenkombinationen| und |Informationen Datensätze| = |Informationen inhomogene Wertetabelle| ist für diesen Anwendungsfall eine inhomogene Wertetabelle gegenüber einzelnen Datensätzen vorzuziehen. 39 5 Skizzierung der Lösung S1 ... ... ... ... S2 ... ... ... ... W1 ... ... ... ... W2 ... ... ... ... ... ... ... ... ... Tabelle 1: Homogene Wertetabelle mit kompletten Daten S1 ... ... ... ... S2 ... ... ... ... Spalte ... ... ... ... Wert ... ... ... ... Tabelle 3: Jede Änderung einzeln S1 ... ... ... ... S2 ... ... ... ... W1 ... W2 ... ... ... ... ... ... ... Tabelle 2: Homogene Wertetabelle mit lückenhaften Daten S1 ... S2 ... W1 ... S1 ... S2 ... W1 ... W2 ... ... ... Tabelle 4: Inhomogene Wertetabelle Si . . . Schlüsselspalte i Wj . . . Wertspalte j Zudem können in einem Container beliebige Wertetabellen und Datensätze aufgenommen und in einer Nachricht übertragen werden. Daraus ergeben sich mehrere Möglichkeiten, wie die Änderungsdaten der Synchronisation an den Client übermittelt werden können. Die Tabellen 1-4 illustrieren vier grundsätzliche Möglichkeiten. Die Übertragung der Daten mittels einer homogenen Wertetabelle, die die kompletten Daten beinhaltet (Tabelle 1), bietet zwar die Vorteile, dass sie sich sehr einfach auf der Client-Seite verarbeiten lässt und der Schlüssel bei vielen Änderungen nur einmal übertragen werden muss. Der Nachteil ist allerdings, dass auch bei Änderungen in nur einer Spalte die komplette Zeile übertragen werden muss. Da die Änderungsinformationen aber zellenweise berechnet werden sollen, ist diese Art der Kodierung nicht praktikabel und würde die aufwendigere Berechung der Differenz zunichte machen. Verbessern kann man die Verwendung der homogenen Wertetabelle, indem nur Werte in Zellen eingetragen werden, die auf dem Client geändert werden sollen, wie Tabelle 2 illustriert. Hierbei werden keine überflüssigen Daten mehr übertragen. Allerdings kann diese Tabelle nicht mehr so einfach auf dem Client verarbeitet werden. Dieser muss nun jede Zeile durchlaufen und prüfen, welche Zelle einen Eintrag hat, der übernommen werden muss. Zusätzlich muss unterschieden werden können, ob ein Eintrag in einer Zelle fehlt, weil es dort keine Änderung gibt, oder aber, weil der neue Wert Nichts (Leerstring, Null) ist und er von dem Client übernommen werden muss. 40 5 Skizzierung der Lösung Denkbar ist auch eine Lösung, bei der jede Änderung einzeln übertragen wird, wie Tabelle 3 zeigt. Die Spalte Spalte beinhaltet den Namen von dem Eintrag, der mit Wert überschrieben werden soll. Für jede einzelne Änderung muss der zugehörige Schlüssel übertragen werden. Das hat zur Folge, dass bei n Änderungen in einem Datensatz der Schlüssel n-mal in der Tabelle enthalten ist. Sind mehrere Werte in einer Spalte geändert worden, ist zusätzlich auch die Spaltenbeschreibung mehrfach vorhanden. Bei der vierten Variante werden die Daten als inhomogene Wertetabelle (siehe Tabelle 4) übertragen. Allerdings ist auch diese Variante relativ aufwendig auf dem Client zu verarbeiten, da für jede inhomogene Struktur erst ermittelt werden muss, welche Spalten darin enthalten sind. Des Weiteren muss für jede einzelne Struktur deren Beschreibung extra übertragen werden. Dafür bietet diese Möglichkeit eine recht kompakte Darstellungsform. Von den vier vorgestellten Varianten scheint die zweite den besten Kompromiss darzustellen. Der Verarbeitungsaufwand für den mobilen Client ist zwar höher als bei der ersten Variante, aber kleiner als bei der vierten. Dafür enthält sie nur die wirklich relevanten Informationen, wie auch drei und vier. Möglichkeit drei kommt wegen des eventuell mehrfachen Auftretens eines Schlüssels oder einer Spaltenbeschreibung nicht in Frage. 5.1.7 Das Konfliktmanagement Das Konfliktmanagement muss dafür sorgen, dass möglichst alle auftretenden Probleme, besonders die Positiv-Negativ-Konflikte und die Alt-Daten-Konflikte, vor der eigentlichen Ausführung des Aufrufs auf dem Server erkannt und behoben werden. Ein weiteres Problem ist zum Beispiel das mehrfache Empfangen des gleichen Aufrufs, weil die entsprechende Antwort des Servers nicht beim Client angekommen ist und dieser daraufhin den Aufruf erneut sendet. Für die Erkennung von Konflikten muss das Management häufig wissen, auf welcher Datengrundlage der Aufruf vom Anwender des mobilen Geräts überhaupt ausgeführt worden ist und wie der Datenbestand zur Prüfzeit auf dem Server ist. Dies kann auf unterschiedliche Art und Weise sichergestellt werden. Entweder werden den Aufrufen zusätzliche Parameter übergeben, die alle relevanten Client-Daten enthalten oder der Server kennt von sich heraus den Zustand des Clients zum Aufrufzeitpunkt. Die erste Variante hat den Nachteil, dass durch die zusätzlichen Parameter eine größere Datenmenge übertragen werden muss, deswegen ist die zweite Art vorzuziehen. Aus der Differenz dieser beiden Datenmengen können im Zusammenhang mit dem Aufruf Konflikte erkannt werden. Fehlt eine der beiden Informationen, ist eine Erkennung, beispielsweise von Positiv-Negativ- und Alt-Daten-Konflikten, nicht möglich. Die Konfliktbehebung muss fachlich fundiert erfolgen und nicht durch Ignoranz des problemverursachenden Aufrufs. Der Grund dafür ist, dass dieser Aufruf 41 5 Skizzierung der Lösung zum Eintreffzeitpunkt auf dem Server bereits durch den Anwender der mobilen Anwendung in die Realität umgesetzt worden ist. Würde man das ignorieren, kommt es zu einer Verzerrung des Abbilds der realen Welt im BIS. Zudem sind auch „falsch“ erbrachte Leistungen Leistungen, die eventuell abgerechnet und protokolliert werden müssen. Sollte eine automatische Konfliktlösung nicht möglich sein, sind die stationären Clients anstelle des mobilen Clients darüber zu informieren. Dieser ist zwar der eigentliche Konfliktverursacher, aber die stationären Clients verfügen über einen viel größeren Funktionsumfang und damit auch über mehr Möglichkeiten, den Konflikt manuell zu lösen. Die Umsetzung kann in verschiedenen Varianten erfolgen. In der ersten besteht das Konfliktmanagement aus einem Teil, der die Erkennung und Lösung in einer Funktion zusammenfasst. Das ist zwar relativ kompakt, kann aber bei komplexen Prüf- oder Lösungsfunktionen schnell unübersichtlich werden. In der zweiten Variante sind die Erkennung und die Lösung voneinander getrennt. Das ermöglicht ein iteratives Konfliktmanagement, wie es in Algorithmus 1 skizziert ist. Dadurch wird die Wartbarkeit der Anwendung unterstützt. Weitere Prüffunktionen können ohne Probleme und ohne Rücksicht auf die Behebung übernommen werden und umgekehrt. Eingabe : Aufruf iterationsanzahl = 2; i = 0; solange i < iterationsanzahl tue i++; wenn ! AufrufIstKonfliktfrei(Aufruf ) dann LöseKonflikt(Aufruf ); wenn AufrufIstKonfliktfrei(Aufruf ) dann Ergebnis = ”Ok”; Ende Ende Ende wenn Ergebnis == ”Ok” dann Ergebnis = StarteAufruf(Aufruf ); Ende sonst Ergebnis = ”Konflikt”; Ende Ausgabe : Ergebnis Algorithmus 1 : Ablauf des serverseitigen Konfliktmanagements 42 5 Skizzierung der Lösung 5.2 Umfang der zu portierenden Geschäftslogik und Daten Bevor das Konzept umgesetzt werden kann, muss nach Kapitel 4.1.3 noch der Umfang der zu portierenden Funktionen festgelegt werden. Nicht alle Funktionen sind dafür geeignet oder wichtig. Wie in Kapitel 5 bereits erwähnt erfüllen die Aufrufe unterschiedliche Funktionen und können deshalb womöglich nicht alle gleich behandelt werden. Es gibt Aufrufe, die sofort abgesetzt werden müssen, andere können hingegen auch später an den Server gesendet werden. Manche dienen nur der Informationsbeschaffung, während einige zu Statusänderungen im BIS führen. Deswegen beschäftigt sich der nachfolgende Unterabschnitt mit der Untersuchung der einzelnen Aufrufe, um Rückschlüsse ziehen zu können, welche Funktionen auch offline verfügbar sein sollten. Beispielsweise kann nicht jeder Aufruf kann durch eine lokale Geschäftslogik simuliert werden und nicht jedes Datum ist sinnvoll in der lokalen Datenhaltung aufgehoben. 5.2.1 Analyse der Webservice-Aufrufe und Datenstrukturen Eine sehr grobe Kategorisierung der Aufrufe ist die Einteilung nach der Auswirkung im BIS. Aufrufe der ersten Kategorie dienen der reinen Informationsbeschaffung. Die zweite Kategorie besteht aus Aufrufen, die Daten im BIS manipulieren. Diese grobe Aufteilung alleine ist aber noch nicht ausreichend, es müssen noch weitere Eigenschaften bewertet werden. Die Tabelle 5 listet alle möglichen Aufrufe einzeln auf, sortiert sie in die zwei Kategorien ein und bewertet deren Charakteristika. Dazu zählen, ob ein Aufruf zeitkritisch ist, ob er wichtig für das BIS oder moBIS ist, wie hoch die Änderungs- beziehungsweise Aufrufrate ist und ob der Aufruf zu einer Rückfrage führen kann. Die Spalte Zeitkritisch ist gesetzt, wenn der Aufruf sofort nach Ausführung an den Server übermittelt werden muss und nicht später gesendet werden darf. Dies ist bei Aufrufen der Fall, die eine Suchfunktion erfüllen. Hier würde es keinen Sinn machen, wenn das Ergebnis erst später bei dem Suchenden eintrifft. Das ist ähnlich wie bei einer Suchmaschine für das Internet, hier soll das Suchergebnis auch möglichst schnell vorliegen. Auch wenn der Aufruf zu wichtigen Statusänderungen im BIS führt, die sofort bekannt gegeben werden müssen, um ein effizientes Arbeiten nicht zu gefährden, ist der Aufruf zeitkritisch. Solche Aufrufe eignen sich demnach nicht für die Portierung auf den mobilen Client. Ist die Spalte muss BIS gesetzt, nimmt der Aufruf Änderungen an den Daten im BIS vor. Aus diesem Grund muss der Aufruf an den Server übermittelt werden, um dort ausgeführt zu werden. Die Ausführung nur der lokalen Logik hat keinen Einfluss auf die Daten im BIS. Die Spalte gibt aber keine Auskunft über den Übermittlungszeitpunkt des Aufrufs. Aufrufe dieser Art müssen, sofern sie nicht sofort gesendet werden können, zu einem späteren Zeitpunkt übertragen werden. 43 5 Skizzierung der Lösung Gegenteilig in der Bedeutung ist ein Eintrag in der Spalte muss moBIS. Dieser gibt an, dass der Aufruf für die Weiterarbeit der mobilen Anwendung wichtig ist, aber keine Auswirkung auf das BIS hat. Das Holen von Daten, die für die eigentliche Aufgabenerfüllung wichtig sind, ist ein typisches Beispiel. Ohne diese Daten kann der Nutzer der mobilen Anwendung nicht arbeiten, weil er nicht weiß, was er zu tun hat. Hingegen ist es für das BIS-System unwichtig, wer auf welche Daten lesend zugreift. Damit ist die Spalte muss moBIS ein guter Indikator für die Wichtigkeit der Daten und dafür, ob diese im OfflineFall verfügbar sein müssen oder nicht. Ein weiterer wichtiger Indikator ist die Änderungsrate der zugrunde liegenden Daten. Einige Daten ändern sich im Durchschnitt minütlich, andere hingegen täglich und manche nie. Daten, die sich nur sehr selten bis gar nicht ändern sind eher in dem Bereich Stammdaten anzusiedeln, da diese nicht der regelmäßigen Synchronisation unterliegen. Für Aufrufe der zweiten Kategorie gibt die Spalte Änderungsrate an, wie häufig dieser Aufruf im Durchschnitt genutzt wird und sich damit die zugrunde liegenden Daten ändern. Die Häufigkeit der Nutzung ist ein Indiz für deren Wichtigkeit. Wichtige Funktionen sollten nach Möglichkeit auch im Offline-Fall zur Verfügung stehen und damit auf den mobilen Client portiert werden. Für Aufrufe der zweiten Kategorie kann zusätzlich noch die Spalte Rückfrage gesetzt sein. Diese Aufrufe können bei Problemen oder Unklarheiten den Aufrufenden fragen, wie das Problem gelöst werden soll, anstatt den Aufruf gleich abzulehnen. Tendenziell sind Aufrufe dieser Art für eine Offline-Tätigkeit eher ungeeignet, da sonst, wenn der Aufruf erst später an den Server gesendet werden kann, Rückfragen zu Abläufen gestellt werden können, die der Anwender schon durchgeführt hat. 44 Aufruf Kategorie 1 2 3 4 5 6 RA-Liste holen RA-Positionen holen Gleise im Bereich Wagen auf Gleis-Nr. Wagensuche Wagendaten 1 1 1 1 1 1 7 Wagendaten Gleis 1 8 9 10 11 Eingangszüge holen Wagen zu einem EZ Einsatzbereite Loks Nutzernamen 1 1 1 1 12 13 Gleisliste Wartegründe 1 1 14 Gutartenliste 1 15 Dienststelle EZ 1 16 Dienststellengleise 1 Zeitkritisch muss BIS muss moBIS √ √ √ √ √ √ √ Änderungsrate ••• •• ◦ ••• •• •• •• √ √ √ √ • • • ◦ √ ◦ √ √ √ Rückfrage Bemerkung Alle Wagen zu einem RA Sucht aufgrund best. Kriterien Ermittelt Details zu einem Wagen Details zu allen Wagen auf dem Gleis Ermittelt alle Eingangszüge Alle Wagen eines Eingangszug Ermittelt alle Loks, die frei sind Aller Nutzer, die sich anmelden dürfen Liste aller verfügbaren Gleise Vordefinierte Phrasen für Begründungen Enthält Übersetzung von Kode → Text Dienststellen, in deren Bereich Eingangszüge einfahren können Zu einer Dienststelle zugeordnete Gleise Fortsetzung nächste Seite 5 Skizzierung der Lösung Nr. 45 46 Nr. Aufruf Kategorie Umsetzen angest. Wagen RAs zusammenfassen 2 2 19 Wagenreihung ändern 2 20 Wagenreihung drehen 2 21 Zielgleis ändern 2 22 Wagen entfernen 2 23 Wagen hinzufügen 2 24 25 26 27 Beginnen RA Erledigen RA Teilerledigen RA Löschen RA 2 2 2 2 28 RA unterbrechen 2 muss BIS √ √ √ √ √ √ √ √ √ √ √ /√ /√ /√ /- √ √ √ √ √ √ /- muss moBIS Änderungsrate • • Rückfrage √ • • • √ • • •• •• •• • • √ √ Bemerkung Zwei Rangieraufträge zusammenfassen Status des RA muss 6= „Transport“ sein Status des RA muss 6= „Transport“ sein Ändert Zielgleis eines Wagen im RA, Status des RA muss 6= „Transport“ sein Entfernt eine Wagen aus einem RA, Status des RA muss 6= „Transport“ sein RA wird ein Wagen hinzugefügt, Status des RA muss 6= „Transport“ sein Status auf „Transport“ Beendet Rangierauftrag Einzelne Wagen beenden Status des RA muss 6= „Transport“ sein Status des RA muss „Transport“ sein Fortsetzung nächste Seite 5 Skizzierung der Lösung 17 18 Zeitkritisch √ √ Kategorie Aufruf 29 30 31 RA bilden Eingangszug teilen EZ umsetzen 2 2 2 32 Eingangszug geprüft 2 33 Eingangszug zerlegt 2 34 35 36 Ankunftsmeldung erfassen Sonderzug erfassen Wagenreihung Sonderzug 2 2 2 Zeitkritisch √ /√ muss BIS √ √ √ √ √ √ √ √ √ muss moBIS Änderungsrate • • • •• •• •• • • Rückfrage √ √ Bemerkung Bildet neuen Rangierauftrag Teilt einen Eingangszug Korrigiert das Standortgleis eines Eingangszug Status des Eingangszug auf „geprüft“ Status des Eingangszug auf „zerlegt“ Erfassen der Wagen eines Sonderzugs Tabelle 5: Einordnung der Funktionen des Webservice für den mobilen Client ◦. . . sehr niedrige Änderungsrate, nur selten genutzt •. . . niedrige Änderungsrate, kaum genutzt ••. . . mittlere Änderungsrate, hin und wieder genutzt (stündlich) • • •. . . hohe Änderungsrate, oft genutzt (minütlich) √ . . . Ja, Rückfrage möglich √ /-. . . Je nach Bereich und Kunde ja oder nein RA. . . Rangierauftrag EZ. . . Eingangszug 5 Skizzierung der Lösung Nr. 47 5 Skizzierung der Lösung 5.2.2 Auswertung der Analyse Viele Aufrufe der ersten Kategorie sind wichtig für die Arbeit des mobilen Clients (siehe Spalte muss moBIS ) und unterscheiden sich nur in der Änderungsrate. Bei den Aufrufen 3 und 11 bis 16 liegt diese bei Null bis sehr klein. Das heißt, dass man diese Daten dauerhaft auf dem Gerät verfügbar machen kann, ohne sich um die Synchronisation zu sorgen. Dies ist bei dem derzeit vorliegenden moBIS auch der Fall und in Kapitel 2.1 als Stammdaten bezeichnet worden. Die Daten der restlichen Aufrufe sollten in die lokale Datenhaltung aufgenommen und regelmäßig synchronisiert werden. Sinnvollerweise holen diese Aufrufe deswegen nicht mehr direkt die Daten ab, sondern stoßen stattdessen die Synchronisation an. Diese Aufrufe werden zukünftig als Daten-Offline-Aufruf bezeichnet. Ausnahmen bilden die Aufrufe 5-7. Diese besitzen eher einen SuchCharakter und müssen demnach sofort ausgeführt werden. Aus diesem Grund ist eine Aufnahme in die lokale Datenhaltung wenig sinnvoll, sie gehören demnach der Kategorie Daten-Online-Aufruf an. Die Aufrufe der zweiten Kategorie müssen etwas genauer untersucht werden. Generell gilt jedoch für alle, dass jeder Aufruf im BIS ausgeführt werden muss, somit eine alleinige Ausführung auf dem mobilen Gerät nicht ausreicht. Große Unterschiede gibt es jedoch in der Spalte Zeitkritisch. Die Aufrufe 17 bis 23, 31 und 35 müssen auf jeden Fall sofort ausgeführt werden. Das heißt, diese Aufrufe brauchen nicht in die lokale Geschäftslogik mit aufgenommen werden, da eine Einreihung in die Warteschlange, und damit ein späteres senden, nicht möglich ist. Im weiteren Verlauf werden diese Aufrufe mit Änderung-Online bezeichnet. Gegensätzliche Eigenschaften besitzen die Aufrufe 19, 20, 32 bis 34 und 36. Hier ist es auch möglich, dass der Aufruf erst auf dem Client simuliert und zu einem späteren Zeitpunkt an den Server übermittelt wird. Ob diese jedoch im vollen Umfang portiert werden oder nur einzelne von ihnen, hängt von dem Portierungsaufwand und der Aufrufhäufigkeit ab. Gemäß des Bennenungsschematas erhalten sie den Namen Änderung-Offline. Interessant sind die noch nicht näher betrachteten Aufrufe. Hier hängt es von dem speziellen Einsatzgebiet ab, ob nur Änderung-Online möglich ist oder auch eine Offline-Ausführung. Erfolgt so ein Aufruf in einem sehr zeitkritischen Bereich, muss dieser sofort erfolgen. In anderen Bereich hingegen ist es nicht so wichtig, ob ein Aufruf minutengenau oder erst eine halbe Stunden später im System eintrifft. Deswegen muss im Offline-Fall der Nutzer entscheiden, wie mit diesem Aufruf zu verfahren ist. Demnach werden sie auch mit Änderung-NutzerEntscheidung bezeichnet. Zusammengefasst hat die Analyse fünf unterschiedliche Arten von Aufrufen ergeben, die nochmals kurz aufgelistet werden: • Daten-Online: Aufruf ist sofort auszuführen, keine Statusänderungen im BIS 48 6 Die Lösung • Daten-Offline: Aufruf kann später ausgeführt werden, startet die Synchronisation, keine Statusänderungen im BIS • Änderung-Online: Aufruf ist sofort auszuführen, Statusänderungen im BIS • Änderung-Offline: Aufruf kann später ausgeführt werden, Simulation durch die lokale Geschäftslogik, Statusänderungen im BIS • Änderung-Nutzer-Entscheidung: Der Nutzer muss entscheiden, ob Änderung-Online oder Änderung-Offline 6 Die Lösung Dieser Abschnitt beschreibt die konkrete Umsetzung der in Kapitel 5 dargelegten Lösungen unter Berücksichtigung der dort gestellten Anforderungen. Daneben müssen noch die allgemeinen Anforderungen berücksichtig werden. Die Lösung muss möglichst flexibel und wartbar sein, um sie leicht an die verschiedenen Kundenwünsche anpassen zu können. Zudem muss sie möglichst unabhängig von der Umgebung, in der sie eingesetzt wird, sein. Die Schnittstellen müssen klar definiert und die einzelnen Komponenten der Lösung möglichst unabhängig voneinander sein. Dabei soll die mobile Anwendung in ihrer jetzigen Form weitgehend erhalten bleiben, um den Realisierungsaufwand nicht noch weiter zu erhöhen. Das Ergebnis soll ein Anwendung sein, die auch offline nutzbar ist. 6.1 Die Entwicklungsumgebung Bei den mobilen Endgeräten handelt es sich um recadized PDAs von Symbol. Gewöhnlich kommen nicht mehr als zehn bis 15 Geräte pro Kunde parallel zum Einsatz, so dass die Implementierung den Aspekt der Skalierbarkeit erst einmal außen vor lassen kann. Das Client-Betriebssystem ist Windows Mobile 5.0. Die Client-Anwendung ist in C# mit Visual Studio 2005 und dem OpenNet Compact Framework (weiter)entwickelt worden. Auf der Server-Seite ist der Webservice in Java 5.0 geschrieben. Ausgeführt wird dieser in Apache Tomcat. Als Entwicklungsplattform dient hier Eclipse. Auf dem mobilen Endgerät kommt die SQL CE-Datenbank von Microsoft zum Einsatz. Auf der Server-Seite sind entweder Oracle- oder IngresSysteme vorhanden. 6.2 Die Implementierung Gemäß Kapitel 4.1.2 ist die neue Funktionalität für die Offline-Fähigkeit in einem extra Modul enthalten, auf das die bisherige Anwendung aufsetzt. Ein Agent übernimmt die Auswertung der Aufrufe gemäß Kapitel 5.2.2 und handelt dementsprechend. Dadurch sind die alte Anwendung und die Erweiterung klar voneinander getrennt und die bisherige Anwendung muss kaum geändert werden. 49 6 Die Lösung Serverseitig müssen die vorhandenen Webservices um das Konfliktmanagement erweitert und Funktionen für die Synchronisation realisiert werden. Damit ergibt sich die Architektur, wie sie in Abbildung 10 und 11 dargestellt ist. Abbildung 10: Die einzelnen Schichten der Client-Seite (die blauen Schichten sind neu) Abbildung 11: Die einzelnen Schichten der Server-Seite (die blauen Schichten sind neu, die beiden Datenbanken sind nur aus Visualisierungsgründen voneinander getrennt) Der Agent ist das Kernstück der Erweiterung auf der Client-Seite. Dieser nimmt alle Aufrufe des Anwenders entgegen und handelt entsprechend ihrer Eigenschaften. Unterstützt wird dieser durch die Warteschlange und die lokale BIS-Logik. Die Synchronisation wird benötigt, um den Datenbestand auf dem Client aktuell zu halten. Neben dieser Erweiterung auf dem Server gibt es noch das Konfliktmanagement. Dieses ist nötig, um Probleme zu beheben, die durch das zeitlich versetzte Senden von Aufrufen an den Server entstehen können. 6.2.1 Die Organisation des Clients Um die Implementierung so einfach wie möglich zu machen, sind die einzelnen Aufrufe nochmals näher analysiert worden. Dies hat ergeben, dass es keinen Aufruf gibt, der im Bereich der Eingangszugbehandlung und des Rangierens gleichermaßen zum Einsatz kommt. Folglich unterscheiden sich auch die zugrunde liegenden Daten dieser beiden Bereiche. Des Weiteren ist es so, dass viele Aufrufe 50 6 Die Lösung aus einem Bereich immer das gleiche Ergebnis liefern. Im Bereich des Rangierens sind dies entweder eine Liste aus aktuellen Rangieraufträgen oder eine Liste mit Positionen eines Rangierauftrags. Im Bereich der Eingangszugbehandlung wird hingen eine Liste von Zügen oder die Wagenliste eines bestimmten Zugs benötigt. Das heißt aber auch, dass es für die lokale Geschäftslogik in den meisten Fällen ausreicht, wenn lediglich diese angesprochenen Daten auf dem mobilen Client verfügbar gemacht werden. Des Weiteren ist es so, dass die Lokrangierführer nur sehr selten bis gar nicht den Arbeitsbereich während einer Dienstschicht wechseln. Zudem ist es so, dass (fast) immer beide Teile der Daten aus einem Bereich benötigt werden. Nur sehr selten wird die Liste der Rangieraufträge ohne die Liste der Positionen gebraucht. Diese Überlegungen führen zu der Einführung sogenannter Prozessmodelle (PM). Ein Prozessmodell beschreibt einen kompletten Bereich bestehend aus den drei Teilen: • Daten • Webservice-Aufrufe • Lokale Geschäftslogik Der Begriff Daten beschreibt die Datenstrukturen, die zu einem bestimmten Prozessmodell gehören und auch lokal vorgehalten werden müssen, damit die Offline-Fähigkeit gewährleistet ist. Die Webservice-Aufrufe umfassen alle Aufrufe, die zu einem Prozessmodell gehören und auf den beschriebenen Datenstrukturen arbeiten. Die lokale Geschäftslogik dient der Simulation eines Aufrufs. Sind alle Bestandteile eines bestimmten Prozessmodells vorhanden, so ist die zugehörige Anwendung in der Lage auch im Offline-Fall die darin beschriebenen Funktionen zu gewährleisten. Zunächst reichen zwei Prozessmodelle aus, um ein Arbeiten im verbindungslosen Fall zu gewährleisten. Dies sind die Prozessmodelle Rangieren und Eingangszugbehandlung. Neben denen in einem Prozessmodell erfassten Funktionen gibt es noch weitere, die mit anderen Datenstrukturen als denen im Prozessmodell beschriebenen arbeiten. Hierbei handelt es sich jedoch durchweg um Aufrufe, die lediglich der Informationsbeschaffung dienen und nur online ausgeführt sinnvoll sind (DatenOnline). Aus diesem Grund muss für diese Aufrufe auch keine lokale Datenhaltung vorhanden sein. Durch die Schaffung der Prozessmodelle wird die Datenverwaltung vereinfacht. Wie eingangs schon erwähnt werden in der Regel alle Datenstrukturen eines Prozessmodells benötigt. Aus diesem Grund werden nicht die einzelne Teile der Datenstrukturen synchronisiert, sondern immer das gesamte Prozessmodell, in dem der Nutzer gerade arbeitet. Im Normalfall wechselt der Lokrangierführer nicht nur selten seinen Arbeitsbereich, sondern auch die Lok, die er nutzt oder die Betriebsstelle, deren Eingangs51 6 Die Lösung züge er behandelt. Je nach Arbeitsbereich reduziert das die zu synchronisierende Datenmenge auf alle Daten im Zusammenhang mit einer bestimmten Lok oder Betriebsstelle. 6.2.2 Der Agent Der Agent ist die zentrale Komponente der Erweiterung und für das Anstoßen der Synchronisation und der korrekten Verarbeitung der einzelnen Aufrufe gemäß ihren Eigenschaften verantwortlich. Jeder Aufruf der mobilen Anwendung wird an den Agenten weitergeleitet und dort entsprechend verarbeitet. Die Eigenschaften eines Aufrufs definiert der AufrufManager. Dieser kennt alle möglichen Aufrufe und legt für jeden das zugehörige Prozessmodell, die Namen der Parameter und sofern vorhanden, die entsprechende Funktion in der lokalen Geschäftslogik fest. Damit der Agent arbeiten kann, benötigt er noch ein paar Hilfsklassen. Der OnlineManager stellt fest, ob das Gerät gerade über eine Verbindung verfügt oder nicht und kann das Leeren der Warteschlange anstoßen (Kapitel 6.2.3). Die WSSchnittstelle ist die Schnittstelle zum Netzwerk und bietet Funktionen zum Senden und Empfangen von Nachrichten an. Der AgentSpeicher wird für die Zwischenspeicherung von Ergebnissen genutzt, um diese zu einem späteren Zeitpunkt zur Verfügung zu stellen. Die grobe Arbeitsweise sieht wie folgt aus: • Daten-Online: Senden des Aufrufs wenn online, sonst Offline-Fehler • Daten-Offline: Synchronisation des entsprechenden Prozessmodells wenn online, sonst Offline-Status melden • Änderung-Online: Senden des Aufrufs, anschließend Synchronisation des Prozessmodells wenn online, sonst Offline-Fehler • Änderung-Offline: wie Änderung-Online wenn online, sonst Ausführung lokale Geschäftslogik, Aufruf einreihen, Offline-Status melden • Änderung-Nutzer-Entscheidung: je nach Entscheidung Änderung-Online oder Änderung-Offline Detailliert stellt das Sequenzdiagramm in Abbildung 12 und das Flussdiagramm in Abbildung 13 die Verarbeitung in dem Agenten dar. Aus Gründen der Vereinfachung fehlt auch in diesen Diagrammen die Aufforderung zum Leeren der Warteschlange. Dies geschieht gemäß Beschreibung in Kapitel 6.2.3 immer vor der Verarbeitung des eigentlichen Aufrufs. Erst nach einer erfolgreichen Leerung beginnt der Agent mit der Verarbeitung des Aufrufs. Der Agent selbst gibt keine Daten an den Aufrufenden (die DialogHandler, siehe Abbildung 10) zurück, sondern nur Status-Kodes. Daraufhin kann dieser 52 6 Die Lösung 53 Abbildung 12: Sequenzdiagramm, welches den Ablauf im Agenten darstellt 6 Die Lösung Abbildung 13: Flussdiagramm, dass die Verarbeitung eines Aufrufs im Agenten darstellt 54 6 Die Lösung entscheiden, ob die Oberfläche neue Daten anzeigen soll. Das Szenario zum Holen einer Rangierauftragsliste kann so ablaufen: 1. Nutzer löst Aktion zum Holen der RA-Liste aus 2. DialogHandler informiert Agenten 3. OnlineManager meldet, dass das Gerät verbunden ist 4. AufrufManager teilt mit, dass es ein Daten-Offline-Aufruf ist 5. Agent führt die Synchronisation für das Prozessmodell „Rangieren“ aus 6. Agent informiert DialogHandler über die erfolgreiche Ausführung 7. DialogHandler entnimmt die aktuellen Rangieraufträge der lokalen Datenhaltung und übergibt sie der Oberfläche Über den Status-Kode weis der DialogHandler auch, ob der Aufruf offline oder online ausgeführt worden ist. Da bei einer Offline-Ausführung immer die Gefahr durch veraltete Daten besteht, wird der Anwender durch eine gelbe Hintergrundfarbe über einen offline ausgeführten Aufruf informiert. Die Ergebnisse der Daten-Online-Aufrufe werden nicht wie bei der Synchronisation in die lokale Datenbank geschrieben, sondern im Hauptspeicher gehalten und vom AgentSpeicher verwaltet. Diese Daten sind nur für den Augenblick des Aufrufs interessant und müssen deswegen nicht persistent sein. Das erhöht die Zugriffsgeschwindigkeit auf diese Daten, da auf den Hauptspeicher schneller zugegriffen werden kann als auf die Datenbank. Der Agent ist in seinem Verhalten konfigurierbar (siehe Listing 5). Es kann festgelegt werden, ob bei jedem Daten-Online-Aufruf und/oder nach jedem Änderung-Online-Aufruf die Synchronisation ausgeführt werden soll. Im Zusammenhang mit der automatischen Synchronisation können so die in Kapitel 5.1.3 und 5.1.4 vorgeschlagenen Optimierungen umgesetzt werden. 6.2.3 Die Warteschlange Die Warteschlange nimmt die Aufrufe auf, die zurzeit nicht an den Server gesendet werden können oder sollen. Dies sind zum einen die Empfangsbestätigung der Synchronisation, alle Offline-Aufrufe, sowie Aufrufe, die aufgrund einer Nutzerentscheidung offline ausgeführt werden dürfen. Bei dem Hinzufügen eines Aufrufs zu der Warteschlange merkt sich diese den Aufruf, dessen Parameter und zusätzlich noch den Zeitpunkt. Über den Zeitpunkt wird beim Auslesen sichergestellt, dass die Reihenfolge der Aufrufe erhalten bleibt, sofern die Uhr des mobilen Geräts immer richtig arbeitet. Zusätzlich wird neben den eigentlichen Parametern noch der Original-Zeitpunkt des Aufrufs an den Server gesendet, um ihn beispielsweise für die Protokollierung nutzen zu können. 55 6 Die Lösung Daneben enthält jeder Aufruf in der Warteschlange noch eine Priorität. Diese wird genutzt, um eine etwaig einzureihende Synchronisations-Bestätigung hoch zu priorisieren, damit sichergestellt ist, dass diese auf jeden Fall als erste aus der Warteschlange entnommen wird. Dies ist wichtig für die korrekte Arbeitsweise der Synchronisation und des Konfliktmanagements. Die Warteschlange selbst wird in einer Datenbank verwaltet, um zu gewährleisten, dass ihr Inhalt auch nach einem Neustart der Anwendung noch zur Verfügung steht. Die Leerung der Warteschlange erfolgt immer automatisch vor jedem Absetzen eines Aufrufs an den Webservice und wird durch den Agenten angestoßen. So ist sichergestellt, dass die zeitlich zuvor erfolgten, eingereihten Aufrufe vor dem neuen Aufruf an den Server gesendet werden. Kommt es während der Leerung zu einem Problem wird diese und der auslösende Aufruf abgebrochen. Abbildung 14: Sequenzdiagramm über das Leeren der Warteschlange mit einem Element Wie aus dem Sequenzdiagramm in Abbildung 14 ersichtlich ist, kann das Leeren auch noch vom OnlineManager (siehe Kapitel 6.2.2) angestoßen werden. Dies ist immer dann der Fall, wenn sich der Verbindungsstatus des Geräts von Offline in Online ändert. So wird versucht, die Warteschlange immer möglichst leer zu halten, um sofort abzusetzende Aufrufe nicht durch eine vorherige Leerung der Warteschlange zu verzögern. Problematisch sind Aufrufe, die aufgrund eines Konflikts nicht ausgeführt werden können. Momentan existiert kein Mechanismus, den Anwender über mögliche Fehler zu informieren. Dass bedeutet, wenn ein Aufruf nicht ausgeführt werden kann, wird dieser nie aus der Warteschlange entfernt und es kann kein weiterer Aufruf an den Server gesendet werden. Damit befindet sich die Anwendung in einem Deadlock. Deshalb dürfen in die Warteschlange nur Aufrufe 56 6 Die Lösung eingereiht werden, die unproblematisch in ihrer Ausführung sind. Über den Zustand der Warteschlange kann sich der Anwender jederzeit über eine entsprechende Anzeige informieren. 6.2.4 Die lokale Datenhaltung Der Umfang der lokalen Daten auf den mobilen Geräten wird durch die Prozessmodelle bestimmt (siehe Kapitel 6.2.1). Die Speicherung der Daten erfolgt in einer Datenbank, womit ein leichter Zugriff auf sie gewährleistet ist. Daneben ergibt sich noch der Vorteil, dass die Daten auch nach einem Neustart des Geräts, beispielsweise wegen eines Batteriewechsels, verfügbar sind und im möglichen Offline-Fall eine Weiterarbeit möglich ist. 6.2.5 Die lokale Geschäftslogik/BIS-Logik Gemäß der Auswertung (siehe Kapitel 5.2.2) muss es für jeden Änderung-OfflineAufruf eine Funktion geben, die die Geschäftslogik simuliert. Zu Demonstrationszwecken sind bisher nur die wichtigsten Funktionen aus dem Rangierbereich umgesetzt worden. Die Funktionen arbeiten mit den Daten der Prozessmodelle und manipulieren diese im vollen Umfang, wie es auch die Server-BIS-Logik tun würde. Sofern ausreichend Daten auf den mobilen Geräten zur Verfügung stehen, werden auch die entsprechenden Prüfungen durchgeführt. Im Allgemeinen sind diese aber längst nicht so umfangreich wie die auf dem Server. Aufgrund der geringen Anzahl an Daten auf den mobilen Geräten ist die Implementierung der lokalen Logik relativ einfach. Meist besteht sie nur aus eins bis zwei Operationen und ist damit kaum fehleranfällig und leicht wartbar. 6.2.6 Die Synchronisation Die Synchronisation ist ein wichtiger Bestandteil der Erweiterung und soll die lokalen Daten auf den mobilen Geräten möglichst aktuell halten. Wie in Kapitel 4.2 schon angedeutet ist die Synchronisation selbst entwickelt worden – unter der Prämisse, klar definierte Schnittstellen bereitzustellen. Das erlaubt es, die verwendeten Algorithmen in zukünftigen Versionen ohne Probleme gegen andere auszutauschen. In Kapitel 3.1 sind bereits schon einige Verfahren zur Synchronisation diskutiert und in Kapitel 5.1.5 die Anforderungen (undirektional, Server-priorisiert) festgelegt worden. Die Änderungsanweisungen sollen nach Kapitel 5.1.6 mittels lückenhafter homogener Wertetabellen übermittelt werden. Um den Aufwand für diese Arbeit in einem angemessenen Rahmen zu halten ist ein relativ einfaches Verfahren zur Bildung der Differenz implementiert worden. 57 6 Die Lösung Die Berechnung erfolgt nach dem Algorithmus 2. Sie beruht auf dem direkten Vergleich zweier Datenquellen, indem pro zu vergleichende Tabellen jeweils die korrespondierenden Tabellen zeilen- und spaltenweise miteinander verglichen und so die Unterschiede ermittelt werden. /* Durchlaufe alle zu synchronisierende Tabellen mit den aktuellen Server-Daten */ für alle tab in Synctabellen-Server tue /* Jede Zeile in der Tabelle durchlaufen */ für jedes Zeile zl in tab tue /* Jede Spalte(Zelle) in der Zeile durchlaufen */ für jedes Zelle ze in zl tue /* Aktuelle Zelle mit der korrespondierenden Zelle im Datenabbild des Clients (ermittelt über den Schlüssel von ze plus IMEI) vergleichen */ wenn ze ungleich Clientzelle dann wenn Clientzelle nicht existiert dann MerkeNeueZelle(ze); sonst MerkeZuÄnderndeZelle(ze); Ende MarkiereGeprüfteZeileInClientAbbild(zl ); Ende /* Alle Zeilen, die nicht markiert sind, müssen auf dem Client gelöscht werden */ für jedes Zeile zl in GibAlleNichtMarkiertenClAbbZeilen() tue MerkeZuLöschendeZeile(zl ); Ende Ende Ausgabe : GibNeueZes(), GibGeänderteZes(), GibGelöschteZls() Algorithmus 2 : Bildet die Differenz zwischen den Client- und den Server-Daten Damit die Berechnung ohne zusätzlichen Kommunikationsaufwand vollzogen werden kann, besitzt der Server von jedem mobilen Gerät ein Datenabbild, welches eine 1:1-Kopie der lokalen Daten der mobilen Geräte ist. Dadurch beschränkt sich der Nachrichtenaufwand nur noch auf das Anstoßen der Synchronisation und die Rückgabe der geänderten Daten. Nachrichten über Datenzustände müssen nicht ausgetauscht werden. Daneben profitiert auch noch das Konfliktmanagement davon, siehe Kapitel 6.2.7. 58 6 Die Lösung Das relativ schlechte Laufzeitverhalten des Algorithmus von n X O( i=1 mi × oi ) mit n = Anzahl der Tabellen (in jetzigen PMs n = 2), m = Anzahl Spalten der Tabelle i und i o = Anzahl Zeilen der Tabelle i i durch die doppelte Schleife wirkt sich bei den zu synchronisierenden Datenmengen von maximal 200 Datensätzen noch nicht negativ aus.16 Damit der Vergleich korrekt durchgeführt werden kann, müssen die einzelnen Datensätze auf Client- wie auf Server-Seite eindeutig identifiziert werden. In der jetzigen Realisierung gibt es keine Abstraktion der Schlüssel. Auf beiden Seiten wird der gleiche Schlüssel verwendet, der auch dem Datenbankschlüssel entspricht. Allerdings können auf dem Server mehrere gleiche Datensätze in den Tabellen der Speicherabbilder der Clients vorhanden sein, da die Daten aller Clients in einer Tabelle pro Client-Tabelle auf dem Server gehalten werden. Deswegen ist der Schlüssel für den serverseitigen Zugriff auf die Client-Daten zusätzlich mit der eindeutigen Identifikationsnummer des jeweiligen Clients (IMEI) erweitert worden. Datensatz d = Clientdaten(Schlüssel s) = Serverdaten(s + Client-Identifikation id) Wie in Kapitel 5.1.6 bemerkt worden ist, kann bei eine lückenhaften homogenen Tabelle per se nicht erkannt werden, ob die Lücke bedeutet, dass sich dieser entsprechende Eintrag nicht geändert hat oder ob er gelöscht worden ist. Aus diesem Grund werden die zu löschende Einträge durch eine spezielle Sequenz markiert, die den Client bei der Übernahme der Synchronisationsdaten veranlasst, den entsprechenden Eintrag bei sich zu löschen. Gemäß dem Motto, die Verarbeitung der Synchronisationsdaten für den Client so einfach wie möglich zu machen, wird zu jeder Tabelle mit Änderungsanweisungen zusätzlich noch ein Datensatz übermittelt. Dieser beinhaltet Informationen darüber, ob die zugehörige Tabelle komplett ist, das heißt, ob diese alle Spalten und Zeilen enthält, wie es beispielsweise bei einem SlowSync der Fall ist. Dann kann der Client ohne zusätzliche Verarbeitung einfach die komplette Tabelle übernehmen. Um das Nachrichtenvolumen zu minimieren können die Synchronisationstabellen zusätzlich noch eine Lösch-Spalte enthalten, die immer dann gesetzt ist, wenn der komplette Datensatz auf dem Client gelöscht werden soll. Dadurch muss nicht n-mal (bei n Spalten im Datensatz) die spezielle Lösch-Sequenz übermittelt werden, sondern nur ein Eintrag in der Lösch-Spalte. Listing 1 und 2 zeigen einen Auszug aus den Nachrichten, die während der Synchronisation zwischen dem Client und dem Server ausgetauscht werden. In der ersten Nachricht (Listing 1) fordert der Client den Server zur Synchronisation auf, woraufhin der Server die Änderungsinformationen zurücksendet (Listing 2). 16 Auch bei Testläufen mit mehreren tausend Datensätzen blieb die Berechnungszeit noch unter 1 Sekunde. 59 6 Die Lösung <?xml version=" 1 . 0 " e n c o d i n g=" us−a s c i i " ?> <r p C a l l kn=" de . csc_dd . RPCBibliothekMobil2 . R p c O b j e k t e _ S y n c h r o n i s a t i o n . Rpc_mSynchronisation " mn=" r p c _ s y n c B e r e i c h " typ=" c n t "> <c f g s i d="AD2F7F81E9E0FC6F5607EC92CA742672" c o n f i g=" neuss_entw2 " us=" " ho=" mobil " /> <ds> <s n=" p B e r e i c h " w=" R a n g i e r e n " /> <s n="pMandant" w="NE−BIS" /> <s n=" pImei " w=" 50006 F0063006B0065007400500043000000 −00" /> <b n=" pSlowSync " w=" F a l s e " /> <s n="pLok" w=" 01 " /> </ ds> </ r p C a l l> Listing 1: XML-kodierte Nachricht an den Webservice zum Starten der Synchronisation für die Lok „01“ <?xml version= ’ 1 . 0 ’ e n c o d i n g= ’UTF−8 ’ ?> <CscRPCResult kn=" de . csc_dd . RPCBibliothekMobil2 . R p c O b j e k t e _ S y n c h r o n i s a t i o n . Rpc_mSynchronisation " mn=" r p c _ s y n c B e r e i c h "> <c o n t> <d e s c s l=" 3 "> <c d s c i=" 0 " l=" 6 "> <sp n=" abrechnung_nr " t=" s " /> <sp n=" g e s a m t a n z a h l " t=" s " /> <sp n=" ra_nr " t=" s " /> <sp n="datum_ra" t="d" /> <sp n=" p o s i t i o n " t=" s " /> <sp n=" g l e i s _ n r _ s t a n d o r t " t=" s " /> </ c d s c> <c d s c i=" 1 " l=" 1 "> <sp n=" k o m p l e t t " t="b" /> </ c d s c> <c d s c i=" 2 " l=" 3 "> <sp n="datum_ra" t="d" /> <sp n=" ra_nr " t=" s " /> <sp n=" s t a t u s " t=" s " /> </ c d s c> </ d e s c s> < c l s t l=" 4 "> <ctbh l=" 19 " n=" RA_PosListe "> <c d s i=" 0 " l=" 6 "> <sw w=" 000000128436 " /> <sw w=" 55 " /> <sw w="R0031" /> <sw w=" 0 8 . 0 1 . 2 0 0 7 0 0 : 0 0 : 0 0 " /> <sw w=" 52 " /> <sw/> </ c d s> 60 6 Die Lösung <c d s i=" 0 " l=" 6 "> <sw w=" 000000125267 " /> <sw w=" )&( " /> <sw w="R0032" /> <sw w=" 0 8 . 0 1 . 2 0 0 7 0 0 : 0 0 : 0 0 " /> <sw w=" )&( " /> <sw w=" )&( " /> </ c d s> ... </ ctbh> <c d s i=" 1 " l=" 1 " n=" RA_PosListeKomplett "> <sw w=" f a l s e " /> </ c d s> <ctbh l=" 1 " n="RA_RaListe"> <c d s i=" 2 " l=" 3 "> <sw w=" 0 8 . 0 1 . 2 0 0 7 0 0 : 0 0 : 0 0 " /> <sw w="R0032" /> <sw w=" T r a n s p o r t " /> </ c d s> </ ctbh> <c d s i=" 1 " l=" 1 " n=" RA_RaListeKomplett "> <sw w=" f a l s e " /> </ c d s> </ c l s t> </ c o n t> </ CscRPCResult> Listing 2: XML-kodierte Antwort des Servers mit Änderungsanweisungen für den Client Da die Ermittlung der Differenz ohne Einbeziehung des Clients stattfindet, muss gewährleistet sein, dass das Client-Abbild auf dem Server immer den korrekten Zustand des jeweiligen Clients widerspiegelt. Aus diesem Grund nutzt die Synchronisation das 2-Phasen-Commit-Protokoll zur Absicherung der Kommunikation. Die erste Phase besteht aus dem Austausch der Synchronisationsinformationen. Den korrekten Empfang und die fehlerfreie Einpflegung dieser Daten muss der Client in der zweiten Phase des Protokolls bestätigen (ClientBestätigung Listing 3, Server-Antwort Listing 4). Erst dann übernimmt auch der Server die Änderungen in sein Client-Abbild. <?xml version=" 1 . 0 " e n c o d i n g=" us−a s c i i " ?> <r p C a l l kn=" de . csc_dd . RPCBibliothekMobil2 . R p c O b j e k t e _ S y n c h r o n i s a t i o n . Rpc_mSynchronisation " mn=" r p c _ s y n c B e s t a e t i g e n " typ=" r c "> <c f g s i d="F4CE76DF4E00C5520CF1239BF6C7E31D" c o n f i g=" neuss_entw2 " us=" " ho=" mobil " /> <ds> <s n="pMandant" w="NE−BIS" /> <s n=" pImei " w=" 50006 F0063006B0065007400500043000000 −00" /> <s n=" p B e r e i c h " w=" R a n g i e r e n " /> 61 6 Die Lösung </ ds> </ r p C a l l> Listing 3: XML-kodierte Sync-Bestätigung des Clients <?xml version= ’ 1 . 0 ’ e n c o d i n g= ’UTF−8 ’ ?> <CscRPCResult kn=" de . csc_dd . RPCBibliothekMobil2 . R p c O b j e k t e _ S y n c h r o n i s a t i o n . Rpc_mSynchronisation " mn=" r p c _ s y n c B e s t a e t i g e n "> <r c e r g e b n i s=" 1 " /> </ CscRPCResult> Listing 4: XML-kodierte Antwort des Servers auf die Bestätigung Durch dieses Verfahren ist garantiert, dass der Server sicher sein kann, dass seine Änderungsanweisungen erfolgreich vom Client verarbeitet worden sind. Allerdings ist dies für die eigentliche Arbeit auf dem Client nicht erforderlich, so dass die Bestätigung der Synchronisation im Hintergrund ausgeführt wird und der Nutzer bereits mit der Anwendung weiterarbeiten kann, obwohl die Synchronisation noch nicht komplett abgeschlossen ist. Das Sequenzdiagramm in Abbildung 15 stellt den kompletten Ablauf einer Synchronisation dar. Auf die Vorgehensweise der Warteschlange wird in Kapitel 6.2.3 genauer eingegangen. Für die Auslösung der Synchronisation gibt es verschiedene Möglichkeiten, welche von der Konfiguration der mobilen Anwendung abhängig ist. Die sicherste Variante im Bezug auf aktuelle Daten ist, dass die Synchronisation immer angestoßen wird, sobald der Nutzer Daten anfordert – sei es eine reine Datenanforderung oder nach einer Statusänderung im BIS. Zusätzlich gibt es noch die Möglichkeit, die Synchronisation automatisch und regelmäßig im Hintergrund ausführen zu lassen. Listing 5 zeigt einen Auszug des entsprechenden Teils aus der Konfiguration. #============================================================ # E i n s t e l l u n g e n f ü r den Agenten #============================================================ a g e n t . SyncVorLesen=t r u e a g e n t . SyncNachAufruf=t r u e a g e n t . SyncRangierenLok=t r u e a g e n t . SyncEingangszugBes=t r u e a g e n t . AutoSync=t r u e a g e n t . A u t o S y n c I n t e r v a l l=5 ... Listing 5: Ausschnitt aus der Konfigurationsdatei cfg_moBIS.txt 62 6 Die Lösung Abbildung 15: Sequenzdiagramm, welches den kompletten Verlauf der Synchronisation darstellt 63 6 Die Lösung Es kann auch konfiguriert werden, ob die zu synchronisierenden Daten auf eine Lok oder Betriebsstelle beschränkt werden sollen, wie es in Kapitel 6.2.1 beschrieben ist. Falls die automatische Synchronisation genutzt wird, wird der SyncHandler (siehe Abbildung 10) nach jeder erfolgreichen Durchführung darüber informiert und kann dementsprechend reagieren. 6.2.7 Das Konfliktmanagement Das Konfliktmanagement muss in der Lage sein, Probleme erkennen und lösen zu können, die durch die neue Arbeitsweise der mobilen Geräte entstehen. Durch die Art und Weise der Synchronisation und der Leerung der Warteschlange ist sichergestellt, dass die Datenabbilder der Clients auf dem Server immer auf dem Stand des Original-Aufrufszeitpunkts sind. Damit eignen sich die Server-ClientDaten auch für die Konflikterkennung von Aufrufen, die aus Warteschlangen gesendet werden. Diese Aufrufe benötigen somit keine zusätzlichen Parameter. Da die Konfliktlösungsstrategien müssen erst noch spezifiziert werden, was nicht die Aufgabe dieser Arbeit ist. Deshalb existiert das Konfliktmanagement bisher nur in der Spezifikation, gemäß dem Algorithmus 1 in Kapitel 5.1.7. Um dennoch die Arbeitsweise und Problematik zu verdeutlichen, wird seine mögliche Arbeitsweise an einem Beispielszenario zum Beginnen eines Rangierauftrags kurz erläutert. Zu dem Aufrufzeitpunkt des Aufrufs umfasst der auszuführende Rangierauftrag fünf Positionen. Dementsprechend kuppelt der Lokrangierführer diese fünf Wagen an seine Lok und beginnt den Auftrag. Da das Gerät zurzeit über keine Verbindung verfügt, wird der Aufruf nur lokal ausgeführt und in die Warteschlange eingereiht. Zu einem späteren Zeitpunkt fügt ein Disponent diesem Rangierauftrag, ohne das er weiß, dass dieser bereits in der Ausführung ist, noch drei weitere Wagen hinzu. Im Anschluss daran kann das mobile Gerät wieder eine Verbindung herstellen und setzt den eingereihten Aufruf ab. Das Konfliktmanagement prüft diesen Aufruf und stellt einen Konflikt fest. Anhand seines Client-Daten-Abbilds weis es, dass der Client zum Aufrufzeitpunkt nur die Information über fünf Wagen besessen hat, der Auftrag inzwischen aber acht Positionen umfasst. Würde dieser Aufruf jetzt im BIS ausgeführt werden ohne den Konflikt zu lösen, würde dadurch der Datenbestand des BIS korrumpiert werden. Die Server-Logik geht von einem Rangierauftrag mit acht Positionen aus, der Lokrangierführer hat aber nur fünf davon an seine Lok gekuppelt. Das Abbild der Realität würde dann nicht mehr mit ihr übereinstimmen. Eine mögliche Lösung des Konflikts könnte sein, dass durch das Konfliktmanagement die drei zusätzlichen Wagen automatisch wieder aus dem Auftrag entfernt werden und ein neuer Rangierauftrag mit ihnen gebildet wird. Eine erneute Prüfung der Situation würde daraufhin keinen Konflikt mehr feststellen können und 64 7 Auswertung und Bewertung der Aufruf kann ausgeführt werden. Damit das mehrfache Senden des gleichen Aufrufs durch das Konfliktmanagement leicht erkannt werden kann, und die Idempotenz-Eigenschaft eines Aufrufs erhalten bleibt, wird jeder neu erzeugte Aufruf zusätzlich mit einer eindeutigen ID und der Identifikationsnummer des Clients versehen. Mit Hilfe dieser Angaben ist es für das Konfliktmanagemant leicht feststellbar, ob der Aufruf zuvor schon mal empfangen worden ist oder nicht. 7 Auswertung und Bewertung Im Gegensatz zu der alten Anwendung ist die im Rahmen dieser Arbeit entstandene Anwendung auch im verbindungslosen Zustand nutzbar. Doch wie wirken sich die gemachten Änderungen auf das Verhalten der Anwendung aus? Müssen jetzt mehr Daten übertragen werden? Haben sich die Laufzeiten verlängert oder sind sie gar kürzer geworden? 7.1 Das Testszenario Für die Beantwortung dieser Fragen wurde ein realitätsnahes Testszenario entwickelt, welches die alte und die neue Anwendung in verschiedenen Konfigurationen durchgehen musste. Zu Beginn des Tests sind bereits drei Rangieraufträge auf der Server-Seite vorhanden. Zwei von ihnen bestehen aus drei und einer aus fünf Positionen, wobei dieser bereits im Status „Transport“ ist. Der Testablauf gestaltet sich wie folgt: 1. Holen der Liste aller verfügbarer Lokomotiven 2. Eine Lok auswählen und alle Rangieraufträge dieser Lok abholen (3 Stück) 3. Den Rangierauftrag mit fünf Positionen selektieren und die einzelnen Positionen anzeigen lassen 4. Diesen Rangierauftrag beenden 5. Die restlichen Rangieraufträge anzeigen lassen 6. Einen davon auswählen und dessen Positionen holen (während der Anzeige der einzelnen Positionen werden zwei neue Rangieraufträge mit jeweils 6 Positionen gebildet) 7. Wieder zurück wechseln zur Ansicht der Rangieraufträge (4 Stück) 8. Einen Rangierauftrag mit sechs Positionen wählen und seine Details anzeigen lassen 9. Zurück zur Rangierauftragsliste gehen 65 7 Auswertung und Bewertung 10. Den anderen Rangierauftrag mit sechs Positionen selektieren und dessen Positionen holen 11. Diesen Rangierauftrag beginnen Durchgespielt worden ist der Test mit der alten Version der Anwendung (1: Alte Anwendung) und der neuen Version in drei verschiedenen Konfigurationen. In der ersten Konfiguration (2: Immer Synchronisation) findet keine automatische Synchronisation statt und die Daten werden nach jedem Webservice-Aufruf synchronisiert. In der zweiten Variante (3: Nur automatische Synchronisation) wird die Synchronisation nicht explizit gestartet. Stattdessen wird diese automatisch im Hintergrund ausgeführt. Das heißt, dass bei Daten-Offline-Aufrufen der Webserver nicht kontaktiert wird, sondern die Daten aus der lokalen Datenbank ausgelesen werden. Bei Änderung-Offline-Aufrufen wird zwar die Statusänderung an den Webservice gesendet, es findet danach aber keine Synchronisation statt. Stattdessen werden die lokalen Daten ausgewertet und manipuliert. Die dritte Konfiguration (4: Immer SlowSync) führt wie die erste immer eine Synchronisation aus, allerdings immer im SlowSync. Dieser Modus ist zwar normal nicht möglich, soll aber zeigen, ob sich der gesamte Aufwand für die Synchronisation lohnt. 7.2 Die Testumgebung Die Testumgebung bestand aus einem handelsüblichen PC (Intel Pentium 4 Prozessor mit 2,5 GHz und Hyperthreading, 1024 MB Arbeitsspeicher, Red Hat 8 als Betriebssystem, Apache Tomcat 5 für den Webservice) und einem SymbolPDA MC9090, der über einen GPRS-Zugang von Vodafone (VCDA) mit dem PC verbunden war. Gemessen wurde an der Netzwerkschnittstelle des mobilen Geräts die Sendezeit einer Nachricht und die Empfangszeit der Antwort auf diese Nachricht. Die Differenz ergibt die gesamte Laufzeit eines Aufrufs (Übertragungszeiten plus Verarbeitungszeit auf dem Server (in der Regel zwischen „0“ und einer Sekunde)). Des Weiteren wurde noch das gesendete und empfangene Datenaufkommen erfasst. Vor jedem Testdurchlauf wurde das mobile Gerät zurückgesetzt und damit alle Daten gelöscht. Das führt bei der ersten Synchronisation automatisch zu einer Ausführung im SlowSync-Modus. Die Ergebnisse der Messung können der Tabelle 6 und den Diagrammen in Abbildung 16 und 17 entnommen werden. 7.3 Die Auswertung und Bewertung Am auffälligsten verhält sich Fall 3. Hier werden entweder keine, sehr wenige oder sehr viele (ausgelöst durch die automatische Synchronisation) Daten über66 7 Auswertung und Bewertung Abbildung 16: Stellt die Übertragungsvolumen in Byte der einzelnen Aufrufe der verschiedenen Testläufe gegenüber Abbildung 17: Vergleicht die verstrichene Zeit zwischen Aufruf- und Antwortzeitpunkt der einzelnen Aufrufe 67 7 Auswertung und Bewertung 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Lok-Liste RA-Liste Pos-Liste Beenden RA-Liste Pos-Liste RA-Liste Pos-Liste RA-Liste Pos-Liste Beginnen P Aufrufdauer in Sekunden17 1 2∗ 3∗ 4∗ 4 4∗ 4∗ 4∗ 2 7∗ 7∗ 7∗ ∗ ∗ 5 3 0 7∗ 5 5∗ 5∗ 5∗ ∗ ∗ 2 5 0 4∗ 5 3∗ 0∗ 4∗ ∗ ∗ 4 6 8 8∗ 6 3∗ 0∗ 8∗ ∗ ∗ 4 3 0 8∗ ∗ ∗ 6 3 0 8∗ 3 3∗ 3∗ 3∗ 46∗ 45∗ 27∗ 66∗ Übertragene Bytes18 1 763 1.285 6.052 576 1.113 4.571 1.455 8.349 1.455 8.349 583 34.551 2∗ 763∗ 6.849∗ 1.306∗ 576∗ 2.291∗ 1.306∗ 5.013∗ 1.306∗ 1.306∗ 1.306∗ 583∗ 22.605∗ 3∗ 763∗ 6.849∗ 0∗ 576∗ 0∗ 0∗ 9.669∗ 0∗ 0∗ 0∗ 583∗ 18.440∗ 4∗ 763∗ 6.849∗ 6.849∗ 576∗ 4.262∗ 4.262∗ 10.299∗ 10.299∗ 10.299∗ 10.299∗ 583∗ 65.340∗ Tabelle 6: Laufzeiten und übertragenes Datenvolumen eines Testszenarios für verschiedene Konfigurationen ∗ . . . Synchronisation tragen, wobei das akkumulierte Datenaufkommen am geringsten ist. Dafür ist bei einigen Aufrufen die Sendezeit maximal. Bei einem Einsatz dieser Konfiguration kommt es sehr auf das Synchronisationsintervall an. Ist das Intervall zu groß, muss der Anwender häufig mit veralteten Daten arbeiten. Ist das Intervall zu klein, werden unnötige Synchronisationen durchgeführt und der Anwender in seiner Arbeit dadurch womöglich behindert. Darum muss es immer an die jeweilige Arbeitsumgebung angepasst werden. Fall 1 und Fall 2 verhalten sich bei diesem Testszenario recht ähnlich, wobei bei Fall 2 wesentlich weniger Daten übertragen werden (≈ -33 %). Auffällig bei dem ersten Fall ist, dass bei den Aufrufen 7 und 9, sowie 8 und 10 jeweils immer die gleiche Datenmenge übertragen wird. Dies liegt daran, dass sich die Daten auf Server-Seite nicht geändert haben und deswegen immer die gleichen Daten übertragen werden (die alte Anwendung verfügt über keine lokale Datenhaltung). Ähnlich verhält es sich auch bei dem zweiten Fall. Jeder Aufruf 7 bis 10 löst die Synchronisation aus. Da es aber keine Änderungen gibt, enthalten die Synchronisations-Nachrichten keine Änderungsinformationen und sind damit auch immer gleich groß. Aber im Vergleich mit Fall 1 werden erheblich weniger Daten ausgetauscht. 17 Bei Synchronisationsaufrufen ist die Zeit für den Austausch der Bestätigung nicht mit eingerechnet, da diese im Hintergrund ausgeführt wird. 18 Bei Synchronisationsaufrufen: Sync-Anfrage (422 Byte) + Antwort(min. 298 Byte) + SyncBestätigung-Anfrage (388 Byte) + Sync-Bestätigung-Antwort (198 Byte) 68 8 Abschluss und Ausblick Beginnt der Anwender mit seiner Arbeit, so liefert Fall 1 gegenüber 2 und 3 wesentlich schneller Ergebnisse, da diese erst die Daten des gesamten Prozessmodells synchronisieren (wegen des ersten Aufrufs mittels SlowSync) müssen und bei dem ersten Fall nur die Liste der Rangieraufträge abgeholt wird. Dafür müssen im Anschluss bei Fall 2 und 3, im Gegensatz zu 1, nur noch ein paar Änderungsinformationen auf die Clients übertragen werden. Der Fälle 2 und 3 zeigen das Einsparpotential, welches erreicht wird, indem anstelle des kompletten Prozessmodells nur die Änderungsinformationen ausgetauscht werden, wie es bei Fall 4 immer der Fall ist. Das Gesamtaufkommen verringert sich dadurch für dieses Testszenario um über 65 %. Zusammenfassend gibt es keinen eindeutigen Sieger. Die neue Anwendung hat, egal in welcher Konfiguration, den Vorteil der Offline-Fähigkeit. Zudem werden die Informationen insgesamt schneller ausgetauscht und es müssen weniger Daten übertragen werden. Ob Konfiguration 2 oder 3 oder eine Kombination aus beiden zum Einsatz kommt, hängt von der konkreten Realisierungsumgebung ab (Häufigkeit der Änderungen der Daten, Geschwindigkeit des Zuganges für das mobile Gerät) und muss deswegen von Fall zu Fall entschieden werden. 8 Abschluss und Ausblick Die entstandene Anwendung, beziehungsweise die Erweiterung der alten Anwendung, erfüllt alle an sie gestellten Anforderungen. Die Erweiterung lässt sich leicht integrieren und ermöglicht die Weiterarbeit des Benutzers auch für den Fall, dass das Gerät über keine Verbindung verfügt. Erreicht wurde dies durch die Einführung einer weiteren Schicht als neuen Unterbau für die Anwendung (siehe Abbildung 10). Diese erweitert die Anwendung unter anderem um eine lokale Datenhaltung, die Basis für eine Offline-Fähigkeit ist. Der Umfang wird durch die Prozessmodelle beschrieben, die daneben auch noch die Daten in Bereiche aufteilen und diesen einzelne Funktionen zuordnen. Ein Agent kümmert sich um die korrekte Verarbeitung von Aufrufen gemäß ihren Eigenschaften. Über die neu eingeführte Synchronisation werden die Clientdaten mit den Serverdaten abgeglichen. Aufrufe können jetzt in eine Warteschlange eingereiht werden, um diese später zu senden. Die Einführung des Konfliktmanagements auf der Server-Seite und der damit verbundenen Konflikterkennung und -behebung fördert die bessere Integration des Clients in das Gesamtsystem BIS. Etwaige Konflikte können so erkannt und behoben werden, ohne das ein Nutzer des Systems eingreifen muss. Abbildung 18 zeigt einen Gesamtüberblick über das so entstandene System. Bereits jetzt steht fest, dass die hier vorgestellten Lösungen in die zukünftigen Anwendungen mit integriert und von den Kunden eingesetzt werden. Die Idee des Prozessmodells wird noch tiefer in die Anwendung verankert und der Agent 69 8 Abschluss und Ausblick Abbildung 18: Überblick über das (mo)BIS-System inklusive der Erweiterung bekommt aufgrund von Designänderungen eine noch zentralere Bedeutung und wird zum festen Bestandteil der Anwendung. Zukünftig könnte sich die relativ einfache Implementierung der Differenzbildung bei der Synchronisation als Schwachpunkt herausstellen, wenn die zu synchronisierende Datenmenge stark zunehmen sollte. Letzte kurze Testläufe haben aber gezeigt, dass die Berechnung der Differenz auch für mehrere tausend Datensätze noch ausreichend schnell ist (innerhalb einer Sekunde), so dass sich eher die langsame Anbindung der mobilen Geräte über GPRS als problematisch erweist. Sollte es dennoch zu Änderungen auf Client- oder Server-Seite kommen, können diese verhältnismäßig leicht vollzogen werden. Die einzelnen Schnittstellen sind fest definiert und die beiden Seiten arbeiten unabhängig voneinander. Falls die Verbindungszuverlässigkeit nicht sehr hoch ist, könnte die mobile Anwendung den Nutzer bei seiner Arbeit noch besser unterstützen. Möchte dieser einen Änderung-Online-Aufruf im verbindungslosen Zustand ausführen, kann er zwar den Disponenten über Funk darüber in Kenntnis setzen, der dann für ihn im BIS die entsprechende Funktion ausführt, die mobile Anwendung bietet dem Nutzer aber keine Möglichkeit, ihr das mitzuteilen. Um diese Möglichkeit zu schaffen wäre es denkbar, auch für Änderung-OnlineAufrufe eine lokale Geschäftslogik einzuführen, sofern die notwendigen Daten im entsprechenden Prozessmodell vorhanden sind. Die Verarbeitung durch den Agenten wäre dann ähnlich zu Änderung-Offline. Die Unterschiede wären, dass Rücksprache mit einem Disponenten gehalten werden muss, der dann stellvertretend den Aufruf ausführt und weiterhin, dass deswegen die Aufrufe nicht eingereiht werden müssen. Eine ähnliche Vorgehensweise ist auch für Änderung-Offline-Aufrufe möglich, deren Ausführung die lokale Geschäftslogik aufgrund falscher Daten oder Ge70 8 Abschluss und Ausblick schäftslogik verweigert wird, obwohl die Server-Geschäftslogik zustimmen würde (Negativ-Positiv-Konflikt). Verbesserungen sind unter anderen noch im Bereich der Kommunikation (Nachrichtengröße und damit auch Übertragungsdauer) möglich. Hier könnten noch für häufig wiederkehrende oder lange Zeichensequenzen Abkürzungen eingeführt werden. Die Einführung neuer Schlüssel-IDs, wie es SyncML vorsieht (Kapitel 3.3), könnten zusätzlich die Nachrichtengröße verkleinern, indem die teilweise recht langen Schlüssel (über mehrere Spalten) nicht mehr übertragen werden müssten. Auch gibt es noch keine Mechanismen, die es erlauben, eine durch Verbindungsverlust abgebrochene Nachricht fortzusetzen. Besonders im Bereich der Synchronisation, falls die zu übertragenen Datenmengen wesentlich größer werden sollten, wäre es vorteilhaft, wenn ein abgebrochener Synchronisationsvorgang fortgesetzt werden könnte und dieser nicht komplett neu gestartet werden muss. 71 Teil II 73 9 Die Weiterentwicklung des BIS-Systems 9 Die Weiterentwicklung des BIS-Systems Im vorangegangen Teil ist ein Konzept entwickelt und realisiert worden, mit dem der vorhandene mobile Client offline-fähig gemacht worden und jetzt besser in das BIS-System integriert ist. Hierfür wurden die Prozessmodelle und eine Synchronisation eingeführt. Abbildung 18 gibt nochmals einen Gesamtüberblick über das so entstandene System. Als großer Schwachpunkt dieser Architektur erweisen sich der Webservice- und Datenbank-Server und die strikt vertikale Kommunikation19 . Sollte der Webservice beziehungsweise die Datenbank mal nicht erreichbar sein, können die stationären Clients gar nicht und die mobilen Clients nur stark eingeschränkt weiterarbeiten.20 Eine Lösungsmöglichkeit ist die Einführung einer horizontale Kommunikation21 . Mit Hilfe dieser können sich ganz neue Kommunikationsabläufe ergeben. Denkbar sind Szenarien, in denen ein Client seinen Nachbarn nach bestimmten Daten befragen könnte, wenn dieser selbst gerade über keine Verbindung verfügt oder den Nachbarn als Proxy nutzt, um seine Aufrufe an den Webservice absetzen zu können. 9.1 Peer-to-Peer: Die neue Architektur für das BIS? Aus diesen Vorüberlegungen heraus ist eine Architektur wünschenswert, die die starre Rollenverteilung aufbricht und mehr auf die Kommunikation untereinander setzt. Solche Architekturen werden als Peer-to-Peer bezeichnet und ziehen wegen der bereits genannten Vorteile in den letzten Jahren immer mehr Aufmerksamkeit auf sich. In der Literatur findet man zahlreiche mehr oder weniger weitgefasste Definitionen: „Ein Peer-to-Peer-Netzwerk ist ein Kommunikationsnetzwerk zwischen Rechnern, in dem jeder Teilnehmer sowohl Client- als auch Server-Aufgaben durchführt.“ [49] Ein „. . . Peer-to-Peer-System ist ein sich selbst organisierendes System gleichberechtigter, autonomer Einheiten (Peers), das vorzugsweise ohne Nutzung zentraler Dienste auf der Basis eines Rechnernetzes mit dem Ziel der gegenseitigen Nutzung von Ressourcen operiert - kurzum ein System mit vollständig dezentraler Selbstorganisation und Ressourcennutzung.“ [2] Die Kernaussagen der verschiedenen Definitionen sind jedoch gleich. In einem Peer-to-Peer-Netzwerk gibt es keine klare Rollenverteilung mehr. Jeder Rechner 19 Vertikale Kommunikation bezeichnet den Nachrichtenaustausch zwischen Client und Server. Die mobilen Clients verfügen über eine abgespeckte lokale Geschäftslogik um kurze OfflinePhasen zu überbrücken. 21 Horizontale Kommunikation ist die direkte Kommunikation unter den Clients. 20 74 9 Die Weiterentwicklung des BIS-Systems ist in der Lage als Client wie auch als Server zu fungieren und das möglichst unabhängig von einer zentralen Steuereinheit. Das hat zur Folge, dass auch jeder Teilnehmer des Netzes mit jedem anderen kommunizieren kann. Dadurch entsteht ein sehr dynamisches Netzwerk, welches die Ausfälle einzelner Knoten möglichst durch Selbstorganisation kompensieren und verkraften können muss. In einer Client-Server-Anwendung spielt es für die einzelnen Clients keine Rolle, wie viele und welche von ihnen gerade aktiv sind, da diese nicht untereinander kommunizieren. In einer Peer-to-Peer-Umgebung, in der es keine zentrale Anlaufstelle mehr gibt, ist es für die einzelnen Clients wichtig zu wissen, welche Clients gerade aktiv sind und wie diese erreicht werden können. So muss zum Beispiel ein Client, der dem Peer-to-Peer-Netzwerk neu beitritt, wissen, wie er andere Knoten kontaktieren beziehungsweise kennen lernen kann. Die dafür notwendigen Tätigkeiten fallen alle in den Bereich der Selbstorganisation. Diese Art der Architektur scheint also alle zuvor geschilderten Probleme lösen zu können. Die zentrale Rolle eines (Web-)Servers entfällt, da jeder Rechner im Netz auch Serverfunktionalitäten übernehmen kann und die Kommunikation horizontal ausgelegt ist. 9.1.1 Historische Entwicklung von Peer-to-Peer Die geschichtliche Entwicklung der Peer-to-Peer-Netze zeigt deren Möglichkeiten auf und weist auf einige Problemstellen hin. Bekannt und berühmt geworden sind Peer-to-Peer-Netze hauptsächlich durch Datei-Tauschbörsen wie Napster, eMule und dem Peer-to-Peer-Computing beziehungsweise Grid-Computing-Programm SETI@home der UC Berkeley. Napster [5] startete 1999 seinen Dienst und ist die erste Tauschbörse, die nach dem Peer-to-Peer-Prinzip arbeitete, allerdings noch nicht in der reinen Form. Um Napster nutzen zu können mussten sich die Anwender einen Client herunterladen. Nach dem Start hat dieser die Festplatte nach MP3-Datein durchsucht und die Liste der gefundenen Dateien mitsamt der IP-Adresse an einen zentralen Server gemeldet. Die einzelnen Suchanfragen der Clients wurden ebenfalls an diesen Server gerichtet. Fand dieser einen passenden Eintrag in seiner Liste, sandte er die IPAdresse als Antwort und der Anfragende konnte die Datei daraufhin direkt von dem Anbieter herunterladen (Peer-to-Peer). Aufgrund dieser eigentlichen Client-Server-Architektur konnte die Musikindustrie Napster erfolgreich verklagen. 2001 besiegelte ein Gerichtsurteil das Ende von Napster, das daraufhin seinen Dienst einstellte. SETI@home [9] arbeitet nach einem ähnlichen Prinzip wie Napster. Hierbei handelt es sich um ein im Jahr 1999 von der Universität Berkeley [13] ins Leben gerufene Projekt, mit dem Frequenzbänder nach ausserirdischen Lebenszeichen analysiert werden. Auch hier gibt es wieder einen zentralen Steuerserver, an 75 9 Die Weiterentwicklung des BIS-Systems den die Clients ihre Anfragen richten. Diese erhalten als Antwort Datenpakete, die dann auf dem Client nach Auffälligkeiten durchsucht werden. Durch diese Vorgehensweise stehen dem Projekt enorme Rechenkapazitäen22 zur Verfügung ohne selbst viel Geld in Hardware investieren zu müssen. Um die juristische Schwachstelle – der zentrale Server – von Napster zu umgehen begann Gnutella [34] 2000 seinen Dienst als ein rein dezentral organisiertes Peer-to-Peer-Netzwerk. Suchanfragen eines Teilnehmers werden an einen benachbarten Knoten weitergeleitet. Dieser leitet die Anfrage wiederum an seine Nachbarn weiter und so fort. Wenn die Datei gefunden ist kann der Sucher sie direkt herunterladen. Aus diesem Grund muss jeder Knoten seine Nachbarn kennen. Hierfür gibt es diverse Methoden, zum Beispiel vordefinierte Listen, Webcache-Seiten im Internet oder der Austausch von Host-Listen über andere Kommunikationsmittel. Durch diesen Aufbau ist das Netz sehr ausfallsicher. Dem gegenüber stehen die teilweise recht hohe Laufzeit einer Suchanfrage und eine hohe Netzbelastung durch teils ziellose Weiterleitungen von Suchanfragen. [16] Im Laufe der Zeit ist das Protokoll immer weiter entwickelt und 2002 das neu erdachte Protokoll Gnutella2 veröffentlicht worden. Als große Neuerung arbeitet das Protokoll nach dem Kademlia-Algorithmus und löst sich so von einem reinem Peer-to-Peer-Netzwerk zu einer hybriden Struktur. Der Algorithmus berechnet für jede denkbare Suchanfrage einen bestimmten Ansprechpartner, der dann dafür zuständig ist. Auf diese Weise entwickelt sich eine Pseudo-ClientServer-Architektur. Zusätzlich wurden noch Caching-Strategien und verbesserte Suchanfragen implementiert. Seit den letzten Jahren spielt die Anonymität der einzelnen Nutzer eine immer bedeutendere Rolle, so dass es mittlerweile auch Peer-to-Peer-Protokolle gibt, die die Identität der Nutzer verbergen. Des Weiteren gibt es Entwicklungen, die die übertragenen Daten zusätzlich noch verschlüsseln. Beispiele hierfür sind WASTE [14], ANts P2P [1] oder auch Mute [4]. 9.2 Die neue Architektur 9.2.1 Die Anforderungen Hierbei muss unterschieden werden in Anforderungen, die sich aus der Nutzung des BIS-Systems ergeben und sonstigen Anforderungen, um die notwendigen Rahmenbedingungen für die neue Architektur sicher zu stellen. Aus der Sicht des BIS-Systems gibt es die Anforderung, das die komplette Funktionalität dauerhaft zur Verfügung stehen muss, unabhängig von dem Netzwerk. Dies umfasst die dauerhafte und ständige Verfügbarkeit der Daten, Geschäftslogik und die Verfügbarkeit der Schnittstellen zu Fremdsystemen. Darüber hinaus sollen die Offline-Fähigkeiten, beziehungsweise die Unabhängig22 Theoretisch alle Computer, die mit dem Internet verbunden sind. 76 9 Die Weiterentwicklung des BIS-Systems keit von den zentralen Servern, noch weiter entwickelt werden mit dem Ziel, das es für den einzelnen Anwender möglichst keinen Unterschied macht, ob und wie lange der Client verbindungslos ist. Hintergründig sind erst einmal Aspekte der Skalierbarkeit. In diesem Teil der Arbeit wird nur die Architektur betrachtet und davon ausgegangen, dass bereits ein Peer-to-Peer-Netzwerk vorhanden ist. Welche Technologien dabei eingesetzt werden (WLAN, UMTS, . . . ) und wie es realisiert und organisiert ist spielen dabei keine Rolle. Dafür in Frage kommende Standards und Protokolle können unter anderem [12], [15], [54] und [56] entnommen werden. Es muss jedoch Multicasts unterstützen. Weiterhin müssen die Uhren der einzelnen Teilnehmer müssen synchron sein. 9.2.2 Die Architektur In dem BIS-System weisen die einzelnen Daten eine unterschiedliche Häufigkeit in ihrer Verwendung auf. Sie können in Operativ- und Protokoll-Daten unterschieden werden. Operativ-Daten umfassen alle Daten, die für die Erfüllung der originären Aufgaben notwendig sind. Dazu zählen zum Beispiel die Daten aus dem Rangierbereich, aber auch viele Teile der Stammdaten fallen darunter. Protokoll-Daten entstehen im Hintergrund beziehungsweise werden dort verwaltet und werden für die Ausführungen der eigentlichen Tätigkeiten nicht benötigt. Darunter fallen das Logging von Vorgängen, Daten für fremde Schnittstellen, Archivierung und ähnliches. Diese Daten werden im Allgemeinen nicht auf den Clients benötigt. Aus diesem Grund sollen sich die Teilnehmer nicht mit den Protokoll-Daten und den zugehörigen Funktionalitäten auseinander setzen. Damit diese aber dennoch zur Verfügung stehen, wird die Geschäftslogik geteilt. Der Dienst- beziehungsweise Webservice-Server übernimmt alle Aufgaben im Bereich der ProtokollDaten. Die restlichen Funktionen werden auf die Clients übertragen. Dadurch können die Ressourcen auf den Clients geschont werden und das Übertragungsvolumen erhöht sich nicht unnötig. Zur Sicherung der Daten kommt weiterhin ein Datenbank-Server zum Einsatz. So wird nebenbei die dauerhafte Verfügbarkeit der Daten sichergestellt. Durch die Beibehaltungen der Server-Strukturen, auch wenn sie stark eingeschränkt worden sind, und der Einführung einer horizontalen Kommunikation, um dem Peer-to-Peer-Paradigma gerecht zu werden, weist das System eine hybride Struktur auf, wie sie in Abbildung 19 dargestellt ist. Im weiteren Verlauf wird diese mit nBIS, für „neues BIS“, bezeichnet. 77 10 nBIS im Detail Abbildung 19: Darstellung eines logisch vollständig vermashtes, hybrides Peerto-Peer-Netzwerk 10 nBIS im Detail Die erweiterte Client-Geschäftslogik erlaubt es jetzt jedem Teilnehmer die Daten zu manipulieren. Diese Freiheit in dem Multi-Master-System, dass nach dem Update-Anywhere-Prinzip arbeitet, führt jedoch zu neuen Problemen. Es kann leicht zu inkonsistenten Daten kommen, die eine sichere Arbeit mit dem System gefährden. Aus diesem Grund muss das Netzwerk so organisiert werden, dass Inkonsistenzen möglichst nicht entstehen können oder zumindest erkannt und behoben werden. Obwohl in den letzten Jahren viel Forschung in dem Peer-to-Peer-Bereich betrieben worden ist, gibt es kaum etablierte allgemeine Standards zur Synchronisation von Daten in einem Peer-to-Peer-Netzwerk. Stattdessen kristallisieren sich spezielle Protokolle für bestimmte Anwendungsgebiete heraus. Genannt werden kann zum Beispiel die Echtzeit-Synchronisation, wie sie bei vielen verteilten Computerspielen zum Einsatz kommt (siehe unter anderem [26]). Diese Anwendungen haben teilweise mehrere 10.000 Nutzer, die diese parallel nutzen. Die 78 10 nBIS im Detail Aufgabe der Synchronisation besteht meist aus dem Austausch von personenbezogenen Daten, wie zum Beispiel die Position eines Spielers in der virtuellen Welt. Dabei ist das Konfliktpotential in der Regel sehr gering. Verliert ein Spieler die Verbindung zum System, so hat er das Spiel verlassen und kann erst weiterspielen, wenn er wieder eine Verbindung hat. So entfällt der komplette Problembereich, der durch das spätere Senden einer Anweisung entstehen kann. Des Weiteren gibt es noch einige spezielle Realisierungen, die nur auf bestimmte Produkte ausgelegt sind. Syncing.net [10] kann als Beispiel angeführt werden. Es erlaubt die Synchronisation von Microsoft Outlook-Daten zwischen verschiedenen Rechnern ohne einen zentralen Server einzubeziehen. Aus diesem Grund ist das nBIS-Protkoll entwickelt worden und wird in den folgenden Unterabschnitten vorgestellt. 10.1 Die Client-Architektur Die neue Architektur der Clients ist in Abbildung 20 dargestellt. Im Einzelnen besteht sie aus den Schichten: Abbildung 20: Die einzelnen Schichten der neuen Architektur auf den Clients Kommunikationsschicht: Diese stellt eine einheitliche Schnittstelle für den Zugriff auf das darunterliegende Netzwerk für die darüberliegenden Schichten dar. Dadurch wird das Netzwerk gekapselt und die restlichen Schichten können unabhängig von ihm realisiert werden. Nachrichtenschicht: Sie übernimmt die Verarbeitung der einzelnen Nachrichten, wenn diese an den jeweiligen Teilnehmer gerichtet ist oder es sich um 79 10 nBIS im Detail eine Suchanfrage an seine Gruppe handelt. Mit Unterstützung der LogikSchicht können Suchanfragen vorzeitig beantwortet werden, auch wenn der Teilnehmer nicht das Ziel der Suchanfrage ist.23 Des Weiteren ist sie zuständig für die Aufbereitung der Nachrichten, so dass diese von der Logikschicht verarbeitet werden können. Zudem werden hier Nachrichten generiert, die über die Kommunikationsschicht an die anderen Teilnehmer des Netzwerks gesendet werden. Datenschicht: Sie kapselt die lokale Datenbank und ermöglicht Datenbanktypische Zugriffe wie das Lesen, Löschen, Einfügen oder Ändern von Daten.24 Bei den Daten handelt es sich entweder um Operativ- oder um Verwaltungs-Daten. Die Verwaltungsdaten haben mit der eigentlichen Funktionalität nichts zu tun, werden aber benötigt, damit das System korrekt arbeiten kann. Der Zugriff auf die Datenschicht erfolgt über die Logikschicht. Logikschicht: Sie ist verantwortlich für die Auswertung der Nutzereingaben und generiert daraus Suchanfragen, liest Daten aus der Datenschicht aus oder führt die lokale Geschäftslogik und damit verbundenen Aktionen aus.25 Aus der Datenschicht ausgelesene Daten müssen für die Ansicht eventuell noch aufbereitet werden. Zudem ist sie verantwortlich für die Beantwortung von Anfragen aus der Nachrichtenschicht und es werden die Antworten von Aufrufen/Anfragen für die Darstellungs- oder Datenschicht aufbereitet. Zusätzlich können noch Funktionen für die Erfüllung einer Master-Rolle hinzukommen. Darstellungsschicht Diese Sicht präsentiert die Daten und leitet die entgegengenommenen Nutzeraktionen an die Logikschicht weiter.26 10.2 Der Aufbau der Clients Die Erkennung von Inkonsistenzen beziehungsweise Konflikten kann aus drei Gründen nicht mehr durch ein zentrales Konfliktmanagement, wie in Teil I eingeführt, erfolgen. Erstens sollen auf die Server-Strukturen weitestgehend verzichtet werden, um die Clients in ihrer Unabhängigkeit zu unterstützen. Zweitens kann der Server wegen der horizontalen Kommunikation keine Speicherabbilder der Clients mehr führen. Und drittens können sich durch die „beliebigen“ Kommunikationsströme unter den Clients sehr komplizierte Abläufe ergeben, die die Komplexität eines zentralen Konfliktmanagements extrem steigern würden und eigentlich unmöglich macht. 23 Realisierung des Peer-to-Peer-Paradigma Entspricht dem Model nach MVC (siehe [51]). 25 Entspricht dem Controller nach MVC (siehe [51]). 26 Entspricht der View nach MVC (siehe [51]). 24 80 10 nBIS im Detail Um dennoch eine gewisse Sicherheit zu gewährleisten und die Clients sich nicht vollkommen selbst zu überlassen, werden sogenannte Master-Knoten eingeführt, wie es [35] vorschlägt.27 Diese sind für die Durchführung einer einfachen Konflikterkennung verantwortlich und stellen fest, ob ein Aufruf durchgeführt werden darf beziehungsweise kann. Neben der Konfliktbehandlung zur Erkennung und Behebung von Konflikten kann die Synchronisation der einzelnen Teilnehmer Inkonsistenten vorbeugen. Je besser die einzelnen Clients über die Vorgänge im Netz informiert sind und damit auch deren Datenbestand aktueller ist, desto geringer ist die Wahrscheinlichkeit für einen Konflikt. Eine einfache Art der Synchronisation ist das verteilte Sperren von Daten, auch als pessimistische Nebenläufigkeit bezeichnet, die manipuliert werden sollen. Möchte ein Client Änderungen an seinen Daten vornehmen, so werden diese Datensätze auf allen Clients gesperrt und erst dann kann die Änderung vorgenommen werden. Dadurch geht das Konfliktpotential gegen Null. Allerdings gestaltet sich die Umsetzung des Sperrkonzepts in einem Peer-to-Peer-Netzwerk als äußerst schwierig. Es gibt keine zentrale Instanz, die die Sperrverwaltung übernehmen kann und durch das beliebige Kommen und Gehen der Teilnehmer kann es leicht zu Verklemmungen kommen. Nach [24] vertausendfacht sich die Wahrscheinlichkeit für einen Deadlock, wenn sich die Anzahl der Knoten von Eins auf Zehn erhöht. Andere Verfahren erlauben bewusst die parallele Manipulation gleicher Objekte, auch als optimistische Nebenläufigkeit bezeichnet (siehe [58], und nehmen das Auftreten von Konflikten in Kauf. Die Aufgabe der Master ist es, diese Konflikte zu erkennen und nach Möglichkeit zu beheben. Der daraus resultierenden Nachrichtenablauf ist in Abbildung 21 dargestellt. Um die Laufzeiten von Suchanfragen und Synchronisationsdaten zu verringern, werden die einzelnen Teilnehmer in Anlehnung an [55] zusätzlich noch in Gruppen aufgeteilt. Die Aufteilung erfolgt dabei nach dem Prozessmodell, mit dem der Anwender gerade arbeitet. Die Suchanfragen müssen dann nicht mehr an alle Teilnehmer weitergeleitet werden, sondern nur noch an die Teilnehmer der Gruppe, die in dem Suchbereich tätig sind. Zudem müssen die Clients nur noch Synchronisationsdaten verarbeiten, die für sich auch interessant sind. Durch die Verteilung der Daten und der Selbstständigkeit der Clients kann es passieren, dass es verschiedenen Versionen eines Datums im Netz gibt. Um zu erkennen, welches davon die aktuellste Version ist, wird jedes Datum mit einem Zeitstempel versehen und im Allgemeinen dem jüngsten den Vorrang gelassen. Hierfür ist es notwendig, dass die Uhren der einzelnen Teilnehmer synchronisiert sind. Die Schnittstellen und Funktionen der Clients können den Algorithmen 3 bis 7 entnommen werden. Die Pseudocodes geben einen Überblick über die einzelnen Funktionen und deren Arbeitsweisen. In Abbildung 22 ist der Kommunikations27 In den Abbildungen 21 und 23 blau dargestellt 81 10 nBIS im Detail Abbildung 21: Ablauf eines Aufrufs bei dem die Clients über eine Verbindung zum Server verfügen (die Clients selbst sind untereinander auch verbunden (siehe Abbildung 19)) fluss zwischen den einzeln Schichten in einem Flussdiagramm visualisiert (zur besseren Übersicht leicht vereinfacht und ohne Rückgaben). Die zusätzlichen Funktionen des Masters sind in Abbildung 25 dargestellt. Deren Umsetzung ist analog zu denen in den zuvor erwähnten Algorithmen beschriebenen verfahren. In den nachfolgenden Unterabschnitten 10.2.1 bis 10.2.3 sind die Abläufe einer Suchanfrage und eines Aufrufs detailliert beschrieben, um einen Überblick über die Abhängigkeiten unter den Teilnehmern im Netzwerk zu vermitteln. Die Erläuterungen stützen sich dabei auf die Abbildungen 21, 23 und 24. Für einen erfolgreichen Kommunikationsverlauf ist immer der jeweilige Client selbst verantwortlich. Das heißt, im Fehlerfall ist es die Aufgabe des Clients, das Problem zu lösen. Entweder indem der Aufruf erneut gesendet wird oder alternative Strategien zum Einsatz kommen. Die Master prüfen nicht, ob ihre gesendeten Antworten auch empfangen worden sind. 82 10 nBIS im Detail /* Einstiegspunkt für die Darstellungsschicht */ AufrufAusführen(aktion) { wenn aktion == datenLesen dann HoleDaten(aktion); sonst AufrufAusführen(aktion); } /* Einstiegspunkt für die Nachrichtenschicht */ NachrichtAuswerten(nachricht) { unterscheide nachricht tue Fall PrüfungErfolgt AufrufPrüfungAuswerten(nachricht.GibAktion(), nachricht.GibErgebnis()); Fall AufrufAufgenommen MasterWurdeInformiert(nachricht.GibAktion(), nachricht.GibErgebnis(), nachricht.GibDaten(), nachricht.GibZeit()); Fall AufrufGemerkt ServerWurdeInformiert(nachricht.GibAktion(), nachricht.GibErgebnis(), nachricht.GibDaten(), nachricht.GibZeit()); Fall ErgebnisDaten DatensucheAbgeschlossen(nachricht.GibErgebnis()); Fall SyncDaten Datenschicht.SchreibeDaten(nachricht.GibDaten()); Fall Suche*Daten parameter = nachricht.; daten = Datenschicht.HoleDaten(parameter ); wenn daten != leer dann Nachrichtenschicht.Senden(ErgebnisDaten, daten); sonst /* Wenn keine passenden Daten vorhanden Suchanfrage weiterleiten */ Nachrichtenschicht.Senden(nachricht); sonst MeldeFehler(nachricht); } Algorithmus 3 : Die Einstiegsfunktionen der Logikschicht 83 10 nBIS im Detail /* Liest die Daten aus der lokalen Datenbank aus oder stellt eine Anfrage an das Netz */ HoleDaten(aktion) { parameter = aktion.GibParameter(); daten = Datenschicht.HoleDaten(parameter ); wenn daten == leer dann /* Suchnachricht an das Netz senden */ wenn VerbindungZumNetz() dann Nachrichtenschicht.Senden(SucheParameterDaten, Suchradius()); sonst MeldeFehler(”Das Gerät hat keine Verbindung!”); sonst MeldeErgebnis(daten); } /* Die Suche nach Daten ist abgeschlossen */ DatensucheAbgeschlossen(ergebnis) { wenn ergebnis != fehler dann daten = ergebnis.; Datenschicht.SchreibeDaten(daten); sonst daten = ergebnis.GibFehler(); MeldeErgebnis(daten); } /* Führt einen Aufruf aus */ AufrufAusführen(aktion) { wenn VerbindungZumMaster() dann /* Aktion prüfen, dann AufrufPrüfungAuswerten() */ Nachrichtenschicht.Senden(PrüfeAufruf, aktion); sonst AufrufOfflineAusführen(aktion); } /* Aufruf offline ausführen */ AufrufOfflineAusführen(aktion) { MAufrufInWsEinreihen(PrüfeAufruf, aktion, jetzt); Logikschicht.LokaleLogikAusführen(aktion); MeldeErgebnis(”Aufruf erfolgreich offline ausgeführt!”); } Algorithmus 4 : Die einzelnen Funktion der Logikschicht Teil 1 84 10 nBIS im Detail /* Aufruf durch Master geprüft */ AufrufPrüfungAuswerten(aktion, ergebnis) { wenn ergebnis == ok dann /* startet lokale G.-Logik und gibt geänderte Daten */ daten = Logikschicht.LokaleLogikAusführen(aktion); /* Master informieren, danach MasterWurdeInformiert() */ Nachrichtenschicht.Senden(AufrufErfolgt, daten, jetzt); sonst wenn ergebnis == nichtOk dann daten = ergebnis.GibErgebnisDaten(); wenn daten != leer dann Datenschicht.SchreibeDaten(daten); MeldeFehler(”Aufruf nicht erlaubt, neue Daten erhalten!”); sonst MeldeFehler(”Aufruf nicht erlaubt: ” ergebnis); sonst AufrufOfflineAusführen(aktion); } /* Master über Aufruf informiert */ MasterWurdeInformiert(aktion, ergebnis, daten, zeitpunkt) { wenn ergebnis == ok dann wenn VerbindungZumServer dann /* Server informieren, dann ServerWurdeInformiert() */ Nachrichtenschicht.Senden(MerkeAufruf, daten, zeitpunkt); sonst /* Aufruf an Master einreihen */ MAufrufInWsEinreihen(AufrufErfolgt, aktion, daten, jetzt); MeldeErgebnis(”Aufruf erfolgreich ohne Abgleich ausgeführt!”); } /* Server über Aufruf informiert */ ServerWurdeInformiert(aktion, ergebnis, daten, zeitpunkt) { wenn ergebnis == ok dann MeldeErgebnis(”Aufruf erfolgreich ausgeführt!”); sonst SAufrufInWsEinreihen(MerkeAufruf, aktion, daten, zeitpunkt); ergebnis = Nachrichtenschicht.Senden(SendeSyncDaten, daten, zeitpunkt); wenn ergebnis == ok dann MeldeErgebnis(”Aufruf erfolgreich ausgeführt!”); sonst MeldeErgebnis(”Aufruf ohne Abgleich ausgeführt!”); } Algorithmus 5 : Die einzelnen Funktion der Logikschicht Teil 2 85 10 nBIS im Detail Abbildung 22: Die Abläufe in den einzelnen Schichten der nBIS-Architektur 86 10 nBIS im Detail /* Daten in die Datenbank übernehmen, bei SyncDaten prüfen, ob diese neuer als die eigenen Daten sind */ SchreibeDaten(daten) { wenn daten == syncDaten dann wenn daten älter sind als vorhandene Daten dann zurück ; SchreibeDatenInDB(daten); } /* Daten aus der lokalen Datenbank lesen */ HoleDaten(parameter ) { zurück LeseDatenAusDB(parameter ); } Algorithmus 6 : Die einzelnen Funktion der Datenschicht 10.2.1 Abläufe mit Verbindung zum Server Abbildung 21 veranschaulicht den Ablauf eines Aufrufs28 , wobei die Clients über eine Verbindung zu dem Server verfügen. Client acht ist dabei der Aufrufende und Client sechs ein Master der Gruppe A. Im ersten Schritt nimmt Client acht Kontakt zum Master auf und sendet PrüfeAufruf, um vom Master feststellen zu lassen, ob der Aufruf zulässig ist. Ist das der Fall, empfängt er in Schritt zwei PrüfungErfolgt. Client acht nimmt seine Änderungen vor und sendet diese im dritten Schritt über AufrufErfolgt an den Master, damit dieser die Änderung übernimmt. Erst wenn der Master das bestätigt hat, kann der nächste Schritt folgen. In diesem wird der Dienst-Server mittels MerkeAufruf ebenfalls über die Änderungen informiert, so dass dieser entsprechende Hintergrundprozesse ausführen kann.29 Diese werden im fünften Schritt zusammen mit den Änderungen des Clients an die Datenbank weitergegeben und deren korrekte Einpflegung in das System in Schritt sechs und sieben an den Client zurückgemeldet. Die Änderung der Daten in der Datenbank löst einen Multicast SyncDaten aus (Schritt acht) der die Gruppe über die Änderung informiert. Sind diese Änderungen aktueller als die Daten auf den einzelnen Clients, so werden die Daten vom Server übernommen. Andernfalls werden diese ignoriert. Suchanfragen werden gezielt an den Server und Master gerichtet. Sie können aber auch von anderen Clients beantwortet werden, die auf dem Routing-Weg der Nachricht liegen. Hat ein Client, der die Anfrage beantwortet, die gesuchten Daten bereits manipuliert, die Änderungen aber noch nicht mit dem Master 28 29 Ein Aufruf hat immer eine Datenmanipulation zur Folge. Erstellung beziehungsweise Bearbeitung der Protokoll-Daten. 87 10 nBIS im Detail /* Das Absenden einer Nachricht vorbereiten und diese der Transportschicht übergeben. */ Senden(nachricht, parameter[] ) { xmlNachricht = ErstelleNachricht(nachricht, parameter ); kodNachricht = KodiereNachricht(xmlNachricht); i = 0; solange i < 3 tue ergebnis = Transportschicht.Senden(kodNachricht); wenn kein TimeOut dann abbruch ; i++; wenn i == 3 dann Logikschicht.NachrichtAuswerten(”Nachricht nicht zustellbar!”); } /* Einstiegspunkt für Nachrichtenschicht */ Empfangen(nachricht) { wenn ( GibEmpfänger() == ich) oder (nachricht == Suche*Daten) dann dekodNachricht = DekodiereNachricht(nachricht); Logikschicht.NachrichtAuswerten(dekodNachricht); sonst Transportschicht.Senden(Nachricht); } /* Komprimiert die Nachricht für die Datenübertragung */ KodiereNachricht(nachricht) { ... } /* Erzeugt eine Nachricht, die versendet werden soll */ ErstelleNachricht(nachricht, parameter ) { ... } /* Dekodiert eine Nachricht, um sie in der Logikschicht auswerten zu können */ DekodiereNachricht(nachricht) { ... } Algorithmus 7 : Die einzelnen Funktion der Nachrichtenschicht 88 10 nBIS im Detail Abbildung 23: Nachrichtenfluss in der neuen Architektur ohne Verbindung zum Server (orange: Aufruf, grün: allgemeine Suchanfrage) abgesprochen, werden diese gesondert gekennzeichnet. Ist dieses Verhalten, beispielsweise bei sensiblen Daten, unerwünscht, können die Nachrichten speziell gekennzeichnet werden um zu signalisieren, dass diese nur vom Server oder Master beantwortet werden dürfen. 10.2.2 Abläufe ohne Verbindung zum Server In Abbildung 23 sind die Nachrichtenabläufe dargestellt, wenn die Clients über keine Verbindung zum Server verfügen. Der Ablauf eines Aufrufs ist orange gezeichnet, der einer Suchanfrage grün. Abbildung 24 zeigt nochmals den Ablauf in einem Sequenzdiagramm. Der Ablauf unterscheidet sich dabei kaum von dem vorangegangenen. Im ersten Schritt wird wieder der Master befragt, ob der gewünschte Aufruf durchgeführt werden darf. Ist dies der Fall, Schritt zwei, führt Client zwei den Aufruf aus und teilt die Änderungen im dritten Schritt wieder dem Master mit. 89 10 nBIS im Detail Abbildung 24: Darstellung eines Aufrufs ohne Verbindung zum Server in einem Sequenzdiagramm Falls der Client noch nicht über den Verbindungsverlust zum Server informiert ist, versucht er im vierten Schritt wieder den Dienst-Server zu benachrichtigen. Weil dieser damit aber keinen Erfolg hat, wird daraufhin der Master über SendeSyncDaten angewiesen, anstelle des Datenbank-Servers die restlichen Gruppenmitglieder über die Änderungen zu informieren. Der Aufruf wird vom Client in eine Warteschlange aufgenommen, damit dieser zu einem späteren Zeitpunkt an den Dienst-Server gesendet werden kann. Auch der Ablauf einer Suchanfrage unterscheidet sich in der Vorgehensweise kaum von der zuvor vorgestellten Konstellation (siehe Client fünf in Abbildung 23). Der Unterschied besteht nur darin, dass der Suchende keine Antwort mehr von der Datenbank bekommen kann. 10.2.3 Abläufe ohne Verbindung zum Master Hat ein Client weder eine Verbindung zu dem Master noch zu den Servern, so arbeitet dieser bis zu einem erneuten Verbindungsaufbau selbstständig und autonom mit der Gefahr, dass etwaig durchgeführte Aufrufe nicht erlaubt waren. Durchgeführte Aufrufe mit den zugehörigen Parametern, geänderten Daten und dem Ausführungszeitpunkt werden dabei in die Warteschlange aufgenom90 10 nBIS im Detail men, um sie später vom Master prüfen zu lassen und dem Server mitteilen zu können. Dabei auf dem Master auftretende Konflikte sollten nach Möglichkeit automatisch behoben werden. Erreicht solch einen Client eine Suchanfrage, so kann er diese ebenfalls beantworten. Allerdings muss die Antwort speziell gekennzeichnet werden, damit für den Empfänger der Antwort erkennbar ist, dass die Daten womöglich durch einen irrtümlich ausgeführten Aufruf veraltet oder falsch sind. Kann der Client zu einem späteren Zeitpunkt wieder eine Verbindung zum Master herstellen muss der Client erst seine Warteschlange leeren, bevor er erneut Aufrufe durchführen kann. Seine Daten kann er aktualisieren, indem er den Master befragt, was sich seit einem bestimmten Zeitpunkt geändert hat. Das darunterliegende Netzwerk muss in diesem Fall auch dafür sorgen, dass der „neue“ Netzteilnehmer Informationen darüber erhält, wie er andere Teilnehmer erreichen kann. 10.2.4 Die Aufgaben des Masters Die Hauptaufgabe des Masters besteht darin zu prüfen, ob die Aufrufe anderer Teilnehmer durchgeführt werden dürfen oder nicht. Dazu muss dieser möglichst immer über einen aktuellen Stand der Daten verfügen. Dies wird dadurch gewährleistet, dass jeder Teilnehmer, der einen Aufruf ausführt, sicherstellt, das seine Änderungen auch vom Master übernommen werden. Kann ein Client den Master nicht erreichen, könnte die Prüfung auch von einem beliebigen anderen Teilnehmer des Netzes durchgeführt werden. Allerdings können seine Daten veraltet oder falsch sein, so dass die Überprüfung ein falsches Ergebnis liefern würde. So böte die Überprüfung durch eine Gegenstelle keine Vorteile mehr. Deswegen arbeitet der Client in diesem Fall selbstständig und lässt seine Aufrufe zu einem späteren Zeitpunkt gegenprüfen, wenn er wieder eine Verbindung zum Master hat. Um die Master zu entlasten gibt es pro Gruppe mindestens einen. Dabei kann die Rolle prinzipiell von jedem Teilnehmer übernommen werden. Aus PerformanceGründen sollte sie aber nur von leistungsstarken Gruppenmitgliedern ausgefüllt werden. Deswegen erfolgt die Benennung zum Master aufgrund technischer Kenndaten, so dass das stärkste Mitglied der Gruppe diese Funktion übernimmt. Neben den Prüf-Aufgaben kann der Master für das Senden von SyncDaten zuständig sein, wenn der aufrufende Client keine Verbindung zum Server, auch nicht über andere Gruppenmitglieder, hat. Zudem hält er eine Liste, in der er alle Änderungen chronologisch festhält, um einem Client alle gemachten Änderungen seit einem bestimmten Zeitpunkt übermitteln zu können. Damit die Master möglichst unabhängig von der Datenbank arbeiten können, laden sie sich während ihrer Initialisierung alle für die Gruppe relevanten Daten in ihre Datenbank. Sollte es währenddessen zu Problemen kommen, versucht der 91 10 nBIS im Detail Master dennoch seiner normalen Tätigkeit nachzukommen und die fehlenden Daten zu einem späteren Zeitpunkt nachzuladen. Sollte ein Aufruf aufgrund dieser fehlenden Daten nicht komplett geprüft werden können, so teilt er dies dem Client mit. Dieser behandelt dann den Aufruf so, als wenn er nicht durch einen Master gegengeprüft wäre. Diese zusätzlichen Funktionen und deren Zuordnungen in die einzelnen Schichten der Architektur sind in Abbildung 25 veranschaulicht. Sie erweitern die Logikschicht und sind zustandsunabhängig. Das heißt der Funktionsablauf ist nicht abhängig von beispielsweise zuvor verarbeiteten Nachrichten. Das hat den Vorteil, dass im Fehlerfall ein anderer Client die Master-Rolle ohne Probleme übernehmen kann und macht die Kommunikationsverwaltung für den Master einfach. Kann zum Beispiel seine Antwort nicht zugestellt werden, ist es die Aufgabe des Anfragenden dies festzustellen und entsprechend zu reagieren und nicht die des Masters, die Antwort erneut zu senden. Diese Herangehensweise ermöglicht es, die Master-Funktionalitäten einfach und zuverlässig zu implementieren. 10.2.5 Die Aufgaben der Server Die zentrale Position der Server ist wesentlich abgeschwächt worden. Der DienstServer erfüllt nur noch Routine-Aufgaben, um die Clients zu entlasten und das Übertragungsvolumen zu verringern. Der Datenbank-Server ist weiterhin die Wissensbasis des Systems, die ständig aktualisiert wird. Jeder Aufruf wird durch den Dienst-Server verarbeitet und in der Datenbank protokolliert. Bei der Übernahme der geänderten Daten durch den Datenbank-Server ist darauf zu achten, dass nur Änderungen übernommen werden, die einen jüngeren Änderungszeitpunkt aufweisen als die zu überschreibenden Daten in der Datenbank. Andernfalls wird der Aufruf nur protokolliert und die Änderungen verworfen. Kommt es doch zu einer Änderung werden die übrigen Teilnehmer der Gruppe darüber informiert. 10.2.6 Das Leeren der Warteschlangen Die in die Warteschlangen eingereihten Nachrichten werden gemäß ihres Einfügezeitpunktes ausgelesen und abgesendet. Alle darauf basierenden Aktionen steht der Zeitpunkt des eigentlichen Aufrufs zur Verfügung. So können Vorgänge für den richtigen Zeitpunkt protokolliert und der Abgleich von Daten korrekt vorgenommen werden. 10.2.7 Bewertung Durch die Verlagerung der Geschäftslogik auf die Clients können diese unabhängig arbeiten und dank der horizontalen Kommunikation können sie auch dann an neue Informationen gelangen, wenn der Server nicht erreichbar ist. Dennoch 92 10 nBIS im Detail Abbildung 25: Darstellung der zusätzlichen Funktionen und deren Einordnung im Schichtmodell des Masters 93 10 nBIS im Detail ist das System durch den Einsatz der Master relativ gut gegen fehlerhafte Daten und den daraus resultierenden Problemen geschützt, ohne auf die Vorteile des Peer-to-Peer-Paradigmas zu verzichten. Die Art der Kommunikation ist rein datenorientiert und nicht mehr wie in Teil I eine Mischung aus daten- und dienstorientierter Kommunikation. Das Aufgabengebiet des Webservice-Server hat sich allerdings komplett gewandelt. Er bietet keine Dienste zur Erfüllung der eigentlichen Aufgaben mehr an, sondern erledigt nur noch Aufgaben, die im Hintergrund ausgeführt werden können, um die Clients zu entlasten. Tabelle 7 gibt einen kurzen Überblick über die einzelnen Nachrichten, die in nBIS ausgetauscht werden. Es sind die notwendigen Parameter aufgelistet und der Verwendungszweck der Nachricht näher erläutert. Tabelle 8 gibt nochmals eine kurze Übersicht über die einzelnen Aufgaben der Teilnehmer. Nachricht Suche*Daten ErgebnisDaten PrüfeAufruf PrüfungErfolgt MerkeAufruf Parameter • Schlüssel • Gruppe • Nur Server/MasterAntwort • Daten • Sind_OfflineDaten • Aufruf • Parameter, Daten • Ergebnis • • • • • Aufruf Parameter Daten Ist_veraltet Zeitpunkt Beschreibung Suche nach bestimmten Daten, bspw. die eines Wagens, in einer bestimmten Gruppe. Der letzte Parameter gibt an, ob die Anfrage nur vom Server bzw. Master beantwortet werden darf. Ergebnis einer Suchanfrage, eventuell mit Angabe, dass Daten veraltet sein können. Master wird aufgefordert den Aufruf mit Hilfe der Daten zu prüfen. Antwort des Masters, ob die Prüfung erfolgreich war. Falls nicht eventuell auch neue Daten zur Aktualisierung des Clients. Sendet den Aufruf an den Dienstserver mit den geänderten Daten und dem Zeitpunkt der Änderung. Ist veraltet gibt an, ob der Aufruf aus einer Warteschlange entnommen wurde. Es darf dann kein Multicast durch die Datenbank erfolgen. Fortsetzung nächste Seite 94 10 nBIS im Detail Nachricht Parameter AufrufGemerkt SendeSyncDaten • Daten • Zeitpunkt SyncDaten • • • • • AufrufErfolgt Daten Zeitpunkt Gruppe Daten Zeitpunkt AufrufAufgenommen Beschreibung Antwort des Servers, dass der zuvor empfangene Aufruf vom Server verarbeitet worden ist. Fordert den Master auf, die geänderten Daten mit der Zeitpunkt der Änderung an die restlichen Teilnehmer des Netzes zu senden. Informiert Clients einer Gruppe der Änderung inklusive Zeitpunkt. Informiert Master über eine erfolgreiche Durchführung eines Aufrufs und teilt diesem geänderten Daten und Zeitpunkt mit. Antwort des Masters, dass er die zuvor mitgeteilten Änderungen übernommen hat. Tabelle 7: Auflistung der einzelnen Nachrichten in nBIS Teilnehmer Master Client Dienst-Server Datenbank-Server Aufgaben • Aufrufe anderer Gruppenmitglieder überprüfen • SyncDaten-Nachricht versenden, wenn Client Server nicht erreichen kann • „normale“ Client-Aufgaben • Chronologische Auflistung aller Änderungen führen • Funktionalität des BIS über lokale Geschäftslogik bereitstellen • Verarbeitung von SyncDaten • Verwaltung von Warteschlangen • Suchanfragen beantworten • Hintergrunddienste ausführen • Datenänderungen an den Datenbank-Server weiterleiten • Datenänderungen in die Datenbank übernehmen, sofern diese neuer sind • Bei Übernahme einen Multicast auslösen und Gruppe über Änderung informieren • Suchanfragen beantworten Tabelle 8: Kurze Zusammenfassung der Aufgaben der Teilnehmer in nBIS 95 11 Verallgemeinerung des Konzepts nBIS Abschließend gibt Abbildung 26 noch einen kurzen Überblick über die verschiedenen Technologien, die zum Einsatz kommen können. Die Entscheidungen für konkrete Technologien müssen dann jeweils von Realisierung zu Realisierung neu getroffen werden und hängen von den eingesetzten Geräten und Technologien zur Vernetzung ab. Abbildung 26: Kurzer Überblick über mögliche einsetzbare Technologien 11 Verallgemeinerung des Konzepts nBIS Das hier erarbeitete Konzept lässt sich nicht nur im Dispositionsbereich einsetzen. Es kann relativ leicht verallgemeinert und an die Bedürfnisse anderer Anwendungsgebiete angepasst werden, sofern das darunterliegende Netzwerk die in Kapitel 9.2.1 beschriebenen Anforderungen erfüllt. Aus diesem Grund kann das Konzept in allen Systemen zum Einsatz kommen, in denen ein Peer-to-Peer-Netzwerk eingesetzt wird beziehungsweise werden soll 96 12 Abschluss und Ausblick und auf den Einsatz zentraler Serversysteme nicht verzichtet werden kann. Es muss lediglich festgelegt werden, welche Funktionalitäten auf die Clients übertragen werden sollen. Dies legt also fest, welche Aufgaben die Clients auch ohne Server-Hilfe selbstständig bewerkstelligen können sollen. Dementsprechend müssen auch die Daten nach Protokoll- und Operativ-Daten aufgeteilt werden. Die Aufteilung sollte dabei nach dem Prinzip: „So viele Protokoll-Daten (ServerFunktionalität) wie nötig, so wenige Operativ-Daten (Client-Funktionalität) wie möglich.“ erfolgen. Je allgemeiner eine Funktion ist und umso weniger sie mit der eigentlichen Erfüllung der Aufgaben zu tun hat, desto mehr ist sie für die Server-Seite prädestiniert. Ein weiteres mögliches Anwendungsszenario ist beispielsweise der Einsatz auf einem großen Messegelände, dass neben der Messe zusätzliche virtuelle Dienste zur Verfügung stellt, wie zum Beispiel ein Reservierungssystem für Veranstaltungen. 12 Abschluss und Ausblick Durch die Einführung von Peer-to-Peer-Strukturen ist das Netz wesentlich flexibler geworden, ohne dabei Verluste bezüglich der Datenhaltung hinnehmen zu müssen.30 Dank der Trennung zwischen Protokoll- und Operativ-Daten werden die einzelnen Teilnehmer nicht unnötig durch zusätzliche Daten und Funktionen belastet und können sich stattdessen auf ihre originären Aufgaben konzentrieren. Die Einführung des Master-Konzepts bewirkt, dass auch leistungsschwache Teilnehmer des Netzes nicht benachteiligt werden, indem sie nicht durch zusätzliche Aufgaben wie das Absenden von Multicast-Nachrichten oder der Durchführung von Konsistenzprüfungen belastet werden. Zudem schränken sie die Wahrscheinlichkeit für einen Fehler aufgrund inkonsistenter Daten stark ein. Ein Master ist jeweils für eine ganze Gruppe verantwortlich und sollte deswegen über ausreichende Ressourcen verfügen. Für die richtige Auswahl des Masters unter den Teilnehmern der Gruppe ist deshalb noch eine hinreichende Funktion zu entwickeln, die die einzelnen technischen Kenndaten wie Prozessorleistung und Netzanbindung gewichtet und die Teilnehmer besser vergleichbar macht. Kann das System auf die Konsistenzprüfungen durch die Master verzichten, weil beispielsweise nur informative/lesbare Daten ausgetauscht werden, können die Master auch entfallen. Im Allgemeinen ist es so, dass die Master über aktuellere Daten verfügen als die Server. Um diesem vorzubeugen könnte bei Bedarf eine zusätzliche Synchronisation zwischen Server und Master eingeführt werden. Aber auch ohne diese wird es im Normalfall nicht dazu kommen, dass den Server bestimmte Daten 30 In einem reinen Peer-to-Peer-Netzwerk stehen die Daten der einzelnen Clients nur solange zur Verfügung, wie diese am Netz teilnehmen. 97 12 Abschluss und Ausblick nie erreichen werden. Wichtig für die Gesamtperformance des Netzes ist es, dass die Nachrichtenverarbeitung möglichst effizient implementiert wird, damit beispielsweise Suchanfragen zügig beantwortet werden können. Hierfür könnte man noch über die Einführung von Metadaten, die die eigentlichen Daten zusammenfassen und beschreiben, nachdenken. Dadurch kann man ermitteln, ob eine weitere Suche auf dem Client überhaupt sinnvoll ist und so die Gruppe noch weiter segmentieren, um den Suchradius weiter einzuschränken. Nachfolgende Arbeiten sollten sich deshalb mit dem Einsatz verschiedener möglicher Technologien und Implementierungsvarianten näher befassen, um das Konzept so effizient wie möglich in die Realität umsetzen zu können. 98 Anhang 99 Literaturverzeichnis Literaturverzeichnis [1] ANts P2P. 21.11.2006 http://sourceforge.net/projects/antsp2p, Abruf: [2] Gesellschaft für Informatik e.V. http://www.gi-ev.de, Abruf: 20.02.2007 [3] JXTA. http://www.jxta.org, Abruf: 20.02.2007 [4] Mute. http://mute-net.sourceforge.net, Abruf: 21.11.2006 [5] Napster. http://www.napster.de, Abruf: 21.11.2006 [6] OASIS. http://www.oasis-open.org, Abruf: 03.12.2006 [7] Open Mobile Alliance. 29.03.2007 http://www.openmobilealliance.org, Abruf: [8] SAP. http://www.sap.de, Abruf: 13.11.2006 [9] SETI@home. http://www.setiathome.de, Abruf: 22.12.2006 [10] Syncing.net. http://www.syncing.net, Abruf: 04.03.2007 [11] SyncML. http://www.openmobilealliance.org/tech/affiliates/ syncml/syncmlindex.html, Abruf: 02.03.2007 [12] UMA Technology. http://www.umatechnology.org, Abruf: 15.03.2007 [13] University of California, Berkeley. 15.11.2006 http://www.berkeley.edu, Abruf: [14] WASTE. http://waste.sourceforge.net, Abruf: 21.11.2006 [15] Wi-Mesh proposal for IEEE 802.11s. http://www.wi-mesh.org, Abruf: 17.02.2007 [16] Babenhauserheide, A. u. a.: GnuFU: Gnutella für Benutzer / GnuFU. Version: 30. November 2003. http://basis.gnufu.net/gnufu/ index.php/GnuFU_de, Abruf: 29.03.2007. 2003 [17] Bager, J.: Im Gleichtakt. In: c’t 13 (2006), Juni, S. 230–233 [18] Bishop, M. A.: Computer security: art and science. Addison-Wesley, 2003. – ISBN 0201440997 [19] Dudenredaktion (Hrsg.): Duden: Das Fremdwörterbuch. 9. Auflage. Mannheim : Bibliographisches Institut, 2006. – ISBN 3411040599 [20] Dumbill, E.: SyncML toolkits: Open source options for implementing the protocol. In: XML Watch (2003), 6. Juni. http://www-128.ibm.com/ developerworks/xml/library/x-syncml3.html, Abruf: 02.03.2007 i Literaturverzeichnis [21] Eilebrecht, K. und Starke, G.: Patterns kompakt: Entwurfsmuster für effektive Software-Entwicklung. 2. Auflage. Spektrum Akademischer Verlag, 2006. – ISBN 3827415918 [22] Extended Systems: OneBridge auf der TechEd als beste mobile Lösung ausgezeichnet. http://resolution.extendedsystems.com/ESIde/Ueber+ uns/Presse/TechEdAward.htm, Abruf: 04.11.2006 [23] Fetzer, C.: Systems Engineering / Fakultät Informatik, TU Dresden2006. http://wwwse.inf.tu-dresden.de/index.php?language= English&site=courses&course=ws06vl01, Abruf: 11.11.2006. 2006 [24] Gray, J.; Helland, P.; O‘Neil, P. und Shasha, D.: The dangers of replication and a solution. In: ACM SIGMOD (1996), S. 173–182 [25] GSM Association: GPRS Platform. http://www.gsmworld.com/ technology/gprs/index.shtml, Abruf: 20.03.2007 [26] Hübsch, C.: Synchronisation von Peer-to-Peer-basierten MultiplayerAnwendungen mit Echtzeitanforderungen in Ad-Hoc-Netzen, Institut für Telematik, Universität Karlsruhe, Diplomarbeit, 2006. http://www.tm. uka.de/itm, Abruf: 15.02.2007 [27] Hermann, W.: In zehn Schritten zur Service-Oriented Architecture. In: Computerwoche.de (2005), Dezember. http://www.computerwoche.de/ produkte_technik/software/569662, Abruf: 07.12.2006 [28] iAnywhere Solutions Inc.: OneBridge. http://www.ianywhere.com/ deutschland/products/onebridge.html, Abruf: 04.11.2006 [29] iAnywhere Solutions Inc.: OneBridge Mobile Data Suite. http://www.extendedsystems.de/web/content.aspx?key= E57CE571BED869691C8C1B02E3B42993, Abruf: 04.11.2006 [30] iAnywhere Solutions Inc.: OneBridge Mobile Groupware Data Sheet - Deutsch, http://www.extendedsystems.com/web/media/uploads/omg_ d_130206.pdf, Abruf: 04.11.2006 [31] iAnywhere Solutions Inc.: OneBridge Monitoring Service. http://www.ianywhere.com/deutschland/datasheets/onebridge_ monitoring.html, Abruf: 04.11.2006 [32] iAnywhere Solutions Inc.: Sybase Completes Acquisition of Extended Systems. Version: 26. Oktober 2005. http://www.ianywhere.com/press_ releases/extended_systems.html, Abruf: 26.10.2006 [33] ITSD Consulting: iAnywhere. http://www.itsd-consulting.de/ iAnywhere.28.0.html, Abruf: 04.11.2006 [34] Kirk, P.: Gnutella. Version: 2003. http://rfc-gnutella.sourceforge. net, Abruf: 12.01.2007 ii Literaturverzeichnis [35] Klan, D.: Replikation in Peer-to-Peer Systemen, Fakultät für Informatik und Automatisierung, TU Ilmenau, Diplomarbeit, April 2006. http: //mordor.prakinf.tu-ilmenau.de/papers/dbis/2006/Witt06.pdf, Abruf: 28.11.2006 [36] Kureshy, A.: Architecting Disconnected Mobile Applications Using a Service Oriented Architecture. In: MSDN Library (2004), September. http://msdn2.microsoft.com/en-us/library/ms838177.aspx, Abruf: 02.11.2006 [37] Larman, C.: UML 2 und Patterns angewendet: Objektorientierte Softwareentwicklung. 1. Auflage. Bonn : mitp-Verlag, 2005. – ISBN 3826614534 [38] MacKenzie, C. M.; Laskey, K.; McCabe, F.; Brown, P. F.; Metz, R. und Allen, B.: Reference Model for Service Oriented Architecture 1.0 / OASIS2. August 2006. http://www.oasis-open.org/committees/ download.php/19679/soa-rm-cs.pdf, Abruf: 05.12.2006. 2006 [39] Maymounkov, P. und Mazières, D.: Kademlia: A Peer-to-peer Information System Based on the XOR Metric / New York University. 2002 [40] MSDN Deutschland: .NET Framework: Anwendungsentwicklung mit der .NET-Klassenbibliothek. http://www.microsoft.com/germany/msdn/ netframework/default.mspx, Abruf: 29.03.2007 [41] MSDN Deutschland: Das .NET Compact Framework. Version: 11. November 2004. http://www.microsoft.com/germany/msdn/library/ mobility/windowsmobile/pocketpc/DasNETCompactFramework.mspx? mfr=true, Abruf: 29.03.2007 [42] Network, Sun D.: The Java ME Platform: the Most Ubiquitous Application Platform for Mobile Devices. http://java.sun.com/javame/index. jsp, Abruf: 29.03.2007 [43] OASIS: OASIS SOA Reference Model TC. http://www.oasis-open.org/ committees/tc_home.php?wg_abbrev=soa-rm, Abruf: 05.12.2006 [44] Parys, D. und Mauerer, J.: SOA (Service Oriented Architecture). In: MDSN Library (2004), 14. November. http: //www.microsoft.com/germany/msdn/library/enterprise/ SOAServiceOrientedArchitecture.mspx?mfr=true, Abruf: 02.11.2006 [45] Pfitzmann, A.: Professur Datenschutz und Datensicherheit, Fakultät Informatik, TU Dresden. http://www.inf.tu-dresden.de/index.php? node_id=442, Abruf: 13.12.2006 [46] Resnick, P.: Internet Message Format. Network Working Group, April 2001. http://www.ietf.org/rfc/rfc2822.txt, Abruf: 18.12.2006 [47] Schill, A.: Service-Oriented Architectures: Potential and Challenges / Fakultät Informatik, TU DresdenSeptember 2005. http: iii Tabellenverzeichnis //www.rn.inf.tu-dresden.de/scripts/scripts_lsrn/veroeffent_ print/crimico_2005_0.pdf, Abruf: 15.10.2006. 2005 [48] Schiller, J.: Mobilkommunikation. 2. Auflage. Pearson Studium, 2003. – ISBN 3827370604 [49] Schindelhauer, C.: Mitglied der Fachgruppe Algorithmen und Komplexität, Heinz Nixdorf Institut, Universität Paderborn. 2006 [50] Schwichtenberg, H.: Was ist Microsoft TechEd (TechEd)? http:// www.it-visions.de/glossar/alle/783/Microsoft%20TechEd.aspx, Abruf: 17.11.2006 [51] Shalloway, A. und Trott, J.: Design patterns explained: a new perspective on object-oriented design. 2. Auflage. Addison-Wesley Longman, 2005. – ISBN 0321247140 [52] Shinder, T. W. und Shimonski, R. J.: Building DMZs for Enterprise Networks. Syngress Media, 2003. – ISBN 1931836884 [53] Smith, R. E.: Authentication: from passwords to public keys. 1. Auflage. Addison-Wesley, 2002. – ISBN 0201615991 [54] Steinmetz, R. und Wehrle, K.: Peer-to-Peer Systems and Applications. 1. Auflage. Springer-Verlag GmbH, 2005. – ISBN 354029192X [55] Stoica, I.; Morris, R.; Karger, D.; Kaashoek, F. und Balakrishnan, H.: Chord: A scalable peer-to-peer lookup service for internet applications. In: SIGCOMM (2001) [56] Tavli, B. und Heinzelman, W.: Mobile Ad Hoc Networks: EnergyEfficient Real-Time Data Communications. 1. Auflage. Springer-Verlag GmbH, 2006. – ISBN 1402046324 [57] tecchannel: WAP Binary XML (WBXML). Version: 31. Mai 2000. http://www.tecchannel.de/netzwerk/networkworld/ technologyupdate/403295, Abruf: 27.10.2006 [58] Wikipedia: Optimistic Concurrency. http://de.wikipedia.org/wiki/ Optimistic_Concurrency, Abruf: 24.10.2006 [59] Wikipedia: Read-One-Write-All. http://de.wikipedia.org/wiki/ROWA, Abruf: 20.10.2006 Tabellenverzeichnis 1 2 3 4 iv Homogene Wertetabelle mit kompletten Daten Homogene Wertetabelle mit lückenhaften Daten Jede Änderung einzeln . . . . . . . . . . . . . . Inhomogene Wertetabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 40 40 40 Abbildungsverzeichnis 5 6 7 8 Einordnung der Funktionen des Webservice . . . . . . . . . . . . Laufzeiten und übertragenes Datenvolumen eines Testszenarios für verschiedene Konfigurationen . . . . . . . . . . . . . . . . . . Auflistung der einzelnen Nachrichten in nBIS . . . . . . . . . . . Kurze Zusammenfassung der Aufgaben der Teilnehmer in nBIS . 47 68 95 95 Abbildungsverzeichnis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Die drei Schichten des MVC-Modells . . . . . . . . . . . . . . . . Architektur des BIS-Systems inklusive mobiler Clients . . . . . . Erfolgreicher und nicht erfolgreicher Nachrichtenaustausch mit dem 2-Phasen-Commit-Protokoll . . . . . . . . . . . . . . . . . . Funktionsweise der Datenreplikation . . . . . . . . . . . . . . . . Funktionsweise der Funktionsreplikation . . . . . . . . . . . . . . Übersicht über Basistechnologien für den Einsatz mit SOA [47] . Schichten in einer offline-fähigen mobilen Anwendung . . . . . . . Architektur von SOA . . . . . . . . . . . . . . . . . . . . . . . . . Infrastruktur der OneBridge Mobile Platform [30] . . . . . . . . . Die einzelnen Schichten der Client-Seite . . . . . . . . . . . . . . Die einzelnen Schichten der Server-Seite . . . . . . . . . . . . . . Sequenzdiagramm, welches den Ablauf im Agenten darstellt . . . Flussdiagramm, dass die Verarbeitung eines Aufrufs im Agenten darstellt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sequenzdiagramm über das Leeren der Warteschlange mit einem Element . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sequenzdiagramm, welches den kompletten Verlauf der Synchronisation darstellt . . . . . . . . . . . . . . . . . . . . . . . . . . . Stellt die Übertragungsvolumen in Byte der einzelnen Aufrufe der verschiedenen Testläufe gegenüber . . . . . . . . . . . . . . . . . Vergleicht die verstrichene Zeit zwischen Aufruf- und Antwortzeitpunkt der einzelnen Aufrufe . . . . . . . . . . . . . . . . . . . Überblick über das (mo)BIS-System inklusive der Erweiterung . . Darstellung eines logisch vollständig vermashtes, hybrides Peerto-Peer-Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . Die einzelnen Schichten der neuen Architektur auf den Clients . . Ablauf eines Aufrufs bei dem die Clients über eine Verbindung zum Server verfügen . . . . . . . . . . . . . . . . . . . . . . . . . Die Abläufe in den einzelnen Schichten der nBIS-Architektur . . Nachrichtenfluss in der neuen Architektur ohne Verbindung zum Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Darstellung eines Aufrufs ohne Verbindung zum Server in einem Sequenzdiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . Darstellung der zusätzlichen Funktionen und deren Einordnung im Schichtmodell des Masters . . . . . . . . . . . . . . . . . . . . Kurzer Überblick über mögliche einsetzbare Technologien . . . . Das mobile Gerät mit einem geöffneten Administrator-Dialog . . 15 17 18 20 21 26 30 31 32 50 50 53 54 56 63 67 67 70 78 79 82 86 89 90 93 96 viii v Eine kurze Einführung in die Arbeitsabläufe des BIS 28 29 30 31 Dialog Dialog Dialog Dialog zur zur zur zur Auswahl einer Lok . . . . . . . . . Anzeige der Rangieraufträge . . . Anzeige der Positionen nach einem Anzeige der Warteschlange . . . . . . . . . . . . . . . . . . . . Offline-Aufruf . . . . . . . . . . . . . . . . . . . . ix ix ix ix Liste der Algorithmen 1 Ablauf des serverseitigen Konfliktmanagements . . . . . . . . . . . 42 2 Bildet die Differenz zwischen den Client- und den Server-Daten . . 58 3 Die Einstiegsfunktionen der Logikschicht . . . . . . . . . . . . . . 83 4 Die einzelnen Funktion der Logikschicht Teil 1 . . . . . . . . . . . 84 5 Die einzelnen Funktion der Logikschicht Teil 2 . . . . . . . . . . . 85 6 Die einzelnen Funktion der Datenschicht . . . . . . . . . . . . . . . 87 7 Die einzelnen Funktion der Nachrichtenschicht . . . . . . . . . . . 88 Listingverzeichnis 1 2 3 4 5 XML-kodierte Nachricht an den Webservice zum Starten der Synchronisation für die Lok „01“ . . . . . . . . . . . . . . . . . . . . . XML-kodierte Antwort des Servers mit Änderungsanweisungen für den Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XML-kodierte Sync-Bestätigung des Clients . . . . . . . . . . . . XML-kodierte Antwort des Servers auf die Bestätigung . . . . . . Ausschnitt aus der Konfigurationsdatei cfg_moBIS.txt . . . . . . 60 60 61 62 62 Eine kurze Einführung in die Arbeitsabläufe des BIS Die für diese Arbeit notwendigen Grundkenntnisse beschränken sich auf die Bereiche Eingangszugbehandlung und Disposition von Rangieraufträgen. Im Bereich der Eingangszugbehandlung geht es um alle Aktivitäten, die im Zusammenhang mit Zügen, die von außerhalb auf dem Werksgelände eintreffen, durchgeführt werden können oder durchgeführt werden müssen. Ein Zug selbst besteht aus mehreren Wagen, wobei diese beladen oder leer sein können. Die Ankunftszeiten der Züge, die Reihung der Wagen, deren Ladezustand und so weiter sind zwar im Voraus bekannt, aber bevor ein Zug aufgelöst werden kann, das heißt die einzelnen Wagen über das Werksgelände verteilt werden, müssen die Angaben überprüft werden. Hierbei wird unter anderem überprüft, ob die Reihenfolge der Wagen mit den Solldaten übereinstimmt, ob die Ladungsangaben richtig sind, die Bremseigenvi Einblicke in die Anwendung moBIS schaften stimmen. Dies wird im BIS-System erfasst und darin abgebildet. Das dient zum einen der Erfüllung von Sicherheitsvorschriften, zum anderen verfügt so das BIS immer über ein korrektes Abbild der Realität, auch wenn die Soll- mit den Ist-Daten nicht übereinstimmen. Nach Abschluss dieser Arbeiten können die einzelnen Wagen dem Zug entnommen werden, indem diese in Rangieraufträge aufgenommen werden, die von Lokrangierführern ausgeführt werden. Während der Zeit im Werksgelände kann ein Wagen verschiedene Stati besitzen. Die Wichtigsten sind „Bestand“, „disponiert“, „Transport“ und „zugestellt“. Ist der Wagen im Status Bestand steht dieser auf einem Gleis und kann einem beliebigen Rangierauftrag zugeordnet werden. Dadurch ändert sich der Status in disponiert. Sobald der Auftrag begonnen wird wechselt der Wagen in den Status Transport. Zu diesem Zeitpunkt ist der Wagen in Bewegung und besitzt unter anderem kein Standortgleis mehr. Ist der Wagen am Zielgleis angekommen, wechselt der Wagen je nach Art des Rangierauftrags und Gleis wieder in Bestand oder zugestellt. Ein Rangierauftrag besteht aus ein bis mehreren Wagen, die als Positionen des Rangierauftrags bezeichnet werden, den Start- und Zielgleisen der einzelnen Wagen und einigen Informationen mehr. Grundsätzlich gibt es zwei Arten von Aufträgen: sogenannte Umsetz-Aufträge und Zustell-Aufträge. Beim Umsetzen wird der Wagen einfach von A nach B gefahren. Hierbei ist das Zielgleis ein Ladegleis. Normalerweise kann der Wagen von diesem Gleis erst wieder entfernt werden, wenn die Ladestelle den Wagen be- oder entladen hat. Die Rangieraufträge werden von den Disponenten31 erstellt. Solange die Aufträge nicht in der Ausführung sind, können sie von den Disponenten beliebig manipuliert werden. Sie können unter anderem einzelne Positionen entfernen, neue hinzufügen, Start- oder Zielgleise ändern, mehrere Aufträge zu einem zusammenfassen oder ihnen eine andere Lok zuweisen. Ein Rangierauftrag kann die Stati „erstellt“, „Transport“ und „unterbrochen“ annehmen. Ein erstellter Rangierauftrag ist ein neuer Auftrag, der noch nicht begonnen worden ist. Sobald dem BIS gemeldet wird, dass der Rangierauftrag begonnen worden ist, wird der Status auf Transport gesetzt. Jetzt kann der Auftrag entweder beendet (alle Position haben ihr Ziel erreicht) oder pausiert werden. In diesem Fall wechselt der Status nach unterbrochen. Sobald ein Auftrag beendet wird ist er erfüllt worden und die erbrachten Leistungen werden abgerechnet. Einblicke in die Anwendung moBIS Auf den Abbildungen 27-31 sind einige Screenshots der mobilen Anwendung moBIS zu sehen. Diese sollen einen kleinen Überblick über den Aufbau und das Verhalten der Anwendung vermitteln. 31 Mit der Einführung von moBIS können dies teilweise auch die Lokrangierführer selbst vii Einblicke in die Anwendung moBIS Abbildung 27: Das mobile Gerät mit einem geöffneten Administrator-Dialog viii Einblicke in die Anwendung moBIS Abbildung 28: Dialog zur Auswahl einer Lok Abbildung 29: Dialog zur Anzeige der Rangieraufträge Abbildung 30: Dialog zur Anzeige der Positionen nach einem Offline-Aufruf Abbildung 31: Dialog zur Anzeige der Warteschlange ix Glossar Glossar .NET Implementierung des Common-Language-Infrastructure-Standards für Windows durch den Softwarehersteller Microsoft. Anwendungsprogramme für .NET liegen nicht in Maschinencode, sondern in einem Zwischencode vor und benötigen die .NET-Laufzeitumgebung, ähnlich wie etwa Java-Programme eine Java Runtime Environment benötigen. [40] .NET Compact Framework Teil der .NET-Umgebung von Microsoft, welches speziell auf die Bedürfnisse von ‘kleinen’ mobilen Endgeräten wie Mobiltelefone und PDAs angepasst ist. [41] 2-Phasen-Commit-Protokoll Erlaubt das Senden von Transaktionen in verteilten System unter Wahrung der ACID-Eigenschaften (s. Abbildung 3). ACID Das Akronym steht für atomicty (Atomarität), consistency (Konsistenz), isolation (Isoliertheit) und durability (Dauerhaftigkeit) und beschreibt im Allgemeinen die Eigenschaften von Transaktionen in Datenbanken oder verteilten Anwendungen. Diese sollen ‘ganz oder gar nicht’ (atomar) durchgeführt werden, immer zum gleichen Ergebnis führen (konsistent), durchgeführt werden als wären sie alleine im System (isoliert) und das Ergebnis soll erhalten bleiben (dauerhaft). Alt-Daten-Konflikt Dieser Konflikt entsteht, wenn der Anwender der neuen, mobilen Anwendung aus Teil I aufgrund veralteter auf seinem mobilen Gerät Anweisungen falsch oder unvollständig ausführt. BIS Betriebsinformationssystem Ist eine von CSC entwickelte verteilte Anwendung zur Disponierung und Verwaltung von Betriebsdaten einer (Werks-)Eisenbahn. Client-Server-Architektur Bei dieser Art der Netzwerkorganisation gibt es einen zentralen Server, der die Ressourcen, wie zum Beispiel Webservices oder eine Datenbank, zur Verfügung stellt. Diese können von den Clients für die Verrichtung ihrer Arbeit genutzt werden. Controller-Pattern Die Super-Klasse legt die Schnittstelle fest und beinhaltet die grundlegenden Funktionalitäten. Die Kinder legen jeweils das konkrete Verhalten für einen bestimmten Anwendungsfall fest (siehe [37]). Deadlock siehe Verklemmung devInf Device Information Enthält eine Beschreibungsstruktur über ein Gerät mit Name, Hersteller, Version und eine Liste der unterstützten Dateiformate. DMZ DeMilitarized Zone x Glossar Besonders geschützter Bereich in einem Netzwerk, um die darin aufgestellten Systeme gegen andere Netze abzuschirmen. Dies erlaubt den Zugriff auf öffentlich erreichbare Dienste und schützt gleichzeitig das interne LAN vor unberechtigten Zugriffen. [52] DTO Data Transfer Object Ist ein Pattern für die Entwicklung von verteilten Anwendungen. Es fasst zu übertragende Daten in einem Objekt zusammen, um die Anzahl von entfernten Methodenaufrufen zu reduzieren. [21] Firewall Die Brandmauer dient dazu, interne Netzwerke, die mit dem Internet verbunden sind, gegen unerlaubtes Eindringen zu schützen. FTP File Transfer Protocol FTP ist ein Protokoll zur Dateiübertragung in TCP/IP-Netzwerken. GPRS General Packet Radio Service Erweitert den GSM-Mobilfunk-Standard um eine paketorientierte Datenübertragung, welche auch als 2,5. Generation bekannt geworden ist. Die Übertragungsgeschwindigkeit deutscher Anbieter von GPRS liegt in der Regel zwischen 40 kbit/s und 55,6 kbit/s. [25] und [48] Grid-Computing Hierbei handelt es sich um den Zusammenschluss verteilter und autonomer Ressourcen, meist über das Internet, um durch die Bündelung ihrer Leistungen gemeinschaftlich ein Problem zu lösen. HTTP HyperText Transfer Protocol Ist ein Protokoll zur Übertragung von Daten in einem Netzwerk. Sehr weite Verbreitung erreichte es durch den Einsatz im Internet zur Übertragung von Webseiten. HTTPS HyperText Transfer Protocol Secure Besitzt zusätzlich zu den Schichten des HTTP noch eine Sicherungsschicht, die Authentifizierungsaufgaben und Verschlüsselung durchführen kann. Idempotenz Bezeichnet die Eigenschaft einer Funktion. Diese Funktion liefert mit sich selbst verknüpft das gleiche Ergebnis wie die einmalige Anwendung. Es gilt: f (x) = f (f (x)) IMEI International Mobile Equipment Identity 15-stellige Seriennummer anhand derer jedes GSM- und UMTS-Gerät eindeutig identifiziert werden kann. Internet Message Format siehe RFC 2822 Java ME siehe Java Micro Edition Java Micro Edition Umsetzung der Java-Umgebung speziell für eingebettete Systeme wie Mobiltelefone oder PDAs. [42] xi Glossar JXTA JuXTApose Der englischen Begriff ‘juxtapose’ bedeutet soviel wie Nebeneinanderstellung. Hierbei handelt es sich um ein Open-Source-Projekt, welches Protokolle für die Standardisierung von Peer-to-Peer-Netzen entwickelt. Näheres dazu siehe [3]. Kademlia-Algorithmus Hierbei handelt es sich um ein Protokoll für den Einsatz in Peer-to-Peer-Netzen. Es legt den Aufbau sowie die Art des Netzes fest und beschreibt die Kommunikation zum Austausch von Informationen. Grundlage ist hierbei eine Funktion, die indirekt für jede Information einen dafür verantwortlichen Knoten bestimmt. [39] LAN Local Area Network Vernetzung mehrerer Rechner über kleine Entfernungen. moBIS Mobiles BIS Name für ein um einen mobilen Client erweitertes BIS-System. Multi-Master-System Verteilte Daten können von mehreren Teilnehmern eines Netzes manipuliert werden. MVC Model View Controller Architekturmuster zur Aufteilung einer Anwendung in die drei Schichten Model, View und Controller. Das Model stellt die Datenbasis dar, die View die Sicht auf die Daten und der Controller verarbeitet die Nutzereingaben. Veranschaulicht wird der Zusammenhang in Abbildung 1. [51] nBIS Neues BIS Name der in Teil 2 entwickelten dezentral organisierten Struktur des BIS-Systems. Die Grundlage bildet ein hybrides Peer-to-Peer-Netzwerk anstelle einer Client-Server-Architektur. OASIS Organization for the Advancement of Structured Information Standards Hierbei handelt es sich um eine internationale Organisation, die sich mit der Weiterentwicklung von Web-Services- und E-Business-Standards beschäftigt. Unter anderem war sie auch an der Entwicklung von ebXML beteiligt. [6] OBEX OBject EXchange Verbindungsprotokoll zwischen zwei Geräten, welches nach dem ClientServer-Modell arbeitet. OMA Open Mobile Alliance Zusammenschluss bedeutender Dienstleister und Produktanbieter aus dem Bereich Mobilfunk, um digitale und interoperable Dienste zu entwickeln und als Standard weltweit zu verbreiten. Unter anderem hat es die Standards SyncML und Device Management geschaffen. [7] xii Glossar OMAAT OneBridge Mobile Application Acceleration Toolkit Frmework von OneBridge zur Unterstützung bei der Entwicklung einer verteilten, offline-fähigen Anwendung. Optimistische Datennebenläufigkeit Alle Nutzer des Netzwerks können jederzeit auf alle Daten lesend zugreifen. Wenn mehrere Nutzer gleichzeitig schreiben, setzt sich die letzte Änderung durch. PDA Personal Digital Assistant Kleiner, tragbarer Computer, der ursprünglich für die Adress- und Terminverwaltung entwickelt worden ist. Dank immer besserer Hardware haben sie sich inzwischen zu Multimedia-Geräten entwickelt, die auch die Nutzung von relativ komplexen Anwendungen ermöglichen. Meist verfügen sie zudem über diverse Schnittstellen, wie WLAN und Bluetooth, für einen flexiblen Netzzugriff. Peer-to-Peer-Computing Zusammenschluss vieler autonomer und verteilter Ressourcen, meist über das Internet, um durch die Bündelung ihrer Leistungen gemeinschaftlich Probleme zu lösen. Pessimistische Datennebenläufigkeit Sobald ein Nutzer lesend oder schreibend auf die Daten zugreift, sind diese für alle anderen Teilnehmer des Netzwerks gesperrt. PIM Personal Information Manager Programm zur Verwaltung von persönlichen Daten wie Aufgaben, Terminen und Kontakten. Darunter fallen aber auch Dokumente wie Faxe, Briefe und E-Mails. PM siehe Prozessmodell Positiv-Falsch-Konflikt Ein Positiv-Falsch-Konflikt entsteht, wenn die lokale Geschäftslogik des mobilen Clients aus Teil I einen Aufruf erlaubt, eine spätere Prüfung auf dem Server aber ergibt, dass der Aufruf hätte nicht durchgeführt werden dürfen. Proxy Als Proxy wird ein Stellvertreter bezeichnet, der aus Sicht des Servers wie ein Client aussieht und aus Client-Sicht wie ein Server. Prozessmodell Teil der Neuerungen aus Teil I zur einfachen Beschreibung der Daten und Funktionen in der Erweiterung der mobilen Anwendung für die Umsetzung der Offline-Fähigkeit. Ein Prozessmodell besteht aus den drei Teilen Daten, Webservice-Aufrufe und lokale Geschäftslogik. Prüfsumme Prüfsummen sind das Ergebnis einer Funktion über die zugrunde liegenden Daten. Sie können eingesetzt werden, um beispielsweise die Integrität der Daten sicher zu stellen. Hierzu zählen unter anderem HashFunktionen. Referenzmodell Referenzmodelle können als Vergleichsobjekt herangezogen werden und bilden oft die Grundlage für die Verbreitung von neuen Standards und Protokollen. xiii Glossar RFC 2822 Request for Comments Hierbei handelt es sich um technische und organisatorische Dokumente rund um das Internet. Der Name RFC wird beibehalten, auch wenn sie sich durch allgemeine Akzeptanz und Gebrauch zum Standard entwickelt haben. RFC 2822 beschreibt die Syntax für E-Mails. [46] ROWA Read One Write All Ist ein synchrones Replikationsverfahren, bei dem die Schreiboperationen auf allen Replikaten durchgeführt werden und das Lesen auf einem beliebigen Replikat erfolgen kann. [59] SAP Systeme, Anwendungen und Produkte in der Datenverarbeitung SAP, korrekterweise seit 2005 SAP AG [8], ist eine im DAX gelistete Softwarefirma, die sich hauptsächlich im Bereich Geschäftsanwendungen betätigt. Service Oriented Architecture Methode, die versucht, die IT-Infrastruktur an den Geschäftsprozessen im Unternehmen auszurichten, um diese flexibel und kosteneffizient zu gestalten. SlowSync Synchronisations-Verfahren bei dem anstelle von nur geänderten Daten die kompletten Daten ausgetauscht werden. Wird in der Regel zur Initialisierung eingesetzt oder wenn die Gegenseite über falsche Daten verfügt. SOA siehe Service Oriented Architecture SOAP ehemals Simple Object Access Protocol Das Protokoll erlaubt den Austausch von Daten zwischen zwei Systemen und das Aufrufen von Remote Procedure Calls. Seit der Version 1.2 ist SOAP kein Akronym mehr für Simple Object Access Protocol, sondern direkt der Name des Protokolls. SSH Secure Shell Dahinter verbirgt sich ein Netzwerkprotokoll und Programm, mit dem man sich über eine Netzwerkverbindung auf einem entfernten Rechner einwählen kann, um dort beispielsweise Programme ausführen zu können. SyncML Beschreibungssprache, die den Nachrichtenverkehr zu Synchronisationszwecken zwischen zwei Geräten, beispielsweise einem PC und einem Handheld, spezifiziert. TechEd Jährlich stattfindende Großveranstaltung von Microsoft, die sich an Softwareentwickler und Infrastrukturexperten richtet. Im Normalfall gibt es dort nur wenige Neu-Ankündigungen, es werden hauptsächlich vorhandene Technologien vermittelt. [50] UDDI Universal Description, Discovery and Integration Ist ein Verzeichnisdienst für dynamische Webservices. Diesen gibt es in drei Varianten. Als ‘White Pages’, einer Art Telefonbuch, als ‘Yellow xiv Glossar Pages’, was den Gelben Seiten entspricht und als ‘Green Pages’, die Informationen über die Geschäftsmodelle des Unternehmen und die technischen Details zu den Webservices enthält. UMPC Ultra Mobile PC UMPCs sind mit einem circa 7 Zoll großen TFT-Display ausgerüstet und damit kleiner als Subnotebooks. Die Eingaben erfolgen wie bei einem Tablet-PC über den berührungsempfindlichen Bildschirm. Update-Anywhere-Prinzip Jeder Teilnehmer eines Netzes kann verteilte Daten manipulieren. vCard Industriestandard zum Austausch elektronischer Visitenkarten. VCDA Vodafone-CorporateDataAccess GPRS-Zugang von Vodafone, der auch Anpassungen an spezielle Kundenwünsche erlaubt, wie feste IP-Adresse, Verschlüsselung und ähnliches. Verklemmung Ein System ist verklemmt, wenn mindestens zwei Prozesse auf gegenseitig gehaltene Ressourcen warten. Prozess A benötigt die Ressource α zur Weiterarbeit, die von Prozess B gehalten wird. B wiederum benötigt Ressource β, die A besitzt. WAP Wireless Application Protocol Sammlung von Technologien und Protokollen, um Internetinhalte auch auf Geräten mit langsamer Übertragungsrate und langen Antwortzeiten, wie beim Mobilfunk, und kleinen Displays, wie bei Mobiltelefonen, verfügbar zu machen. WBXML WAP Binary XML Wird genutzt, um Daten, die im XML-Format vorliegen, so in Binärdaten umzuwandeln, dass sie von WAP-Clients interpretiert werden können. [57] WSDL WebService Description Language Plattformunabhängige XML-Spezifikation, um Netzwerkdienste (Webvices) zum Austausch von Nachrichten zu beschreiben. WSP Wireless Session Protocol Gehört zum Umfang von WAP und dient dem Aufbau von Sitzungen zwischen dem WAP-Gateway und dem Endgerät. Zeitstempel Besteht in der Regel aus einem Datum und einer Uhrzeit. xv Eigenständigkeitserklärung Eigenständigkeitserklärung Hiermit erkläre ich, Philipp Bönisch, dass ich die vorliegende Arbeit selbstständig verfasst, keine anderen als die angegebenen Hilfsmittel verwendet und die Stellen, die anderen Werken dem Wortlaut nach entnommen sind, mit Quellenangaben kenntlich gemacht habe. (Philipp Bönisch) Dresden, den 31. März 2007 xvii