Paper (PDF) - STS
Paper (PDF) - STS
Paper (PDF) - STS
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Visualisierungsunterstützung für<br />
kooperative Aktivitäten im Internet<br />
Diplomarbeit<br />
eingereicht beim<br />
Fachbereich Informatik<br />
der Universität Hamburg<br />
Heiko Zade<br />
betreut von<br />
Prof. Dr. Joachim W. Schmidt<br />
Prof. Dr. Klaus Brunnstein<br />
29. März 1998
Zusammenfassung<br />
Das Ziel dieser Arbeit ist es, Vorarbeiten für eine Visualisierungskomponente des auf<br />
dem Modell der Business Conversations aufbauenden Agentensystems zu leisten und<br />
einen Prototyp zu entwickeln. Die Visualisierung von Daten und möglichen Aktionen<br />
erfolgt dabei im Internet. Dazu werden das Agentensystem analysiert,<br />
Voraussetzungen benannt, mögliche Visualisierungsansätze dargestellt und<br />
Lösungswege aufgezeigt. Außerdem werden die für eine dynamische Visualisierung<br />
notwendigen Voraussetzungen festgestellt und das Tycoon Agentensystem getestet.
I<br />
Inhaltsverzeichnis<br />
1. Einführung und Motivation................................................................................................ 1<br />
1.1 Das Tycoon Business Conversations - Projekt...................................................................... 2<br />
1.2 Das Agentensystem ............................................................................................................... 2<br />
1.3 Ein Anwendungsbeispiel .......................................................................................................3<br />
1.4 Zielsetzung dieser Arbeit....................................................................................................... 4<br />
1.5 Aufbau der Arbeit.................................................................................................................. 4<br />
2. Das Modell der Business Conversations............................................................................ 7<br />
2.1 Das Kooperationsleitbild ....................................................................................................... 7<br />
2.2 Grundlagen ............................................................................................................................ 8<br />
2.3 Konzepte.............................................................................................................................. 11<br />
2.3.1 Das Verarbeitungmodell von Konversationen..................................................................... 11<br />
2.3.2 Sekundäre Konversationen.................................................................................................. 13<br />
2.3.3 Finale Dialoge ..................................................................................................................... 13<br />
2.3.4 Konversationsspezifikationen.............................................................................................. 14<br />
2.3.5 Konversationsinstanzen....................................................................................................... 17<br />
2.4 Invarianten des Modells....................................................................................................... 19<br />
3. Das Agentensystem............................................................................................................ 21<br />
3.1 Der Aufbau des Tycoon-Agentensystems ........................................................................... 21<br />
3.2 Das Nachrichtensubsystem.................................................................................................. 22<br />
3.3 Migration von Agenten........................................................................................................23<br />
3.4 Starten von Konversationen................................................................................................. 25<br />
3.5 Regeldefinition und -auslösung........................................................................................... 27<br />
3.6 Zusammenfassung ............................................................................................................... 28
II<br />
Inhaltsverzeichnis<br />
4. Grundlagen und Anforderungen der Visualisierung ..................................................... 29<br />
4.1 Grundlagen der Visualisierung............................................................................................ 30<br />
4.2 Visualisierung im Internet ...................................................................................................31<br />
4.3 Datentypen der Business Conversations.............................................................................. 32<br />
4.4 Allgemeine Anforderungen ................................................................................................. 34<br />
4.5 Synchrone und asynchrone Verbindungen .......................................................................... 35<br />
4.6 Funktionalität des Agentensystems ..................................................................................... 35<br />
4.7 Dynamische Visualisierung................................................................................................. 36<br />
4.7.1 Dialogobjekte....................................................................................................................... 37<br />
4.7.2 Anfragen .............................................................................................................................. 40<br />
4.7.3 Inhaltsobjekte....................................................................................................................... 40<br />
4.8 Visualisierungsvorlagen ......................................................................................................41<br />
4.8.1 Dienstleisterseite.................................................................................................................. 43<br />
4.8.2 Kundenseite ......................................................................................................................... 43<br />
4.8.3 Erstellung der Vorlagen....................................................................................................... 44<br />
4.8.4 Abspeicherung der Vorlagen ............................................................................................... 45<br />
4.8.5 Aufruf der Vorlagen ............................................................................................................ 47<br />
4.9 Zusammenfassung ............................................................................................................... 48<br />
5. Analyse der Tycoon Business Objects.............................................................................. 49<br />
5.1 Verbindungsablauf............................................................................................................... 49<br />
5.2 Daten- und Aktionsobjekte.................................................................................................. 51<br />
5.3 Seitenobjekte ....................................................................................................................... 52<br />
5.4 Zusammenfassung ............................................................................................................... 53<br />
6. Design der Visualisierungskomponente........................................................................... 55<br />
6.1 Atomare Datentypen............................................................................................................ 55<br />
6.2 Komplexe Datentypen ......................................................................................................... 56<br />
6.2.1 Auswahltypen ...................................................................................................................... 57<br />
6.2.2 Dialoge................................................................................................................................. 60<br />
6.2.3 Sequence.............................................................................................................................. 61<br />
6.2.4 Rcd und Variant................................................................................................................... 63<br />
6.3 Anfragen .............................................................................................................................. 64<br />
6.4 Einordnung des Visualisierungsdienstes ............................................................................. 64
Inhaltsverzeichnis<br />
III<br />
6.4.1 Zentraler Visualisierungsdienst ........................................................................................... 65<br />
6.4.2 Integrierter Visualisierungsdienst........................................................................................ 68<br />
6.5 Nebenläufigkeit und Migration ........................................................................................... 69<br />
6.6 Zusammenfassung ............................................................................................................... 71<br />
7. Realisierung der Visualisierungskomponente................................................................. 73<br />
7.1 Starten des Visualisierungsservers ...................................................................................... 73<br />
7.2 Verwaltung der Konversationen.......................................................................................... 74<br />
7.3 Verbindungsablauf .............................................................................................................. 76<br />
7.3.1 Starten von Konversationen.................................................................................................79<br />
7.3.2 Migration ............................................................................................................................. 79<br />
7.3.3 Übertragung der Daten ........................................................................................................ 80<br />
7.4 Synchrone und asynchrone Kommunikation....................................................................... 81<br />
7.5 Erweiterungen der Tycoon Business Objects...................................................................... 83<br />
7.6 Vorarbeiten für die dynamische Visualisierung .................................................................. 83<br />
8. Zusammenfassung und Ausblick ..................................................................................... 85<br />
8.1 Zusammenfassung ............................................................................................................... 85<br />
8.2 Ausblick............................................................................................................................... 87<br />
A. Glossar................................................................................................................................ 91<br />
A.1 Glossar der Agententerminologie........................................................................................ 91<br />
A.2 Glossar der Business Conversations.................................................................................... 93<br />
B. Abkürzungen...................................................................................................................... 95<br />
C. Ausgewählte Programmbeispiele zur Visualisierung..................................................... 97<br />
C.1 Konversationsspezifikation Kreditvergabe.......................................................................... 97<br />
C.2 Konversationsspezifikation Portnummer holen................................................................... 99<br />
C.3 Regeldefinition .................................................................................................................... 99<br />
C.4 Typdefinition von agent.Conversation ................................................................................ 99<br />
C.5 Datentypdefinition in TBCContent.ti ................................................................................ 100<br />
C.6 Typdefinition von tbConv.Dialog...................................................................................... 100<br />
C.7 Kreditdaten Dialog Spezifikation ...................................................................................... 100<br />
C.8 Inhaltsobjekt eines Dialoges.............................................................................................. 101<br />
C.9 Generische Typermittlung ................................................................................................. 101
IV<br />
Inhaltsverzeichnis<br />
C.10 Tycoon Business Objects Seitenobjekt.............................................................................. 101<br />
C.11 Tycoon Business Objects Datenobjekte ............................................................................ 102<br />
C.12 Tycoon Business Conversations Aktionsobjekt ................................................................ 102<br />
Literaturverzeichnis ..................................................................................................................... 103
V<br />
Abbildungsverzeichnis<br />
2.1: Phaseneinteilung einer Kommunikation .................................................................................. 9<br />
2.2: Modellbildung für Informationssysteme................................................................................ 10<br />
2.3: Verfeinerung mittels sekundären Konversationen ................................................................. 13<br />
2.4: Spezifikation von Konversationen, Dialogen und Inhalten.................................................... 16<br />
2.5: Instanzen von Konversationen, Dialogen und Inhalten ......................................................... 18<br />
3.1: Aufbau des Tycoon Agentensystems ..................................................................................... 21<br />
3.2: Die Threads und Nachrichten eines Agenten......................................................................... 22<br />
3.3: Zuordnung der Agenten zu Orten und Domänen ................................................................... 24<br />
3.4: Logische Struktur der Agentenwelt ....................................................................................... 25<br />
3.5: Zustandsdiagramm einer Konversation.................................................................................. 26<br />
3.6: Objektstrukturmodell von Agent und Rolle........................................................................... 27<br />
4.1: Ansätze zur Datenvisualisierung............................................................................................36<br />
4.2: Objektstrukturmodell zum Zugriff auf Dialogobjekte ........................................................... 39<br />
4.3: Struktur der Visualisierungsvorlagen..................................................................................... 42<br />
4.4: Informationsfluß zur Visualisierung ...................................................................................... 46<br />
5.1: Verbindungsablauf der Visualisierung................................................................................... 50<br />
5.2: Aufbau eines Seitenobjektes .................................................................................................. 53<br />
6.1: Visualisierung atomarer Daten............................................................................................... 55<br />
6.2: Kennwortfeld ......................................................................................................................... 56<br />
6.3: Textbereich............................................................................................................................. 56<br />
6.4: Visualisierung der SingleChoice als Kombinationsfeld......................................................... 58<br />
6.5: Visualisierung der SingleChoice mit atomaren Daten ........................................................... 58<br />
6.6: Komplexe Optionsgruppe ...................................................................................................... 59<br />
6.7: Visualisierung der MultipleChoice ........................................................................................ 59<br />
6.8: Visualisierung von Dialogen mit Frames............................................................................... 60<br />
6.9: Zweidimensionale Tabelle ..................................................................................................... 61<br />
6.10: Mehrdimensionale Tabelle..................................................................................................... 62
VI<br />
Abbildungsverzeichnis<br />
6.11: Visualisierung einer Anfrage durch eine Schaltfläche ........................................................... 64<br />
6.12: Externer Visualisierungsdienst............................................................................................... 65<br />
6.13: Zentraler Visualisierungsagent............................................................................................... 66<br />
6.14: Integrierte Visualisierung....................................................................................................... 69<br />
6.15: Threads der integrierten Visualisierung ................................................................................. 70<br />
7.1: Hauptmenü des Agenten ........................................................................................................ 74<br />
7.2: Konversationsliste .................................................................................................................. 75<br />
7.3: Verbindungsablauf zur Visualisierung................................................................................... 76<br />
7.4: Zustandsdiagramm der Visualisierung beim Kunden ............................................................ 78<br />
7.5: Konversationsübersicht .......................................................................................................... 82<br />
C.1: Konversationsspezifikation Kreditvergabe ............................................................................ 98
1<br />
1. Kapitel<br />
Einführung und Motivation<br />
Wir leben in einer Zeit, in der immer leistungsfähigere Informationssysteme Unternehmen und<br />
Privatpersonen kostengünstig zur Verfügung stehen und in der gleichzeitig die Entwicklung der<br />
Nachrichtensysteme von geschlossenen, firmenbezogenen und zentralistisch aufgebauten<br />
Strukturen hin zu vernetzten [Ober91a], offenen, kommunikativen und dezentralen Systemen<br />
tendiert.<br />
Parallel dazu wandeln sich die betrieblichen Unternehmensprozesse durch fortschreitende<br />
Automatisierung und andere Entwicklungen wie Unternehmensfusionen und das Eingehen<br />
weltweiter wirtschaftlicher Verflechtungen, um dem sich verschärfenden nationalen und<br />
internationalen Wettbewerb gewachsen zu sein. Dieses wird durch die Entwicklung von Workflows<br />
[Jabl94] und Workflowmanagementsystemen [Jabl95] noch unterstützt.<br />
Diese Umstände machen es für die Unternehmen unabdingbar, den Betriebsablauf so effizient wie<br />
möglich mit Hilfe computergestützter Vorgangsbearbeitung zu gestalten. Das Erfordernis und der<br />
Wunsch vieler Anwender, anwendungsfreundliche Benutzerschnittstellen für die Kommunikation<br />
mit diesen Systemen zu schaffen, bleibt auch deshalb für die Informatik eine der großen<br />
Herausforderungen [Schm83, Hübn90].<br />
Einen maßgeblichen Anteil an dieser rasanten Entwicklung trägt das globale Netzwerk Internet,<br />
durch das die Zugriffsmöglichkeiten auf Informationen grundlegend verändert wurden [WBW96].<br />
Insbesondere die graphischen Benutzeroberflächen, die auch ungeübten Anwendern den Zugang zu<br />
Informationen ermöglichen, die anwenderorientierten Dienste wie elektronische Post und<br />
multimedialer Hypertext verursachen eine ständig zunehmende Informationsnutzung. Gleichzeitig<br />
ist die abrufbare Menge an Informationen um ein vielfaches größer als jemals zuvor [DDJ+97]. Der<br />
Informationsbedarf in den Unternehmen hat auch dazu geführt, daß über 50% der Benutzer das<br />
Internet für geschäftliche Belange nutzen [PK97].
2 1. Einführung und Motivation<br />
1.1 Das Tycoon Business Conversations - Projekt<br />
Durch technologische und marktwirtschaftliche Entwicklungen haben sich die Informationsstrukturen<br />
hin zu grundlegend veränderten, interaktiven, vernetzten, verteilten und teilautonomen<br />
Informationssystemen entwickelt [Blas90, Catt91]. Um die Anforderungen dieser<br />
Informationsstrukturen und -systeme zu unterstützen, sind neue Methoden und Werkzeuge<br />
erforderlich.<br />
Basierend auf dem Business Conversation-Modell (siehe Abschnitt 2) wurde ein Agentensystem<br />
realisiert [Joha97], das eine Lösung für die Anforderungen der neuen Informationsstrukturen<br />
darstellt. Der interaktive Bereich dieses Systems ist durch Konzepte und Methoden der<br />
Visualisierung zu lösen. Dieses ist der Hauptbestandteil dieser Arbeit.<br />
Das Ziel des Projektes "Tycoon Business Conversations" ist die Entwicklung kooperativer,<br />
mobiler, reaktiver und teilautonomer Agenten, die als Stellvertreter des Menschen im Netz wirken.<br />
Sie stellen auf diese Art eine personalisierte Verbindung der realen zur modellierten Welt dar. Der<br />
Stellvertreter repräsentiert den Benutzer und seine Autorität gegenüber anderen Agenten der<br />
modellierten Welt, indem er für ihn Entscheidungen trifft und Arbeiten ausführt.<br />
Beale und Wood [BW94] definieren Agenten folgendermaßen: „Ein Agent kann als eine relativ<br />
einfache, heterogene, autonome und kommunizierende Software-Komponente definiert werden;<br />
viele dieser Agenten existieren gleichzeitig und arbeiten zusammen, um eine Aufgabe für einen<br />
Benutzer zu erfüllen.“. Wenn Agenten aufgrund eigener Entscheidung in einem Netzwerk von<br />
einem Computer zu einem anderen migrieren können und in der Lage sind, sich dort mit ihrem<br />
Namen anzumelden, zählen sie zur Klasse der mobilen Agenten [Wagn97].<br />
Bei der Betrachtung der Business Conversations (BC) sind zwei verschiedene Realisierungen zu<br />
unterscheiden. Die erste Realisierung eines Agentensystems, das auf den BCs basiert, erfolgte von<br />
Johannisson [Joha97] mittels der Programmiersprache Tycoon und ist benannt als Tycoon Business<br />
Conversations (TBC). Die zweite Realisierung wird derzeit durch Wegner [Wegn98] und Ripp<br />
[Ripp98] vorgenommen. Sie benutzen dafür die objektorientierte Sprache Tycoon-2 [Wahl98,<br />
Weik98], die gegenüber Tycoon eine erheblich bessere Unterstützung des Internets bietet. Die<br />
vorliegende Arbeit beschränkt sich auf die erste Realisierung der TBCs in Tycoon, weil deren<br />
Implementation in Tycoon-2 erst kurz vor dem Abschluß der vorliegenden Arbeit erfolgte.<br />
Zu diesem Thema wurden im letzten Jahr mehrere Diplomarbeiten geschrieben. Richtsmeier<br />
[Rich97] hat einen Web Site Profiler entwickelt und Kruse [Krus97] eine Möglichkeit, die<br />
Kommunikation zwischen den Agenten zu protokollieren. Fecht [Fech97] beschäftigte sich in<br />
seiner Studienarbeit mit der Sicherheit im Internet unter Berücksichtigung des TBC-Modells.<br />
1.2 Das Agentensystem<br />
Durch die Implementierung eines verteilten, persistenten und kooperierenden Agentensystems<br />
durch Johannisson [Joha97], steht der Prototyp eines Systems zur Verfügung, das auf die neuen
1.3. Ein Anwendungsbeispiel 3<br />
Kommunikationsstrukturen zugeschnitten ist. Das schnellste und intelligenteste System aber nutzt<br />
nicht viel, wenn seine Ergebnisse nicht leicht verständlich sind, weil keine benutzerfreundliche<br />
Kommunikation stattfinden kann [Schm83]. Deshalb ist es angezeigt, eine Benutzerschnittstelle für<br />
das o.g. Agentensystem zu entwickeln, die es ermöglicht, die Daten in angemessener Form zu<br />
präsentieren.<br />
Die durch das Agentensystem realisierten Agenten sind als Stellvertreter des menschlichen<br />
Benutzers in der Lage, einfache Aufgaben, die dieser Benutzer an sie delegiert, zu erledigen. So<br />
können sie z.B. Treffen mit anderen Agenten vereinbaren und sie verwirklichen. Ebenso ist eine<br />
Kooperation mehrerer Agenten, also die Zusammenarbeit mehrerer Systeme, die gemeinsame Ziele<br />
verfolgen und in ihrer Arbeit aufeinander angewiesen sind [Maaß91], denkbar. Dabei<br />
repräsentieren die Agenten die Autorität ihrer Benutzer durch die von ihnen durchgeführten<br />
Aktionen und die getroffenen Entscheidungen. Die Agenten sind die aktiven Komponenten des<br />
Systems. Sie erfüllen ihre Aufgaben, indem sie Konversationen miteinander führen.<br />
1.3 Ein Anwendungsbeispiel<br />
Folgendes Anwendungsbeispiel wird in der Arbeit verwendet: Ein Kunde möchte bei einer Bank<br />
einen Kredit aufnehmen. Hierzu versorgt er einen seiner Stellvertreter-Agenten, mit den nötigen<br />
Informationen. Dieses sind u.a. die Kredithöhe, die Laufzeit und die monatliche Tilgung. Danach<br />
schickt er den Agenten zum Kreditinstitut. Dort nimmt der Agent in einer Konversation Kontakt<br />
mit dem Stellvertreter-Agenten des Sachbearbeiters auf. Dieser Agent prüft zuerst, ob sein<br />
Sachbearbeiter überhaupt zuständig ist. Ist der Sachbearbeiter nicht berechtigt, diesen Antrag zu<br />
bearbeiten, unter Umständen ist das Kreditvolumen zu hoch, so wird der Antrag gleich weiter an<br />
den Vorgesetzten geschickt, ohne dem Sachbearbeiter zur Kenntnis zu gelangen.<br />
Ist der Sachbearbeiter ermächtigt, den Kreditantrag zu bearbeiten, erscheint der Antrag in seiner<br />
Liste der auszuführenden Arbeiten. Er bearbeitet den Antrag, gewährt den Kredit, setzt einen<br />
Kreditzins fest und sendet ein Angebot ab. Falls er den Kredit verwehrt, übermittelt er eine Absage.<br />
Sein Stellvertreter protokolliert den Vorgang und sendet die Entscheidung des Sachbearbeiters an<br />
den Stellvertreter des Antragstellers.<br />
Der Stellvertreter des Antragstellers kann nun sofort zu seinem Auftraggeber zurückkehren oder, je<br />
nach den erhaltenen Befehlen, andere Banken aufsuchen, um vergleichende Angebote einzuholen.<br />
Sobald er wieder bei seinem Besitzer ist, trägt er sich in die Übersicht der auszuführenden Arbeiten<br />
ein. Der Antragsteller öffnet bei Gelegenheit diese Liste, arbeitet sie ab und nimmt so Kenntnis von<br />
den getroffenen Entscheidungen.<br />
Hat der Kunde einen ausreichenden Kredit, so ist es ihm im Rahmen seines Limits möglich, in<br />
Warenhäusern einzukaufen und dort entweder mit einer Kreditkarte zu bezahlen oder über seine<br />
Kundennummer dem Unternehmen die Abbuchung des Kaufbetrags zu ermöglichen.
4 1. Einführung und Motivation<br />
1.4 Zielsetzung dieser Arbeit<br />
Die bisher existierende Realisierung des Modells der Business Conversations läßt Benutzereingaben<br />
nur im Tycoon Top Level zu. Diese Realisierung ist wegen der Eingabe von Befehlen<br />
in Kommandozeilen weder benutzerfreundlich noch intuitiv. Deshalb soll das von Johannisson<br />
[Joha97] entwickelte Agentensystem um eine Visualisierungskomponente erweitert werden, damit<br />
eine benutzerfreundliche Ein- und Ausgabe von Daten erreicht wird.<br />
Weiterhin ist es Ziel der Arbeit, eine an das vorhandene Modell der Business Conversations<br />
gebundene Benutzerschnittstelle zu schaffen, die das benutzerfreundliche Darstellen, Erfassen und<br />
Ändern der Daten von Geschäftsprozessen zuläßt. Außerdem sollen mit dieser<br />
Benutzerschnittstelle zum Agentensystem die Aktionen (requests) des Systems ausgelöst werden<br />
können. Da es durch das Internet Unternehmen und privaten Nutzern möglich geworden ist, Daten<br />
aus Arbeitsabläufen mit diesem Medium weltweit darzustellen, wird die<br />
Visualisierungskomponente die Möglichkeit bieten, Daten in HTTP-Clients anzuzeigen. Die Arbeit<br />
wird Voraussetzungen für die Visualisierung benennen, mögliche Ansätze diskutieren und mit<br />
einem Prototyp die Durchführbarkeit der statischen Visualisierung von Tycoon Business<br />
Conversations aufzeigen.<br />
Die Arbeit soll überdies als Test der Tycoon Business Conversations (TBC) dienen und<br />
Erkenntnisse darüber vermitteln, welche Komponenten für eine Visualisierung der TBCs<br />
erforderlich sind. Weiterhin liefert sie Aufschlüsse darüber, welche Komponenten in das<br />
Basissystem integriert und welche Voraussetzungen erfüllt werden müssen, damit die dynamische<br />
Darstellung der TBCs ermöglicht werden kann. Aus diesen Gründen wird, um eine große<br />
Bandbreite an Anwendungen abdecken zu können, ein möglichst allgemeines Modell gestaltet und<br />
ein System von Visualisierungsvorlagen analysiert, das eine effektive dynamische Darstellung der<br />
TBCs ermöglicht.<br />
Die Sicherheitsaspekte, die bei der Verwendung der TBCs im Internet zu beachten sind, bilden den<br />
Inhalt der Arbeit von Fecht [Fech97]. Sicherheit in Bezug auf Tycoon wurde bereits in [Kass95,<br />
Will96] behandelt. Die Autorisierungs- und Authentifizierungsaspekte, die bei einem komplexen<br />
System zu beachten sind, werden in den Arbeiten [LAMP81, Oppl92] dargelegt.<br />
1.5 Aufbau der Arbeit<br />
Das Kapitel 2 "Das Modell der Business Conversations" beschreibt den Language/Action-<br />
Ansatz, der dem Modell zugrundeliegt, und die verschiedenen Komponenten, die notwendig sind,<br />
um ihn in ein Computermodell umsetzen zu können. Aufbauend auf dem Modell wird in Kapitel 3<br />
"Das Agentensystem" die Umsetzung des Modells mit Hilfe der Programmiersprache Tycoon<br />
thematisiert. Dabei werden diejenigen Komponenten der Realisierung, die für die Visualisierung<br />
benötigt werden, eingehend betrachtet.<br />
Im Kapitel 4 "Grundlagen und Anforderungen der Visualisierung" sind notwendige Merkmale<br />
und einschränkende Bedingungen für eine Datenvisualisierung beschrieben. Dazu gehören u.a. die<br />
durch das Hypertext Transfer Protocol gesetzten Rahmenbedingungen. Das Kapitel 5 "Analyse der
1.5. Aufbau der Arbeit 5<br />
Tycoon Business Objects" untersucht, ob bzw. in welcher Weise das System der Tycoon Business<br />
Objects für die Visualisierung benutzt werden kann.<br />
Aufbauend auf den Anforderungen an die Datenvisualisierung und der Analyse der Tycoon<br />
Business Objects wird in Kapitel 6 das Design der Visualisierungskomponente erläutert. Hierbei<br />
werden Verfahren und Schnittstellen der Visualisierung benannt. Danach folgt in Kapitel 7<br />
"Realisierung der Visualisierungskomponente" die Beschreibung der prototypischen<br />
Realisierung.<br />
Die Zusammenfassung in Kapitel 8 zieht eine Bilanz der geleisteten Arbeit. Der Ausblick weist<br />
auf die Entwicklungsmöglichkeiten des Systems hin.
7<br />
2. Kapitel<br />
Das Modell der Business Conversations<br />
In diesem Kapitel wird das Modell der Business Conversations vorgestellt. Das Modell wurde 1996<br />
in Zusammenarbeit von Matthes [Matt97a, Matt97b, DDJ+97], Johannisson [Joha97], Richtsmeier<br />
[Rich97], Kruse [Krus97] und dem Verfasser entwickelt. Die Ausführungen entsprechen im<br />
wesentlichen denen von Johannisson.<br />
Zunächst wird in diesem Kapitel der Language/Action-Ansatz [Wino87, FGHW88] vorgestellt, der<br />
die Basis für das Kooperationsmodell darstellt, anschließend werden die Konzepte erläutert, die<br />
hinter diesem Modell stehen. Eine ausführliche Beschreibung der Realisierung dieses Ansatzes<br />
folgt in Kapitel 3.<br />
2.1 Das Kooperationsleitbild<br />
Das Modell der Business Conversations wurde aufbauend auf dem Language/Action-Ansatz<br />
[Wino87, FGHW88] entwickelt. Der Language/Action-Ansatz basiert auf der Sprechakttheorie, die<br />
im Rahmen der sprachanalytischen Philosophie entwickelt, von Austin [Aust62] eingeführt und<br />
von Searle [Sear69] ergänzt wurde. Die Sprechakttheorie betrachtet die Sprache als die wichtigste<br />
Größe für kooperative Zusammenarbeit zwischen Menschen.<br />
Die Spechakttheorie besagt, daß sich sprachliche Aussagen, die Sprechakte, hinsichtlich ihrer<br />
Verwendung in fünf disjunkte Typklassen einteilen lassen:<br />
• assertive Äußerungen (Feststellungen)<br />
• direktive Äußerungen (Aufforderungen)<br />
• kommissive Äußerungen (Versprechen)<br />
• expressive Äußerungen (Ausdruck von Meinungen)<br />
• deklarative Äußerungen (Erklärungen)<br />
Nach Searle ist eine Aussage dabei unmittelbar an ihre Bedeutung gekoppelt. Sprechakte werden<br />
daher als Mitteilungen von legalen Zustandsänderungen ihres Sprechers innerhalb einer<br />
Konversation betrachtet.
8 2. Das Modell der Business Conversations<br />
Arbeiten aus dem Bereich der computerunterstützten Gruppenarbeit von Fernando Flores und Terry<br />
Winograd [Wino87, FGHW88] identifizieren die zwei wesentlichen Arten von Sprechakten, die in<br />
der Domäne von Geschäftsprozessen eine Rolle spielen: Das sind zum einen die Conversations for<br />
Possibilities (CfP) und zum anderen die Conversations for Action (CfA). Eine CfA ist eine Folge<br />
von Aufforderungen und Versprechen, die direkt auf eine gemeinsame Aktivität der<br />
Gesprächspartner ausgerichtet ist. Dabei ist innerhalb einer CfA die Reihenfolge der einzelnen<br />
Sprechakte, d.h. die erlaubten Gesprächstransitionen, unter den Gesprächspartnern festgelegt.<br />
Werden in einer Konversation keine Verpflichtungen eingegangen, sondern wird die "Funktion<br />
eines Managers'' wahrgenommen, sprechen Winograd und Flores vom Typ einer CfP. In diesem<br />
Fall werden in einer Konversation nur Feststellungen, Meinungen oder Erklärungen ausgetauscht.<br />
Bei keinem Partner wird durch einen Sprechakt eine Aktion impliziert.<br />
Eine CfA oder CfP strukturiert und koordiniert einzelne Sprechakte. Durch diese Sprechakte bilden<br />
die beteiligten Kommunikationspartner eine gemeinsame Historie, vor deren Hintergrund neue<br />
Sprechakte erzeugt und interpretiert werden. Bei einer CfA, deren Konzept dem<br />
Kooperationsmodell der Business Conversations zugrunde liegt, vereinbaren die Partner<br />
wechselseitig zukünftige Aktionen, die direkt an die geäußerten Sprechakte der jeweiligen Partner<br />
gekoppelt sind.<br />
2.2 Grundlagen<br />
Das Modell der Business Conversations bildet einen Rahmen für die anwendungsnahe<br />
Modellierung von Informationssystemen auf der Grundlage von Sprechakten. Es definiert eine<br />
Terminologie und eine Semantik, mit der Informationssysteme aus der Sicht von Sprechakten<br />
modelliert und spezifiziert werden können. Dabei orientiert es sich begrifflich an der Domäne der<br />
Geschäftsprozesse und erfaßt neben den statischen Aspekten eines Dienstes gleichermaßen die<br />
dynamische Interaktion von Kunde und Dienstleister über die Zeit.<br />
Basis des Modells ist die Annahme, daß die Kommunikationsmuster der Sprechakte universell<br />
sind, das bedeutet, sie sind von der Art der Akteure (Software, Menschen) und von den<br />
verwendeten Kommunikationsmedien und -protokollen unabhängig.<br />
Sowohl die Interaktion zwischen menschlichen Akteuren als auch die zwischen Menschen und<br />
maschinellen Akteuren oder gar die zwischen zwei maschinellen Akteuren ist innerhalb des<br />
Modells transparent, wird also gleich behandelt.<br />
Das Modell der Business Conversations beschreibt die zielgerichtete Kommunikation zwischen<br />
zwei Akteuren, die in den Rollen Kunde und Dienstleister handeln. Die Festlegung, welche Rolle<br />
von welchem Akteur eingenommen wird, kann, je nach der persönlichen Blickrichtung,<br />
unterschiedlich ausfallen. Ein Beispiel hierfür ist die Beziehung zwischen Diplomand und<br />
Betreuer. Aus der einen Sichtweise heraus ist der Diplomand Kunde des Betreuers und erhält als<br />
Dienstleistung die Betreuung der Arbeit. Aus der anderen Sichtweise ist es das vorrangige Ziel der<br />
Diplomarbeit, eine Arbeit zu erbringen, die im universitären Bereich weiterverwendet werden<br />
kann. Dabei ist die Universität der Kunde des Diplomanden, dessen Dienstleistung es ist, eine<br />
entsprechende Arbeit zu erstellen.
2.2. Grundlagen 9<br />
Die Business Conversations basieren auf der Theorie der Conversations for Action (CfA), die<br />
besagt, daß eine Kommunikation mit dem Ziel einer Aktion zwischen einem Kunden und einem<br />
Dienstleister in einen Zyklus mit vier Phasen unterteilt werden kann.<br />
Annahme<br />
Anfragephase<br />
Übereinkunftsphase<br />
Kunde<br />
Dienstleister<br />
Rückmeldephase<br />
Leistungsphase<br />
Erfüllung<br />
Abbildung 2.1: Phaseneinteilung einer Kommunikation<br />
Die Beziehung zwischen einem Kunden und einem Dienstleister folgt immer dem skizzierten<br />
Ablauf: Als erstes wird der Kunde in der Anfragephase beim Dienstleister unverbindlich nach einer<br />
Dienstleistung anfragen. Am Ende dieses Schrittes steht dann, in der zweiten Phase, der<br />
Übereinkunftsphase, die Verhandlung mit dem Dienstleister, einen gewählten Dienst tatsächlich<br />
verbindlich zu erbringen. Das Erbringen der vereinbarten Leistung geschieht in der Leistungsphase,<br />
an deren Ende aus der Sicht des Dienstleisters die geforderte Leistung erbracht ist. In der vierten<br />
Phase, der Rückmeldephase, wird der Kunde dem Dienstleister mitteilen, ob die erbrachte Leistung<br />
seinen Anforderungen entspricht.<br />
Nur wenn auch die letzte Phase erfolgreich abgeschlossen ist, wurde das gemeinsame Ziel von<br />
Kunde und Dienstleister, und damit das Ziel ihrer Kommunikation, erreicht. Der Austausch von<br />
Sprechakten innerhalb dieser vier Phasen wird unter dem Begriff der Konversation<br />
zusammengefaßt, welcher sich mithin immer auf einen konkreten Gegenstand, die Dienstleistung<br />
oder Aktion, bezieht.<br />
Der Zyklus kann durch den Verzicht auf einzelne Phasen vereinfacht werden, wenn die betrachtete<br />
Kunde-Dienstleister-Beziehung dies erlaubt. Zum Beispiel können die Phasen Anfrage und<br />
Übereinkunft zusammengefaßt werden. Dabei bleiben jedoch sowohl die Reihenfolge der Phasen<br />
als auch der Zyklus erhalten.<br />
Das Modell der Business Conversations ergänzt bereits etablierte Modelle (wie z.B. Object<br />
Modelling Technique, Entity-Relationship-Modell), welche die Modellierung von<br />
Informationssystemen nach innen gestatten (siehe Abbildung 2.2). Diese Modelle können aus der
10 2. Das Modell der Business Conversations<br />
Sicht einer Anwendung als systemnahe Modelle bezeichnet werden. Sie strukturieren<br />
Systemkomponenten daten- bzw. objektzentriert, d.h. auf Entitäts- oder Objektebene.<br />
Die Business Conversations stellen den kooperativen Charakter eines Informationssystems in den<br />
Vordergrund. Durch die Betrachtung der von dem System nach außen erbrachten<br />
Dienstleistungsprozesse wird eine anwendungsnahe Modellierung des Systems unterstützt.<br />
Hierdurch wird der Abstand zwischen der realen Welt und ihrer Abbildung durch Informationssysteme<br />
verkleinert. Das Modell versucht nicht, Informationssysteme auf der Ebene von<br />
Objekten oder Klassen zu beschreiben. Vererbungs-, Aggregations- oder Generalisierungsbeziehungen<br />
von Objekten innerhalb des betrachteten Informationssystems müssen<br />
durch andere, auf diesen Zweck spezialisierte Modelle beschrieben werden.<br />
Object<br />
Modelling<br />
Technique<br />
Reale Welt:<br />
- Geschäftsprozesse<br />
- Akteure<br />
- Information<br />
Computersysteme:<br />
- Prozesse<br />
- Objekte<br />
- Daten<br />
Business<br />
Conversations<br />
Entity-<br />
Relationship<br />
Diagramme<br />
Abbildung 2.2: Modellbildung für Informationssysteme
2.3. Konzepte 11<br />
2.3 Konzepte<br />
Ein integraler Bestandteil des Business Conversation-Modells ist ein vereinbartes Verarbeitungsmodell,<br />
das die Interaktion zwischen zwei Partnern definiert und ihre jeweiligen Rollen<br />
innerhalb der Interaktion, d.h. innerhalb eines Gesprächs, festlegt. Dieses Verarbeitungsmodell<br />
muß von beiden Gesprächspartnern eingehalten werden, um den korrekten Fortgang des Gesprächs<br />
zu gewährleisten.<br />
Um die Einhaltung des Modells zu gewährleisten wird jeder Konversation eine Konversationsspezifikation<br />
(siehe Abschnitt C.1) zugrundegelegt. Diese Spezifikation enthält alle möglichen<br />
Schritte jeder Phase eines Sprechaktes. Ein derartiger Schritt wird fortan als Dialog bezeichnet.<br />
Außerdem ist der Inhalt jedes Dialogs in Form von Variablenvereinbarungen definiert. Die<br />
Zustandsübergänge zwischen den Dialogen sind als Anfragen (requests) in der Spezifikation<br />
enthalten. Dadurch entspricht ein Dialog einem Formular in der realen Welt. Der Inhalt des<br />
Dialoges entspricht den Formularfeldern und die Anfragen sind mit den Aktionen vergleichbar, die<br />
mit dem Formular durchgeführt werden können. Wird ein Dialog nicht zurückgesandt, so wird die<br />
Konversation, ebenso wie in der realen Welt, nicht fortgeführt.<br />
2.3.1 Das Verarbeitungmodell von Konversationen<br />
In einer Konversation wird jede zielgerichtete Interaktion (d.h. jeder mögliche Sprechakt der<br />
Language/Action-Perspektive) mit Dialogen realisiert.<br />
Für die Dialoge zweier Instanzen wird angestrebt, ein möglichst genaues Abbild des gewohnten<br />
Arbeitskontextes zu erhalten. Dieses gilt um so mehr, je mehr Menschen an diesen Dialogen<br />
beteiligt sind. Hierzu werden die bekannten Tätigkeiten soweit wie möglich auf Mensch-Maschine-<br />
Interaktionen abgebildet und die Informationen so strukturiert, daß der jeweilige<br />
Kommunikationspartner die im Sprechakt enthaltenen Information seinem eigenen<br />
Ausführungskontext zuordnen kann. Dafür entwickelt der Benutzer ein mentales Modell von seiner<br />
Arbeitsaufgabe und deren Lösung im Dialog mit dem Rechner [Hübn90].<br />
Der Inhalt der Dialoge ist festgelegt und durch den Verwendungszweck bedingt. In den durch die<br />
Konversation gesetzten Grenzen können sie allerdings von allen beteiligten Partnern genutzt<br />
werden, sei es durch Ausfüllen der vorgegebenen Freifelder oder durch Inspektion des<br />
vorhandenen Inhalts. Durch die Inhalte der Dialoge werden von der ausgebenden Seite mögliche<br />
Folgeaktionen impliziert, die mit dem Dialog in direktem Zusammenhang stehen. Auf diese Weise<br />
repräsentiert ein Dialog einen bestimmten Punkt in einer längeren Beziehung zwischen zwei<br />
Partnern, der Schlüsse auf gültige Fortsetzungen der Beziehung in die Zukunft ermöglicht.<br />
Es existieren keine allgemeingültigen Dialoge, die für eine Vielzahl von Konversationen<br />
vorgesehen sind und nur auf der Grundlage eines Rollenmodells, in das die an der Konversation<br />
Teilnehmenden eingeordnet sind, ausgewertet werden. Dieses ließe sich zwar mit dem Modell der<br />
Visualisierungsvorlagen (siehe Abschnitt 4.8) über Rollenprofile realisieren, spricht aber gegen die<br />
Auffassung einer zielgerichteten Kommunikation und damit gegen das Modell der Business<br />
Conversations.
12 2. Das Modell der Business Conversations<br />
Jeder Dialog beschreibt indirekt einen Zustand in einer Konversation zwischen einem Kunden und<br />
einem Dienstleister. Im Gegensatz zur zeitlich ausgedehnten Konversation besitzt ein Dialog keine<br />
nach außen sichtbaren Zwischenzustände. Die Zustandsübergänge, d.h. der Beginn eines neuen<br />
Dialogs innerhalb einer Konversation, werden durch Auswertung und Verarbeitung einer Anfrage<br />
des Kunden beim Dienstleister durchgeführt.<br />
Dabei ist der Kunde derjenige Akteur, der den Zeitpunkt des Zustandsüberganges bestimmt: Indem<br />
er eine Anfrage an den Dienstleister stellt, führt dieser seine mit der Anfrage assoziierte<br />
Bearbeitungsregel aus und generiert einen neuen (Antwort-)Dialog für den Kunden.<br />
Die Menge der möglichen Anfragen, die ein Kunde ausgehend von einem Zustand einer<br />
Konversation an einen Dienstleister richten kann, ist durch den Dialog bestimmt, welcher den<br />
aktuellen Zustand der Konversation repräsentiert. Dies entspricht in der Formularanalogie der<br />
Möglichkeit, in einem vorgegebenen Formular einen Kundenwunsch ankreuzen zu können.<br />
Es sind darüber hinaus genau zwei Anfragen definiert, die nicht in der Menge der Anfragen<br />
enthalten sind, die ein Dialog explizit vorgibt:<br />
Die initiale Anfrage: Ein Kunde muß eine Konversation mit einem Dienstleister beginnen können,<br />
ohne sich vorher bereits in einer Konversationsbeziehung mit ihm zu befinden. In diesem Fall<br />
kann der Kunde genau eine Anfrage an den Dienstleister stellen, nämlich die nach der<br />
Eröffnung der Konversation. Die Spezifikation dieser Anfrage ist zusammen mit dem<br />
zugeordnetem, initialen Dialog Teil des Business Conversation-Systems.<br />
Eine spezielle Anfrage nach dem Abbruch der Konversation: Diese Anfrage löst ein Kunde implizit<br />
aus, wenn er innerhalb einer vom Dienstleister vorgegebenen Zeitspanne keine Anfrage an den<br />
Dienstleister stellt. Tatsächlich ist dies keine wirklich vom Kunden stammende Anfrage,<br />
sondern wird vom System des Dienstleisters im Namen des Kunden generiert. Außerdem ist<br />
dem Kunden der explizite Abbruch der Konversation erlaubt. Die Spezifikation dieser Anfrage<br />
ist ein Teil des Business Conversation-Systems.<br />
Eine Konversation zwischen einem Kunden und einem Dienstleister wird mit diesen Mechanismen<br />
auf eine festgelegte Abfolge von Dialogen und Anfragen übertragen. Der Dienstleister gibt dabei<br />
jeweils einen Dialog vor, den der Kunde erhält und so bearbeiten kann. Der Kunde ist jedoch<br />
immer der Initiator einer Konversation und der Dienstleister der Akzeptor. Während einer<br />
Konversation sind Kunde und Dienstleister abwechselnd Sprecher und Zuhörer.<br />
Auf diese Weise werden Ketten aus Ereignissen und Aktionen [DHL90] gebildet. Die beiden<br />
Partner der Konversation definieren Bearbeitungsregeln, mit denen sie auf die Ereignisse des<br />
jeweils anderen Partners reagieren und dadurch Aktionen ausführen. Die gültigen Transitionen<br />
einer Konversation, wie sie durch die Regeln implementiert werden, sind durch eine zugehörige<br />
Spezifikation bestimmt (siehe auch Abschnitt 2.3.4).<br />
Menschliche Akteure simulieren Kundenregeln, indem sie den Inhalt der Dialoge lesen und<br />
entsprechend ihren Wünschen verändern. Maschinelle Kunden besitzen einen Programmkode für<br />
die Regeln, der die Inhalte der Dialoge entsprechend der kodierten Vorschrift interpretiert bzw.<br />
abändert. Die Regeln des Kunden enden immer mit der Übermittlung des eventuell veränderten<br />
Dialogs zusammen mit einer Anfrage.
2.3. Konzepte 13<br />
Ebenso muß der Dienstleister auf die Dialoge und Anfragen des Kunden entsprechend einer Regel<br />
reagieren. Seine Aktion endet immer damit, daß er einen neuen Dialog, den er bei Bedarf vorher<br />
mit inhaltlichen Vorgaben gefüllt hat, an den Kunden übermittelt. Durch die wechselseitige<br />
Ausführung einer Kundenregel und einer Dienstleisterregel wird jede Konversation gemäß der<br />
zugrundeliegenden Spezifikation systematisch entwickelt.<br />
Innerhalb einer Konversation kann ein Dienstleister, dann jedoch in der Rolle eines Kunden, eine<br />
weitere Konversation mit einem anderen Dienstleister initiieren, sofern das zur Ausführung seiner<br />
Bearbeitungsregel notwendig ist. Dieses führt zum Konzept der sekundären Konversation.<br />
2.3.2 Sekundäre Konversationen<br />
Mit der Technik der sekundären Konversation ist eine Mischform der Beziehung zwischen Kunde<br />
und Dienstleister möglich (siehe Abbildung 2.3). Dabei wird der Dienstleister A 2 innerhalb einer<br />
Konversation mit einem Kunden A 1 selbst zum Kunden eines weiteren Dienstleisters A 3 .<br />
A primäre<br />
1 Konversation A sekundäre<br />
A 2 Konversation<br />
3<br />
Abbildung 2.3: Verfeinerung mittels sekundären Konversationen<br />
Konversationen werden in synchrone und asynchrone Konversationen unterteilt. Synchrone<br />
sekundäre Konversationen unterbrechen die initiierende primäre Konversation für die Dauer ihrer<br />
Ausführung. Sie bilden damit eine eingeschobene Konversation, bei der ein impliziter<br />
Rollenwechsel des Akteurs stattfindet. Wird eine sekundäre Konversation asynchron ausgeführt, ist<br />
keine Unterbrechung der primären Konversation notwendig. Eine asynchrone sekundäre<br />
Konversation verhält sich wie eine primäre, kann jedoch die übergeordnete Konversation<br />
verzögern; die Atomarität der Bearbeitungsregel wird aufgehoben.<br />
2.3.3 Finale Dialoge<br />
Jede Konversation besitzt eine definierte Menge von finalen Dialogen, die sie erreichen kann. Jeder<br />
Dialog ohne einen Folgedialog, d.h. ohne eine mögliche ausgehende Anfrage, ist ein finaler Dialog<br />
der Konversation. Die Konversationsbeziehung zwischen den beteiligten Partnern wird bei<br />
Erreichen eines solchen Dialogs beendet.<br />
Das Modell definiert einen Finaldialog für das erfolgreiche Ende jeder Konversation (d.h. sowohl<br />
Kunde als auch Dienstleister bestätigen das erfolgreiche Erreichen des gemeinsamen Ziels) sowie<br />
einen finalen Fehlerdialog. Dieser Fehlerdialog ist implizit von jedem Dialog einer Konversation<br />
aus erreichbar, ohne daß dies in der Spezifikation vermerkt werden muß. Dieser Dialog bietet die<br />
Möglichkeit, Ausnahmebehandlungen in den Bearbeitungsregeln für Konversationen vorzusehen.<br />
Eine solche Ausnahme kann von beiden Partnern jederzeit in einer Konversation ausgelöst werden.
14 2. Das Modell der Business Conversations<br />
Die entsprechende zugehörige Anfrage, durch die der Kunde den Übergang in einen<br />
Ausnahmezustand anzeigt, wird durch das Modell definiert.<br />
Die Entscheidung, unter welchen Umständen welcher Dialog welcher Phase aus Abbildung 2.3<br />
zugeordnet wird, ist eine Designentscheidung bei der Anwendungsentwicklung. Das Phasenmodell<br />
kann von einer Anwendung genutzt werden, um Punkte innerhalb einer Konversation mit dem<br />
Partner zu vereinbaren, mit deren Erreichen beide Partner verbindliche Aussagen über den<br />
Gesprächsverlauf treffen.<br />
Das Modell der Business Conversations verwendet zwei Beschreibungsebenen für Konversationen,<br />
die im Folgenden getrennt vorgestellt werden:<br />
1. Die Ebene der Konversationsspezifikationen: Auf dieser Ebene wird die Struktur möglicher<br />
Konversationen definiert. Diese Ebene entspricht der Typebene einer Programmiersprache, mit<br />
dem Unterschied, daß Konversationsspezifikationen eine Laufzeitrepräsentation besitzen.<br />
Konversationsspezifikationen bilden Fabriken (engl. factories), welche die Erzeugung von<br />
Konversationen, ihren Instanzen, steuern.<br />
2. Die Ebene der Konversationsinstanzen: Gegenstand dieser Ebene sind konkrete Konversationen,<br />
die zwischen einem Kunden und einem Dienstleister stattfinden. Konversationen<br />
sind immer konform zu einer zugehörigen Konversationsspezifikation. Sie werden anhand<br />
dieser Spezifikation erzeugt und sind an ein Kunde-Dienstleister-Paar gebunden.<br />
2.3.4 Konversationsspezifikationen<br />
Die Abbildung 2.4 zeigt ein Modell für Spezifikationen von Konversationen. Das Diagramm ist in<br />
der OMT-Notation [RBP+91] dargestellt.<br />
Konversationsspezifikationen legen fest, welche Struktur Konversationsobjekte im Falle einer<br />
Instantiierung haben sollen. Sie umfassen dabei sowohl den statischen Teil einer Konversation, also<br />
die Datenmodellierung für den Informationsaustausch, als auch den dynamischen Teil der<br />
Beziehung zwischen Kunden und Dienstleistern, die Prozeßmodellierung. Spezifikationen sind<br />
inspizierbar: Beide Partner können untersuchen, ob die Konversation in ihren jeweiligen Kontext<br />
und zu ihrer Sicht des Kooperationsziels paßt.<br />
Nach diesem Modell enthält jede Konversationsspezifikation (siehe Anhang C.1) mehrere<br />
Dialogspezifikationen. Eine dieser Dialogspezifikationen ist als initialer Dialog ausgezeichnet, jede<br />
Konversation dieses Typs beginnt mit diesem Dialog. Dialogspezifikationen bestehen aus<br />
Inhaltsspezifikationen und Spezifikationen für Anforderungen. Jede Anforderungsspezifikation ist<br />
über die possibleReplies-Beziehung mit der Spezifikation des nachfolgenden Dialogs verbunden.<br />
Die Markierung ellipses zeigt an, daß sich die Aktion, die beim Dienstleister auf die Auswertung<br />
des Dialoges folgt, über mehrere Dialoge hinziehen kann, deren Spezifikation nicht sichtbar sind.<br />
Dieses ermöglicht es dem Dienstleister, Teile der Spezifikation zu verbergen und sie bei Bedarf zu<br />
ändern, ohne die zukünftigen Kunden informieren zu müssen.<br />
Die Inhalte können auf verschiedene Art und Weise spezifiziert werden. Zum einen gibt es<br />
einfache Basistypen wie ganze Zahlen, rationale Zahlen, Zeichenketten, einen Datumstyp und
2.3. Konzepte 15<br />
einen Spezifikationsobjekttyp. Zum anderen können komplexe Inhalte mit Records, Varianten,<br />
Auswahllisten oder Sequenzen modelliert werden, wobei auch verschachtelte Inhalte zugelassen<br />
sind. Für alle Inhaltstypen existieren Operationen zum Erzeugen der entsprechenden<br />
Spezifikationsobjekte. Die Operationen auf den Spezifikationsobjekten sind in der Abbildung aus<br />
Gründen der Übersichtlichkeit nicht dargestellt.<br />
Auf der Ebene der Konversationsspezifikationen können Meta-Dienste erstellt werden, die auf<br />
diesen Spezifikationsobjekten operieren. In erster Linie sind das grafische Editoren oder Anzeiger,<br />
Modellverifikatoren und Spezifikationsmakler. Wichtiger Nutzen der Spezifikationen ist ihre<br />
Überprüfbarkeit, durch die eine gesicherte maschinelle Abwicklung von Konversationen unter<br />
Beibehaltung der Autonomie der Partner ermöglicht wird.<br />
Alle Spezifikationen sind sowohl in der Implementationssprache als auch im eigenen Typsystem<br />
Objekte erster Klasse. Sie können somit benannt, gespeichert oder verschickt werden und besitzen<br />
eine Laufzeitrepräsentation.<br />
Die atomaren Inhaltsobjekte Integer (Int), reelle Zahl (Real), Zeichenkette (String) und Datum<br />
(Date) stellen gegenüber bekannten Programmiersprachen keine Besonderheit dar. Sequence ist<br />
eine Liste von Elementen; SingleChoice ermöglicht die Auswahl eines Elements aus einer Liste<br />
von Elementen; MultipleChoice ist der Typ für die Auswahl mehrerer Elemente aus einer Liste von<br />
Elementen. Zu beachten ist hierbei, daß die Elemente dieser Listen sowohl von atomarem Typ als<br />
auch von komplexem Typ sein können. Die interne Realisierung erfolgte über eine Iteration. Der<br />
Record Typ (Rcd) ist ebenfalls als Iteration realisiert. Der variante Typ (Variant) letztendlich<br />
bedarf einer näheren Erläuterung, da auf die Visualisierung dieses Typs in Abschnitt 6.2.4 noch<br />
besonders eingegangen werden soll. Er wird deshalb in Abschnitt 4.3 ausführlicher behandelt.
16 2. Das Modell der Business Conversations<br />
TBCSpec<br />
name :String<br />
initialDialogSpec<br />
dialogSpecs<br />
possibleReplies<br />
DialogSpec<br />
name :String<br />
possibleRequests<br />
contentSpec<br />
RequestSpec<br />
name :String<br />
ellipses :Bool<br />
TBCContentSpec<br />
spec<br />
Int<br />
Real<br />
String<br />
Date<br />
MultipleChoice<br />
SingleChoice<br />
Variant<br />
Rcd<br />
elements<br />
1+<br />
CSpec<br />
Dialog<br />
Sequence<br />
NamedContentSpec<br />
name :String<br />
Abbildung 2.4: Spezifikation von Konversationen, Dialogen und Inhalten
2.3. Konzepte 17<br />
2.3.5 Konversationsinstanzen<br />
Die nachfolgende Abbildung 2.5 zeigt den Aufbau von Instanzen von Konversationen und den<br />
Zusammenhang mit Spezifikationen.<br />
Von einer Konversationsspezifikation können beliebig viele Konversationen instantiiert werden.<br />
Jede Konversation befindet sich zu einem Zeitpunkt in einem Quadranten der Ellipse aus<br />
Abbildung 2.1 und erlaubt den Zugriff auf den aktuellen Dialog (current-dialog Beziehung). Jeder<br />
Dialog wird innerhalb der Konversationsspezifikation durch eine Dialogspezifikation inhaltlich<br />
vorgegeben. Basierend auf den Dialogspezifikationen werden konkrete Dialoge erzeugt. Aus dem<br />
Dialog heraus ist der Inhalt, der aus der Dialogspezifikation erzeugt wurde, erreichbar. Die<br />
Objektstruktur für die Instanzen der Inhaltsspezifikationen sind in Abbildung 2.5 zu sehen. Für<br />
jeden Inhaltstyp sind bestimmte Operationen definiert, an denen sich die Funktionalität der<br />
Visualisierung in Abschnitt 4.3 ausrichtet.<br />
1. Der Wert der Int, Real, String, Date, SingleChoice, MultipleChoice, Cspec und Dialog Objekte<br />
kann gelesen und gesetzt werden.<br />
2. In Listenobjekten für eine einfache Auswahl (SingleChoice) können die Alternativen gesetzt<br />
werden, man kann alle Alternativen auslesen und genau eine davon auswählen. Außerdem<br />
kann die gewählte Alternative bestimmt werden. In Listenobjekten für mehrere<br />
Wahlmöglichkeiten (MultipleChoice) enthält der Zustand beliebig viele Selektionen.<br />
Zusätzlich zu den Operationen bei Listenobjekten mit einfacher Auswahl können gewählte<br />
Alternativen wieder deselektiert werden.<br />
3. In einem Record-Objekt (Rcd) können die aggregierten Inhaltsobjekte über ihren Namen<br />
referenziert werden. In einem varianten Record-Objekt (Variant) können zusätzlich gekapselte<br />
Varianten ausgewählt oder die Auswahl gelesen werden.<br />
4. Die durch Objekte des Sequenztyps aggregierten Objekte (Sequence) sind nicht direkt in das<br />
Dialogobjekt eingebunden. Stattdessen stellen Sequenz-Objekte Methoden für den Zugriff auf<br />
Massendatenbestände durch Klienten zur Verfügung. Die Erzeugung von Sequenzobjekten<br />
erfordert die Konkretisierung der von der Objektschnittstelle geforderten abstrakten<br />
Zugriffsfunktionen auf den Datenbestand, der von der Sequenz repräsentiert werden soll<br />
[Joha97].
18 2. Das Modell der Business Conversations<br />
Agent(A)<br />
state() :A<br />
self() :agent.T<br />
migrateTo(...) :Ok<br />
meet(...) :agent.T<br />
meetAndTalk(...) :TBConv(S)<br />
addCustomerRole<br />
addPerformerRole<br />
CustomerRole(S)<br />
isNil() :Bool<br />
startConversation(...) :Ok<br />
spec<br />
TBCSpec<br />
name :String<br />
spec<br />
PerformerRole(S)<br />
isNil() :Bool<br />
set<br />
spec<br />
set<br />
CustomerRule<br />
Conversation(S)<br />
PerformerRule<br />
c<br />
TBConv(S)<br />
s:S<br />
newDialog(...) :Dialog<br />
saveDialog(...) :Ok<br />
copyHistoryDialog() :Dialog<br />
currentDialog<br />
DialogSpec<br />
name :String<br />
spec<br />
Dialog<br />
Request<br />
content<br />
TBCContentSpec<br />
spec<br />
TBCContent<br />
Int<br />
Real<br />
String<br />
Date<br />
set(...) :Ok<br />
get() :Int<br />
set(...) :Ok<br />
get() :Real<br />
set(...) :Ok<br />
get() :String<br />
set(...) :Ok<br />
get() :NewDate<br />
MultipleChoice<br />
SingleChoice<br />
Variant<br />
Rcd<br />
get() :iter.T<br />
getChoices() :iter.T<br />
choose(...) :Ok<br />
discard(...) :Ok<br />
select(...) :Ok<br />
setChoices(...):Ok<br />
get() :T<br />
getChoices() :iter.T<br />
choose(...) :Ok<br />
select(...) :Ok<br />
setChoices(...):Ok<br />
select(...) :Ok<br />
selected() :String<br />
ref<br />
1+<br />
CSpec<br />
Dialog<br />
Sequence<br />
NamedContentSpec<br />
set(...) :Ok<br />
get() : CSpec<br />
set(...) :Ok<br />
get() : Dialog<br />
set(...) :Ok<br />
get() :Sequence<br />
name :String<br />
Abbildung 2.5: Instanzen von Konversationen, Dialogen und Inhalten
2.4. Invarianten des Modells 19<br />
2.4 Invarianten des Modells<br />
Die folgenden Invarianten sollen Interpretationsmöglichkeiten innerhalb des Modells einschränken.<br />
Ziel ist es, möglichst viele Punkte eindeutig festzulegen.<br />
1. Alle Dialogspezifikationen einer Konversationsspezifikation haben verschiedene Namen. Das<br />
gleiche gilt für alle benannten Inhaltsspezifikationen und alle Anfragespezifikationen einer<br />
Dialogspezifikation.<br />
2. Eine Dialogspezifikation gehört zu genau einer Konversationsspezifikation. Unterschiedliche<br />
Konversationsspezifikationen können gleiche Dialogspezifikationen enthalten. Diese<br />
Dialogspezifikationen haben nicht die gleiche Objektidentität.<br />
3. Benannte Inhaltsspezifikation und Anfragespezifikationen gehören zu genau einer<br />
Dialogspezifikation.<br />
4. Unterschiedliche Dialogspezifikation können gleich benannte Inhaltsspezifikationen oder<br />
gleiche Anfragespezifikationen enthalten. Diese Inhaltsspezifikationen und Anfragespezifikationen<br />
haben in den verschiedenen Dialogspezifikationen nicht die gleiche<br />
Objektidentität.<br />
5. Die Namen der Objekte dienen in ihren jeweiligen Sichtbarkeitsbereichen als Schlüssel zur<br />
Identifikation.<br />
6. Jede Konversationsspezifikation enthält die Spezifikation und Benennung eines initialen<br />
Dialoges.<br />
7. Jede Konversationsspezifikation hat eine finale Dialogspezifikation mit dem Namen<br />
breakdown.<br />
Damit bleibt jede Konversation auch in Ausnahmefällen in einem gesicherten Zustand. Es kann<br />
mithin keine unvorhergesehenen Konfigurationen geben.<br />
8. Jede Dialogspezifikation mit dem Namen breakdown hat benannte Inhaltsspezifikationen mit<br />
den Namen lastDialog, reason.<br />
Dadurch kann aus der Abbruchsituation später der Grund für den Abbruch sowie der letzte<br />
erfolgreich bearbeitete Dialog, rekonstruiert werden.<br />
9. Alle finalen Dialogspezifikationen haben keine Folgedialoge und deswegen keine<br />
Anfragespezifikationen.<br />
10. Wird ein finaler Dialog in einer Konversation erreicht, so wird diese bei beiden Partnern<br />
beendet.
21<br />
3. Kapitel<br />
Das Agentensystem<br />
Um beurteilen zu können, was mit dem gegebenen System der Business Conversations in Bezug<br />
auf eine Visualisierung realisierbar ist, reicht es nicht aus, nur das Modell zu kennen. Es muß auch<br />
das Wissen über die Implementierung dieses Modells vorhanden sein. In diesem Kapitel wird<br />
deshalb der grundlegende Aufbau des von Johannisson entwickelten Agentensystems beschrieben.<br />
Weitere Informationen zu den zugrundeliegenden Konzepten und zur Implementation finden sich<br />
in [Krus97, Joha97].<br />
3.1 Der Aufbau des Tycoon-Agentensystems<br />
Das Agentensystem wurde von Johannisson [Joha97] im Rahmen seiner Diplomarbeit entworfen<br />
und prototypisch in der Programmiersprache Tycoon entwickelt. Hierbei handelt es sich um eine<br />
persistente, polymorphe, orthogonale und typsichere Sprache. Es soll hier darauf verzichtet werden,<br />
diese Sprache näher zu erklären. Genaue Informationen zu Tycoon finden sich in [Matt95,<br />
MMS94, MSS95, MMM93, GM94, MS92 , MS93]. Eine weitere Implementierung eines<br />
Agentensystems für die Business Conversations, in der objektorientierten Sprache Tycoon-2, wird<br />
von Wegner [Wegn98] im Rahmen seiner Diplomarbeit vorgenommen.<br />
Anwendungssysteme<br />
Anwendungssysteme<br />
Agentensystem<br />
Agentensystem<br />
Business Conversations<br />
Business Conversations<br />
Nachrichtensubsystem<br />
Nachrichtensubsystem<br />
Kommunikationsinfrastruktur<br />
Abbildung 3.1: Aufbau des Tycoon Agentensystems<br />
Die Agenten, durch die Anwendungen implementiert werden, sind der Anwendungsebene<br />
zuzuordnen. Das Agentensystem (agentenv) besteht aus mehreren Teilen. Der zentrale Teil ist das
22 3. Das Agentensystem<br />
Modul agent.tm. Es enthält sowohl das eigentliche Agentensystem, worin die Ereignisverwaltung<br />
integriert ist, als auch die Möglichkeiten, mobile Agenten, Domänen und Orte zu erzeugen. Das<br />
Modul location.tm ist für die Adressierung und Namensauflösung zuständig. In wwuid.tm sind<br />
Möglichkeiten vorhanden, eindeutige Identifikationen zu erzeugen.<br />
Die für das Agentensystem notwendige Basis liefern die Bibliotheken der Business Conversations<br />
(tbcenv) und des Nachrichtensubsystems (itcenv). In den Business Conversations werden die<br />
Datentypen und Methoden der Konversationen, Dialoge, Anfragen und Inhaltsobjekte definiert.<br />
Das Agentensystem benutzt diese für die Kommunikation der Agenten untereinander. Das<br />
Nachrichtensubsystem wird in Abschnitt 3.2 näher erläutert.<br />
Die Visualisierung soll es ermöglichen, die Inhalte der Dialoge von Kommunikationen<br />
darzustellen. Zu diesem Zweck soll die Visualisierung in der obersten Ebene des Tycoon-<br />
Agentensystems angesiedelt werden. Es sollen möglichst wenige Änderungen an den<br />
zugrundeliegenden Systemen vorgenommen werden. Sind Änderungen notwendig, so ist darauf zu<br />
achten, daß bereits existierende Agenten und parallele Projekte nicht beeinträchtigt werden.<br />
3.2 Das Nachrichtensubsystem<br />
Durch das Nachrichtensubsystem wird eine nachrichtenorientierte, asynchrone und<br />
domänenübergreifende Kommunikation zwischen den Agenten ermöglicht. Es übernimmt für das<br />
Agentensystem die Rolle des Postboten und wird im folgenden mit ITC (Inter Thread<br />
Communication) abgekürzt. Die Agenten kommunizieren mit Nachrichten.<br />
Dienstleisterthread<br />
Kundenthread<br />
Hauptthread<br />
Kundenthread<br />
Dienstleisterthread<br />
Hauptthread<br />
Agent A<br />
Agent B<br />
Abbildung 3.2: Die Threads und Nachrichten eines Agenten<br />
Ein einzelner Agent besteht aus drei Threads des Tycoonsystems. Threads des Tycoonsystems sind<br />
keine Betriebssystemthreads. Der Hauptthread empfängt alle Nachrichten und leitet sie, sofern sie<br />
nicht an ihn selber gerichtet waren, an einen der beiden anderen Threads weiter. Der Kunden- und<br />
der Dienstleisterthread empfangen diese Nachrichten und führen je nach Nachrichtentyp entweder<br />
interne Aktionen oder Regeln aus. Die internen Aktionen sind vom Agentensystem vorgegeben und
3.3. Migration von Agenten 23<br />
für alle Agenten gleich. Die Regeln werden für jeden Agenten gesondert festgelegt. Nähere<br />
Informationen hierzu sind in Abschnitt 3.5 zu finden.<br />
Es existiert keine von außen zugängliche Bindung an den Agenten, um direkt auf ihn zugreifen zu<br />
können. Dadurch wird die Autonomität der Agenten gewährleistet. Eine Kommunikation mit den<br />
Agenten ist nur über Nachrichten möglich. Werden Nachrichten zwischen Kunden und<br />
Dienstleistern ausgetauscht, so wird automatisch die ID der jeweiligen Konversation mit in die<br />
Nachricht eingebunden. So kann beim Empfänger der Hauptthread des Agenten jede Nachricht<br />
einer Konversation dem Kunden- oder Dienstleisterthread zuordnen. Die Nachrichten enthalten<br />
außerdem einen Dialog und, sofern ein Kunde der Absender war, eine Anfrage. Die damit<br />
verbundene Auslösung der Regeln wird in Abschnitt 3.5 näher erläutert.<br />
Es lassen sich nur typisierte Nachrichten verschicken. Um beliebige neue Nachrichtentypen zu<br />
definieren sind Änderungen in itcMessage erforderlich.<br />
Alle Nachrichten durchlaufen, bevor sie an eine andere Domäne oder einen lokalen Empfänger<br />
übermittelt werden, den Mediator. Der Mediator ist ein optionaler Systemdienst des<br />
Nachrichtensubsystems. Die Funktionsweise des Mediators wird ausführlich in [Krus97]<br />
beschrieben. Dort wird sie unter anderem dazu benutzt, den Nachrichtenverkehr zu protokollieren.<br />
Es ist aber auch möglich, Sicherheitsverfahren an dieser Stelle in das System zu integrieren<br />
[Fech97].<br />
3.3 Migration von Agenten<br />
Unter Migration versteht man die Fähigkeit von Programmen oder Programmteilen, sich innerhalb<br />
eines Rechnernetzes von einem Ort zu einem anderen zu bewegen.<br />
Ein Agent kann entweder als mobiler Agent oder als Ort (Place) in einer Domäne (Domain)<br />
initialisiert werden. Jeder Ort einer Domäne kann weitere Orte enthalten. In Abschnitt 7.3.2 wird<br />
auf Besonderheiten eingegangen, die auftreten, wenn Agenten, die Informationen im Internet<br />
darstellen, von einem zum anderen Ort migrieren.<br />
Beim Erzeugen einer Domäne werden automatisch die dazugehörigen Agentensystem- und<br />
Nachrichtensubsystemkomponenten initialisiert. Es ist möglich, auf einem Rechner mehrere<br />
Domänen zu erzeugen.
24 3. Das Agentensystem<br />
Domain<br />
rootPlace<br />
Agent<br />
ITC<br />
subplaces<br />
owner :T<br />
name :String<br />
birth() :Ok<br />
meet() :T<br />
die() :Ok<br />
leave :Ok<br />
enter :Ok<br />
Place<br />
MobileAgent<br />
owner :T<br />
name :String<br />
birth() :Ok<br />
meet() :T<br />
die() :Ok<br />
incomingAgent() :Bool<br />
outgoingAgent() :Ok<br />
Abbildung 3.3: Zuordnung der Agenten zu Orten und Domänen<br />
Für mobile Agenten stellt das Agentensystem Funktionen zum lokalen und domänenübergreifenden<br />
Migrieren innerhalb der in Abbildung 3.3 dargestellten Methoden des Agenten zur Verfügung. Im<br />
Prototyp ist die Migration innerhalb der Regeln (siehe Abschnitt 3.5) des Agenten noch nicht<br />
vollständig realisiert. Die Regeln werden in der birth-Methode des Agenten definiert. Die<br />
Grundlagen für die Migration von Tycoon-Threads wurden mit der Arbeit von Mathiske [Math96]<br />
gelegt und werden im Agentensystem genutzt, um komplette Agenten mit ihren Threads migrieren<br />
zu lassen. Ein derartiger mobiler Agent hat fünf Methoden zur Verfügung.<br />
Die birth-Methode wird ausgeführt, sobald der Agent in seinem Ort erzeugt worden ist. Die die-<br />
Methode, bevor der Agent beendet wird. Die meet-Methode wird angewendet, wenn ein anderer<br />
Agent versucht, sich mit diesem Agenten zu treffen. Die leave-Methode kommt zur Ausführung,<br />
sobald die Domäne bereit ist, den Agenten an einen anderen Ort zu schicken. Hiernach werden die<br />
lokalen Bindungen zum Agenten- und Nachrichtensubsystem gelöst. Danach werden die drei<br />
Threads des Agenten linearisiert und an den neuen Ort geschickt [Joha97]. Sobald der linearisierte<br />
Agent im neuen Ort angekommen ist, wird er an das dort vorhandene Agenten- und<br />
Nachrichtensystem gebunden. Danach wird die enter-Methode ausgeführt. Vor dem Betreten des<br />
Ortes muß der Ort zustimmen. Die Zustimmung des Ortes erfolgt durch den Ortewächter (Place<br />
Guard), hierzu wird die Funktion incomingAgent benutzt. Es kann also auch vorkommen, daß der<br />
Zutritt, basierend auf der jeweiligen Definition des Ortes, verweigert wird. Diese Möglichkeit ist<br />
ein Ansatzpunkt für ein Sicherheitssystem.<br />
Bei einer Migration mittels der Methode migrateTo werden die Objekte, zu denen Bindungen<br />
bestehen, an den neuen Ort mitgenommen. Ausnahmen hiervon bilden das Agentensystem und das<br />
Nachrichtensubsystem. Beide sind am neuen Ort bereits vorhanden. Findet die Migration innerhalb<br />
der Domäne statt, so werden nur die internen Datenstrukturen des lokalen Agentensystems<br />
angepaßt. Eine Migration muß in einem nicht aufteilbaren Programmschritt (transaktional)<br />
erfolgen, um Fehler, wie das Löschen von Agenten, zu vermeiden [Mat96, GMI95a].
3.4. Starten von Konversationen 25<br />
Domain<br />
P<br />
P<br />
P<br />
n<br />
Place Guard n<br />
Migration<br />
0<br />
1<br />
11 12<br />
P<br />
Linearized<br />
Agent<br />
Agent<br />
P<br />
Place n<br />
Abbildung 3.4: Logische Struktur der Agentenwelt<br />
Migriert ein Agent von einem Ort zum anderen, so wird zuerst eine Kopie des Agenten erzeugt.<br />
Diese wird dann am neuen Ort aufgebaut. Die Methode incomingAgent wird ausgeführt und muß<br />
entscheiden, ob der Agent eintreten darf. Erfolgt ein Eintritt, wird der Agent am alten Ort gelöscht.<br />
Wird der Eintritt verwehrt, so wird die Kopie des Agenten am neuen Ort gelöscht. Vor dem<br />
Verlassen des Ortes wird outgoingAgent ausgeführt.<br />
3.4 Starten von Konversationen<br />
Es gibt zwei Methoden Konversationen zu starten. Bei der meetAndTalk-Methode trifft sich der<br />
Agent mit dem Dienstleister und baut eine synchrone Konversation auf. Das Ergebnis der Methode<br />
ist eine Konversation vom Typ TBConv.T. Diese Methode blockiert den aufrufenden Thread bis<br />
zum Ende der Konversation. Sie wird in einigen Fällen für sekundäre Konversationen genutzt,<br />
wenn die Fortsetzung der primären Konversation vom Ergebnis der sekundären abhängt. Für das<br />
meetAndTalk müssen sich die Agenten in der gleichen Domäne befinden.<br />
Die zweite Methode erzeugt eine asynchrone Konversation. Sie gliedert sich in zwei Teilschritte.<br />
Der erste ist das Treffen mit dem anderen Agenten (meet). Der zweite ist das Starten der<br />
Konversation (startConversation). Für das meet müssen beide Agenten in derselben Domäne sein.<br />
Zur Zeit muß auch das startConversation in derselben Domäne erfolgen. Es ist also auch hiermit<br />
nicht möglich, zuerst zu migrieren, den anderen Agenten zu treffen, zurückzumigrieren und aus der<br />
anderen Domäne heraus die Konversation zu starten. Bei dieser Arbeitsweise kommt es zu keiner<br />
Blockade des aufrufenden Threads. Sie ist deshalb die standardmäßig verwendete Methode.
26 3. Das Agentensystem<br />
Kundenagent<br />
gestartet<br />
Initiale Anfrage<br />
Dienstleister hat<br />
initiale Anfrage<br />
erhalten<br />
Initialer Dialog<br />
Kunde hat Dialog<br />
erhalten<br />
Dialog und Anfrage<br />
Dialog<br />
Dienstleister hat<br />
Dialog und<br />
Anfrage erhalten<br />
finaler Dialog<br />
Kunde hat finalen<br />
Dialog erhalten<br />
Abbildung 3.5: Zustandsdiagramm einer Konversation<br />
Zum Starten einer Konversation erzeugt der Kunde den initialen Dialog des BC-Modells und<br />
schickt ihn mit der initialen Anfrage und der Konversationsspezifikation an den Dienstleister. Die<br />
Spezifikationen sind inspizierbar. Beide Partner können so untersuchen, ob die Konversation in<br />
ihren jeweiligen Kontext und zu ihrer Sicht des Kooperationsziels paßt.<br />
Der Dienstleister antwortet ihm mit dem initialen Dialog laut Konversationsspezifikation. Danach<br />
findet die Konversation statt. Sie kann sich über viele Anfragen und Dialoge erstrecken. Es gibt<br />
hierbei keine Anfrage ohne Dialog. Währenddessen können weitere Konversationen begonnen und<br />
beendet werden. Zur Zeit ist keine Zugriffsmethode vorhanden, die eine Übersicht über alle<br />
laufenden oder abgeschlossenen Konversationen eines Agenten liefert. Zum Beenden der<br />
Konversation sendet der Dienstleister den in Abschnitt 2.3.3 geschilderten finalen Dialog.
3.5. Regeldefinition und -auslösung 27<br />
3.5 Regeldefinition und -auslösung<br />
Die Definitionen der Regeln, die auszuführen sind, sobald ein Dialog bzw. eine Anfrage gesendet<br />
wird, sind in den Agenten enthalten. Ein Beispiel einer derartigen Regeldefinition findet sich in<br />
Abschnitt 0. Das Aktivieren dieser Regeln ist im zugrundeliegenden Agentensystem im Modul<br />
agent.tm zu finden.<br />
a :A<br />
Agent(A)<br />
state() :A<br />
self() :agent.T<br />
meet(...) :agent.T<br />
meetAndTalk(...) :tbConv.T(S)<br />
migrateTo(...) :Ok<br />
addCustomerRole<br />
addPerformerRole<br />
s :S<br />
CustomerRole(S)<br />
spec() :tbcSpec.T<br />
isNil() :Bool<br />
set(...) :Ok<br />
startConversation(...) :Ok<br />
s:S<br />
PerformerRole(S)<br />
spec() :tbcSpec.T<br />
isNil() :Bool<br />
set(...) :Ok<br />
Abbildung 3.6: Objektstrukturmodell von Agent und Rolle<br />
Ein Agent kann, wie es in Abbildung 2.3 und Abbildung 3.6 dargestellt wurde, sowohl Kunde als<br />
auch Dienstleister sein. Dementsprechend kann er Regeln für beide Rollen beinhalten. Es bestehen<br />
jedoch Unterschiede bei der Definition der Regeln. Unabhängig von den tatsächlich definierten<br />
Regeln wird für jeden Agenten ein Kunden- und ein Dienstleisterthread gestartet.<br />
Eine Regeldefinition für den Kunden besteht, wie in Abschnitt C.3 dargestellt, aus einer Funktion<br />
mit zwei Parametern und der eigentlichen Regeldefinition. Die Parameter der Funktion sind der<br />
Name des Dialoges, für den die Regel gedacht ist, und ein Funktionsaufruf, der einen Bezug auf die<br />
Konversation liefert.<br />
Beim Dienstleister gibt es demgegenüber bis auf einen weiteren Parameter, der den Namen der<br />
gewählten Anfrage enthält, keinen Unterschied. Nur am Ende einer Regel wird ersichtlich, daß der<br />
Dienstleister einen Dialog sendet, der Kunde dagegen eine Anfrage an den Dienstleister zurückgibt.<br />
Daß bei einer Anfrage des Kunden auch der Dialog mit den geänderten Werten zurückgesandt<br />
wird, ist aus einer Regel selber nicht ersichtlich. Hierbei handelt es sich um eine Funktionalität des<br />
Agentensystems.
28 3. Das Agentensystem<br />
Die Auslösung der Regeln erfolgt im Agenten, sobald eine entsprechende ITC-Nachricht<br />
eingegangen ist. Für den Dienstleister- und den Kundenteil existieren im Modul agent.tm<br />
Funktionen, in denen die ITC-Nachrichten abgehandelt werden. Für den Dienstleister sind dieses<br />
die Funktion newSubP und der Nachrichtentyp customerDialogRequestA. Für den Kunden werden<br />
die Funktion newSubC und der Nachrichtentyp performerDialogA benutzt.<br />
Je nachdem, ob es sich um einen Regelaufruf für einen Dienstleister oder für einen Kunden<br />
handelt, erfolgt der Aufruf etwas anders. Der Aufruf einer Kundenregel besteht aus dem internen<br />
Namen der zugehörigen Spezifikation und dem Dialognamen. Für den Aufruf einer<br />
Dienstleisterregel wird zusätzlich der Name der vom Kunden ausgewählten Anfrage benötigt.<br />
Um den internen Namen zu erhalten, wird die interne ID der jeweiligen Konversation benutzt, weil<br />
ein Agent in der Lage ist, mehrere Konversationen mit der gleichen Spezifikation zur gleichen Zeit<br />
zu führen. Die interne Konversations-ID wird vom Agentensystem beim Absenden der o.g.<br />
Nachrichten automatisch mit in die Nachrichten eingebunden. Ohne diese ID ist eine Aktivierung<br />
von Regeln nicht möglich.<br />
In Abschnitt 7.6 werden aufbauend auf der Regelaktivierung Grundlagen für die dynamische<br />
Visualisierung realisiert.<br />
3.6 Zusammenfassung<br />
Das Agentensystem stellt die Realisierung einer Umgebung für Agenten dar. Es basiert auf einem<br />
Nachrichtensubsystem zur Kommunikation und verwendet die BCs, in denen die grundsätzlichen<br />
Definitionen der Datentypen und Methoden der Objekte des Modells enthalten sind, als<br />
Kooperationsleitbild.<br />
Der Beginn einer Konversation geht immer vom Kunden aus. Zum Starten von Konversationen<br />
gibt es eine den Kunden blockierende und eine nicht blockierende Möglichkeit. Dieses Verhalten<br />
der einzelnen Agenten wird durch ihre Regelbasis definiert. Die Regeln werden durch den<br />
Hauptthread des Agenten ausgelöst. Ein Agent kann gleichzeitig eine beliebige Anzahl von<br />
Konversationen führen. Da ein Agent sowohl einen Kunden- als auch einen Dienstleisterthread hat,<br />
kann er zugleich Kunde und Dienstleister sein.
29<br />
4. Kapitel<br />
Grundlagen und Anforderungen der<br />
Visualisierung<br />
In diesem Kapitel werden zunächst die bei einer Visualisierung im Internet vorhandenen<br />
Rahmenbedingungen untersucht und im Anschluß daran die Ansprüche erörtert, die durch die<br />
Datentypen der TBCs gestellt werden. Danach werden allgemeine Anforderungen für die<br />
Visualisierung der TBCs und die Unterschiede zwischen synchroner und asynchroner<br />
Kommunikation diskutiert. Es schließen sich Überlegungen an, wie diese Anforderungen mit den<br />
Business Conversations zu erfüllen sind und wo das Modell der Business Conversations erweitert<br />
werden muß.<br />
Darauf aufbauend werden die für eine dynamische Visualisierung zur Verfügung stehenden<br />
Funktionalitäten des TBC-Systems aufgezeigt. Schließlich werden die für eine dynamische<br />
Visualisierung notwendigen Voraussetzungen diskutiert. Auf diese Weise soll dieses Kapitel<br />
Aufschlüsse darüber liefern, welche Komponenten in ein Basissystem zu integrieren sind, um die<br />
dynamische Visualisierung zu ermöglichen. Basierend auf dem dynamischen Ansatz wird ein<br />
System von Visualisierungsvorlagen analysiert, welches eine effektive dynamische Darstellung der<br />
TBCs ermöglichen soll.<br />
Da das Ausgabemedium mit dem Internet Client bereits festgelegt ist, wird auf einen Vergleich<br />
bereits existierender Systeme verzichtet. Eine ausführliche Darstellung und vergleichende<br />
Betrachtung existierender Dienste sowie deren Vor- und Nachteile findet sich in [Mues94]. Ein<br />
weiterer Vergleich von Visualisierungsdiensten verschiedener Programmierumgebungen ist in<br />
[Koeh96] enthalten.<br />
Ein Großteil der Funktionalität, die in vielen Produkten, die in [Mues94] beschrieben werden, mit<br />
der Visualisierung gegeben ist, läßt sich im HTTP nur mit Hilfe von Programmiersprachen wie<br />
Java, Javascript oder HTML-Script abbilden. Diese Arbeit beschränkt sich auf den Einsatz von<br />
HTML.<br />
Um einen Dienst zur Visualisierung zu entwickeln, müssen die Anforderungen und Ziele definiert<br />
werden, die dieser erfüllen soll. Zu diesem Zweck wird in dieser Arbeit ein allgemeines Modell der<br />
TBCs genutzt. An diesem Modell wird untersucht, was zu visualisieren ist, wie dieses geschehen<br />
soll, welche Rahmenbedingungen eingehalten werden müssen und welche Funktionalität auf den<br />
visualisierten Objekten bereitgestellt werden muß.
30 4. Grundlagen und Anforderungen der Visualisierung<br />
Bei der Visualisierung der TBCs handelt es sich in erster Linie um die Visualisierung der Werte,<br />
die in Datenstrukturen enthalten sind. Sie werden im folgenden allgemein als Daten bezeichnet.<br />
Durch die Anzeige dieser Daten werden die dahinter liegenden Datenstrukturen nur zum Teil mit<br />
visualisiert, weil große Teile der strukturellen Informationen, wie z.B. Typinformationen, nicht<br />
oder nur eingeschränkt wiedergegeben werden. Da aber jeder Dialog einem Schritt bei der<br />
Abarbeitung des Workflows zuzuordnen ist, handelt es sich indirekt um die Visualisierung des<br />
Status eines Workflows.<br />
4.1 Grundlagen der Visualisierung<br />
Visualisierung ist der Vorgang der Sichtbarmachung von Materie, Energie, Informationen oder<br />
Prozessen. In der Informatik wird dieser Vorgang auf die Visualisierung von Daten, den direkten<br />
Repräsentanten von Informationen [Kröm92] und Prozessen beschränkt.<br />
Da das Auge das Hauptsinnesorgan des Menschen ist, mit ihm nimmt der Mensch den größten Teil<br />
an von außen auf ihn einwirkenden Informationen wahr [Fran87], ist die Visualisierung die<br />
wichtigste Möglichkeit zur Präsentation von Daten. Damit Daten für den Menschen visuell<br />
wahrnehmbar werden, müssen sie in eine geeignete Darstellung umgewandelt werden. Weil das<br />
Kurzzeitgedächnis nur eine kleine Anzahl an Elementen verarbeiten kann, ist es gerade bei<br />
komplexen Strukturen wichtig, daß der Benutzer die visualisierten Seiten schnell und sicher<br />
bedienen kann [Vogt97]. Auf den Einsatz von kontinuierlichen Animationen soll nach Möglichkeit<br />
verzichtet werden, da diese die Konzentration des Benutzers auf die wesentlichen Inhalte einer<br />
Seite erschweren [Keek97].<br />
Grundsätzlich können verschiedene Aspekte visualisiert werden, z.B. der Programmtext, die<br />
Datenstrukturen, die darin enthaltenen Werte, der Status eines in der Ausführung befindlichen<br />
Programmes, der Kontrollfluß, der Ablauf eines Workflows oder die implementierten Algorithmen.<br />
In allen Fällen erschwert jedoch große Komplexität die Visualisierung [Brow88] (siehe Abschnitt<br />
6.2).<br />
Bei der Datenvisualisierung sind die Benutzerschnittstellen mit interner und externer Kontrolle zu<br />
unterscheiden [Götz94]. Die interne Kontrolle stellt den klassischen Ansatz dar. Hierbei liegt die<br />
Kontrolle vollständig in der Applikation und es erfolgt eine unidirektionale Kommunikation<br />
zwischen Applikation und Benutzerschnittstelle [Götz94]. Die Applikation ruft Funktionen der<br />
Benutzerschnittstelle auf und bestimmt damit Zeitpunkt und Art der Interaktionsmöglichkeiten des<br />
Benutzers. Da der Benutzer bei der internen Kontrolle zu jedem Zeitpunkt nur die von der<br />
Applikation im aktuellen Modus vorgesehenen Interaktionsmöglichkeiten besitzt, werden die<br />
daraus resultierenden Dialoge auch als modal bezeichnet. Eine weitere Charakterisierung der<br />
internen Kontrolle bezeichnet diese Form der Dialogführung als systemgesteuerten Dialog<br />
[Götz94].<br />
Die Nachteile der internen Kontrolle haben zu der Entwicklung von Benutzerschnittstellen mit<br />
externer Kontrolle geführt. Interaktive Benutzerschnittstellen mit einer externen<br />
Kontrollarchitektur werden vollständig durch die Benutzerschnittstelle kontrolliert, so daß man<br />
auch von einem benutzergesteuerten Dialog spricht. Die Applikation wird dabei in geeignete<br />
Unterprogramme zerlegt. Diese Unterprogramme werden von der Benutzerschnittstelle als
4.2. Visualisierung im Internet 31<br />
Reaktion auf Ereignisse (Benutzereingabe oder interne Nachrichten der Benutzerschnittstelle)<br />
aufgerufen [Götz94].<br />
Bei der Erstellung eines Gesamtsystems muß mit der Konzeption der Benutzerschnittstelle<br />
begonnen werden, damit eine Einengung des Benutzers aus anwendungstechnischen oder<br />
realisierungstechnischen Gründen vermieden wird [Hübn90]. Wenn die Konzeption der<br />
Benutzerschnittstelle nicht vor der Systemerstellung erfolgen kann, muß das zugrundeliegende<br />
System möglicherweise um die entsprechenden Komponenten erweitert werden, was einen<br />
erhöhten Arbeitsaufwand darstellt. Dieser wird u.a. aus Kostengründen häufig vermieden, so daß<br />
die Benutzerorientierung der Schnittstelle nur unvollkommen ist.<br />
4.2 Visualisierung im Internet<br />
Im Internet hat sich das Hypertext Transfer Protocol (HTTP) als ein Standard zur Übermittlung von<br />
multimedialen Dokumenten etabliert. Dieses Kommunikationsprotokoll ermöglicht es, Text,<br />
Grafiken, Klangdateien und andere Daten zu übermitteln und liefert damit die<br />
Kommunikationsbasis für das World Wide Web [Morr95].<br />
Mit dem HTTP übermittelte Dokumente werden auch HTML-Seiten genannt. Die Hypertext<br />
Markup Language (HTML) ist eine systemunabhängig definierte Sprache für die Formatierung von<br />
World Wide Web-Dokumenten. Sie enthält Methoden, mit denen Textcharakteristiken (z.B. Fett,<br />
Kursiv), die Plazierung von Grafiken, Verknüpfungen u.a. festgelegt werden. Zur Anzeige eines<br />
HTML-Dokuments wird ein HTTP-Client benötigt [Micr97]. Die Darstellung eines HTML-<br />
Dokumentes kann je nach Client verschieden aussehen, weil mit HTML zwar die Inhalte einer<br />
Seite spezifiziert werden können, die Visualisierung derselben jedoch nur eingeschränkt festlegbar<br />
ist.<br />
Auf dem Protokoll aufbauende HTTP-Clients, die auch als Web-Browser bezeichnet werden,<br />
stehen für fast alle derzeit aktuellen Betriebssysteme zur Verfügung. Deshalb soll für die<br />
Visualisierung ein Client benutzt werden, der das HTTP verwendet. Dadurch wird eine breite<br />
Abdeckung der möglichen Benutzergruppen erreicht.<br />
Als Web-Browser stehen unter anderem neuere Produkte, wie Netscapes Communicator oder der<br />
Internet Explorer Vers. 4 von Microsoft, aber auch ältere Versionen dieser und anderer Hersteller<br />
zur Verfügung. Für die Erzeugung der HTML-Seiten dürfen aus Kompatibilitätsgründen keine<br />
Funktionen verwendet werden, die auf Besonderheiten einzelner Browser fußen.<br />
Um eine Seite mit einem HTTP-Client darzustellen, wird eine Anfrage in Form eines Uniform<br />
Resource Locators (URL) an einen Server gesandt. Mit dem URL (z.B. http://www.unihamburg.de/index.html)<br />
wird der Ressourcentyp (z.B. FTP, HTTP oder Gopher), auf den<br />
zugegriffen werden soll, der Standort und der genaue Speicherort der Daten innerhalb dieses<br />
Standorts bezeichnet [Micr97]. Über das Internet wird die Anfrage an den entsprechenden Server<br />
geleitet und dort ausgewertet. Falls die gewünschte Seite auf dem Server vorhanden ist, schickt er<br />
diese in Form einer Nachricht zurück. Der Client visualisiert die Antwort.
32 4. Grundlagen und Anforderungen der Visualisierung<br />
Für die Eingabe von Daten in HTML-Seiten, werden Formularbereiche (Forms) auf der HTML-<br />
Seite definiert. Es ist möglich, auf jeder Seite mehrere Formularbereiche zu definieren. Die<br />
Bereiche können weder ineinander verschachtelt werden noch überlappen. In diesen Bereichen sind<br />
die einzelnen Formularfelder (siehe Abschnitt 6.1 und 6.2) enthalten. Die Daten aus den<br />
Formularfeldern werden durch die Aktivierung einer absenden-Schaltfläche an den im Formular<br />
spezifizierten Server gesandt (siehe Abschnitt 5.1). Dadurch wird ein HTTP-Request, der eine URL<br />
und die eigene Adresse enthält, an den Server gesendet. Für das Übermitteln der in den<br />
Formularfeldern vorhandenen Daten stellt das HTTP zwei Methoden zur Verfügung.<br />
Bei der get-Methode wird ein "?" an die URL angehängt. Danach werden die in den<br />
Formularfeldern vorhandenen Daten an die URL angehängt. Die Namen der Datenfelder werden<br />
hierbei durch Gleichheitszeichen von den Daten getrennt. Die einzelnen Ausdrücke (z.B.<br />
Name=Zade) werden durch das kaufmännische Und "&" separiert. Der letzte Ausdruck gibt den<br />
Namen der aktivierten Schaltfläche wieder. Eine derartige URL hat folgendes Aussehen :<br />
http://www.sts.tu-harburg.de/cgi-bin/tycoon?Name=Zade&Feld2=b&Anfrage= Abschicken.<br />
Hierbei können nur Daten übermittelt werden, die dem ASCII-Zeichensatz entsprechen [W3C97].<br />
Diese Methode wird standardmäßig von den Tycoon Business Objects (siehe Kapitel 5) verwendet.<br />
Wird die post-Methode verwendet, so werden die Daten nicht in der URL sondern in einer<br />
gesonderten Nachricht übermittelt.<br />
4.3 Datentypen der Business Conversations<br />
Weil es für eine Visualisierung wichtig ist, welche Datentypen in der zu visualisierenden Struktur<br />
vorkommen können und welche Funktionalitäten auf ihnen definiert sind, werden im folgenden die<br />
Datentypen der Business Conversations eingehend analysiert. Überblicke über die vorhandenen<br />
Datentypen sind in Abbildung 2.4 und der Definition der Datentypen in TBCContent.ti (siehe<br />
Abschnitt C.5) vorhanden.<br />
Die atomaren Datentypen sind Int, Real, Date und String. Der Datentyp Cspec kann die<br />
Spezifikation einer Konversation enthalten, der Datentyp Dialog einen kompletten Dialog. Beide<br />
werden für die Archivierung von Konversationen benötigt [Krus97]. Da ein Dialog weitere Dialoge<br />
als Inhaltsobjekte enthalten kann, muß es die Visualisierungskomponente ermöglichen, derartige<br />
Hierarchien darzustellen. Die weiteren Datentypen Rcd, SingleChoice und MultipleChoice können<br />
jeweils beliebige andere Datentypen der Business Conversations enthalten, sind also kaskadierbar.<br />
Der Datentyp Sequence, der zum Zugriff auf Massendaten dient, hebt sich dadurch hervor, daß die<br />
Zugriffsfunktionen auf die externen Datenstrukturen für jede Datenstruktur extra programmiert<br />
werden müssen, also noch nicht vorhanden sind. Da die Möglichkeit, variante Inhaltsobjekte zu<br />
deklarieren, eines der Merkmale ist, welches die TBCs von anderen Systemen unterscheidet, soll<br />
sie näher erläutert werden.<br />
Variante Datentypen (variant), in den TBCs als variante Tupel realisiert, sind sinnvoll, wenn<br />
Fallunterscheidungen gemacht werden und für jeden Fall verschiedene Angaben benötigt werden.<br />
Anhand eines Beispiels wird die Definition und der Zugriff auf diese Objekte erklärt, damit die<br />
Diskussion der Visualisierung derartiger Objekte in Abschnitt 6.2.4 nachvollziehbar ist.
4.3. Datentypen der Business Conversations 33<br />
Wie bereits in der Einleitung geschildert, hat ein Kunde eines Warenhauses die Möglichkeit, eine<br />
Leistung mit einer Kundennummer oder Kreditkarte zu bezahlen. Die zugehörige Dialogdefinition<br />
mit varianten Teilen kann folgendermaßen aussehen:<br />
let Bezahlungsart_DialogSpec =<br />
tbcSpec.dialogSpec (<br />
"Bezahlungsart"<br />
array<br />
tbcSpec.requestSpec("absenden" array "Werte Formular" end false)<br />
tbcSpec.requestSpec("abbruch" array "Endergebnis" end false)<br />
end<br />
array<br />
tuple "Name" fun() tbcContent.stringSpec() end<br />
tuple "Vorname" fun() tbcContent.stringSpec() end<br />
tuple "Zahlungsart" fun() tbcContent.variantSpec(<br />
array<br />
tuple “Kundenkonto” fun() tbcContent.stringSpec() end<br />
tuple "VISA" fun() tbcContent.rcdSpec(<br />
array<br />
tuple "Kartennummer" fun() tbcContent.intSpec() end<br />
end )<br />
end<br />
end )<br />
end<br />
end )<br />
tuple "Gueltigkeit"<br />
fun() tbcContent.dateSpec() end<br />
Den ersten Teil der Dialogdefinition bilden die zwei möglichen Aktionen „abschicken“ und<br />
„abbrechen“. Danach sind die Inhaltsobjekte Name und Vorname, die immer angegeben werden<br />
müssen, definiert. Bei der Rechnungsart gibt es die Möglichkeit, zwischen den Varianten<br />
Kundenkonto und Visa zu wählen. Die Rechnung kann also über ein bereits eingerichtetes<br />
Kundenkonto oder per VISA-Karte bezahlt werden. Beim Kundenkonto ist die Bezeichnung des<br />
Kundenkontos anzugeben. Die Variante Kundenkonto besteht aus einer atomaren Variablen vom<br />
Typ String. Bei der zweiten Variante, der Bezahlung per VISA, sind mehrere Angaben zu machen.<br />
Deshalb wurde ein Record als Datentyp ausgewählt. Implementationsseitig liegt in den Business<br />
Conversations hinter diesem Recordtyp ein namedContent, der aus genau einem Array besteht. Die<br />
Felder müssen also, wie bei einer Inhaltsspezifikation üblich, in einer Arraynotation angegeben<br />
werden. Jedes einzelne Feld kann wiederum jeden zulässigen Inhaltstyp haben. Es sind also auch<br />
verschachtelte variante Strukturen möglich.<br />
Auf einem varianten Inhaltsobjekt sind mehrere Funktionen definiert. Die erste Variante<br />
(Kundenkonto) ist standardmäßig ausgewählt. Mit select(“VISA“) kann die VISA-Variante<br />
ausgewählt werden. Mit selected() läßt sich der Name der gewählten Variante herausfinden, und<br />
mit ref() kann auf das Inhaltsobjekt der gegenwärtig aktuellen Variante, also „VISA“ oder<br />
„Kundenkonto“ zugegriffen werden. Das Ergebnis besteht entweder aus einem atomaren oder aus<br />
einem komplexen Inhaltsobjekt. Die Zugriffsfunktionen auf diese Objekte werden im folgenden<br />
näher erläutert.<br />
Die zugehörigen Funktionen der anderen Datentypen sind ebenfalls in TBCContent.ti deklariert.<br />
Des weiteren sind sie in der Abbildung 2.5 enthalten. Auf den Datentypen Cspec, Dialog, Int, Real,
34 4. Grundlagen und Anforderungen der Visualisierung<br />
Date, String sind die Operationen set() und get() definiert. Sie dienen zum Setzen und Auslesen der<br />
Werte. Bei Rcd und Variant kann auf die Inhaltsobjekte mit ref() zugegriffen werden.<br />
Hervorzuheben ist hierbei, daß die Verschachtelung von Inhaltsobjekten möglich ist, wobei am<br />
Ende der Verschachtelung immer atomare Datentypen stehen, auf die mit den o.g. Funktionen<br />
zugegriffen werden kann. Bei den Datentypen zur Auswahl einer (singleChoice) oder mehrerer<br />
(multipleChoice) Möglichkeiten liefert get() die derzeitige Auswahl und choose() wählt ein neues<br />
bzw. zusätzliches Element aus. Mit discard() wird bei der Mehrfachauswahl die Markierung eines<br />
Objektes zurückgesetzt. Die Funktion select() markiert eine oder mehrere Möglichkeiten als ausgewählt.<br />
Die Funktionen zum Setzen und Auslesen der zugelassenen Auswahlmöglichkeiten sind<br />
setChoices() und getChoices().<br />
Bei Sequence, mit der ein Zugriff auf Massendaten realisiert werden kann, existieren die<br />
Funktionen set() und get(), die Referenzen auf die Schnittstellen zu Massendaten setzen bzw.<br />
auslesen.<br />
Zusammenfassend ist festzustellen, daß Werte der atomaren Inhaltsobjekte geschrieben und<br />
gelesen werden können. Die strukturell höherwertigen Objekte lassen sich in ihren Inhalten auf die<br />
atomaren Objekte zurückverfolgen. Ergänzend kommen weitere Zugriffsfunktionen dazu.<br />
4.4 Allgemeine Anforderungen<br />
Der Entwickler soll bei der Gestaltung von HTML-Seiten die Möglichkeit haben, Standards der<br />
Visualisierung und Benutzerführung, die sich im Internet etabliert haben, beizubehalten. Unter<br />
anderem soll die Möglichkeit, eine Seite mit grafischen Informationen aufzuwerten, vorhanden<br />
sein. Er soll die Chance haben, die in HTML vorhandenen Mittel weitestgehend auszunutzen, um<br />
das Grundproblem, seine Vorstellungen möglichst direkt zum Ausdruck bringen zu können<br />
[Ober87], mit hoher Effizienz zu lösen. Andere visuelle Hervorhebungen, die u.a. der<br />
Benutzerführung dienen können, und Kommentartexte sollten hierzu realisierbar sein.<br />
Um eine schnelle Akzeptanz des Systems zu erreichen und die Eingewöhnungsphase zu verkürzen,<br />
wird eine einfache Bedienbarkeit des Systems angestrebt. Dafür soll der Benutzer seine<br />
Navigationsgewohnheiten, wie z.B. die Benutzung der Zurück- (back) und Wiederherstellen-<br />
Schaltflächen (reload) nicht aufgeben müssen. Die Visualisierung der Inhaltsobjekte und Anfragen<br />
(requests) soll gängigen Fenstersystemen entsprechen.<br />
Die Einbindung von Grafiken und anderen multimedialen Objekten in das Model der Business<br />
Conversations ist zur Zeit noch nicht realisiert. Dennoch sollen derartige Objekte in der<br />
Visualisierungkomponente nutzbar sein, um z.B. den Anforderungen von Benthien/Markus<br />
[BM97], die für ihre Arbeit Grafiken benötigen, entgegenzukommen oder Formulare<br />
benutzerfreundlicher gestalten zu können.<br />
Um datenintensive Anwendungen bearbeiten zu können, muß die Funktionalität der grafischen<br />
Benutzerschnittstelle (Graphical User Interface, GUI) dahingehend ausgerichtet werden, in großen<br />
und komplexen Datenbeständen navigieren zu können und dem Benutzer die Möglichkeit geben,<br />
seine definierte Auswahl anzuzeigen oder zu verändern. Die Daten können dabei sowohl atomare<br />
Objekte als auch höhere Strukturen oder sogar komplexe Multimediaobjekte sein.
4.5. Synchrone und asynchrone Verbindungen 35<br />
4.5 Synchrone und asynchrone Verbindungen<br />
Bei der Kommunikation wird zwischen synchroner und asynchroner Kommunikation<br />
unterschieden [Mass91]. Zur asynchronen Kommunikation gehört u.a. der elektronische<br />
Nachrichtenaustausch. Telefongespräche und Videokonferenzen sind der synchronen<br />
Kommunikation zuzurechnen. Um flexibel zu sein, ist es das Ziel der Arbeit sowohl synchrone als<br />
auch asynchrone Kommunikationsverbindungen zu unterstützen.<br />
Asynchrone Kommunikation findet im Agentensystem bei der Verständigung zweier Menschen<br />
statt, wenn eine sofortige Antwort nicht notwendig ist oder mindestens ein Kommunikationspartner<br />
Zeit zum Antworten braucht. Sie kann in Mensch-Maschine Verbindungen auftreten, wenn die<br />
Antwortzeit der Maschine zu lang ist. Da der jeweilige Kommunikationspartner in der<br />
Zwischenzeit weiterarbeiten können soll, ist eine Übersicht über den derzeitigen Stand der<br />
Konversation sinnvoll, um nach einer Unterbrechung der Kommunikation wieder auf die<br />
Konversation zugreifen zu können. In dieser Übersicht muß eine Information enthalten sein,<br />
welcher Kommunikationspartner zur Zeit den aktiven Part hat. Um einen schnellen Zugang zu den<br />
momentan zu bearbeitenden (aktiven) Dialogen zu haben, ist die Übersicht mit einem direkten<br />
Zugang in die aktiven Dialoge zu versehen.<br />
Die synchronen Verbindungen sind sinnvoll, wenn der Anwender mit einer Gegenstelle<br />
kommuniziert, die Antworten schnell genug generieren kann. Unterbricht der Benutzer die<br />
Kommunikation, indem er während der Bearbeitungszeit des Kommunikationspartners einer<br />
anderen Arbeit nachgeht, so wird aus der synchronen eine asynchrone Kommunikation. Soll die<br />
Kommunikation später synchron weitergeführt werden, muß die Visualisierungskomponente auch<br />
diesen Wechsel unterstützen.<br />
4.6 Funktionalität des Agentensystems<br />
Um das Konzept der Agenten durch die Visualisierung nicht zu beschränken, ist die Migration von<br />
Agenten auch weiterhin über Rechnergrenzen hinweg zu ermöglichen.<br />
Der Nachrichtenaustausch der Agenten untereinander soll weiterhin über die ITCs abgewickelt<br />
werden. Er darf deshalb durch die Visualisierung nicht beeinflußt werden.<br />
Die Visualisierung darf ferner keinen der drei Agententhreads blockieren. Eine derartige Blockade<br />
hätte zur Folge, daß während der Visualisierung entweder keine Nachrichten mehr angenommen<br />
werden könnten, oder daß ankommende Nachrichten nicht mehr verarbeitet würden. Beides hätte<br />
zur Folge, daß die Fähigkeit des Agenten, beliebig viele Konversationen auf einmal zu führen,<br />
stark eingeschränkt würde.<br />
Um dem Benutzer einen Überblick über alle aktiven Konversationen zu geben, muß der aktuelle<br />
Status jeder Konversation visualisierbar sein. Dies aber wird derzeit, wie in Abschnitt 3.4<br />
geschildert, durch das Agentensystem nicht unterstützt. Deshalb ist es erforderlich, daß durch das<br />
Visualisierungssystem eine geeignete Funktionalität zur Verfügung gestellt wird.
36 4. Grundlagen und Anforderungen der Visualisierung<br />
4.7 Dynamische Visualisierung<br />
Bei der Visualisierung ist zwischen dem statischem und dem dynamischen Ansatz zu unterscheiden<br />
[Mues94]. Beim statischen Ansatz wird die Visualisierung durch den Entwickler vorweggenommen.<br />
Beim dynamischen Ansatz dagegen erfolgt die Visualisierung während der Laufzeit<br />
des Programms.<br />
Die statische Visualisierung gliedert sich in die interaktive Erzeugung der Darstellung, bei der<br />
Komponenten aus einem Editor ausgewählt werden und die Bibliotheksaufrufe, die bereits<br />
vorhandene Funktionen benutzen [Mues94].<br />
Bei der dynamischen Visualisierung, bei der die Visualisierungsobjekte generisch erzeugt werden,<br />
tritt das Problem auf, daß die Semantik von Objekten nicht modelliert werden kann. Wird z.B.<br />
durch das zugrundeliegende TBC-System ein boolscher Wert nicht unterstützt, so kann er u.a.<br />
durch eine Zeichenkette oder einen Zahlenwert abgebildet werden. Die Darstellung des Objektes<br />
sollte aber aus Gründen der Benutzerführung wieder als boolscher Wert, der nur zwei Zustände<br />
annehmen kann, erfolgen. Ein anderes Beispiel bildet ein Textfeld, das entweder zur Ein- und<br />
Ausgabe von Werten oder nur als Kommentar dient. Bei der statischen Visualisierung kann der<br />
Programmierer infolge seiner Kenntnisse anstelle der typspezifischen Visualisierung auch eine<br />
andere wählen. Die Abspeicherung semantischen Wissens zur dynamischen Modellierung ist im<br />
TBC-System nicht vorgesehen. Es muß also eine Möglichkeit zur Verwaltung semantischen<br />
Wissens geschaffen werden, weil sonst nur typspezifische Darstellungen der Daten und nicht die<br />
semantisch sinnvolleren Darstellungen erzeugt werden können.<br />
Ansatz Erzeugung Datendarstellung<br />
interaktiv<br />
statisch<br />
beliebig<br />
Bibliotheksaufrufe<br />
typspezifisch<br />
dynamisch<br />
generiert<br />
Abbildung 4.1: Ansätze zur Datenvisualisierung<br />
Gerade bei der Visualisierung von varianten oder datenintensiven Strukturen ist es sehr aufwendig,<br />
wenn nicht gar unmöglich, die Darstellung aller möglichen Inhalte im voraus zu programmieren.<br />
Eine dynamische Visualisierung ist deshalb nicht nur in diesen Fällen der statischen Visualisierung<br />
überlegen.
4.7. Dynamische Visualisierung 37<br />
Auch wenn nicht alle Spezifikationen der Dialoge von vornherein bekannt sind, was beispielsweise<br />
bei der in Abschnitt 2.3.4 geschilderten Verwendung des ellipses-Attributes der Fall ist, muß auf<br />
generische Dienste ausgewichen werden, weil eine Visualisierung sonst nicht stattfinden kann.<br />
Entwickler schätzen den Anteil der graphischen Benutzeroberfläche am Programmkode auf ca.<br />
60% [Wege95]. Eine entsprechende dynamische Lösung hätte gegenüber einer statischen die<br />
Vorteile, sie nur einmal erarbeiten zu müssen. Der mit ihrer Erstellung verbundene wesentlich<br />
höhere Arbeitsaufwand entsteht unter anderem durch die hohen Anforderungen an Effizienz und<br />
Fehlerunanfälligkeit. Eine dynamische Lösung bietet sich nach allem um so mehr an, je öfter neue<br />
Business Conversations spezifiziert werden.<br />
Die Anwendung einer dynamischen Lösung ist weiterhin vorteilhaft, weil sich dadurch der zur<br />
Visualisierung eines Wertes notwendige Programmkode auf den Aufruf einer generischen, also auf<br />
Werte verschiedenen Typs anwendbaren Funktion reduziert [CW85]. Brown [Brow88] stellt fest,<br />
daß die Generierung der Bildschirmrepräsentation umso weniger automatisch erfolgen kann, je<br />
abstrakter, umfassender der Inhalt der zu visualisierenden Daten ist. Die Bedeutung dieser Aussage<br />
wird durch die Ausführungen in Abschnitt 6.2 über flexible Visualisierungsrichtlinien für die in<br />
den TBCs definierbaren komplexen Datentypen aufgezeigt.<br />
Um zu klären, ob eine dynamische Visualisierung mit den TBCs realisierbar ist, müssen die<br />
Datenstrukturen und die auf ihnen definierten Funktionen der TBCs näher analysiert werden.<br />
4.7.1 Dialogobjekte<br />
Um die Visualisierung dynamisch realisieren zu können, müssen der Typ und der Name jedes<br />
Inhaltsfeldes sowie der Name jeder im Dialog enthaltenen Anfrage analysiert werden. Diese<br />
Informationen sind den jeweiligen Spezifikationen zu entnehmen.<br />
Tycoon ist eine statisch typisierte Programmiersprache, in der zur Laufzeit keine Typinformationen<br />
mehr vorhanden sind, die es ermöglichen, die Struktur eines Wertes zu bestimmen und die<br />
entsprechende Bildschirmrepräsentation zu generieren. Deshalb war bisher die typsichere<br />
generische Visualisierung allein auf der Basis von Tycoon nicht erreichbar. Durch das System der<br />
Business Conversations ist es nun jedoch möglich, den Typ eines jeden Inhaltsobjektes<br />
festzustellen und damit generisch auszuwerten. Es bleibt aber zu prüfen, ob die für eine<br />
dynamische Visualisierung notwendigen Funktionen im TBC-System zur Verfügung stehen.<br />
Aus den o.g. Gründen ist es notwendig, die Spezifikationen der Dialoge zu analysieren. Eine<br />
Analysemöglichkeit besteht darin, sich der Spezifikation der zugehörigen Konversation zu<br />
bedienen. Da beim Kunden, bedingt durch das ellipses Attribut, nicht alle Dialoge einer<br />
Konversation spezifiziert sein müssen, reicht diese Möglichkeit nicht aus, alle<br />
Dialogspezifikationen zu untersuchen. Es ist deshalb notwendig, innerhalb einer Regel direkt auf<br />
die Spezifikation des Dialoges zuzugreifen, die dieser immer mit sich führt. Der Vollständigkeit<br />
halber soll vorher noch das Verfahren erörtert werden, mit dem auf die Inhalte der<br />
Konversationsspezifikation zugegriffen werden kann. Für die nachfolgenden Erklärungen wird die<br />
Dialogspezifikation kreditDatenDialogSpec aus der Konversationsspezifikation kreditConvSpec in<br />
Abschnitt C.1 zugrunde gelegt.
38 4. Grundlagen und Anforderungen der Visualisierung<br />
Bei einer Konversationsspezifikation mit dem Namen kreditConvSpec liefert die Funktion<br />
kreditConvSpec.dialogSpecs() eine Iteration vom Typ iter.T(tbcSpec.DialogSpec), die Zugriff auf<br />
die Spezifikation der gesamten Konversation bietet. Mit iter.size(kreditConvSpec .dialogSpecs())<br />
läßt sich die Anzahl der in dieser Konversationsspezifikation enthaltenen Dialoge feststellen.<br />
Auf den ersten Dialog kann mit kreditConvSpec.dialogSpecs().get() zugegriffen werden. Das<br />
Ergebnis ist die Spezifikation des ersten Dialogs und hat den Typ tbcSpec.DialogSpec. Der zweite<br />
Dialog ist mit kreditConvSpec.dialogSpecs().rest().get() erreichbar. Durch rekursive Anwendung<br />
der Funktionen rest() und get() lassen sich alle weiteren Dialogspezifikationen auswählen.<br />
Um sich innerhalb einer Regel auf die Spezifikation eines Dialoges zuzugreifen, muß jedoch etwas<br />
anders verfahren werden. Beim Aufruf einer Regel durch das Agentensystem wird eine Variable<br />
conv übergeben, die den Typ agent.Conversation hat. Die Definition dieses Typs ist in Abschnitt<br />
C.4 enthalten. Über die Variable c, welche die Spezifikation der Konversation repräsentiert und mit<br />
Hilfe der Funktion conv.c.currentDialog(), kann auf den aktuellen Dialog zugegriffen werden. Das<br />
Ergebnis ist vom Typ tbConv.Dialog, dessen Definition in Abschnitt C.5 enthalten ist. Diese<br />
Möglichkeit wird in fast jeder Regel genutzt, um sich der aktuellen Werte bedienen zu können.
4.7. Dynamische Visualisierung 39<br />
name :String<br />
TBCSpec<br />
dialogSpecs() :iter.T(DialogSpec)<br />
initialDialogSpec() :DialogSpec<br />
spec<br />
s :S<br />
TBConv(S)<br />
spec() :tbcSpec.T<br />
saveDialog(...) :Ok<br />
copy HistoryDialog(...) :Dialog<br />
newDialog(...) :Dialog<br />
currentDialog() :Dialog<br />
initialDialogSpec<br />
dialogSpecs<br />
currentDialog<br />
name :String<br />
DialogSpec<br />
possibleRequests() :iter.T(RequestSpec)<br />
contentSpec() :tbcContent.Spec<br />
spec<br />
Dialog<br />
spec() :tbcSpec.DialogSpec<br />
content() :tbcContent.T<br />
content1(...) :tbcContent.T<br />
possibleReplies<br />
possibleRequests<br />
name :String<br />
ellipses :Bool<br />
RequestSpec<br />
possibleReplies() :iter.T(String)<br />
content<br />
content1<br />
Request<br />
ContentSpecElement<br />
ContentElement<br />
contentSpec<br />
elements<br />
ref<br />
TBCContentSpec<br />
TBCContent<br />
elements() :iter.T(NamedContentSpec)<br />
spec<br />
spec() :tbcContent.Spec<br />
ref(name :String) :T<br />
Abbildung 4.2: Objektstrukturmodell zum Zugriff auf Dialogobjekte<br />
Über conv.c.currentDialog().spec() kann jetzt die Dialogspezifikation erreicht werden. Sie ist vom<br />
Typ tbcSpec.DialogSpec. Damit sind hier die gleichen Möglichkeiten vorhanden wie auch beim<br />
Zugriff über die Konversationsspezifikation. Die im folgenden beschriebenen Zugriffsverfahren<br />
gelten also für beide Möglichkeiten. Das so erhaltene Ergebnis ist in Abschnitt C.7 aufgezeigt.
40 4. Grundlagen und Anforderungen der Visualisierung<br />
Der Funktionsaufruf conv.c.currentDialog().spec() ist im folgenden mit d abgekürzt. Den<br />
Dialognamen erhält man dann mit d.name.<br />
4.7.2 Anfragen<br />
Um die Namen der Anfragen (requests) eines Dialoges zu erhalten, kann die Dialogspezifikation<br />
benutzt werden. Die Namen der Anfragen sind in der Dialogspezifikation in den possibleRequests,<br />
einer Struktur vom Typ Iter enthalten.<br />
Mit d.possibleRequests() erhält man Zugriff auf diese Struktur. Die Anzahl der Anfragen des<br />
aktuellen Dialoges läßt sich mit iter.size(d.possibleRequests()) herausfinden. Die Funktion<br />
d.possibleRequests().get() liefert die erste Anfrage und d.possibleRequests().get().name den Namen<br />
dieser Anfrage. Weitere Informationen zu einer Anfrage werden zur Visualisierung nicht benötigt.<br />
Mit d.possibleRequests().rest().get().name bekommt man den Namen der zweiten Anfrage. Durch<br />
rekursive Anwendung der rest()-Funktion können alle weiteren Anfragen erreicht werden.<br />
Zusätzlich läßt sich mit der Funktion tbConv.isFinalDialog() noch überprüfen, ob es sich hier um<br />
einen finalen Dialog handelt, der keine Anfragen enthält.<br />
4.7.3 Inhaltsobjekte<br />
Um die einzelnen Inhaltsobjekte eines Dialoges zu bekommen, kann ebenfalls auf die<br />
Dialogspezifikation zugegriffen werden. Die Funktion d.contentSpec() liefert die Spezifikation der<br />
Struktur des Dialogs. In der Struktur sind die einzelnen Inhaltsobjekte enthalten. Die<br />
Abspeicherung der Inhaltsobjekte der Spezifikation eines Dialoges (TBCContentSpec) als<br />
Ausprägung rcd eines varianten Tupels vom Typ Spec ist durch das Agentensystem festgelegt. In<br />
Abschnitt C.8 findet sich die Definition.<br />
Da es sich hierbei um variante Tupel handelt, muß die !-Notation verwendet werden. Das erste<br />
Inhaltsobjekt wird durch d.contentSpec()!rcd.elements().get() geliefert. Die weiteren Elemente<br />
lassen sich wieder mit der rest()-Funktion auslesen.<br />
Der Name des ersten Elements ist das Ergebnis von d.contentSpec()!rcd.elements().get() .name.<br />
Dieser wird benötigt, um mit der Funktion content1(name), die in TBConv.ti definiert ist, auf den<br />
Inhalt der Variablen zuzugreifen.<br />
Die Spezifikation des Elements bekommt man mit d.contentSpec()!rcd.elements().get().spec(). Aus<br />
ihr ist zwar der Typ des Elements erkennbar, dieser alleine ist jedoch wenig nützlich.<br />
Die ?-Notation symbolisiert bei varianten Tupeln einen Test, der als Ergebnis entweder einen<br />
boolschen Wert liefert oder eine Ausnahme auslöst, wenn es sich um einen unbekannten Typ<br />
handelt. Mit d.contentSpec()!rcd.elements().get().spec()?int steht eine Möglichkeit zur Verfügung,<br />
um festzustellen, ob der Typ der Variablen Int ist. Weitere Funktionen für die anderen Datentypen<br />
sind vorhanden. Ansatzweise ist die notwendige Programmierung in Abschnitt C.8 enthalten. Weil<br />
es in den Business Conversations nur eine geringe Anzahl von Typen gibt, ist der Aufwand, den<br />
Typ des Inhaltsobjekts herauszufinden, nicht besonders groß.
4.8. Visualisierungsvorlagen 41<br />
Handelt es sich beim Inhaltsobjekt um ein atomares Objekt, ist keine weitere Aktion erforderlich.<br />
Für verschachtelte Inhaltsobjekte existieren Möglichkeiten, auf die darin enthaltenen Unterobjekte<br />
zuzugreifen. In MultipleChoice- und SingleChoice-Objekten ist über die Funktion getChoices()<br />
eine Iteration der Unterobjekte erhältlich. Beim Datentyp Sequence liefert die Funktion elements()<br />
eine derartige Iteration. In diesen Iterationen lassen sich mit den o.g. Funktionen die darin<br />
enthaltenen Unterobjekte auswählen.<br />
Bei den Datentypen Variant und Rcd ist es möglich über eine NamedContentSpec und die dafür<br />
definierte Funktion spec() auf die TBCContentSpec der Unterobjekte zuzugreifen. Mit den o.g.<br />
Funktionen kann danach auf die Inhalte der Unterobjekte zugegriffen werden. Bei Inhaltsobjekten<br />
vom Typ Dialog oder Cspec ist der Zugriff über die in Abschnitt 4.7.1 genannten Methoden<br />
möglich.<br />
Abschließend läßt sich sagen, daß die für eine dynamische Visualisierung notwendigen<br />
Zugriffsfunktionen zur Verfügung stehen, solange die Spezifikation vorhanden ist. Ist die<br />
Spezifikation nicht vorhanden, so besteht innerhalb einer Regel keine Möglichkeit, auf eine<br />
Anfrage oder ein Inhaltsobjekt zuzugreifen, dessen Name nicht bekannt ist. Da die Dialoge<br />
aufgrund einer Spezifikation generiert werden und die Spezifikation im Konversationsobjekt<br />
mitgeführt wird, stellt die Notwendigkeit der Spezifikation keine Einschränkung der Funktionalität<br />
dar.<br />
4.8 Visualisierungsvorlagen<br />
Bei einer statischen Visualisierung (siehe Abschnitt 4.7) kann die Erscheinungsform jedes Dialoges<br />
mit seiner Feldanordnung, den Kommentaren, weiterführenden Links, Grafiken, multimedialen<br />
Elementen und Attributen von vornherein festgelegt werden. Bei der dynamischen Visualisierung<br />
der Tycoon Business Conversations fehlt eine solche Möglichkeit, weil sie im Konzept der TBCs<br />
nicht vorgesehen ist. Es würden nur Felder mit ihren Namen und Inhalten dargestellt werden<br />
können, auf semantische Informationen würde jedoch nicht zugegriffen werden.<br />
Ein Beispiel für semantisches Wissen ist die Darstellung von Grafiken. Sie lassen sich auf einer<br />
HTML-Seite durch Verweise darstellen. Da multimediale Datentypen im TBC-System noch nicht<br />
vorhanden sind, könnte für die Verweise der Datentyp String benutzt werden. Ohne Wissen über<br />
die Interpretation eines Feldes würde es dann als Textfeld dargestellt werden, weil bei der<br />
dynamischen Visualisierung ohne semantisches Wissen nur typspezifische Darstellungen erzeugt<br />
werden können (siehe Abbildung 4.1). Das notwendige semantische Wissen, einen Feldinhalt als<br />
Verweis und nicht als Text zu interpretieren, ist in den TBCs nicht darstellbar. Da es nicht<br />
ausreicht, ein leistungsfähiges Visualisierungssystem zu erstellen, ohne gleichzeitig eine<br />
erfolgreiche Mensch-Maschine-Kommunikation zu schaffen, muß auch semantisches Wissen in<br />
eine derartige Entwicklung mit einbezogen werden. Dieses war bei den meisten frühen<br />
Visualisierungssystemen nicht der Fall [MHHB88].<br />
Aus dieser Problemstellung ergibt sich die Notwendigkeit, für den dynamischen Ansatz zusätzliche<br />
Informationen zur Visualisierung zur Verfügung zu stellen. Mit den Visualisierungsvorlagen wird<br />
eine Lösung für die personalisierte Darstellung der Dialoge von Konversationen vorgestellt.
42 4. Grundlagen und Anforderungen der Visualisierung<br />
HTML-Dialog<br />
Kundenvorlage<br />
Kunde<br />
Szenarienvorlage<br />
Szenario<br />
Kunde<br />
Dialogvorlage<br />
Dienstleister<br />
Dialog<br />
Objekt<br />
Standard-<br />
Visualisierung<br />
eines Objektes<br />
Konversations-<br />
Spezifkation<br />
Abbildung 4.3: Struktur der Visualisierungsvorlagen<br />
Die Visualisierungsvorlagen sind dazu gedacht, dem Dienstleister durch Standards zu einer<br />
schnelleren Entwicklung zu verhelfen. Er kann einmal festgelegte Darstellungen wiederverwenden.<br />
Ihm wird darüberhinaus die Möglichkeit gegeben, dynamisch erstellte Visualisierungen mit seinem<br />
eigenen Layout zu versehen. So kann er u.a. Objekte gruppieren, um Platz zu sparen oder<br />
Kommentare und Hervorhebungen einfügen, um Aufmerksamkeit zu erregen. Die Vorlagen sollen<br />
außerdem dem einzelnen Kunden die Möglichkeit geben, die Darstellung der Dialoge seines<br />
Agenten den eigenen Anforderungen anzupassen und damit eine benutzerdefinierte Oberfläche zu<br />
ermöglichen. Die Visualisierungsvorlagen sind als Stilrichtlinien (style guides) zu verstehen, die<br />
eine Vermischung dynamischer und statischer Visualisierung ermöglichen.<br />
Für diese Zwecke wird das Modell der Visualisierungsvorlagen in zwei Teile aufgegliedert. Der<br />
Teil, der die Standards setzt, wird beim Dienstleister angesiedelt. Der andere Teil, die<br />
benutzerspezifische Visualisierung, wird dem Kunden zugeordnet.
4.8. Visualisierungsvorlagen 43<br />
Um darzustellen, welche Überlegungen die Grundlage des Implementationsmodelles bilden,<br />
auftretende Probleme bewußt zu machen und Lösungen anzubieten, müssen die einzelnen<br />
Darstellungsebenen, die letztendlich zur Visualisierung des Dialoges führen, näher betrachtet<br />
werden.<br />
4.8.1 Dienstleisterseite<br />
Ein Dialog ist immer genau einer Konversationsspezifikation zugeordnet. Eine Konversationsspezifikation<br />
besteht normalerweise aus mehreren Dialogen. In den Dialogen kommen<br />
Inhaltsfelder und Aktionen vor, die, basierend auf ihrem Typ, die in Kapitel 6 geschilderte<br />
Standarddarstellung besitzen. Jedes der Objekte, wie z.B. ein Feld für den Nachnamen, kann in<br />
mehreren Dialogen einer Konversation vorkommen.<br />
Um dieselben Objekte innerhalb einer Konversation immer gleich darstellen zu können, ist es<br />
notwendig, jedem Objekt eine eindeutige Objektidentität zuzuweisen. Würde man diese dem Tupel<br />
(Feldname, Dialogname) zuweisen, so ist keine dialogübergreifende Visualisierung möglich, da<br />
durch die Invarianten, die in Abschnitt 2.4 erklärt wurden, jedes Objekt in dieser Kombination nur<br />
einmal vorkommen darf. Deshalb ist es sinnvoll, die Objektidentität einem Paar (Feldname, Typ)<br />
zuzuteilen. Dadurch muß Abschnitt 2.4 um eine Invariante erweitert werden, die besagt, daß ein<br />
Paar (Feldname, Typ) in allen Dialogen einer Konversation immer die gleiche Bedeutung hat.<br />
Die so erreichte Objektidentität ermöglicht die Abspeicherung einer Standardvisualisierung für ein<br />
Objekt. Die Standardvisualisierung des Objektes umfaßt nicht nur die Festlegung der Darstellung<br />
eines Objektes als Kombinationsfeld, Optionsgruppe, Textfeld oder Kommentarfeld, sondern auch<br />
Attribute wie den Namen, die Größe, Schriftart, -ausrichtung und -auszeichnung, Farbe,<br />
Standardwert, Schreibschutz und Sichtbarkeit [W3C97].<br />
Für jeden Dialog, der einer HTML-Seite entspricht, kann eine spezielle Visualisierung festgelegt<br />
werden. Dadurch können in jedem Dialog die Feldreihenfolge festgelegt, Attribute hinzugefügt und<br />
Hilfen zur Benutzerführung, wie etwa Kommentare und graphische Auszeichnungen angeboten<br />
werden. Bei der Visualisierung einzelner Objekte werden die vorgegebenen Standards benutzt,<br />
sofern in der Dialogvorlage diese Einstellungen nicht überschrieben wurden. Ist für einen Dialog<br />
keine Dialogvorlage vorhanden, können die Objekte in der Reihenfolge visualisiert werden, die in<br />
der Konversationsspezifikation angegeben ist. Hierbei sollten die o.g. Standards für die einzelnen<br />
Objekte beachtet werden.<br />
4.8.2 Kundenseite<br />
Auf der Kundenseite kann jeder Kunde für jeden Dialog seine eigene benutzerbezogene<br />
Visualisierung einstellen. Hierbei kann es sich z.B. um eine besonders große Schrift oder<br />
Tonausgabe handeln.<br />
Außerdem können für jeden Kunden verschiedene Szenarien existieren. Die Szenarien können auch<br />
von mehreren Kunden wie der Abteilung einer Firma, gemeinsam benutzt werden. Ein Szenario<br />
kann u.a. die Verbindung über ein lokales Netzwerk definieren, während ein anderes die<br />
Verbindung über ein Modem beinhaltet, bei der keine multimedialen Daten übertragen werden
44 4. Grundlagen und Anforderungen der Visualisierung<br />
sollen. Das ist gerade bei der zunehmenden Bedeutung der Heimarbeit ein wichtiger Aspekt. Aber<br />
auch verschiedene Browserversionen mit ihren installierten Plugins können durch Szenarien<br />
repräsentiert werden.<br />
Da sich nicht immer automatisch feststellen läßt, mit welcher Konfiguration der Benutzer gerade<br />
arbeitet, muß es für den Benutzer bei der Anmeldung an seinen Stellvertreter, den Agenten, eine<br />
Möglichkeit geben, das gewünschte Szenario einzustellen. Diese Möglichkeit kann beispielsweise<br />
in der Anmeldung integriert sein oder extra abgefragt werden.<br />
4.8.3 Erstellung der Vorlagen<br />
Die Erzeugung der Vorlagen kann u.a. durch statische Programmierung der festzulegenden<br />
Eigenschaften oder mit Seitenerstellungstools wie Frontpage, Dreamweaver, Net Dynamics bzw.<br />
Hot Dog stattfinden. Bei den Seitenerstellungstools ist darauf zu achten, daß nur standardisierter<br />
HTML-Code erzeugt wird. Dieses ist z.B. bei Frontpage, obwohl es auf der Microsoft Windows<br />
Basis zu den besten Programmen für die Erstellung von HTML-Seiten gehört [EBB97], häufig und<br />
gerade wenn Formularfelder genutzt werden, nicht der Fall. Nach der Erstellung kann die Seite<br />
analysiert werden, um, wie Ripp [Ripp98] es vorschlägt, daraus die Konversationsspezifikation zu<br />
entwerfen. Für das Auswerten einer so entwickelten HTML-Seite ist die in Abschnitt 5.1<br />
beschriebene Änderung erforderlich, weil die Objektnamen einer HTML-Seite bei den Tycoon<br />
Business Objects, die in Abschnitt 5 erläutert werden, dynamisch festgelegt werden und die<br />
Verwendung von statischen Namen zur Zeit nicht unterstützt wird.
4.8. Visualisierungsvorlagen 45<br />
4.8.4 Abspeicherung der Vorlagen<br />
Die Visualisierungsvorlagen lassen sich an verschiedenen Stellen speichern.<br />
• Direkt in den Dialogen<br />
• In einer Datenstruktur innerhalb des Agenten<br />
• In einer externen Datenbank<br />
• In einem neuen Agenten<br />
Bei der Speicherung in den Dialogen muß die generelle Spezifikation der Dialoge um einen<br />
entsprechenden Eintrag erweitert werden. Dieses ist jedoch ein tiefer Eingriff in das TBC-System<br />
und deshalb nicht zu favorisieren. Es kann auch in der Konversationsspezifikation für jede<br />
Dialogspezifikation ein zusätzliches Feld eingefügt werden, welches die notwendigen<br />
Informationen enthält. Doch dieses Feld müßte dann zu jeder Dialogspezifikation vorhanden sein<br />
und würde damit das Erstellen der Konversationsspezifikation erschweren. Außerdem würden die<br />
so abgespeicherten Informationen den Speicherbedarf des Agenten, der ja mehrere Konversationen<br />
gleichzeitig führen kann, erhöhen. Die Informationen müßten zudem bei jeder Migration des<br />
Agenten mitgenommen werden.<br />
Ebenso verhält es sich mit der Speicherung in einer extra anzulegenden Datenstruktur im Agenten.<br />
Der Vorteil einer Speicherung im Agenten selber ist der schnelle Zugriff. Die Informationen stehen<br />
sofort zur Verfügung und verursachen keine Performanceeinbußen durch sekundäre<br />
Konversationen, wie es bei der nächsten Möglichkeit der Fall ist. Aber die Erhöhung des<br />
Speicherbedarfs steht dem Ziel, möglichst kleine Agenten zu erzeugen, entgegen. Bei wenigen<br />
Dialogen in einer Konversation wird die Größe des Agenten, ein kleiner Agent ist ca. 70 KB groß,<br />
nicht wesentlich erhöht. Da die Anforderungen an das System aber vorsehen, komplexe<br />
Agentensysteme entwickeln zu können, scheidet auch diese Möglichkeit aus.<br />
Die dritte Möglichkeit ist die Speicherung in einer externen Datenbank. Für den Zugriff auf diesen<br />
Datenbestand kann z.B. der Datentyp sequence verwendet werden. Diese Datenbank müßte an<br />
einem festen Ort vorhanden sein, damit die Zugriffsmöglichkeit gewährleistet ist.<br />
Die besten Voraussetzungen schafft die Ablage der Informationen in einem nur dafür zuständigen<br />
Agenten. Die Agenten werden in Tycoon, einem persistenten System, erstellt. Die Vorteile dieser<br />
Lösung sind, daß die Funktionen des sequence Datentyps nicht extra erstellt werden müssen und<br />
die Kommunikation mit diesem Agenten durch sekundäre Konversationen erfolgen kann.<br />
Außerdem kann der Vorlagenagent auf einfache Art und Weise mit Regeln versehen werden. So<br />
kann er z.B. benötigte aber nicht vorhandene Informationen aufgrund der implementierten Regeln<br />
selbstständig besorgen. Dadurch wird ein in sich geschlossenes Konzept erreicht. Zudem ist bei<br />
Bedarf eine Migration möglich. Wegen dieser Vorteile ist diese Möglichkeit der Speicherung in<br />
einer externen Datenbank und den anderen Möglichkeiten vorzuziehen.<br />
Bei der Abspeicherung der Vorlagen ist zwischen der Kunden- und der Dienstleisterseite zu<br />
unterscheiden. Die Kundenvorlagen können im Netz an einer beliebigen Stelle liegen. Nur dem
46 4. Grundlagen und Anforderungen der Visualisierung<br />
Stellvertreteragenten des Kunden muß bekannt sein, wo sie zu finden sind. Die Migrationsfähigkeit<br />
des Stellvertreters wird hierdurch nicht eingeschränkt.<br />
Die Visualisierungsvorlagen des Dienstleisters gliedern sich in zwei Teile. Ein Teil wird für die<br />
eigene Visualisierung der Dialoge benötigt. Die Abspeicherung kann analog zu den<br />
Kundenvorlagen erfolgen. Der zweite Teil besteht aus den Dialogvorlagen, in denen die<br />
Informationen für die Kunden abgespeichert werden. Da ein Dienstleister zur gleichen Zeit auch<br />
Kunde sein kann, bietet es sich an, alle ihn selber betreffenden Visualisierungsinformationen in<br />
einem Vorlagenagenten zu speichern. Auf diese Weise wird ein einheitlicher Aufbau für die<br />
Visualisierung geschaffen, der von der jeweiligen Rolle, Kunde oder Dienstleister, abstrahiert. Der<br />
Dienstleister- und der Kundenvorlagen-Agent werden im folgenden, soweit nicht ausdrücklich<br />
zwischen ihnen unterschieden werden muß, beide als Vorlagenagenten bezeichnet.<br />
Kunden<br />
Agent<br />
Kunden-<br />
vorlagen-<br />
Agent<br />
Dialog-<br />
vorlagen-<br />
Agent<br />
Dienstleister<br />
Agent<br />
Dienstleister-<br />
vorlagen-<br />
Agent<br />
Abbildung 4.4: Informationsfluß zur Visualisierung<br />
In den Dialogvorlagen, die der Dienstleister für andere zur Verfügung stellt, können auch<br />
Informationen enthalten sein, welche die Kunden nicht ändern dürfen. Um diese Informationen<br />
entsprechend schützen zu können, sollten die Vorlagen mit diesen Informationen an einem<br />
absicherbaren Ort abgespeichert und mit den entsprechenden Sicherheitsmaßnahmen abgeschirmt<br />
werden. Hierdurch wird die Migrationsfähigkeit des Dienstleisters nicht beeinträchtigt, weil die<br />
Vorlagen im Vorlagenagenten am Ort verbleiben können. Die Implementierung eines<br />
Rollenmodells in die Visualisierungsvorlagen ist zwar theoretisch möglich, für das Modell der BCs<br />
aber nicht notwendig, weil schon durch die Aufnahme der Konversation und Angabe der<br />
Konversationsspezifikation jedem Teilnehmer eine definierte Rolle zugewiesen wird.<br />
Prinzipiell können alle Visualisierungsvorlagen, die zu einer Konversation gehören, in einem<br />
Vorlagenagenten gespeichert werden. Der Zugriff auf diese Informationsmenge ist aber schwer<br />
abzusichern, und die ganze Kommunikation liefe über diesen einen Agenten, so daß, gerade bei<br />
vielen Konversationen oder Konversationen mit vielen Dialogen Leistungseinbußen auftreten<br />
werden. Deshalb ist es sinnvoll, die Vorlagen für den Kunden und den Dienstleister in getrennten<br />
Agenten abzuspeichern. Da die Dialogvorlagen an einer abgesicherten Stelle gespeichert werden<br />
müssen, ist zu prüfen, welche Vor- und Nachteile durch eine gesonderte Speicherung der Kunden-,<br />
Dienstleister- und Dialogvorlagen entstehen.
4.8. Visualisierungsvorlagen 47<br />
4.8.5 Aufruf der Vorlagen<br />
Der Nachteil einer getrennten Speicherung besteht darin, daß für die Visualisierung jedes Dialoges<br />
auf den Agenten, der die Dialogvorlagen verwaltet (Dialogvorlagenagent), mit einer sekundären<br />
Konversation zugegriffen werden muß. Dieses läßt sich nur umgehen, indem alle für eine<br />
Konversation relevanten Visualisierungsinformationen im Vorlagenagenten gespeichert werden.<br />
Dafür muß sichergestellt werden, daß die Vorlagenagenten des Kunden und Dienstleisters durch<br />
den Agenten, der die Dialogvorlagen verwaltet, von Änderungen, die gerade bei lang andauernden<br />
Konversationen auftreten können, informiert werden. Da die Informationen nur für die Agenten<br />
interessant sind, zwischen denen gerade eine Konversation dieses Typs geführt wird, läßt sich<br />
dieses über eine Verwaltung der Konversationen im Dialogvorlagen-Agenten realisieren. Hierbei<br />
tritt das in Abschnitt 3.4 geschilderte Problem auf, daß diese Verwaltung durch das Agentensystem<br />
nicht unterstützt wird. Eine Lösung für die Verwaltung von Konversationen wird deshalb in<br />
Abschnitt 7.1 beschrieben.<br />
Um die Dialoge darstellen zu können, kann der Vorlagenagent beim Beginn einer Konversation<br />
alle erforderlichen Visualisierungdaten bekommen. Für die Anforderung und Übertragung der<br />
Daten vom Dialogvorlagen-Agenten können sekundäre Konversationen genutzt werden. Der<br />
Stellvertreteragent kann die im Vorlagenagenten gespeicherten Informationen zur Visualisierung<br />
der Dialoge benutzen.<br />
Um die gespeicherte Datenmenge des Vorlagenagenten klein zu halten, müssen die<br />
Visualisierungsinformationen am Ende der Konversation gelöscht werden. Dazu ist es erforderlich,<br />
daß der Stellvertreteragent seinen Vorlagenagenten in der Regel des finalen Dialoges vom Ende der<br />
Konversation unterrichtet. Danach muß der Vorlagen-Agent den Dialogvorlagen-Agenten<br />
benachrichtigen, daß er keine weiteren aktuellen Visualisierungsinformationen für die beendete<br />
Konversation benötigt und die Visualisierungsinformationen, die er vom Dialogvorlagen-Agenten<br />
bekommen hatte, löschen. Zusammen mit den Änderungsinformationen des Dialogvorlagen-<br />
Agenten während der Konversation wird so sichergestellt, daß stets die aktuellen<br />
Visualisierungsinformationen vorhanden sind und der gespeicherte Datenumfang der Agenten nicht<br />
unnötig zunimmt.<br />
In Verbindung mit der Entwicklung von Cascading Style Sheets (CSS) [W3C97, Münz97b], ist zu<br />
untersuchen, ob Teile der Visualisierungsvorlagen in der HTML-Seite als Style Sheets<br />
abgespeichert werden können. CSS beschreiben, wie Dokumente am Bildschirm oder auf<br />
Ausdrucken dargestellt werden [W3C98]. Die Nutzung von Cascading Style Sheets setzt allerdings<br />
voraus, daß alle Anwender neuere HTTP-Clients benutzen. Die derzeitigen HTTP-Clients haben<br />
den Standard noch nicht voll implementiert [Hüsk97b]. Außerdem lassen sich nicht alle<br />
Visualisierungsinformationen in die Style Sheets einbinden. Unter anderem sind die Überlegungen<br />
zur Standardisierung der Positionierung von Grafiken noch nicht abgeschlossen [Hüsk97b].<br />
Außerdem fehlt die Möglichkeit, die Reihenfolge von Objekten festzulegen. Zur Zeit sind die Style<br />
Sheets in ihrer Funktionalität auf die reine Optik beschränkt [Münz97c]. Aus diesen Gründen<br />
können die CSS zwar in das Visualisierungskonzept eingebunden werden, reichen aber für die notwendige<br />
Funktionalität nicht aus.<br />
Die Angabe der Rollen der an einer Konversation beteiligten Agenten läßt nicht erkennen, wer die<br />
Dialogvorlagen letztendlich erstellt hat. Dieses kann auch durch eine dritte Person geschehen sein.<br />
Es ist außerdem zu berücksichtigen, daß nicht nur eine, sondern mehrere Konversationen gleichen
48 4. Grundlagen und Anforderungen der Visualisierung<br />
Typs zur gleichen Zeit geführt werden können. Wenn beispielsweise mehrere Kunden zur gleichen<br />
Zeit an die Kreditabteilung einer Bank herantreten, um einen Kredit zu beantragen. Ebenso könnten<br />
mehrere Kunden gleichzeitig in einem virtuellen Kaufhaus einkaufen.<br />
Bei der dynamischen Visualisierung muß jeder Agent selber die entsprechenden Informationen<br />
abfragen. Es werden mit dem Dialog keine Visualisierungsinformationen mitgeschickt, weil ein<br />
derartiges Vorgehen konzeptuelle Änderungen am Agentensystem zur Folge hätte.<br />
Bevor es letztendlich zur Visualisierung kommt, sind zwei sekundäre Konversationen notwendig.<br />
In der ersten befragt der jeweilige Kunden- oder Dienstleisteragent seinen Vorlagen-Agenten nach<br />
Visualisierungsinformationen. In der zweiten befragt der Vorlagen-Agent den Dialogvorlagen-<br />
Agenten nach Informationen, wie die Dialoge der Konversation zwischen Kunde und Dienstleister<br />
visualisiert werden sollen. Die Informationen, die den ersten Dialog betreffen, sendet er als finalen<br />
Dialog an den Stellvertreter-Agenten zurück. Da die Stellvertreter-Agenten die<br />
Visualisierungsinformationen nicht intern speichern können, ist für die folgenden Dialoge jeweils<br />
eine Konversation mit dem Vorlagen-Agenten zu führen.<br />
4.9 Zusammenfassung<br />
An die Visualisierung sind folgende Anforderungen zu stellen: Es soll ein Internet Client<br />
geschaffen werden, der weder bisherige Threads blockiert, noch die Migration der Agenten<br />
einschränkt. Sämtliche in den TBCs vorhandene Datentypen müssen darstellbar sein. Für die<br />
Ausgabe von Massendaten müssen mehrere Möglichkeiten vorhanden sein, um unterschiedliche<br />
Mengen von Datensätzen auf verschiedene Arten darstellen zu können. Bestehende Standards der<br />
Darstellung, Benutzerführung und Bedienung des Systems sollen mit der<br />
Visualisierungsschnittstelle realisierbar sein. Der Benutzer muß zwischen synchronen und<br />
asynchronen Verbindungen wählen und wechseln können.<br />
Ein dynamisches Modell, das die Abspeicherung von Semantiken ermöglicht, könnte durch den<br />
Einsatz von Visualisierungsvorlagen realisiert werden.
49<br />
5. Kapitel<br />
Analyse der Tycoon Business Objects<br />
Für die Visualisierung bietet es sich an, auf bereits vorhandene Funktionalitäten zurückzugreifen.<br />
Im wesentlichen kommen hierfür zwei Arbeiten in Frage. In der ersten wird eine Verbindung<br />
zwischen dem Internet und dem Tycoon Objektspeicher geschaffen [Ramm96]. Die zweite ist ein<br />
Prototyp der Tycoon Business Objects (TBO), mit dem Objekte im Internet visualisiert werden<br />
sollen.<br />
Die Arbeit von Ramme hat das Ziel, Objektreferenzen im Objektspeicher von Tycoon zu<br />
visualisieren. Damit trifft sie nicht das Ziel der vorliegenden Arbeit. Die Tycoon Business Objects<br />
wurden vom Matthes und Müßig mit dem Ziel geschaffen, Tycoonobjekte verschiedenen Typs im<br />
Internet darzustellen. Außerdem sind sie als Vorläufer zu den Tycoon Business Conversations zu<br />
sehen, haben aber bis auf eine ähnliche Erzeugung von Objekttypen mit der Realisierung von<br />
Johannisson [Joha97] nichts mehr zu tun. Um Objekte im Internet darzustellen, wurde eine<br />
Funktionsbibliothek geschaffen, die im nachfolgenden näher beschrieben wird.<br />
Das System der TBOs ist unter wwwenv in den Tycoon Bibliotheken zu finden und besteht aus<br />
mehreren Teilen. Die für die Visualisierung der TBCs wichtigen Teile sind Tbo.ti und Html.ti.<br />
Html.ti enthält Funktionen zur Erzeugung von HTML-Befehlen, Tbo.ti dient zur Erzeugung und<br />
Verwaltung von Datenobjekten und Webservern. Im folgenden werden die einzelnen Teile dieses<br />
Systems näher erklärt und untersucht, ob sie für die Visualisierung der TBCs geeignet sind.<br />
5.1 Verbindungsablauf<br />
Um die TBOs nutzen zu können, muß zunächst ein TBO-Server gestartet werden. Über diesen<br />
Server werden die zu visualisierenden Objekte angesprochen und visualisiert.<br />
Ein HTTP-Client, der Informationen visualisieren soll, sendet einen HTTP-Request, also eine<br />
URL, an den Webserver. Dieser führt das in der URL genannte cgi-Skript aus [Mise98]. Ein cgi-<br />
Skript ist ein Programm, das im Common Gateway Interface (CGI) eines Webservers vorhanden<br />
ist. Das Common Gateway Interface ist eine Schnittstelle zwischen World Wide Web-Servern und<br />
Skripten, Dienstprogrammen und Programmen, die Benutzerantworten auf Clientanforderungen<br />
generieren [Morr95].
50 5. Analyse der Tycoon Business Objects<br />
Auf dem Webserver wird durch dieses cgi-Skript ein C-Programm gestartet. Das Programm wertet<br />
die URL aus und sendet sie über den Port, dessen Nummer im Skript festgelegt ist, an den TBO-<br />
Server. Der TBO-Server verarbeitet die Anfrage, erzeugt den entsprechenden HTML-Code und<br />
sendet diesen zurück an den HTTP-Client. Danach greift er sofort wieder auf den angegebenen Port<br />
zu, um ankommende Nachrichten zu empfangen.<br />
Da der TBO-Server die Anfragen über einen Port empfängt, muß dieser Port von vornherein beiden<br />
Seiten bekannt sein. Der TBO-Server wird deshalb unter Angabe der Portnummer gestartet. Es<br />
lassen sich gleichzeitig mehrere Server auf unterschiedlichen Ports eines Rechners starten.<br />
Irgendwo SUN01 Webserver SUN02<br />
TBO-User<br />
HTTP-Client<br />
Script<br />
"tycoon"<br />
C-Programm<br />
"t2w3"<br />
TBO-Server<br />
.../cgi-bin/<br />
tycoon?<br />
object=<br />
./t2w3 sun02.<br />
sts.tu-harburg.de<br />
8697<br />
TBO-Action<br />
main(array "8697"<br />
"/cgi-bin/tycoon" end )<br />
HTTP<br />
Port<br />
Abbildung 5.1: Verbindungsablauf der Visualisierung<br />
Bei der Visualisierung vergibt der TBO-Server selbstständig Namen für die visualisierten Objekte,<br />
die auf der HTML-Seite verwendet werden. Es gibt zwar eine Funktion setObjectName(), aber der<br />
damit gesetzte Name hat keinen Einfluß auf die Visualisierung. Er wird nur intern verwendet. Auch<br />
mit den Funktionen addAttribute() und setAttributes() läßt sich dieses nicht beheben, weil damit<br />
zwar neue Attribute hinzugefügt und diese auch geändert werden können, eine Änderung des<br />
Attributes name aber nicht möglich ist.<br />
Um den mit setObjectName() gesetzten Objektnamen standardmäßig für die Visualisierung zu<br />
verwenden, müßten in tbo.tm die Funktionen newObjectName() und newFieldName() angepaßt<br />
werden.<br />
Eine Visualisierung von anderen, im TBO-System vorher nicht definierten, Objekten, über das<br />
Interface Html.ti ist zwar möglich, aber die darin enthaltenen Daten können aufgrund der fehlenden<br />
Namenszuordnung mit dem existierenden System nicht ausgewertet werden. Deshalb sind nur die<br />
vorhandenen Datentypen verwendbar. Um weitere Datentypen nutzen zu können, muß das TBO-<br />
System (Tbo.ti) um neue Datentypen erweitert werden.
5.2. Daten- und Aktionsobjekte 51<br />
5.2 Daten- und Aktionsobjekte<br />
Wenn die Visualisierung durch den TBO-Server erfolgt, muß für jeden zu visualisierenden<br />
Datentyp der TBCs ein Gegenstück im TBO-Modul vorhanden sein.<br />
Typ Name TBO Name TBC<br />
Fließkommazahl Nicht vorhanden TbcContent.realSpec()<br />
Ganzzahl Tbo.int TbcContent.intSpec()<br />
Zeichen Nicht vorhanden Nicht vorhanden<br />
Zeichenkette Tbo.string TbcContent.stringSpec()<br />
Boolsche Werte Tbo.bool Nicht vorhanden<br />
Datum Tbo.date TbcContent.dateSpec()<br />
Mehrfachauswahl Tbo.enum<br />
checkboxType<br />
selectMultipleType<br />
Oder Tbo.iter<br />
TbcContent.multipleChoiceSpec()<br />
Einzelauswahl<br />
Tbo.enum<br />
radioType<br />
TbcContent.singleChoiceSpec()<br />
Record Siehe unten TbcContent.rcdSpec()<br />
Variante Tupel Siehe unten TbcContent.variantSpec()<br />
Massendaten Siehe unten TbcContent.sequenceSpec ()<br />
Konversationsspezifikation<br />
Siehe unten<br />
TbcContent.cspecSpec()<br />
Dialog Siehe unten TbcContent.dialogSpec()<br />
Formular Tbo.user Dialog<br />
Aktion Tbo.action Request<br />
Hyperlink Html.anchor Nicht vorhanden<br />
Grafik Nicht vorhanden Nicht vorhanden<br />
Tabelle 1: Vergleich der Datentypen<br />
Da für die Darstellung die zu visualisierenden Objekte der TBCs und damit die dort zur Verfügung<br />
stehenden Typen ausschlaggebend sind, ist ein Vergleich der Datentypen der TBCs und TBOs<br />
notwendig.<br />
Für den Datentyp der Fließkommazahl (Real) existiert kein Äquivalent bei den TBOs. Das einzelne<br />
Zeichen läßt sich in beiden Systemen durch eine Zeichenkette (String) der Länge eins realisieren.
52 5. Analyse der Tycoon Business Objects<br />
Eine boolsche Variable (Bool) läßt sich auf der TBC-Seite z.B. als Zeichenkette (String) mit den<br />
Inhalten „true“ oder „false“ oder als ganze Zahl (Int) mit den Inhalten 0 oder 1 darstellen. Die<br />
Datentypen Record (Rcd), variantes Tupel (Variant), Konversationsspezifikation (Cspec) und<br />
Dialog (Dialog) können, wie in Abschnitt 6.2.4 und 0 gezeigt, in atomare Datentypen aufgelöst<br />
werden, so daß bei den TBOs entsprechende Typen die Darstellung zwar erleichterten, aber nicht<br />
benötigt werden. Auch der Zugriff auf Massendaten (sequence) läßt sich auf atomare Typen<br />
zurückführen. Die dafür notwendigen Zugriffsfunktionen sind in Abschnitt 4.7.3 aufgeführt. Die<br />
Konversationsspezifikation (Cspec) muß nicht visualisiert werden. Sie ist nur für die Realisierung<br />
des Archives notwendig [Krus97]. Sollten die Anforderungen hin zu einer Visualisierung geändert<br />
werden, so würde die Konversationsspezifikation als mehrzeilige Zeichenkette dargestellt werden,<br />
die nur ausgegeben, aber nicht geändert werden könnte.<br />
Der Datentyp der Mehrfachauswahl (tbo.iter) wird u.a. zur Darstellung von Listen atomarer Typen<br />
benutzt. Für nicht atomare Typen müßte die Realisierung in tbo.tm entsprechend erweitert werden.<br />
Ebenso wie die Datentypen, müssen auch die Aktionen (requests) eines Dialoges durch die TBOs<br />
abbildbar sein. Dieses läßt sich mit den Objekten vom Typ tbo.action realisieren. Sie werden in der<br />
HTML-Seite als Schaltflächen visualisiert.<br />
Durch die Betätigung einer Schaltfläche wird auf der TBO-Seite eine tbo.action ausgelöst. Danach<br />
werden die in dieser Aktion definierten Befehle ausgeführt. Entweder wird durch einen der Befehle<br />
eine HTML-Seite an den HTTP-Client gesendet, oder es wird automatisch bei der Beendigung der<br />
tbo.action eine leere Seite an den Client zurückgegeben. Dieses automatische Senden verursacht<br />
Probleme, die in Abschnitt 7.3 näher erklärt und gelöst werden.<br />
5.3 Seitenobjekte<br />
Die Objekte vom Typ tbo.user entsprechen bei der Visualisierung einer HTML-Seite. Sie können<br />
außerdem noch verschachtelt werden, so daß ein tbo.user-Objekt aus mehreren anderen tbo.user-<br />
Objekten aufgebaut werden kann. Ein tbo.user-Objekt setzt sich dabei aus vielen Einzelobjekten<br />
vom Typ tbo.action oder TBO-Datentypen zusammen. Des weiteren können mit Funktionen des<br />
Interfaces Html.ti, wie z.B. html.plain(), einfache Texte und andere Objekte zu<br />
Kommentarzwecken eingefügt werden.
5.4. Zusammenfassung 53<br />
tbo.user<br />
tbo.string<br />
tbo.bool<br />
tbo.date<br />
tbo.action<br />
HTML Text<br />
tbo.int<br />
tbo.newDate tbo.iter tbo.enum<br />
Abbildung 5.2: Aufbau eines Seitenobjektes<br />
Um Probleme beim Wiederherstellen von Seiten, dem reload, zu vermeiden, müssen die einzelnen<br />
Seitenobjekte exportiert werden. Damit wird gleichzeitig erreicht, daß diese Seitenobjekte direkt<br />
und nicht nur durch den Umweg über andere Seiten, abrufbar sind. Daneben empfiehlt es sich,<br />
diese auch gleich mit einem internen Namen zu versehen, auch wenn dies für den reinen Export<br />
nicht notwendig ist.<br />
Ebenso wie die in Abschnitt 5.1 geschilderten Objekte verfügt auch dieser Typ über eine display-<br />
Methode, die es ermöglicht, das Objekt an den Server zu senden.<br />
5.4 Zusammenfassung<br />
Das TBO-System stellt mit seinen Daten-, Aktions- und Seitenobjekten eine Möglichkeit zur<br />
Unterstützung der Visualisierung von TBCs dar. Es ist zu diesem Zweck an einigen Stellen zu<br />
erweitern, wie z.B. um den Datentyp Real und die Möglichkeit, Grafiken darzustellen. Außerdem<br />
ist zu testen, wie der Datenaustausch zwischen den TBO- und TBC-Objekten funktioniert und ob<br />
der TBO-Server genutzt werden kann, ohne die Fähigkeiten des Agentensystems einzuschränken.
55<br />
6. Kapitel<br />
Design der Visualisierungskomponente<br />
Nach der Analyse der für die Visualisierung wichtigen Einzelheiten wird jetzt der Aufbau des<br />
Visualisierungssystems vorgestellt. Aufbauend auf den einzelnen Datentypen und einer Diskussion<br />
der möglichen Darstellungsarten der Datentypen, erfolgt danach die Einordnung in das<br />
Agentensystem und die Behandlung der durch das System bedingten Voraussetzungen.<br />
Generell wird die optimale Visualisierung eines Objektes davon beeinflußt, was zu welchem<br />
Zweck dargestellt werden soll. Ein singleChoice-Objekt kann z.B. einerseits als Kombinationsfeld,<br />
andererseits aber auch als Liste von Optionsfeldern dargestellt werden. Nur bei den atomaren<br />
Objekten läßt sich aufgrund der Möglichkeiten von HTML eine Standarddarstellung angeben.<br />
Doch auch hier muß in Einzelfällen die Breite der Felder spezifiziert werden. Bei den komplexen<br />
Datentypen muß ggf. die gewünschte Erscheinung bestimmt werden. Dieses kann mit den in<br />
Abschnitt 4.8 geschilderten Visualisierungsvorlagen geschehen.<br />
6.1 Atomare Datentypen<br />
In den Business Conversations sind die atomaren Datentypen Int, Real, String und Date<br />
vorgesehen. In HTML lassen sich derartige Daten in Formularfeldern des input-Typs darstellen.<br />
Abbildung 6.1: Visualisierung atomarer Daten<br />
Es kann in einer reinen HTML-Seite kein Unterschied zwischen den o.g. Datentypen gemacht<br />
werden. Die Daten werden alle in derselben Form als Zeichenkette über die URL zurückgeliefert.<br />
Eine Umsetzung in die entsprechenden Typen muß auf der Programmseite erfolgen. Dieses wird<br />
durch die Nutzung des TBO-Systems automatisch erreicht.
56 6. Design der Visualisierungskomponente<br />
Darf die Eingabe des Benutzers nicht sichtbar sein, so kann ein Kennwortfeld (password)<br />
verwendet werden. Eingegebene Zeichen werden hier durch Sterne symbolisiert [Morr95].<br />
Abbildung 6.2: Kennwortfeld<br />
Beim Absenden von Kennwörtern muß darauf geachtet werden, daß die post-Methode (siehe<br />
Abschnitt 4.2) verwendet wird. Eine Verwendung der get-Methode führt dazu, daß das Kennwort<br />
im Klartext in der URL auftaucht.<br />
Reicht eine einzelne Zeile nicht aus, weil die aus- oder einzugebende Informationsmenge zu groß<br />
oder über mehrere Zeilen verteilt ist, muß ein Textbereich (textarea) verwendet werden [Morr95].<br />
Abbildung 6.3: Textbereich<br />
Die geschilderten Verfahren orientieren sich an der HTML 4.0 Spezifikation [W3C97]. Andere<br />
Möglichkeiten, flexiblere Seiten zu erzeugen und auszuwerten, werden durch<br />
Programmiersprachen wie Java [Java96], JavaScript und DynamicHTML [Hüsk97a] geboten.<br />
Die Umsetzung von TBO- zu TBC-Datentypen wird in Abschnitt 7.3.3 ausführlich beschrieben.<br />
6.2 Komplexe Datentypen<br />
Die komplexen Datentypen können weitere TBC-Datentypen enthalten. Diese Verschachtelung<br />
kann in beliebige Verschachtelungstiefen fortgesetzt werden. Zu den komplexen Datentypen zählen<br />
SingleChoice, MultipleChoice, Dialog, Cspec, Sequence, Rcd und Variant. Für diese Datentypen<br />
muß differenziert werden, ob sie nur atomare Objekte oder weiterverschachtelte Elemente<br />
enthalten.<br />
Für atomare Objekte sind die oben genannten Darstellungen zusammen mit den im Folgenden<br />
ausgeführten typspezifischen Wiedergaben ausreichend. Da das TBO-System eine Verschachtelung<br />
von Objekten zuläßt, wird die Darstellung komplexer Objekte durch die Aggregation von<br />
Einzelkomponenten erzeugt. Hierbei sind die unten beschriebenen Einzelheiten für die jeweiligen<br />
Typen zu beachten.
6.2. Komplexe Datentypen 57<br />
Generell lassen sich verschachtelte Datenstrukturen in HTML mit Tabellen, Frames und<br />
Hyperlinks, die auf weitere HTML-Seiten verweisen, gut darstellen. Frames sind HTML-Seiten, in<br />
denen weitere HTML-Seiten dargestellt werden können, so daß eine Verschachtelung von HTML-<br />
Seiten realisierbar wird. Die Darstellungsmöglichkeiten sind im TBO-System bereits vorhanden<br />
oder werden durch die in Abschnitt 7.5 geschilderten Erweiterungen gegeben. Gerade bei den<br />
komplexen Inhaltsobjekten muß der von Bachmann [Bach95] formulierte erste Grundsatz der<br />
Design-Grundlagen für Hypertext-Systeme beachtet werden. Dieser Grundsatz lautet: Entwerfe<br />
Oberflächen so einfach wie möglich. Gemeint ist damit, daß bei der Verwendung zu vieler Objekte<br />
auf einer HTML-Seite der Benutzer leicht die Übersicht verliert. Wenn viele Informationen<br />
dargestellt werden müssen, sollten diese aufgeteilt und zu verschiedenen Zeitpunkten,<br />
beispielsweise durch untergeordnete Fenster, präsentiert werden.<br />
Deshalb muß bei den verschachtelten Objekten die Verschachtelungstiefe und die Anzahl der<br />
Objekte pro Ebene beachtet werden. Ab einer vom Einzelfall abhängigen Verschachtelungstiefe<br />
und Objektanzahl kann die Visualisierung nicht mehr auf einer einzelnen HTML-Seite erfolgen,<br />
weil die Übersichtlichkeit und damit ein wesentlicher Aspekt der Benutzerfreundlichkeit des<br />
Systems, nicht mehr gegeben wäre. Es können weitere Fenster, im folgenden als Unterfenster<br />
bezeichnet, geöffnet werden, um Einzelheiten darzustellen. Ein automatisches Anzeigen aller<br />
Einzelheiten in weiteren Fenstern (Unterfenstern) ist jedoch aus Gründen der Übersichtlichkeit<br />
nicht sinnvoll. Deshalb wurde die Möglichkeit geschaffen, Unterfenster mit Schaltflächen oder<br />
Hyperlinks aufzurufen. Diese Fenster können wiederum bei genügend komplexen Datenstrukturen,<br />
eigene Unterfenster haben.<br />
Sind die Unterfenster visualisiert, muß sichergestellt werden, daß sie bei der Auswahl eines<br />
anderen Elementes auf der Hauptseite aktualisiert werden [Mues94]. Außerdem ist es sinnvoll, die<br />
Folgeseiten beim Verlassen der Hauptseite zu schließen. Bei Datenänderungen, die z.B.<br />
Auswirkungen auf aggregierte Werte in übergeordneten Fenstern haben, müssen die abhängigen<br />
Fenster aktualisiert werden.<br />
Derartige Anforderungen lassen sich für nicht HTML-basierte Visualisierungen u.a. mit den in<br />
[Mues94] und [Koeh96] geschilderten Methoden lösen. In HTML 4.0 stehen nur Möglichkeiten<br />
zum Aktualisieren der Folgeseite oder des übergeordneten Fensters zur Verfügung. Ein<br />
automatisches Schließen derselben erfordert über HTML hinausgehende Funktionalitäten.<br />
Aus diesen Gründen ist die Darstellung mit Unterfenstern nach Möglichkeit zu vermeiden. Die<br />
bessere Alternative bieten in den meisten Fällen Frames.<br />
6.2.1 Auswahltypen<br />
Zu den Auswahltypen gehören die Auswahl eines Elementes aus einer Liste (SingleChoice) und die<br />
Auswahl mehrerer Elemente (MultipleChoice). Bei der Darstellung einer SingleChoice ist der Typ<br />
der darin enthaltenen Objekte zu beachten. Gehört er zu den atomaren Datentypen, so bietet sich<br />
eine Darstellung als Kombinationsfeld (listbox) an. Diese hat den Vorteil, daß wenig Platz<br />
verbraucht wird. Dafür sind allerdings nicht alle Möglichkeiten auf einmal sichtbar.
58 6. Design der Visualisierungskomponente<br />
Abbildung 6.4: Visualisierung der SingleChoice als Kombinationsfeld<br />
Sollen mehrere Werte auf einmal sichtbar sein, so kann die Darstellung als Listenfeld oder<br />
Optionsgruppe mit einzelnen Optionsfeldern (radio Buttons) erfolgen.<br />
Listenfeld<br />
Optionsgruppe<br />
Abbildung 6.5: Visualisierung der SingleChoice mit atomaren Daten<br />
Bei verschachtelten Datentypen ist die Darstellung als Optionsgruppe, die aus mehreren<br />
Optionsfeldern mit weiter untergeordneten Feldern besteht, zu benutzen.<br />
Die Darstellung komplexer Optionsgruppen und Kontrollkästchen wird durch die TBOs nicht<br />
unterstützt. Deshalb muß für die Darstellung ein komplexes Objekt in einfach strukturierte Objekte<br />
zerlegt werden. Danach wird jeweils eine Zeile der Optionsgruppe, also ein Optionsfeld,<br />
abwechselnd mit den dazu gehörenden Unterfeldern erzeugt.
6.2. Komplexe Datentypen 59<br />
<br />
<br />
<br />
<br />
<br />
<br />
Abbildung 6.6: Komplexe Optionsgruppe<br />
Da verschachtelte Formulare in HTML nicht möglich sind, werden bei der Auswahl einer Option<br />
auch die den anderen Optionen untergeordneten Felder mit übermittelt. Der Agent muß nach einer<br />
Auswahl selbständig die relevanten Informationen filtern.<br />
Abbildung 6.7: Visualisierung der MultipleChoice
60 6. Design der Visualisierungskomponente<br />
Beim Typ MultipleChoice ist zu beachten, daß in ihm häufig komplexe Strukturen enthalten sind,<br />
die im Einzelfall mit beachtet werden müssen. Beim Absenden des Formulars an den Server<br />
werden die Werte derjenigen Kontrollkästchen (checkbox) mit übermittelt, die vorher ausgewählt<br />
wurden. Es ist, anders als bei der Optionsgruppe, nicht möglich, Kontrollkästchen zu gruppieren.<br />
Alle selektierten Felder werden mit an den Server übermittelt. Dabei kann nicht überprüft werden,<br />
ob das übergeordnete Objekt ebenfalls ausgewählt wurde. Agentenseitig ist eine Nachbearbeitung<br />
der zurückgesandten Informationen notwendig.<br />
6.2.2 Dialoge<br />
Die Darstellung ganzer Dialoge, wie sie z.B. für das Archiv [Krus97] erforderlich ist, kann mit<br />
Frames erfolgen. Hierbei wird eine HTML-Seite in mehrere Teilbereiche unterteilt, die alle aus<br />
einzelnen Seiten bestehen. Ebenso ist es möglich, Dialoge in Tabellenzellen darzustellen. Sie<br />
können auch zusammen mit den anderen Daten auf einer Seite untergebracht werden. Hier muß<br />
allerdings darauf geachtet werden, daß die zu einem Dialog gehörenden Daten als<br />
zusammenhängend gekennzeichnet werden. Dieses kann bei einer dynamischen Darstellung mit<br />
Hilfe der Visualisierungsvorlagen aus Abschnitt 4.8 geschehen.<br />
Abbildung 6.8: Visualisierung von Dialogen mit Frames<br />
Für die Darstellung der einzelnen Elemente der Dialoge gelten die bereits beschriebenen<br />
Einzelheiten. Werden die im Archiv gespeicherten Dialoge dargestellt, so muß sichergestellt<br />
werden, daß keine Änderungen an den Dialogen vorgenommen werden können. Dieses kann<br />
beispielsweise mit den Visualisierungsvorlagen oder durch die Verwendung von nicht aktivierten<br />
(disabled) Feldern geschehen [W3C97].
6.2. Komplexe Datentypen 61<br />
6.2.3 Sequence<br />
Mit dem Datentyp sequence wird die Verwaltung von Massendaten ermöglicht. Die mit diesem<br />
Typ aggregierten Objekte sind nicht direkt in das Dialogobjekt eingebunden. Stattdessen werden<br />
Methoden für den Zugriff auf Datenbanken durch Klienten zur Verfügung gestellt [Joha97].<br />
Die tabellenorientierte Darstellung ist sinnvoll, um eine größere Anzahl von Datensätzen<br />
gleichzeitig anzuzeigen. Hierbei ist zwischen zwei- und mehrdimensionalen Tabellen zu<br />
unterscheiden. Eine zweidimensional organisierte Massendatenstruktur kann sehr gut mit Tabellen<br />
dargestellt werden [Jone96]. Die Spaltenüberschriften ergeben sich aus den entsprechenden<br />
Feldbezeichnungen.<br />
Abbildung 6.9: Zweidimensionale Tabelle<br />
Ist die Organisation der Massendaten mehr als zweidimensional, was u.a. bei Pivot-Tabellen der<br />
Fall sein kann, kann die Darstellung häufig noch mit Tabellen erfolgen [Jone96]. Die Entwicklung<br />
einer statischen Visualisierung von Massendaten ist aufgrund der vielen zu beachtenden Objekte<br />
sehr umfangreich. Die dynamische Erstellung dieser Tabellen wird gegenüber den<br />
zweidimensionalen Tabellen dadurch erschwert, daß die Zuordnung und graphische Darstellung<br />
der weiteren Dimensionen semantisches Wissen voraussetzt.
62 6. Design der Visualisierungskomponente<br />
Abbildung 6.10: Mehrdimensionale Tabelle<br />
Sind die einzelnen Felder in der Tabelle mehrdimensional strukturiert, so sind die Grenzen der<br />
Übersichtlichkeit schnell erreicht. Dann ist es vorteilhafter, für die Darstellung Unterfenster oder<br />
Frames zu benutzen [AH97]. Gerade mit Frames läßt sich die Übersichtlichkeit einer HTML-Seite<br />
stark erhöhen, indem ein Navigationsbereich erstellt wird, der auch beim Blättern im Hauptbereich,<br />
in dem die Daten dargestellt werden, nicht verschwindet [AH97] (siehe Abbildung 6.8). Werden<br />
für die Navigation keine Frames benötigt, so sollte auf den Einsatz von Frames verzichtet werden,<br />
weil die Übersichtlichkeit einer HTML-Seite durch Frames gemindert wird [Niel96] und die<br />
meisten Benutzer Seiten ohne Frames vorziehen [Sull96].<br />
Welche Art der Darstellung gewählt wird, ist im einzelnen abhängig von der Anzahl der Datensätze<br />
und der Komplexität der Struktur. Es läßt sich für diesen Zweck keine allgemeingültige Regel<br />
angeben.<br />
Da es bei Massendaten häufig nicht erforderlich oder aufgrund der Datenmenge nicht sinnvoll ist,<br />
alle Datensätze auf einmal darzustellen, müssen Möglichkeiten vorhanden sein, auch Teilmengen
6.2. Komplexe Datentypen 63<br />
anzuzeigen. Abhängig von der Art der Daten kann die anzuzeigende Datensatzanzahl variieren. Um<br />
dieses flexibel lösen zu können, ist der Einsatz von Visualisierungsvorlagen sinnvoll. Die hierin<br />
enthaltenen Informationen können z.B. die maximale Anzahl an gleichzeitig anzuzeigenden<br />
Datensätzen beinhalten.<br />
Bei allen Möglichkeiten ist es erforderlich, Obergrenzen für die Anzahl der gleichzeitig<br />
angezeigten Datensätze oder Verweise festzulegen. Diese Anforderung kann direkt bei der<br />
Erstellung der HTML-Seiten erfüllt werden. Eine andere Möglichkeit, die Anforderung zu erfüllen,<br />
besteht darin, die Funktionen, über die beim Datentyp Sequence auf die Massendaten zugegriffen<br />
wird, so zu realisieren, daß von vornherein nur die gewünschte Anzahl an Datensätzen ausgegeben<br />
wird. Da zur Zeit bei der Sequence keine Funktionen zum Zugriff auf die Massendaten existieren,<br />
wurde die zweite Möglichkeit in der Realisierung nicht berücksichtigt.<br />
Zusätzlich sind in den HTML-Seiten Funktionen z.B. in Form von Schaltflächen zu implementieren,<br />
um den nächsten bzw. vorherigen Teil der Datensätze anzuzeigen.<br />
6.2.4 Rcd und Variant<br />
Der Datentyp Rcd dient der Verwaltung von Recordstrukturen innerhalb von Dialogobjekten. Die<br />
Darstellung einer Recordstruktur erfolgt durch die Visualisierung der einzelnen im Record<br />
enthaltenen Felder. Deshalb gelten die o.g. Möglichkeiten, einzelne Felder oder Strukturen<br />
darzustellen, auch für die Records. Gegebenenfalls läßt sich die Zusammengehörigkeit der<br />
einzelnen Elemente noch durch Linien oder Rahmen zeigen.<br />
Beim Datentyp Variant handelt es ich um variante Tupel. Die Darstellung der einzelnen Varianten<br />
lehnt sich an die Möglichkeiten von Rcd an. Allerdings können Anzahl, Größe und Typ der Felder<br />
je Variante unterschiedlich sein.<br />
Es ist von der konkreten Anwendung abhängig, ob alle Varianten dargestellt werden, so daß der<br />
Kunde entscheiden kann, welche er nutzen möchte, oder vor der Darstellung entschieden wird,<br />
welche Variante visualisiert wird. Die zweite Möglichkeit ist leichter zu realisieren, weil weniger<br />
Felder angezeigt werden müssen und die Übersichtlichkeit dadurch gesteigert wird.<br />
Werden alle Varianten gleichzeitig dargestellt, so ist es nicht möglich, eine Variante innerhalb der<br />
TBO-Aktionen des Kunden auszuwählen. Hierdurch würde der Visualisierungsteil des Agenten<br />
Funktionalitäten erhalten, die nach dem Konzept der Business Conversations nur in den Regeln<br />
enthalten sein dürfen. Werden mehrere Varianten angezeigt, so muß die Auswahl der Variante<br />
beim Dienstleister erfolgen.<br />
Eine Umsetzung, in der nur jeweils eine Variante sichtbar ist und in der innerhalb einer HTML<br />
Seite zwischen den Varianten mit Hilfe eines Kombinationsfeldes umgeschaltet wird, wie es bei<br />
[Mues94] realisiert wurde, ist mit reinen HTML-Befehlen nicht möglich. Es fehlt die Möglichkeit,<br />
durch die Auswahl von Werten Aktionen auslösen [Münz97a] zu können. Bei [Mues94] war diese<br />
Möglichkeit durch die Nutzung des NeWS-Toolkits [SS92] gegeben. Durch den Einsatz von<br />
Programmiersprachen wie JavaScript [Münz96] und Java [Java96] ließe sie sich auch für das<br />
Agentensystem implementieren.
64 6. Design der Visualisierungskomponente<br />
Sollen alle Varianten visualisiert werden, so kann dieses ähnlich der singleChoice in Abbildung 6.6<br />
geschehen. Der Benutzer kann eine Variante markieren und die entsprechenden Felder ausfüllen.<br />
Zu beachten ist auch hier, daß alle Felder aller Varianten zum visualisierenden Agenten<br />
zurückgesandt werden. Die Auswertung muß also der Agent selber übernehmen.<br />
Variante Typen werden durch eine statisch programmierte Darstellung sehr eingeschränkt, weil<br />
bereits während der Entwicklung alle möglichen Varianten vorausgesehen werden müssen. Ist ein<br />
varianter Datentyp erst einmal in seine Bestandteile zerlegt, liegen nur noch die oben bereits<br />
behandelten Datentypen vor. Die Zusammengehörigkeit der Elemente muß eventuell, wie beim<br />
Typ Rcd, hervorgehoben werden.<br />
6.3 Anfragen<br />
Anfragen können sowohl als Hyperlinks, Grafiken mit Hyperlinks (image), Image Maps oder als<br />
Schaltflächen (button) realisiert werden.<br />
Werden Anfragen durch Hyperlinks repräsentiert, müssen die zurückzusendenden Werte in den<br />
Hyperlinks entweder bereits eingetragen sein oder es ist nur möglich, auf vorher durch das TBO-<br />
System erzeugte und exportierte HTML-Seiten zu kommen. Bei der ersten Möglichkeit muß das<br />
TBO-System die Logik liefern, die so ankommenden URLs in Aktionen umzusetzen. Das TBO-<br />
System kann nur diejenigen Teile einer URL auswerten, die den vorher erzeugten Objekten, den<br />
input-Elementen der HTML-Seite, entsprechen. Deshalb müssen die vorher festzulegenden Werte<br />
in TBO-Objekten, die z.B. als unsichtbare Felder (hidden) auf der HTML-Seite dargestellt werden,<br />
vorhanden sein. Da die Objektnamen der durch das TBO-System dargestellten Objekte aber nicht<br />
beeinflußbar sind (siehe Abschnitt 5.1), müßte hierfür das TBO-System erweitert werden. Die<br />
zweite Möglichkeit ist sinnvoll, wenn Hyperlinks, wie in Abbildung 6.8 gezeigt, zur Navigation<br />
eingesetzt werden.<br />
Da Hyperlinks im allgemeinen mit fest vorgegebenen Inhalten assoziiert werden, sind sie nicht so<br />
geeignet wie die Schaltflächen, die standardmäßig in den bisherigen Formularen im Internet als<br />
Auslöser von Aktionen benutzt werden. Deshalb werden in der Realisierung standardmäßig diese<br />
Schaltflächen für die Anfragen verwendet, obwohl auch Hyperlinks und Grafiken möglich sind.<br />
Abbildung 6.11: Visualisierung einer Anfrage durch eine Schaltfläche<br />
Ebenso können weitere Funktionen, wie etwa zur Verwaltung der Visualisierungsvorlagen, durch<br />
Schaltflächen dargestellt werden.
6.4. Einordnung des Visualisierungsdienstes 65<br />
6.4 Einordnung des Visualisierungsdienstes<br />
Bei der Entwicklung eines Visualisierungsdienstes ist zu entscheiden, ob ein bereits existierender<br />
Dienst genutzt werden soll, der Visualisierungsdienst als externer Dienst zur Verfügung stehen<br />
oder in das Agentensystem eingebaut werden soll.<br />
HTTP-Client<br />
HTTP-Client<br />
Visualisierungsagent<br />
Visualisierungsagent<br />
Agent A<br />
Agent B<br />
Abbildung 6.12: Externer Visualisierungsdienst<br />
Bei der Verwendung bereits existierender externer Dienste ist eine Kompromißlösung notwendig,<br />
weil diese die Anforderungen nicht in idealer Weise erfüllen [Koeh96]. Um eine bedingte<br />
Anpassung an die eigenen Anforderungen zu ermöglichen, muß ein externer Visualisierungsdienst<br />
erweiterbar sein. Der Vorteil externer Visualisierungsdienste besteht darin, daß die Entwicklung<br />
einer eigenen Benutzerschnittstelle, die sehr aufwendig und fehlerträchtig sein kann und einen<br />
hohen Wartungsaufwand erfordert, entfällt. Der Vorteil eines selbst entwickelten Dienstes liegt<br />
darin, daß er den eigenen Wünschen und Anforderungen entsprechend entwickelt werden kann. Da<br />
derzeit kein Programm existiert, welches den Anforderungen an die Visualisierung der TBCs<br />
entspricht, bleibt nur, einen derartigen Dienst selbst zu erstellen.<br />
6.4.1 Zentraler Visualisierungsdienst<br />
Bei einem zentralen Visualisierungsagenten handelt es sich um einen Agenten, der für alle anderen<br />
Agenten über Nachrichten erreichbar ist und deren Dialoge visualisiert. Durch die Entwicklung<br />
eines zentralen Visualisierungsdienstes, der unabhängig von einzelnen Agenten existiert, erreicht
66 6. Design der Visualisierungskomponente<br />
man eine Trennung zwischen Visualisierung und den Regeln der Agenten. Durch diese Trennung<br />
wird nicht nur die Wartung der einzelnen Agenten einfacher, sondern man erreicht bei einem<br />
generisch implementierten Visualisierungsdienst auch kürzere Entwicklungszeiten und besseres<br />
Prototyping der Agenten.<br />
HTTP-Client<br />
HTTP-Client<br />
Visualisierungsagent<br />
Agent A<br />
Agent B<br />
Abbildung 6.13: Zentraler Visualisierungsagent<br />
Für die Nutzung des zentralen Visualisierungsagenten muß sein Aufenthaltsort den anderen<br />
Agenten bekannt sein. Ist die Auslastungsgrenze des Visualisierungsagenten erreicht, können<br />
weitere Visualisierungsagenten erzeugt werden. Ein Verteileragent kann dann die einzelnen<br />
Aufträge auf die Visualisierungsagenten verteilen, so daß die Adressen der einzelnen Agenten nicht<br />
veröffentlicht werden müssen. Gleichzeitig könnte mit Hilfe des Verteileragenten ein<br />
Zugriffsschutz implementiert werden. Der Verteileragent muß eine feste Adresse bekommen, weil<br />
das Nachrichtensubsystem den Wechsel einer Adresse mit automatischem Weiterleiten der<br />
Nachrichten noch nicht unterstützt.<br />
Der Visualisierungsagent erhält per ITC-Nachricht den zu visualisierenden Dialog, die<br />
Konversations-ID des aufrufenden Agenten und die Adresse des HTTP-Clients. Der Dialog wird in<br />
HTML umgesetzt und über das HTTP an den Browser verschickt. Dort werden die Daten geändert<br />
und durch das Drücken einer Schaltfläche abgesandt. Die vom Client erzeugte URL wird an den<br />
zentralen Visualisierungsagenten zurückgeschickt. Dieser trägt die geänderten Werte in den Dialog<br />
ein und sendet ihn, gegebenenfalls zusammen mit der Angabe der ausgewählten Anfrage, per ITC<br />
an den Auftraggeber zurück. Der sendet den Dialog und, wenn er in der Konversation die<br />
Kundenrolle innehat, die Anfrage zurück an seinen Konversationspartner.
6.4. Einordnung des Visualisierungsdienstes 67<br />
Es ist, wie in Abschnitt 6.5 näher erläutert, nicht sinnvoll, eine Regel für die Visualisierung zu<br />
unterbrechen. Deshalb ist es nicht zweckmäßig, an derjenigen Stelle einer Regel fortzusetzen, an<br />
der die Visualisierung aufgerufen wurde. Stattdessen ist die Regel nach dem Aufruf der<br />
Visualisierung zu beenden, ohne eine Antwort an den Konversationspartner zu senden. Basierend<br />
auf der vom Visualisierungsagenten ankommenden ITC-Nachricht wird eine andere Regel<br />
ausgeführt, welche die Antwort an den Konversationspartner zurücksendet.<br />
Damit Nachrichten an den Visualisierungsagenten gesandt bzw. vom Visualisierungsagenten<br />
abgeschickt werden können, muß das Nachrichtensubsystem (ITC) um die entsprechenden<br />
Nachrichtentypen erweitert werden. Außerdem ist das Agentensystem so zu erweitern, daß bei der<br />
Ankunft der Nachrichtentypen die ihnen entsprechenden Aktionen ausgeführt werden.<br />
Um die einzelnen Agenten, deren Dialoge visualisiert werden, erreichen zu können, muß ihre<br />
genaue Adresse entweder dem Benutzer oder dem Visualisierungsagenten bekannt sein. Wenn der<br />
Benutzer die Adressen seiner Agenten verwaltet, muß er sie entweder in Form von URLs eingeben,<br />
oder ein entsprechendes Eingabeformular ausfüllen, damit der Visualisierungsagent die<br />
entsprechenden Agenten findet. Verwaltet der Visualisierungsagent die auf ihn zugreifenden<br />
Agenten, was der Benutzerfreundlichkeit und einem stufenweise aufgebauten Sicherheitskonzept<br />
entgegenkäme, müssen sich die Agenten bei ihm anmelden.<br />
Wie in Abschnitt 3.4 geschildert, erlaubt es das Agentensystem, daß ein Agent mehrere<br />
Konversationen führt, die auf derselben Konversationsspezifikation beruhen. Dadurch kann ein<br />
Agent auch gleichzeitig mehrere gleich spezifizierte Dialoge bearbeiten. Um jede beim<br />
Visualisierungsagenten ankommende URL genau einem Dialog zuordnen zu können, muß jeder<br />
Dialog eine eindeutige ID bekommen. Diese ID muß als Feld auf der HTML-Seite vorhanden sein,<br />
damit sie in der zurückgesandten URL enthalten ist. Die vom Agentensystem zur Verfügung<br />
gestellte Konversations-ID kann wegen der darin enthaltenen Zeichen nicht verwendet werden. Die<br />
Zeichen "?", "=", "/", "&" und Steuerungszeichen können in der ID des Agentensystems<br />
vorkommen. Diese haben in der URL jedoch reservierte Bedeutungen oder sind, wie z.B. einige<br />
Steuerzeichen, gar nicht zugelassen. Durch ein Ausfiltern dieser Zeichen aus der Konversations-ID<br />
würde eine nicht eindeutige ID entstehen. Es muß also im Visualisierungsagenten eine eigene<br />
Zuordnung und Verwaltung von IDs erfolgen.<br />
Um dem Benutzer eine Übersicht über diejenigen Konversationen zu bieten, die ein Agent starten<br />
kann, gibt es zwei Möglichkeiten: Der Visualisierungsagent kann, zusammen mit der Anmeldung<br />
des Agenten, eine Liste der ausführbaren Konversationen bekommen. Dieses würde zu einer<br />
Funktionserweiterung über die eigentliche Visualisierung hinaus führen. Es wäre eine<br />
entsprechende Verwaltung in den Visualisierungsagenten zu implementieren.<br />
Die andere Möglichkeit besteht darin, den Agenten um eine entsprechende Regel zu erweitern.<br />
Diese Regel, beispielsweise Hauptmenü genannt, liefert eine Übersicht über die startbaren<br />
Konversationen und ggf. weitere Statusinformationen über die derzeit laufenden Konversationen.<br />
Um eine Regel aufzurufen, benötigt der Agent die ID der Konversation, in der diese Regel<br />
aufgerufen wird. Wurde die Anmeldekonversation bereits beendet, so existiert keine laufende<br />
Konversation mehr. Ein Regelaufruf kann aufgrund der fehlenden Konversations-ID nicht mehr<br />
stattfinden. Um dieses zu umgehen, müßte die Anmeldekonversation beliebig lange<br />
aufrechterhalten werden.
68 6. Design der Visualisierungskomponente<br />
Als Ausweg, die o.g. langandauernde Anmeldekonversation mit dem Visualisierungsagenten zu<br />
umgehen, kann der Visualisierungsagent eine neue Konversation mit dem Benutzeragenten<br />
beginnen. Der Benutzeragent übernimmt dadurch automatisch die Rolle des Dienstleisters und<br />
sendet dem kontaktierenden Agenten, abhängig von der zugrundeliegenden<br />
Konversationsspezifikation, einen initialen Dialog, das Hauptmenü. Dieses wird entsprechend<br />
visualisiert. Ausgehend davon lassen sich über den Benutzeragenten weitere Konversationen<br />
starten und die Konversationsübersicht anzeigen.<br />
Um die in Abschnitt 4.5 erwähnte asynchrone Kommunikation gewährleisten zu können, ist eine<br />
Übersicht über die laufenden Konversationen notwendig. Ebenso wie das oben genannte<br />
Hauptmenü, ließe sich auch diese Übersicht innerhalb des Visualisierungsagenten realisieren.<br />
Besser ist aber auch hier die Realisierung der Übersicht in den einzelnen Agenten, um den<br />
modularen Aufbau des Agentensystems fortzuführen.<br />
6.4.2 Integrierter Visualisierungsdienst<br />
Die Alternative zum zentralen Visualisierungsagenten besteht darin, die Visualisierungskomponente<br />
direkt in die Agenten einzubauen.<br />
Eine Anmeldung der Agenten an die Visualisierungskomponente, wie sie beim zentralen<br />
Visualisierungsagenten erforderlich ist, ist bei der integrierten Visualisierungskomponente nicht<br />
notwendig, weil jeder Agent seine Visualisierungskomponente bereits enthält. Ebenso läßt sich das<br />
Hauptmenü über die eingebaute Visualisierungskomponente leicht implementieren. So kann die in<br />
Abschnitt 4.5 erwähnte synchrone Kommunikation realisiert werden, ohne Änderungen am<br />
Agentensystem vornehmen zu müssen.<br />
Bei der Realisierung einer asynchronen Kommunikation treten die gleichen Probleme wie beim<br />
zentralen Visualisierungsagenten auf. Die Verwaltung der aktiven Konversationen muß extra<br />
realisiert werden, weil das Agentensystem keinen Zugriff auf die intern vorhandene<br />
Verwaltungsstruktur zuläßt. In die Verwaltung der laufenden Konversationen läßt sich allerdings<br />
die Vergabe von IDs für die Dialoge mit einbinden, so daß sowohl die aktuellen Konversationen als<br />
auch die aktuellen Dialoge an einer Stelle zu verwalten sind.<br />
Der Nachteil dieser Lösung besteht darin, daß der Programmkode der einzelnen Agenten<br />
unübersichtlicher ist, weil die Visualisierung in jeden Agenten eingebaut werden muß. Hierbei wird<br />
zwangsläufig, wie bei vielen graphischen Benutzeroberflächen, der Kode des<br />
Anwendungsprogramms mit dem der Benutzeroberfläche vermischt [Wege95]. Wenn nicht bereits<br />
bei der Entwicklung auf eine übersichtliche Gliederung des Programmkodes geachtet wird, ist es<br />
später fast unmöglich, die oberflächenspezifischen Funktionen herauszufinden.
6.5. Nebenläufigkeit und Migration 69<br />
HTTP-Client<br />
HTTP-Client<br />
Visualisierung<br />
Visualisierung<br />
Agent A<br />
Agent B<br />
Abbildung 6.14: Integrierte Visualisierung<br />
Der Vorteil dieser Lösung besteht in der Nutzung des existierenden Agentensystems. Es sind weder<br />
neue Nachrichtentypen zu deklarieren, noch Änderungen am Agentensystem durchzuführen.<br />
Zudem kann die Realisierung so erfolgen, daß Komponenten der integrierten Visualisierung bei<br />
Bedarf in einen zentralen Visualisierungsagenten übernommen werden.<br />
Da das Agentensystem sehr umfangreich und komplex ist und die Visualisierung ohne größere<br />
Eingriffe in das zugrundeliegende System auskommen soll, ist die Implementation der<br />
Visualisierung in Form eines eigenständigen zentralen Agenten mit den oben genannten<br />
Eigenschaften nicht sinnvoll. Beim integrierten Visualisierungsdienst sind keine oder in seinen<br />
Erweiterungen nur geringe Änderungen des Agentensystems notwendig, die bereits existierende<br />
Agenten nicht beeinträchtigen. Daher wird die Variante mit dem integrierten<br />
Visualisierungsagenten realisiert.<br />
6.5 Nebenläufigkeit und Migration<br />
Würde die Visualisierungskomponente in die bisherigen Threads des Agenten eingebaut, führte<br />
dieses zu einer zeitweiligen Blockade der entsprechenden Threads. Wird z.B. der Kundenthread zur<br />
Visualisierung genutzt, so wird innerhalb einer Kundenregel der Dialog visualisiert und danach auf<br />
die Antwort des HTTP-Clients gewartet. Während dieser Zeit kann der Kundenthread nicht<br />
weiterarbeiten, ist also blockiert. Dieses führt dazu, daß Dialoge die während dieser Wartezeit von<br />
Dienstleistern gesendet werden, es können mehrere Konversationen gleichzeitig geführt werden,<br />
nicht abgearbeitet werden. Um das zu vermeiden, ist es notwendig, für den Empfang von<br />
Nachrichten des HTTP-Clients einen Kommunikationsthread (TBO-Thread) in den Agenten zu<br />
implementieren.
70 6. Design der Visualisierungskomponente<br />
Für diesen Kommunikationsthread besteht innerhalb des Agenten zusammen mit den anderen<br />
Threads ein gemeinsamer Zugriff auf diejenigen Daten, die sie für die Visualisierung untereinander<br />
austauschen müssen. Hierzu gehören u.a. die visualisierten Felder und die Übersicht über die<br />
laufenden Konversationen (siehe Abschnitt 7.2).<br />
Agent<br />
Kundenthread<br />
anderer<br />
Agent<br />
TBO-<br />
Thread<br />
Agententhread<br />
HTTP-<br />
Client<br />
Dienstleister<br />
-thread<br />
Datenbasis<br />
Abbildung 6.15: Threads der integrierten Visualisierung<br />
Der TBO-Thread startet einen TBO-Server, der auf Nachrichten vom HTTP-Client wartet und zur<br />
Visualisierung der Dialoge dient.<br />
Um das Konzept der Agenten durch die Visualisierung nicht zu beschränken, muß die in Abschnitt<br />
3.1 geschilderte Migration von Agenten weiterhin über Rechnergrenzen hinweg möglich sein. Da<br />
der TBO-Thread bei einer Migration nicht wie ein Agententhread an den neuen Ort migriert<br />
werden kann, muß der TBO-Thread vor der Migration beendet werden. Nach der Migration ist der<br />
TBO-Thread am neuen Ort wieder zu starten. Hierbei muß möglicherweise ein anderer<br />
Kommunikationsport gewählt werden.
6.6. Zusammenfassung 71<br />
6.6 Zusammenfassung<br />
Atomare Inhaltsobjekte sollen als Eingabefelder dargestellt werden. Komplexe Inhaltsobjekte<br />
werden auf ihre atomaren Inhalte zurückgeführt, sofern sie nicht als Optionsgruppen,<br />
Kontrollkästchen oder Tabellen visualisiert werden können. Die Darstellung von Varianten kann in<br />
Form von Optionsgruppen oder zurückgeführt auf atomare Werte erfolgen. Massendatenstrukturen<br />
wie Sequence werden - soweit möglich - als Tabellen erfolgen. Sind die komplexen Strukturen zu<br />
umfangreich, so sind sie in Frames darzustellen. Um die Übersicht zu erhöhen, kann die<br />
Darstellung der o.g. Objekte in Tabellen eingebettet und mit Kommentaren oder optischen<br />
Auflockerungen versehen werden. Anfragen werden als Schaltflächen oder, wenn sie nur zur<br />
Navigation dienen, als Hyperlinks dargestellt.<br />
Es wird ein in das Agentensystem integrierter Visualisierungsdienst realisiert. Dieser Dienst läuft<br />
in einem eigenen Thread ab. Die Migrationsfähigkeit wird gewährleistet, indem vor der Migration<br />
der Visualisierungsthread beendet und am neuen Ort wieder gestartet wird.
73<br />
7. Kapitel<br />
Realisierung der<br />
Visualisierungskomponente<br />
In diesem Kapitel werden aufbauend auf dem Design der Visualisierungskomponente die<br />
Einzelheiten der Realisierung beschrieben. Die Ergebnisse liegen in der Tycoonbiliothek tbcwww<br />
vor. Außerdem werden die bereits erfolgten Vorbereitungen für die dynamische Visualisierung<br />
vorgestellt.<br />
7.1 Starten des Visualisierungsservers<br />
Der Visualisierungsserver (TBO-Server) wird gestartet, indem zuerst mit let s=tbo.newServer() ein<br />
neues Serverobjekt erzeugt wird. Danach werden mit tbo.setPort(Portnummer) und<br />
tbo.setCgiBinTycoon(cgi-bin-Pfad) die Portnummer und ein Verweis auf das cgi-bin Verzeichnis<br />
des Webservers gesetzt. Der TBO-Server wird danach als eigener Thread gestartet<br />
(thread.fork(fun(self :thread.T(Ok)):Ok tbo.startServer)).<br />
Um eine standardisierte Möglichkeit zu haben, den Agenten mit Hilfe des Visualisierungsservers<br />
zu verwalten und Konversationen starten oder weiterführen zu können, ist es nötig, für alle<br />
Agenten einen einheitlichen Zugriff zu bieten. Dieser wird durch das Hauptmenü geboten. Der<br />
Inhalt des Hauptmenüs variiert je nach der Definition der einzelnen Agenten.
74 7. Realisierung der Visualisierungskomponente<br />
Abbildung 7.1: Hauptmenü des Agenten<br />
7.2 Verwaltung der Konversationen<br />
Um die Benutzereingaben in HTML-Formularen den einzelnen Dialogen der Konversationen<br />
zuordnen zu können, das TBO-System für die Visualisierung zu verwenden und für die in<br />
Abschnitt 4.5 erwähnte asynchrone Kommunikation, ist es erforderlich, sich einer Liste der aktiven<br />
Konversationen bedienen zu können. Das Agentensystem bietet keine Möglichkeit, aus dem<br />
Kunden- oder Dienstleisterthread heraus auf die im Agentensystem vorhandene Liste der aktiven<br />
Konversationen zuzugreifen. Deshalb ist es notwendig, eine derartige Liste für jeden Agenten<br />
anzulegen.<br />
Diese Konversationsliste muß für jede Konversation mehrere Einträge enthalten. Die<br />
Konversations-ID (ownConvID) ist notwendig, damit innerhalb einer Regel Dialoge und<br />
Konversationen bereits vorhandenen Einträgen in der Konversationsliste zugeordnet werden<br />
können. Die HTML-ID (htmlID) wird gebraucht, um, wie in Abschnitt 6.4 geschildert, die URLs<br />
den visualisierten Dialogen zuzuordnen. Die Konversation (conversation) ist erforderlich, damit es<br />
in den TBO-Aktionen möglich ist, Dialoge und Anfragen an den Konversationspartner abzusenden.<br />
Ein Verweis auf den aktuellen Server (actualServer) wurde eingefügt, falls in einer Erweiterung
7.2. Verwaltung der Konversationen 75<br />
des Systems mehrere TBO-Server genutzt werden sollen. Die Angabe des aktuellen Dialoges<br />
(actualDialog) und der letzten Anfrage (requestValue) sind notwendig, um innerhalb der Übersicht<br />
(Abbildung 7.5) den Status der Konversation angeben zu können. Eine Semaphore (waitServer) je<br />
Konversation ist erforderlich, damit das TBO-System, wie in Abschnitt 7.3 erklärt, genutzt werden<br />
kann. Eine Information (inUse) zur Verwaltung der Statusinformation, ob der Agent handeln muß<br />
oder auf eine Aktion des Konversationspartners wartet, wird gebraucht, weil es zur Zeit im<br />
Agentensystem keine Abfragemöglichkeit gibt, welcher Konversationspartner zu agieren hat.<br />
Außerdem wird eine Variable (empty) zur Anzeige benötigt, inwieweit der Eintrag in der<br />
Konversationsliste noch belegt ist oder die Konversation bereits beendet wurde.<br />
tbcwww<br />
emptyDialogSpec :tbcSpec.DialogSpec<br />
emptyDialog() :tbConv.Dialog<br />
startWWWServer(...) :Ok<br />
newConvList(...) :conversationsList.T<br />
startRequest(...) :Ok<br />
convToList(...) :Ok<br />
newConvList<br />
conversationsList<br />
name :String<br />
owner :wwwuid.T<br />
findHtmlID(...) :Int<br />
findConvID(...) :Int<br />
findNextEmptyElement() :Int<br />
setName(...) :Ok<br />
getName() :String<br />
setOwner(...) :Ok<br />
getOwner() :wwuid.T<br />
getConvListElement(...) :convListElements.T<br />
setConvListElement(...) :Ok<br />
getConvListElement<br />
convListElements<br />
conversation :agent.Conversaton<br />
ownConvID :Int<br />
htmlID :Int<br />
actualServer :tbo.Server<br />
waitServer :semaphore.T<br />
active :Bool<br />
inUse :Bool<br />
actualDialog :tbConv.Dialog<br />
requestValue :String<br />
setConversation(...) :Ok<br />
getConversation :agent.Conversation<br />
setConvID(...) :Ok<br />
getConvID() :Int<br />
setHtmlID(...) :Ok<br />
getHtmlID() :Int<br />
setActualServer(...) :Ok<br />
getActualServer() :tbo.Server<br />
activateWaitServer() :Ok<br />
releaseWaitServer() :Ok<br />
isActiveWaitServer() :Bool<br />
setActive() :Ok<br />
resetActive() :Ok<br />
isActive() :Bool<br />
setInUse() :Ok<br />
resetInUse(): OK<br />
isInUse() :Bool<br />
setActualDialog(...) :Ok<br />
getActualDialog() :tbConv.Dialog<br />
setRequestValue(...) :Ok<br />
getRequestValue() :String<br />
Abbildung 7.2: Konversationsliste<br />
Die als nicht mehr belegt (empty) markierten Einträge können entweder für die nächste neue<br />
Konversation verwendet werden oder ausgewertet werden, falls eine Übersicht über die beendeten<br />
Konversationen erstellt werden soll. Für die Abspeicherung der Konversationsliste kann z.B. eine<br />
Arraystruktur, eine Hash-Tabelle, eine Iteration oder ein Dictionary verwendet werden. Für den<br />
Prototyp wurde eine Arraystruktur zugrunde gelegt.
76 7. Realisierung der Visualisierungskomponente<br />
7.3 Verbindungsablauf<br />
Für die Visualisierung wird ein Visualisierungsthread (TBO-Thread) pro Agent gestartet. Das<br />
Starten des Threads erfolgt in der birth-Methode des Agenten im Anschluß an die Definition der<br />
für die Visualisierung notwendigen Objekte.<br />
Im TBO-Thread werden der Kommunikationsport und der Pfad des cgi-bin-Verzeichnisses gesetzt.<br />
Danach wird der Visualisierungsserver (TBO-Server) gestartet. Dieser ist, wie in Abschnitt 6.5<br />
erklärt, für das Empfangen der Nachrichten vom HTTP-Client erforderlich. Durch das Beenden des<br />
TBO-Servers wird auch der TBO-Thread beendet.<br />
Sendet der Kunde mit dem HTTP-Client eine URL an den Agenten, so wird beim Agenten eine<br />
TBO-Aktion ausgeführt. In dieser Aktion wird die URL ausgewertet und danach ein Dialog mit<br />
einer Anfrage an den Dienstleister abgesandt. Die TBO-Aktion kann jetzt aber noch nicht beendet<br />
werden, weil, bedingt durch die Realisierung der TBOs, sonst eine leere Seite an den HTTP-Client<br />
gesendet würde. Deshalb wird die Ausführung der TBO-Aktion mit Hilfe einer Semaphore<br />
unterbrochen. Sobald der zur Anfrage gehörende Dialog des Dienstleisters empfangen wurde, wird<br />
dieser in HTML umgesetzt und der HTML-Code an den HTTP-Client gesandt. Danach wird die in<br />
der TBO-Aktion aktive Semaphore deaktiviert, so daß die TBO-Aktion beendet werden kann.<br />
Kunde<br />
Dienstleister<br />
HTTP<br />
Client<br />
TBO<br />
Server<br />
Thread<br />
TBO<br />
Action<br />
TBO<br />
User<br />
Objekt<br />
Hauptthread<br />
Kundenthread<br />
Hauptthread<br />
Dienstleisterthread<br />
Abbildung 7.3: Verbindungsablauf zur Visualisierung<br />
Beim Beenden der TBO-Aktion wird an den obigen HTTP-Client eine leere HTML-Seite<br />
zurückgesandt. Doch da bereits vorher der Dialog als HTML-Seite abgesandt wurde, wird die<br />
zweite Seite vom HTTP-Client nicht mehr beachtet.
7.3. Verbindungsablauf 77<br />
Im Unterschied zur Visualisierung einer Konversation beim Kunden werden beim Dienstleister nur<br />
Dialoge versandt. Bei der reinen Visualisierung besteht aber kein Unterschied.<br />
Der oben geschilderte Ablauf einer Visualisierung soll im folgenden weiter konkretisiert werden.<br />
Auf eine Anfrage hin schickt der Dienstleister einen Dialog an den Kunden. Das Abschicken des<br />
Dialoges wird im Dienstleisterthread ausgelöst. Der Hauptthread verpackt den Dialog in einer ITC-<br />
Nachricht. Er fügt u.a. die interne ID hinzu, die diese Konversation beim Kunden hat. Beim<br />
Kunden wird die Nachricht durch den Hauptthread empfangen. Dieser entnimmt den Dialog aus<br />
der Nachricht und veranlaßt beim Kundenthread die Ausführung der zu diesem Dialog gehörenden<br />
Regel. Die Kundenregel setzt in der in Abschnitt 7.1 näher erläuterten Verwaltungsstruktur der<br />
Konversationen die entsprechenden Werte. Da auf die Konversations-ID innerhalb der Regeln<br />
inzwischen zugegriffen werden kann, ist es möglich, sie für die Adressierung der Konversation in<br />
der Liste zu verwenden. Vorher war es notwendig, die Speicheradresse der Spezifikation der<br />
aktuellen Konversation zu verwenden, um das entsprechende Element der Konversationsliste zu<br />
finden. Nach dem Setzen der Werte werden die im Dialog enthaltenen Werte der TBC-Datentypen<br />
in TBO-Datentypen übertragen. Der Dialog selber wurde bereits vorher beim Kunden im TBO-<br />
System als tbo.user-Objekt definiert und hat dabei den Namen "ersteintrag" erhalten. Mit dem<br />
Befehl tbo.exportObject(s ersteintrag) ist das Objekt dem TBO-Server bekanntgemacht worden.<br />
Zusätzlich zu den im Dialog definierten Variablen enthält das tbo.user-Objekt eine HTML-ID, die<br />
als verborgenes Formularfeld dargestellt wird. Nunmehr wird die display-Funktion für das<br />
tbo.user-Objekt (z.B. ersteintrag.display) aufgerufen. Das tbo.user-Objekt, welches im<br />
wesentlichen aus einer Reihe von display-Anweisungen für TBO-Werte besteht, greift für die<br />
Visualisierung auf die oben gesetzten TBO-Werte zu. Durch diesen Funktionsaufruf wird für den<br />
Dialog mit den enthaltenen Daten HTML-Code generiert und an den HTTP-Client gesendet. Dort<br />
werden die Daten visualisiert. Die Semaphore, welche die oben geschilderte Visualisierung einer<br />
leeren Seite durch die TBO-Aktion blockiert hatte, wird danach von der Kundenregel wieder<br />
freigegeben. Wird die Regel nicht bis hierhin ausgeführt, weil z.B. die Visualisierung scheitert, so<br />
wird auch die Semaphore nicht wieder freigegeben.<br />
Hiernach wird die Ausführung der Kundenregel beendet, ohne eine Antwort an den Dienstleister zu<br />
senden. Das Beenden der Kundenregel ist notwendig, weil eine Unterbrechung der Kundenregel<br />
z.B. mit Hilfe einer Semaphore während auf die Benutzereingabe gewartet wird, zu einem<br />
zeitweiligen Stillstand des Kundenthreads führen und die Atomarität der Regeln verletzen würde.<br />
Dieses muß aus den in Abschnitt 6.5 genannten Gründen vermieden werden. Eine Antwort an den<br />
Dienstleister kann noch nicht zurückgesandt werden, weil diese von der Benutzereingabe abhängig<br />
ist. Deshalb darf die Regel nicht durch einen request beendet werden, sondern muß durch den<br />
Aufruf der Funktion deferredRequest() abgeschlossen werden.<br />
Im Formular, das im Browser visualisiert wird, können nun durch den Benutzer Werte geändert<br />
werden. Damit die so eingegebenen Daten abgeschickt werden können, muß der Benutzer eine<br />
Schaltfläche betätigen. Dadurch wird eine URL, in der die neuen Werte enthalten sind, zurück an<br />
den TBO-Server gesandt.
78 7. Realisierung der Visualisierungskomponente<br />
HTTP-Client hat<br />
HTML-Seite<br />
dargestellt<br />
HTTP-Client und<br />
Agent sind<br />
gestartet<br />
HTML-Darstellung des Dialoges<br />
an den HTTP-Client<br />
URL an TBO-Server<br />
URL<br />
Kunde hat<br />
Dialog erhalten<br />
TBO-Aktion wird<br />
ausgeführt<br />
Dialog vom Dienstleister<br />
Anfrage an<br />
Dienstleister<br />
gesandt<br />
Anfrage und Dialog<br />
zum Dienstleister<br />
warten<br />
[Dialogdarstellung an<br />
HTTP-Client gesendet]<br />
finaler Dialog<br />
TBO-Aktion<br />
beendet<br />
Kunde hat finalen<br />
Dialog erhalten<br />
HTML-Darstellung des Dialoges<br />
an den HTTP-Client<br />
Finaler Dialog<br />
wurde angezeigt<br />
Abbildung 7.4: Zustandsdiagramm der Visualisierung beim Kunden<br />
Basierend auf den Inhalten der URL wird durch den TBO-Server beim Kunden eine TBO-Aktion<br />
ausgelöst. Zuerst wird über die HTML-ID die zugehörige Konversation aus der Liste der<br />
Konversationen herausgesucht. Danach werden die Werte aus den TBO-Datentypen in den<br />
entsprechenden Dialog dieser Konversation übertragen. Nach der Werteübertragung wird mit der<br />
Funktion request(Kundenkonversation Anfragename) die Anfrage ausgelöst, die bewirkt, daß der<br />
Dialog und die zugehörige Anfrage an den Dienstleister zurückgesandt werden. Hiernach wird, um<br />
einem Beenden der TBO-Aktion entgegenzuwirken, die oben erwähnte Semaphore gesetzt. Der<br />
Dienstleister erhält den Dialog und die Anfrage. Er reagiert entsprechend und schickt den nächsten<br />
Dialog.
7.3. Verbindungsablauf 79<br />
Da der menschliche Dienstleister vom Beginn einer Konversation nicht automatisch benachrichtigt<br />
werden kann, weil der HTTP-Client die Daten aktiv anfordern muß, erfährt er von einer neuen<br />
Konversation nichts. Sobald sich der Dienstleister seine Konversationsübersicht anzeigen läßt, wird<br />
er von der neuen Konversation informiert. Die darauf folgende Visualisierung der Dialoge verläuft<br />
bis auf zwei Funktionsaufrufe analog zu der Visualisierung auf der Kundenseite. Beim<br />
Dienstleister hat die Funktion, die eine Regel beendet ohne einen Dialog abzusenden, den Namen<br />
deferedDialog(). Das dann erforderliche Absenden des Dialoges erfolgt mit<br />
reply(Dienstleisterkonversation Dialog).<br />
7.3.1 Starten von Konversationen<br />
Wie in Abbildung 7.4 gezeigt, muß eine Semaphore verwendet werden, um die Abarbeitung der<br />
TBO-Aktion zu unterbinden, bis die Visualisierung des Folgedialogs durch die Regel erfolgt ist.<br />
Danach ist es notwendig, diese Semaphore wieder freizugeben, um die TBO-Aktion zu beenden.<br />
Dieses ist auch beim Starten von Konversationen der Fall. Bedingt durch den Ablauf beim Starten<br />
von Konversationen im Agentensystem, kann eine beginnende Konversation vor dem initialen<br />
Dialog noch keinen Eintrag in der Konversationsliste besitzen. Erst wenn der initiale Dialog<br />
empfangen wurde, können die entsprechenden Werte in der Konversationsliste gesetzt werden. Es<br />
muß also eine Adresse festgelegt werden, unter der die o.g. Semaphore zu finden und nach der<br />
Visualisierung des initialen Dialoges freizugeben ist. Diese Adresse ist 0.<br />
Da nur eine derartige ID existiert, muß der erste Dialog vor dem Starten der nächsten Konversation<br />
bearbeitet worden sein. Erst danach können neue Konversationen auf die Semaphore 0 zugreifen<br />
und damit gestartet werden.<br />
7.3.2 Migration<br />
Bei einer Migration des Agenten ist darauf zu achten, daß die Kommunikation des Benutzers mit<br />
dem Agenten nicht unterbrochen wird. Da der TBO-Thread bei einer Migration nicht wie die<br />
Agententhreads an den neuen Ort gesendet werden kann, ist zu prüfen, bei welcher Art von<br />
Migration die Verbindung zum TBO-Thread verlorengeht. Hierfür sind drei Arten der Migration zu<br />
unterscheiden:
80 7. Realisierung der Visualisierungskomponente<br />
• Ortswechsel innerhalb der Domäne<br />
• Domänenwechsel auf einem Rechner<br />
• Migration über Rechnergrenzen hinweg<br />
Wechselt ein Agent den Ort innerhalb einer Domäne, ist keine weitere Aktion für die<br />
Visualisierung notwendig. Der bisherige Visualisierungsthread kann weiterhin benutzt werden.<br />
Wechselt ein Agent die Domäne, bleibt aber auf dem aktuellen Rechner, so ist es nicht unbedingt<br />
erforderlich, einen neuen Visualisierungsthread in der neuen Domäne zu starten. Der bisherige<br />
Visualisierungsthread kann weiterhin verwendet werden. Wird jedoch die alte Domäne durch das<br />
Beenden des die Domäne beinhaltenden Tycoonsystems aufgelöst, so wird damit auch der in<br />
diesem Tycoonsystem gestartete Visualisierungsthread beendet. Die Verbindung des Benutzers zu<br />
seinem Agenten geht verloren. Migriert der Agent auf einen anderen Rechner, so geht in jedem Fall<br />
die Verbindung zum Visualisierungsthread verloren. Es ist dann notwendig, den<br />
Visualisierungsthread vor der Migration in eine andere Domäne oder zu einem anderen Rechner zu<br />
beenden, weil sonst ein nutzloser Thread weiterlaufen würde.<br />
Der Visualisierungsthread wartet an einem Port auf ankommende Nachrichten (siehe Abschnitt<br />
5.1). Intern ist dieses über eine Socketkommunikation realisiert. Um den Visualisierungsthread zu<br />
beenden, muß zuerst die tbo.stopServer()-Methode ausgeführt werden. Hierdurch wird das<br />
Abbruchkriterium für die Schleife gesetzt, innerhalb derer der Visualisierungsthread den Socket<br />
abfragt. Aber erst nach dem Empfang einer Nachricht wird das Schleifenende erreicht. Das Zeichen<br />
"|" symbolisiert für den Visualisierungsthread das Ende einer Nachricht. Es ist daher notwendig,<br />
dieses Zeichen einmal an den Port zu senden, um den Thread zu beenden.<br />
Das Herunterfahren des Servers kann in die leave-Methode eingebunden werden, weil diese<br />
Methode beim Verlassen des Ortes aktiviert wird. Nach der Migration muß dem Agenten ein neuer<br />
Port zugewiesen werden, damit der Visualisierungsthread an diesem Port wieder gestartet werden<br />
kann. Die Portzuweisung kann in einer neuen Konversation geschehen. Der Start dieser<br />
Konversation kann Bestandteil der enter-Methode sein, die beim Betreten eines Ortes ausgeführt<br />
wird.<br />
Für die Zuweisung einer Portnummer muß es einen Agenten geben, der die Ports zumindest<br />
domänenweit verwaltet. Dieses kann entweder der dedizierte Agent der Domäne (Rootplace) sein,<br />
der Ortswächter selber oder auch ein spezieller Agent pro Rechner, der die Ports für alle Domänen<br />
eines Rechners verwaltet. Für eine domänenweite Portverwaltung sollte der Portverwaltungsagent<br />
im Rootplace der Domäne ansässig sein. Da auf einem Rechner mehrere Domänen existieren<br />
können, ist eine zentrale domänenübergreifende Portverwaltung vorzuziehen. Nach der Zuweisung<br />
einer Portnummer wird ein neuer Visualisierungsthread gestartet.<br />
7.3.3 Übertragung der Daten<br />
Die Übertragung der Daten zwischen den TBCs und den TBOs erfolgt an zwei Stellen. In den<br />
Regeln der Agenten werden die Daten der TBCs in TBOs umgesetzt. Vor dem Auslesen der Daten<br />
aus den TBC-Objekten müssen die entsprechenden TBO-Objekte erstellt worden sein (siehe
7.4. Synchrone und asynchrone Kommunikation 81<br />
Abschnitt C.11). Mit let kredithoehe_html = tbo.int() wird beispielsweise ein Integerobjekt erstellt.<br />
Das Auslesen der Daten aus den Dialogen geschieht mit Hilfe der get()-Funktion. Die folgende<br />
Zeile überträgt den Wert aus dem TBC-Objekt in das entsprechende TBO-Objekt.<br />
kredithoehe_html.val :=<br />
conv.c.currentDialog.content1("Kredithoehe")!int.get()<br />
Die Übertragung der im HTTP-Client eingegebenen Werte an den aktuellen Dialog erfolgt in der<br />
TBO-Aktion. Für das TBC-Objekt ist hierzu die set() Funktion notwendig. Im folgenden wird ein<br />
Wert in ein Inhaltsobjekt des aktuellen Dialoges übertragen.<br />
conv.c.currentDialog.content1("Kredithoehe")<br />
!int.set(kredithoehe_html.val)<br />
Die Umsetzung der Objekte muß für jedes Inhaltsobjekt einzeln durchgeführt werden. Dadurch<br />
wird der Programmkode für jeden Agenten stark erweitert. Eine Lösung hierfür ist eine dynamische<br />
Visualisierung, auf die im Ausblick und in Abschnitt 4.7 näher eingegangen wird.<br />
7.4 Synchrone und asynchrone Kommunikation<br />
Eine synchrone Verbindung ist dadurch gekennzeichnet, daß nach dem Absenden der Anfrage auf<br />
die Antwort gewartet und diese Zeit nicht durch andere Aktionen unterbrochen wird. Es muß<br />
hierbei für die Visualisierung die ganze Zeit ein Browserfenster geöffnet bleiben. Der Computer<br />
darf weder heruntergefahren, noch darf aus diesem Fenster eine andere Konversation gestartet oder<br />
eine andere Aktion durchgeführt werden.<br />
Aus diesen Einschränkungen ist ersichtlich, daß eine derartige Verbindung eher der Einzelfall sein<br />
wird. Nur bei einer schnellen Verbindung eines Menschen zu einer Maschine, bei der in der Regel<br />
Wartezeiten von weniger als 5 Sekunden auftreten, wird sie als annehmbar empfunden.<br />
Das TBO-System ist für synchrone Verbindungen ausgelegt. Es sind deshalb bei der Realisierung<br />
keine Besonderheiten zu beachten.<br />
In den Tests der synchronen Verbindungen waren die Wartezeiten nicht länger als zwei Sekunden.<br />
Diese Zeiten wurden im wesentlichen durch die Auslastung des TBO-Servers und des Netzes<br />
verursacht. Die durchschnittliche Wartezeit vom Abschicken der Anfrage bis zum Ende der<br />
Visualisierung der Antwort blieb unter einer Sekunde. Zu berücksichtigen ist hier allerdings, daß<br />
keine zeitraubenden Berechnungen durchgeführt wurden.
82 7. Realisierung der Visualisierungskomponente<br />
Abbildung 7.5: Konversationsübersicht<br />
Für die Realisierung der asynchronen Kommunikation wird die Verwaltung der Konversationen<br />
(siehe Abschnitt 7.1) verwendet. Aus der Konversationsliste wird mit Hilfe eines tbo.user-Objektes<br />
eine Übersicht generiert und angezeigt. Die in Abbildung 7.5 gezeigte Übersicht enthält sowohl<br />
aktive als auch inaktive Konversationen. Ein Darstellung nur der aktiven oder inaktiven<br />
Konversationen ist ebenfalls abrufbar (siehe Abbildung 7.1). Durch Betätigung der Schaltfläche<br />
Dialog anzeigen wird der aktuelle Dialog der Konversation visualisiert.
7.5. Erweiterungen der Tycoon Business Objects 83<br />
Die Realisierungen sowohl der Übersicht als auch des Hauptmenüs (siehe Abschnitt 7.1) basieren<br />
auf den Möglichkeiten des TBO-Systems. Es werden hierfür keine Funktionen des Agentensystems<br />
benutzt.<br />
7.5 Erweiterungen der Tycoon Business Objects<br />
Um den Anforderungen an die darstellbaren Datentypen (siehe Abschnitt 4.3) zu genügen, wurden<br />
die TBOs um den Datentyp Real erweitert. Außerdem wurde der Datentyp HiddenInt eingeführt,<br />
der für die Darstellung der HTML-ID gebraucht wird. Ebenso war es erforderlich, den Datentyp<br />
des TBO-Servers um die Angabe des Visualisierungsslots zu erweitern.<br />
Das HTML-Modul und Interface der TBOs wurde u.a. um Funktionen zur Darstellung von<br />
Tabellen, Grafiken und grafisch hinterlegten Hyperlinks erweitert.<br />
7.6 Vorarbeiten für die dynamische Visualisierung<br />
Um eine dynamische Visualisierung zu ermöglichen, war es notwendig, das bisherige starre<br />
Regelsystem des Agentensystems etwas aufzuweichen. Im bisherigen Regelsystem ist bei den<br />
Kunden für jeden ankommenden Dialog maximal eine Regel definiert. Ebenso ist beim<br />
Dienstleister für jede ankommende Anfrage eine Regel festgelegt. Bisher blockiert der<br />
Kundenthread, sobald innerhalb einer Nachricht ein Dialog empfangen wird, dem keine Regel<br />
zugeordnet werden kann. Dieses kann z.B. bei einer unvollständigen Ausprogrammierung des<br />
Agenten oder auch nach einer Anfrage vorkommen, die unter Nutzung des ellipses-Attributes<br />
(siehe Abschnitt 2.3.4) spezifiziert wurde. Der Dienstleisterthread bleibt stehen, wenn eine Anfrage<br />
an den Dienstleister gesandt wird, für die keine Regel vorhanden ist.<br />
Da in dem in Abschnitt 4.7 geschilderten dynamischen Visualisierungssystem nicht für jeden<br />
Dialog oder jede Anfrage eigene Regeln vorhanden sein sollen, wurde eine HTML- und eine<br />
default-Regel implementiert. Die HTML-Regel ist zur Visualisierung der Dialoge gedacht. Die<br />
default-Regel wurde implementiert, um Fehler abfangen und analysieren zu können. Wenn für<br />
einen Dialog oder eine Anfrage keine Regel vorhanden ist, wird automatisch die HTML-Regel<br />
ausgeführt, die diesen Dialog visualisiert. Ist auch diese nicht vorhanden, wird die default-Regel<br />
ausgeführt. Ist auch die default-Regel nicht vorhanden, so bleibt der entsprechende Thread, wie<br />
auch zuvor, an dieser Stelle stehen.<br />
Um beim Dienstleister die Anfragen auswerten zu können, muß der Name der aktuellen Anfrage<br />
bekannt sein (siehe Abschnitt 3.5). Das TBC-System ist nur in der Lage, den Namen des aktuellen<br />
Dialoges mit allen in ihm enthaltenen möglichen Anfragen zu liefern (siehe Abschnitt 4.7). Die<br />
aktuelle Anfrage kann jedoch nicht abgefragt werden. Deshalb wurde das System um eine<br />
entsprechende Funktionalität erweitert. Durch diese Implementierungen ist es jetzt möglich, die<br />
statischen Regeln eines Agenten mit einer dynamischen Visualisierung zu kombinieren. Der Agent<br />
kann weiterhin aufgrund seiner Regeln handeln. In den Fällen aber, in denen keine Regel<br />
vorhanden ist, kann der betreffende Dialog automatisch visualisiert werden.
85<br />
8. Kapitel<br />
Zusammenfassung und Ausblick<br />
Das Ziel dieser Arbeit war es, Vorarbeiten für eine Visualisierungskomponente des auf dem Modell<br />
der Business Conversations aufbauenden Agentensystems zu leisten und einen Prototyp zu<br />
entwickeln. Dazu wurden das Agentensystem analysiert, Voraussetzungen benannt, mögliche<br />
Visualisierungsansätze dargestellt und Lösungswege aufgezeigt. Außerdem wurden die für eine<br />
dynamische Visualisierung notwendigen Voraussetzungen festgestellt und das Agentensystem<br />
getestet.<br />
8.1 Zusammenfassung<br />
Mit dieser Arbeit wurde eine Analyse für die Visualisierung durchgeführt und eine Möglichkeit<br />
geschaffen, die Daten der Tycoon Business Conversations mit Hilfe eines HTTP-Clients<br />
anzuzeigen und zu ändern. Hierfür stehen je nach Datentyp verschiedene Möglichkeiten zur<br />
Verfügung. Es lassen sich sowohl atomare als auch komplex strukturierte Datentypen wie z.B.<br />
variante Tupel anzeigen. Dabei besteht die Möglichkeit, die Daten in einfachen Eingabefeldern,<br />
komplexen Strukturen, Tabellen, Unterfenstern und Frames anzuzeigen.<br />
Außerdem ist es möglich, die Aktionen, die in den TBCs den Übergang von einem Dialog zum<br />
nächsten darstellen, zu visualisieren. Diese Aktionen können als Schaltflächen, Hyperlinks und<br />
Grafiken mit Hyperlinks dargestellt werden. Standardmäßig werden sie als Schaltflächen<br />
dargestellt.<br />
Im Hinblick auf eine Visualisierung wurde das Agentensystem analysiert. Aufbauend auf den<br />
Ergebnissen dieser Analyse wurden die Anforderungen an die Visualisierung definiert. Um diese<br />
Anforderungen erfüllen zu können, wurde das System der Tycoon Business Objects analysiert und<br />
verwendet. Es wurde um die notwendigen Datentypen und Funktionen ergänzt.<br />
Daran anschließend wurden mehrere Möglichkeiten, die Visualisierungskomponente zu<br />
implementieren, einander gegenübergestellt. Die Visualisierungskomponente wurde als statischer<br />
Prototyp in das Agentensystem eingebunden.<br />
Mehrere Beispielanwendungen, die unter anderem die Leistungsfähigkeit der Visualisierung im<br />
Zusammenspiel mit anderen Entwicklungen [BM97, Krus97] beweisen, wurden realisiert.
86 8. Zusammenfassung und Ausblick<br />
Die Inhaltsobjekte und Anfragen der Dialoge einer Konversation können sowohl auf der Kundenals<br />
auch auf der Dienstleisterseite dargestellt und bearbeitet werden. Außerdem können Zusatzinformationen<br />
z.B. zur Benutzerführung in die Darstellung der Dialoge integriert werden.<br />
Mit der Visualisierungskomponente ist es möglich, sowohl synchrone als auch asynchrone<br />
Kommunikationen anzuzeigen. Um die Konversationen verwalten zu können, ist eine Übersicht<br />
über alle Konversationen notwendig. Weil ein Zugriff auf die im Agenten vorhandene Liste nicht<br />
ohne größere Eingriffe zu realisieren war, mußte für die Visualisierung bei jedem Agenten eine<br />
Übersicht der Konversationen aufgebaut werden.<br />
Da eine statische Visualisierung gerade bei varianten oder Massendatenstrukturen sehr aufwendig<br />
ist, wurde das Agentensystem daraufhin analysiert, ob es eine dynamische Visualisierung zuläßt.<br />
Hierbei wurde festgestellt, daß das System in der Regelausführung um einige Attribute und um die<br />
auf diesen Attributen aufbauende Funktionalität erweitert werden mußte. Diese Erweiterungen<br />
wurden durchgeführt, so daß für eine dynamische Visualisierung keine weiteren Änderungen des<br />
Agentensystems notwendig sind.<br />
Für die dynamische Darstellung der TBCs wurde ein System von Visualisierungsvorlagen<br />
konzipiert, das eine Möglichkeit bietet, semantisches Wissen und Funktionalitäten der<br />
Benutzerführung während der dynamischen Visualisierung zu nutzen.<br />
Die bisher erstellten Module können für die Entwicklung einer generischen Visualisierung genutzt<br />
werden. Ebenso ist es möglich, die vorhandenen Funktionalitäten in einem zentralen<br />
Visualisierungsagenten zu integrieren.<br />
Durch die Implementation der Visualisierung werden die Funktionen des Agentensystems in keiner<br />
Weise beeinträchtigt. Die Agenten kommunizieren weiterhin über das Nachrichtensubsystem und<br />
haben die Möglichkeit zu migrieren.<br />
Das Modell der Business Conversations und das Agentensystem haben sich während der Arbeit als<br />
gute Basis erwiesen. Wünschenswerte Erweiterungen wären der Zugriff auf die im Agenten<br />
vorhandene Konversationsliste und die Realisierung von multimedialen Datentypen in den<br />
Business Conversations.
8.2. Ausblick 87<br />
8.2 Ausblick<br />
Die entwickelte Visualisierungsumgebung kann in mehrere Richtungen weiterentwickelt werden.<br />
Diese Richtungen lassen sich grundsätzlich den TBCs, den TBOs und der dynamischen<br />
Visualisierung zuordnen.<br />
Die Tycoon Business Conversations können, damit sie den heutigen Anforderungen im World<br />
Wide Web entsprechen, um multimediale Datentypen wie Grafik, Videos und Klangobjekte<br />
ergänzt werden.<br />
Um nicht in jeden Agenten die Verwaltung seiner Konversationen implementieren zu müssen,<br />
sollte das Agentensystem so erweitert werden, daß im Kunden- und Dienstleisterthread die<br />
Informationen der Konversationsliste, die Auskunft über die derzeit laufenden Konversationen des<br />
einzelnen Agenten gibt, verfügbar sind. Aufgrund der Kapselung der Threads des Agentensystems<br />
existiert derzeit keine Zugriffsmöglichkeit auf diese Informationen. Nach Konversationsende<br />
werden die mit der Konversation zusammenhängenden Daten aus der Konversationsliste gelöscht.<br />
Es gibt keine Möglichkeit im Agentensystem, eine Liste der beendeten Konversationen zu<br />
erzeugen. Auf bereits beendete Konversationen läßt sich durch Nutzung eines Archivs [Krus97]<br />
zugreifen.<br />
Da die Konversationsspezifikationen eine einfache Struktur aufweisen, bietet es sich an, ein<br />
Produkt zu entwickeln, das die Möglichkeit bietet, die Spezifikationen mit einer graphischen<br />
Oberfläche zu erstellen. Eine andere Möglichkeit, die von Ripp [Ripp98] in seiner Arbeit<br />
aufgezeigt wird, ist die Darstellung der Dialoge mit HTML-Editoren festzulegen und diesen Kode<br />
für die Erstellung der Spezifikationen zu nutzen. Hierfür sind im TBO-System die Funktionen<br />
setFieldName() und newObjectName() so zu erweitern, daß vom Entwickler vorgegebene<br />
Feldnamen für die Visualisierung der einzelnen Objekte benutzt werden können. Zur Zeit werden<br />
intern erzeugte Objektnamen verwendet.<br />
Aufbauend auf den Konversationsspezifikationen kann ein Tool entwickelt werden, das in<br />
Interaktion mit einem Entwickler aus einer Konversationsspezifikation ein Agentengerüst generiert.<br />
Die Inhalte der einzelnen Regeln des Agenten müssen hierbei durch den Entwickler ausformuliert<br />
werden.<br />
Damit bei der Entwicklung der Agenten nicht auch alle Visualisierungsfunktionen mit erstellt<br />
werden müssen, sollte ein externer Visualisierungsserver realisiert werden. Aufgrund der<br />
Komplexität der Visualisierung, für einen einfachen Agenten mit Visualisierungsfunktionen sind<br />
ca. 500 Programmzeilen nötig, würde eine in den Agenten integrierte Visualisierung die<br />
Entwicklung einer grafischen Oberfläche zur Agentenerstellung sehr erschweren.<br />
Mit einem externen Visualisierungsagenten kann der Programmablauf losgelöst von der<br />
Visualisierung entwickelt werden. Wird die Definition und Erstellung der Agenten durch die<br />
Visualisierungskomponente nicht beeinflußt, so ist es bei der Entwicklung der einzelnen Agenten<br />
unerheblich, welche Art der Visualisierung (E-Mail, EDI, HTTP-Client, etc.) letztlich gewählt<br />
wird.
88 8. Zusammenfassung und Ausblick<br />
Wenn der externe Visualisierungsagent zentral realisiert wird, kann die Realisierung so erfolgen,<br />
daß die Visualisierungsaufträge bei einem hohen Auftragsvolumen automatisch auf mehrere<br />
Visualisierungsagenten verteilt werden. Dieses kann entweder eine Funktionalität sein, die in den<br />
einzelnen Visualisierungsagenten eingebaut ist, oder die Visualisierungsagenten können von einem<br />
Verteileragenten bedient werden.<br />
Bei einer außerhalb der Agenten angesiedelten Visualisierung sind die in Abschnitt 6.4<br />
beschriebenen Änderungen des Agenten- und des Nachrichtensubsystems erforderlich. Um in<br />
diesen externen Visualisierungsagenten nicht für jede Konversation die Funktionen zur Darstellung<br />
und Nutzung der Objekte selbst programmieren zu müssen, sollte eine dynamische Lösung angestrebt<br />
werden.<br />
Für die dynamische Visualisierung bietet es sich an, die Visualisierungsvorlagen (siehe Abschnitt<br />
4.8) zu realisieren, um semantische und Zusatzinformationen bei der Darstellung von Objekten<br />
nutzen zu können. Die Definition der Datenstruktur zur Abspeicherung der o.g. Informationen in<br />
den Visualisierungsvorlagen ist noch festzulegen. Hier kann u.a. durch die Weiterentwicklung und<br />
Implementierung der Cascading Style Sheets in den HTTP-Clients noch geforscht werden. Die<br />
Datenstrukturdefinition müßte mit einer prototypischen Realisierung der dynamischen<br />
Visualisierung verbunden werden.<br />
Da die manuelle Erstellung der grafischen Repräsentation von Dialogen mittels Visualisierungsvorlagen<br />
sehr zeitintensiv ist und viel Programmtext erfordert, sollte ein Produkt erstellt werden,<br />
das den Entwickler bei der Konstruktion von Visualisierungsschnittstellen unterstützt. Dieser kann<br />
über eine Reihe von Diensten verfügen, die grafische Grundfunktionalitäten bereitstellen. Der<br />
Entwickler muß dann noch die für seine Anwendung notwendigen Elemente miteinander<br />
verbinden.<br />
Wird ein Objekt zur selben Zeit an mehreren Stellen dargestellt, so ist ein erhöhter Verwaltungsaufwand<br />
nötig, um die Konsistenz der Daten sicherzustellen. Bei einer Änderung der Daten<br />
des Objektes müßten alle anderen Darstellungen dieses Objektes automatisch aktualisiert werden.<br />
Mit der alleinigen Verwendung von HTML ist dieses aufgrund der Möglichkeiten von HTML nicht<br />
möglich. Durch die Nutzung von Programmiersprachen wie Java kann dieses Problem gelöst<br />
werden. Ebenso sind Erweiterungen der Visualisierungsmöglichkeiten denkbar. Es könnten z.B.<br />
Menüstrukturen über Image Maps realisiert werden.<br />
Der Prototyp des Agentensystems sollte letztlich so erweitert werden, daß die Migration von<br />
Agenten auch innerhalb von Regeln möglich ist. Dadurch könnten Agenten basierend auf den von<br />
ihnen ausgeführten Aktionen migrieren. Außerdem sollte die Möglichkeit der mehrfachen<br />
Migration von und zu einem Ort sichergestellt werden. Im derzeitigen Prototyp des Agenten kann<br />
es dazu kommen, daß nach einer mehrfachen Migration die im Agenten vorhandenen Regeln nicht<br />
ausgelöst werden.<br />
Um zu verhindern, daß bei der Darstellung der Dialoge blockierende Zustände erreicht werden,<br />
sollte bei der Visualisierung auf den Einsatz von Unterbrechungsvariablen verzichtet werden.<br />
Hierzu muß das TBO-System so angepaßt werden, daß Semaphoren nicht mehr benötigt werden.<br />
Zu diesem Zweck muß die Abarbeitung der Aktionen geändert werden. Dazu könnte u.a. die<br />
dispatch-Methode geändert werden.
8.2. Ausblick 89<br />
Damit nicht jeder Benutzer im Fenster des HTTP-Clients mitlesen kann, welche Inhalte an den<br />
Server übermittelt werden, ist es notwendig, die Übermittlungsart für Formularinhalte auf die post-<br />
Methode umzustellen. Mit der gegenwärtig verwendeten get-Methode kann nur eine beschränkte<br />
Zeichenanzahl auf einmal übermittelt werden. Dieses bedeutet bei Massendaten eine große<br />
Einschränkung.<br />
Parallel zur Entwicklung der BCs in Tycoon wird das Agentensystem in Tycoon-2 implementiert.<br />
Es ist zu überlegen, ob die Weiterentwicklung der Visualisierung der Business Conversations nicht<br />
besser in dieser Programmiersprache erfolgen sollte, weil die dort zur Verfügung stehenden<br />
Möglichkeiten, Objekte in HTTP-Clients darzustellen, die Fähigkeiten von Tycoon bei weitem<br />
übersteigen.<br />
Es fehlen bisher Konzepte zur Modellierung von zusammenlaufenden Konversationen. Ein<br />
Beispiel dafür ist das folgende Szenario: Zwei Mitarbeiter derselben Firma geben unabhängig<br />
voneinander Bestellungen auf. Sie bemerken dies während der Bearbeitung. Wie ist es möglich,<br />
diese zwei getrennten Konversationen zu einer zusammenzuführen, ohne die entstandenen Daten<br />
zu verlieren? Das bisherige Konzept der Konversationen sieht ein Zusammenführen von<br />
Konversationen nicht vor.<br />
Die Erweiterung der Tycoon Business Conversations um ein Rollenmodell steht ebenfalls aus.<br />
Mittels eines solchen Modells kann ein Benutzer eine Konversation beginnen und ein anderer, der<br />
im Unternehmen in derselben Rolle tätig ist, diese Konversation fortführen, ohne sie ausdrücklich<br />
übertragen zu bekommen. Da kein Rollenmodell existiert, kann keine Konversationsinstanz<br />
gleichzeitig von mehreren Benutzern verwendet werden.
91<br />
Anhang A<br />
Glossar<br />
A.1 Glossar der Agententerminologie<br />
Domäne (domain): Eine Komponente, die Orte und Agenten beherbergt und verwaltet. Domänen<br />
sind symbolisch adressierbar und besitzen immer mindestens einen Ort, welcher die Domäne<br />
selbst repräsentiert.<br />
Aktivität (activity): Eine Aktivität ist eine beliebige Aufgabe, die durch einen oder mehrere<br />
Agenten modelliert wird. Dabei können Aktivitäten über Adressräume verteilt sein.<br />
Mobiler Software-Agent (mobile agent): Ein mobiler Software-Agent ist eine Komponente,<br />
welche aus einer oder mehreren aktiven Einheiten besteht. Ein Agent ist Teil mindestens<br />
einer Aktivität. Mobile Agenten sind in der Lage, sich über Adressraumgrenzen zu bewegen.<br />
Agenten kommunizieren untereinander über typisierte Nachrichten.<br />
Kommunikationsendpunkt (port): An einem Kommunikationsendpunkt empfängt eine aktive<br />
Einheit Nachrichten. Es gibt benannte und anonyme Kommunikationsendpunkte. Eine aktive<br />
Einheit kann einen benannten Kommunikationsendpunkt über dessen Adresse identifizieren<br />
und Nachrichten an diesen senden. Ein anonymer Port kann nur Nachrichten von aktiven<br />
Einheiten empfangen, die eine Objektbindung an den (privaten) Portidentifikator besitzt.<br />
Portidentifikator (port identifier): Ein Portidentifikator ist ein weltweit eindeutiger Bezeichner,<br />
der automatisch einem neu erzeugten Port zugewiesen wird. Alle Ports werden über<br />
Nachrichtensubsysteme mittels dieses Identifikators referenziert.<br />
Nachricht (message): Nachrichten sind typisierte Botschaften und werden über Ports ausgetauscht.<br />
Es gibt einen definierten Satz von Nachrichten, welcher die Grundlage der<br />
Kooperationsprotokolle auf Systemebene zwischen Agenten bilden.<br />
Aktive Einheit (thread): Eine aktive Einheit ist in der Lage, eine Nachricht an eine andere (nicht<br />
notwendigerweise verschiedene) aktive Einheit zu versenden.<br />
Ort (place): Ein Ort ist ein Agent, der eine Domäne aufgabenspezifisch logisch untergliedert. Ein<br />
Ort ist eine spezielle Form eines Agenten. Jeder Ort ist durch einen lokal zur Domäne
92 Anhang A. Glossar<br />
eindeutigen Namen identifiziert. Orte können wiederum andere Orte und Agenten beinhalten<br />
und bilden eine Hierarchie. Sie sind Sichtbarkeitsbereiche für die Adressierung von Agenten.<br />
Treffen (meeting): Ein Treffen findet zwischen zwei Agenten innerhalb eines Ortes statt. Treffen<br />
werden durch die Domäne vermittelt und koordinieren den Anfang einer Kooperation<br />
zwischen Agenten, indem sie diese untereinander sichtbar machen.
93<br />
A.2 Glossar der Business Conversations<br />
Konversation (conversation): Der Oberbegriff für eine Folge von Dialogen zwischen einem<br />
Kunden und einem Dienstleister, mit dem Ziel einer Aktion. Eine Konversation kann<br />
einzelne (Teil-) Konversationen wiederverwenden.<br />
Sprechakt (speech act): Ein Begriff aus der Language-Action Sicht auf CSCW nach T. Winograd<br />
[FlWi+88]: „... human beeings are fundamentally linguistic beings: action happens in<br />
language in a world constituted by language.''. Genauer werden Sprechakte in Zyklen von<br />
vier Phasen unterteilt: Anfrage, Übereinkunft, Leistung und Rückmeldung. In einer<br />
technischen Umsetzung des Modells wird ein Sprechakt als Konversation bezeichnet.<br />
Phase (phase): Granularität des Sprechaktmodells. Die Einteilung in Phasen muß nicht in einer<br />
Implementation widergespiegelt werden. Sie dient allein der Veranschaulichung des Ablaufs<br />
von Sprechakten.<br />
Anfrage (I) (request): Bezeichnung für Phase eins des Modells.<br />
Anfrage (II) (request): Die Bearbeitung einer Anfrage führt im Modell in einen neuen Dialog.<br />
Anfragen sind die einzige Möglichkeit in einer Konversation einen neuen Zustand zu<br />
erreichen.<br />
Übereinkunft (agreement): Bezeichnung für die zweite Phase des Modells.<br />
Leistung (performance): Bezeichnung für die dritte Phase des Modells.<br />
Rückmeldung (feedback): Bezeichnung für die vierte Phase des Modells.<br />
Kunde (customer): Initiator einer Konversation. Innerhalb eines Sprechakts ist die Rolle des<br />
Kunden festgelegt. Aus der Sicht einer übergeordneten Konversation kann der Kunde jedoch<br />
gegenüber einem anderen Kunden wiederum in der Rolle des Dienstleisters auftreten.<br />
Dienstleister (performer): Akzeptor einer Konversation. Innerhalb eines Sprechakts ist die Rolle<br />
des Dienstleisters festgelegt. Aus der Sicht einer übergeordneten Konversation kann der<br />
Dienstleisters jedoch gegenüber einem anderen Dienstleisters wiederum in der Rolle des<br />
Kunden auftreten.<br />
Akteur (Actor): Sowohl der Kunde als auch der Dienstleister nehmen aktiv (daher Akteur) an der<br />
Konversation teil.
94 Anhang A. Glossar<br />
Regel (Rule): Jeder Akteur führt Aktionen aus, die Regeln genannt werden. Der Dienstleister<br />
reagiert aufgrund einer Anfrage gemäß einer zugehörigen Regel und erzeugt einen neuen<br />
Dialog. Der Kunde wiederum reagiert auf den Dialog gemäß seinen eigenen Regeln.<br />
Annahme (acceptance): Die ersten beiden Phasen eines Sprechaktzyklus.<br />
Erfüllung (completion): Die letzten beiden Phasen eines Sprechaktzyklus.<br />
Dialog (dialog): Ein Schritt einer Phase eines Sprechakts. Das Mittel des Dialogs ist nicht<br />
bestimmt. Eine Phase kann beliebig viele Dialogschritte erfordern. Dialoge enthalten<br />
strukturierte Information, ihren Inhalt.<br />
Inhalt (content): Ein Teil eines Dialogs in Form eines inspizierbaren Bedeutungsträgers.<br />
Modifikator (modifier): Mit Modifikatoren kann eine bestehende Konversation in Form einer Sub-<br />
Konversation an die Erfordernisse der einbettenden Konversation angepaßt werden. Dialoge<br />
der Sub-Konversation können konfiguriert, automatisiert oder ausgeblendet werden.<br />
Historie (history): Die Historie bildet die gemeinsame Vergangenheit von Kunde und Dienstleister<br />
innerhalb einer Konversation. Sie wird transparent vom System fortgeschrieben und enthält<br />
alle relevanten Daten einer Konversation, insbesondere alle Anfragen und Dialoge. Sowohl<br />
Kunde als auch Dienstleister haben vollständigen Zugang zu den gesammelten Daten, die<br />
von beiden Seiten als verbindlich betrachtet werden.<br />
Abbruch (breakdown): Ein Abbruch ist eine spezielle Anfrage an einen Dienstleister in einer<br />
Fehlersituation. Diese Anfragen werden in der Regel vom System im Namen des Kunden an<br />
den Dienstleister gestellt (z.B. bei einer Zeitüberschreitung des Kunden in einem Dialog).<br />
Konversations-Stadium (conversation stage): Eine Konversation befindet sich immer in einem<br />
definierten Stadium. Damit werden die Phasen des Sprechaktzyklus widergespiegelt.
95<br />
Anhang B<br />
Abkürzungen<br />
ASCII<br />
BC<br />
CfA<br />
CfP<br />
CGI<br />
CSCW<br />
CSS<br />
GUI<br />
HTML<br />
HTTP<br />
ITC<br />
OMT<br />
TBC<br />
TBO<br />
URL<br />
American Standard Code for Information Interchange<br />
Business Conversations<br />
Conversations for Action<br />
Conversations for Possibilities<br />
Common Gateway Interface<br />
Computer Supported Cooperative Work<br />
Cascading Style Sheets<br />
Graphical User Interface, Grafische Benutzerschnittstelle<br />
Hypertext Markup Language<br />
Hypertext Transfer Protocol<br />
Inter Thread Communication<br />
Object Modelling Technique<br />
Objektorientierter Ansatz zur Softwaremodellierung.<br />
Tycoon Business Conversations<br />
Tycoon Business Objects<br />
Uniform Resource Locator
97<br />
Anhang C<br />
Ausgewählte Programmbeispiele zur<br />
Visualisierung<br />
C.1 Konversationsspezifikation Kreditvergabe<br />
(* Kreditvergabe conversation specification: *)<br />
let kreditDatenDialogSpec =<br />
tbcSpec.dialogSpec("Kreditdaten" array<br />
tbcSpec.requestSpec("absenden" array "Kreditangebot" end false)<br />
tbcSpec.requestSpec("abbrechen" array "Kein Kredit" end false)<br />
end<br />
array<br />
tuple "Kredithoehe" fun() tbcContent.intSpec() end<br />
tuple "Laufzeit" fun() tbcContent.intSpec() end<br />
tuple "Mitteilung" fun() tbcContent.stringSpec() end<br />
end)<br />
let kreditAngebotDialogSpec =<br />
tbcSpec.dialogSpec("Kreditangebot" array<br />
tbcSpec.requestSpec("annehmen" array "Kreditannahme" end<br />
false)<br />
tbcSpec.requestSpec("ablehnen" array "Kein Kredit" end false)<br />
tbcSpec.requestSpec("Werte aendern" array "Kreditdaten" end<br />
false)<br />
end<br />
array<br />
tuple "Kredithoehe" fun() tbcContent.intSpec() end<br />
tuple "Laufzeit" fun() tbcContent.intSpec() end<br />
tuple "Zins" fun() tbcContent.realSpec() end<br />
tuple "Tilgung" fun() tbcContent.intSpec() end<br />
tuple "Mitteilung" fun() tbcContent.stringSpec() end<br />
end)<br />
let kreditannahmeDialogSpec =<br />
tbcSpec.dialogSpec("Kreditannahme" array end<br />
array
98 Anhang C. Ausgewählte Programmbeispiele zur Visualisierung<br />
tuple "Mitteilung" fun() tbcContent.stringSpec() end<br />
end)<br />
let keinKreditDialogSpec =<br />
tbcSpec.dialogSpec("Kein Kredit" array end<br />
array<br />
tuple "Mitteilung" fun() tbcContent.stringSpec() end<br />
end)<br />
let kreditConvSpec =<br />
tbcSpec.new("Kredit" kreditDatenDialogSpec array<br />
kreditDatenDialogSpec<br />
kreditAngebotDialogSpec<br />
kreditannahmeDialogSpec<br />
keinKreditDialogSpec<br />
end)<br />
Initialer Dialog<br />
Kreditdaten<br />
Kreditbetrag<br />
Laufzeit<br />
Mitteilung<br />
Kreditangebot<br />
Kreditbetrag<br />
Laufzeit<br />
Zins<br />
Tilgung<br />
Mitteilung<br />
Finale Dialoge<br />
Kreditannahme<br />
Mitteilung<br />
Kein Kredit<br />
absenden<br />
abbrechen<br />
annehmen<br />
ablehnen<br />
Werte ändern<br />
Mitteilung<br />
Abbildung C.1: Konversationsspezifikation Kreditvergabe
C.2. Konversationsspezifikation Portnummer holen 99<br />
C.2 Konversationsspezifikation Portnummer holen<br />
(* Portnummer holen conversation specification: *)<br />
let takePortDialogSpec =<br />
tbcSpec.dialogSpec("takePort" array end<br />
array<br />
tuple "Portnumber" fun() tbcContent.stringSpec() end<br />
end)<br />
let takePortConvSpec =<br />
tbcSpec.new("takePortSpec" takePortDialogSpec array<br />
takePortDialogSpec<br />
end)<br />
C.3 Regeldefinition<br />
let wwwKreditPerformer = m.addPerformerRole(:Ok kreditConvSpec fun() ok)<br />
let chefKreditCustomer = m.addCustomerRole(:Ok chefKreditConvSpec)<br />
wwwKreditPerformer.set("Kreditdaten" "abbrechen"<br />
fun(conv :agent.Conversation(Ok)) :tbConv.Dialog<br />
begin<br />
let d = conv.c.newDialog("Kein Kredit")<br />
...<br />
d<br />
end)<br />
chefKreditCustomer.set("chefKreditdaten"<br />
fun(conv :agent.Conversation(Ok)) :String<br />
begin<br />
...<br />
"chefAbsenden"<br />
end)<br />
C.4 Typdefinition von agent.Conversation<br />
Let Rec Conversation(S
100 Anhang C. Ausgewählte Programmbeispiele zur Visualisierung<br />
customerRole() :Bool<br />
end<br />
C.5 Datentypdefinition in TBCContent.ti<br />
Let Rec Spec
C.8. Inhaltsobjekt eines Dialoges 101<br />
C.8 Inhaltsobjekt eines Dialoges<br />
tuple_case rcd of Spec with<br />
let elements = fun() :iter.T(NamedContentSpec) <br />
end :tbcContent.Spec<br />
C.9 Generische Typermittlung<br />
try<br />
d.contentSpec()!rcd.elements().get().spec()?int<br />
let variablenTyp = “int”<br />
else<br />
end<br />
try<br />
d.contentSpec()!rcd.elements().get().spec()?string<br />
let variablenTyp = “string”<br />
else<br />
end<br />
case variablentyp of<br />
int ...<br />
string ...<br />
C.10 Tycoon Business Objects Seitenobjekt<br />
let kreditDaten = tbo.user (tbo.htmlHead fun(s :Server v :String)<br />
begin<br />
htmlID.display(s v)<br />
html.plain(s.page "Kredithoehe : ")<br />
kredithoehe_html.display(s v)<br />
html.newRow(s.page)<br />
html.plain(s.page "Laufzeit : ")<br />
laufzeit_html.display(s v)<br />
html.newRow(s.page)<br />
absenden.display(s v)<br />
abbrechen.display(s v)<br />
end)<br />
tbo.setObjectName(kreditDaten "kreditDaten")<br />
tbo.exportObject(s kreditDaten)
102 Anhang C. Ausgewählte Programmbeispiele zur Visualisierung<br />
C.11 Tycoon Business Objects Datenobjekte<br />
Konversationsspezifische Variablen<br />
let kredithoehe_html = tbo.int()<br />
let laufzeit_html = tbo.int()<br />
let zins_html = tbo.real()<br />
let tilgung_html = tbo.int()<br />
let mitteilung_html = tbo.string()<br />
Allgemeine Variablen<br />
let htmlID = tbo.hiddenInt()<br />
C.12 Tycoon Business Conversations Aktionsobjekt<br />
let annehmen = tbo.action(fun(s :Server v :String) begin<br />
activeConversations[htmlID.val].actualDialog.content1<br />
("Kredithoehe")!int.set(kredithoehe_html.val)<br />
activeConversations[htmlID.val].requestValue := "annehmen"<br />
let requestConversation :agent.Conversation(Ok) =<br />
optional.value(:agent.Conversation(Ok)<br />
activeConversations[htmlID.val].actualConversation)<br />
requestConversation.request(:Ok requestConversation<br />
activeConversations[htmlID.val].requestValue)<br />
semaphore.wait(activeConversations[htmlID.val].wartenServer)<br />
end)<br />
annehmen.val := "Kredit annehmen"
103<br />
Literaturverzeichnis<br />
[AH97]<br />
[Aust62]<br />
[Bach95]<br />
[Blas90]<br />
[BM97]<br />
[Brow88]<br />
[BW94]<br />
[BW95]<br />
[Catt91]<br />
[CW85]<br />
[DDJ+97]<br />
[DHL90]<br />
[EBB97]<br />
Catherine A. Ashworth, David B. Hamilton. A Case for Frames. Conference<br />
proceeding der 3rd Conference on Human Factors & the Web,<br />
http://www.uswest.com/web-conference/proceedings/ashworth.html, 1997.<br />
J. Austin. How to do things with words. Technical report, Oxford University Press,<br />
Oxford, 1962.<br />
Frank Bachmann. Entwicklung des multimedialen Beratungssystems MIDA zur<br />
Gestaltung von Benutzeroberflächen unter software-ergonomischen<br />
Gesichtspunkten. GMD-Studien 254, Gesellschaft für Mathematik und<br />
Datenverarbeitung, Sankt Augustin , Deutschland, 1995. Zugleich : Diplomarbeit,<br />
Universität Bonn, 1995.<br />
A. Blaser (Hrsg.). Database Systems of the 90s, Lecture Notes in Computer<br />
Science, Bd. 466. Springer--Verlag, Berlin u.a., 1990.<br />
Thomas Benthien, Christian Martens. Prozeßorientierte Integration von Win32-<br />
Anwendungen in offene Agentensysteme. Studienarbeit in Vorbereitung,<br />
Fachbereich Informatik, Universität Hamburg, Deutschland, 1997.<br />
M.H. Brown. Perspectives on Algorithm Animation. In: Proceedings of the ACM<br />
CHI'88 Conference on Human Factors in Computing Systems, 1988<br />
Russel Beale and Andrew Wood. Agent-Based Interaction. In People and<br />
Computers IX, Proceedings of HCI'94, pages 239--245, August 1994.<br />
Gerd Bremer and Jens Wahlen. Objektorientierte Datenmodellierung: Strukturierte<br />
Generatoren zur Codeerzeugung. Studienarbeit, Fachbereich Informatik,<br />
Universität Hamburg, Germany, February 1995.<br />
R.G.G. Cattel, Next-Generation Database Systems. Communications of the ACM,<br />
Jg. 34, 1991.<br />
L. Cardelli, P. Wegner. On Understanding Types, Data Abstraction, and<br />
Polymorphism. ACM Computing Surveys, Jg. 17 Nr. 4, 1985.<br />
Giorgio De Michelis, Eric Dubois, Matthias Jarke, Florian Matthes, John<br />
Mylopoulos, Mike Papazoglou, Klaus Pohl, Joachim Schmidt, Carson Woo, and<br />
Eric Yu. Cooperative Information Systems: A Manifesto. In Mike P. Papazoglou<br />
and Gunther Schlageter, editors, Cooperative Information System: Trends and<br />
Directions. Academic Press, 1997.<br />
U. Dayal, M. Hsu, and R. Ladin. Organizing Long-Running Activities with<br />
Triggers and Transactions. ACM SIGMOD, 1990.<br />
Stephan Ehrmann, Andreas Beier, Jo Bager. Auf Knopfdruck Web: HTML-<br />
Editoren mit Site-Management-Funktionen. . In c't 15.97, Verlag Heinz Heise,<br />
Hannover, 1997.
104 Literaturverzeichnis<br />
[Fech97] Peter Fecht. Sicherheitsrisiken und Sicherheitsmechanismen im Internet.<br />
Studienarbeit, Fachbereich Informatik, Universität Hamburg, Deutschland, 1997.<br />
[FGHW88] Fernando Flores, Michael Graves, Brad Hartfield, and Terry Winograd. Computer<br />
Systems and the Ontologie of Organisational Interaction. ACM Transaction on<br />
Office Information Systems, 6(2):153--172, April 1988.<br />
[GM94] Andreas Gawecki und Florian Matthes. The Tycoon Machine Language TML: An<br />
Optimizable Persistent Program Representation. FIDE Technical Report Series<br />
FIDE/94/100, Fachbereich Informatik, Universität Hamburg, Deutschland, August<br />
1994.<br />
[Götz94] Rainer Götze. Datenmodellierung für multimediale Benutzerschnittstellen. In<br />
Berichte aus dem Fachbereich Informatik, Bericht Nr. 1/94, Carl von Ossietzky<br />
Universität Oldenburg, Deutschland, 1994.<br />
[Hach96] Ilona Hachmann. Generische Visualisierungsdienste am Beispiel von StarView<br />
und Tycoon. Studienarbeit, Fachbereich Informatik, Universität Hamburg,<br />
Germany, 1996.<br />
[Herr91] Thomas Herrmann. Die Bedeutung menschlicher Kommunikation für die<br />
Kooperation und für die Gestaltung computerunterstützter Gruppenarbeit. In Horst<br />
Oberquelle, Kooperative Arbeit und Computerunterstützung : Stand und<br />
Perspektiven. Verlag für Angewandte Psychologie Göttingen, Verlagsgruppe<br />
Hogrefe, 1991.<br />
[Hübn90] Wolfgang Hübner. Entwurf graphischer Benutzerschnittstellen : Ein<br />
objektorientiertes Interaktionsmodell zur Spezifikation graphischer Dialoge. In<br />
Beiträge zur graphischen Datenverarbeitung, Dissertation, Technische Hochschule<br />
Darmstadt, Deutschland, Springer-Verlag Berlin u.a., 1990<br />
[Hüsk97a] Ralf Hüskes. Flexible Seiten. c't 16.97, Verlag Heinz Heise, Hannover, 1997.<br />
[Hüsk97b] Ralf Hüskes. Schnittmuster für Web-Schneider: Was Style Sheets vermögen und<br />
wo die Browser versagen. c't 12.97, Verlag Heinz Heise, Hannover, 1997.<br />
[Jabl94] S. Jablonski. MOBILE: A Modular Workflow Model and Architeture. In:<br />
Proceedings of the 4th International Working Conference on Dynamic Modelling<br />
and Information Systems, Noordwijkerhout, Niederlande, November 1994.<br />
[Jabl95] S. Jablonski. Workflow--Management--Systeme: Motivation, Modelllierung,<br />
Architektur. Informatik Spektrum, Jg. 18 Nr. 1, 1995..<br />
[Java96] Java unleashed. Sams.net Publishing, Indianapolis, 1996.<br />
[Joha97] Nico Johannisson. Eine Umgebung für mobile Agenten: Agentenbasierte verteilte<br />
Datenbanken am Beispiel der Kopplung autonomer „Internet Web Site Profiler“.<br />
Diplomarbeit, Fachbereich Informatik, Universität Hamburg, 1997.<br />
[Jone96] Christopher V. Jones. Visualization and Optimization. Kluwer Academic<br />
Publishers, Norwell, Massachusetts, USA, 1996.<br />
[Kass95] Thomas Kaß. Anwendungsspezifische Autorisierungsstrategien in polymorphen<br />
persistenten Programmierumgebungen : Ein Bibliotheksansatz. Diplomarbeit.<br />
Fachbereich Informatik, Universität Hamburg, 1995.<br />
[Keek97] Kevin Keeker. Improving Web Site Usability and Appeal.<br />
http://www.microsoft.com/workshop/author/plan/improvingsiteusa-f.htm, 1997.
Literaturverzeichnis 105<br />
[Koeh96] Hubertus Koehler. Generische Daten- und Funktionsvisualisierung in einer<br />
persistenten Programmierumgebung. Master’s thesis, Fachbereich Informatik,<br />
Universität Hamburg, Germany, March 1996.<br />
[Krus97] Wolfgang Kruse. Historienmanagement für kooperative Aktivitäten. Diplomarbeit,<br />
Fachbereich Informatik, Universität Hamburg, Deutschland, 1997.<br />
[Lamp81] Leslie Lamport. Password authentication with insecure communication.<br />
Communications of the ACM, Nov. 1981.<br />
[Maaß91] Susanne Maaß. Computergestützte Kommunikation und Kooperation. In Horst<br />
Oberquelle, Kooperative Arbeit und Computerunterstützung : Stand und<br />
Perspektiven. Verlag für Angewandte Psychologie Göttingen, Verlagsgruppe<br />
Hogrefe, 1991.<br />
[Math96] Bernd Mathiske. Mobilität in persistenten Objektsystemen. Dissertation,<br />
Universität Hamburg, Fachbereich Informatik, Arbeitsbereich DBIS, Mai 1996.<br />
[Matt95] Florian Matthes. Higher-Order Persistent Polymorphic Programming in Tycoon. In<br />
M.P. Atkinson (Hrsg.), Fully Integrated Data Environments. Springer-Verlag,<br />
Berlin, 1995.<br />
[Matt97a] Florian Matthes. Business Conversations: A High-Level System Model for Agent<br />
Coordination. (to appear in the Proceedings of DBPL-97), März 1997.<br />
[Matt97b] Florian Matthes. Mobile Processes in Cooperative Information Systems. In<br />
Proceedings STJA'97 (Smalltalk und Java in Industrie und Ausbildung), Erfurt,<br />
Springer-Verlag, Berlin, Deutschland, 1997.<br />
[MHHB88] Andreas Mahling, Jürgen Herczeg, Michael Herczeg, Heinz-Dieter Böcker.<br />
Beyond Visualization: Knowing and Understanding. In Visualization in Human-<br />
Computer Interaction, Lecture Notes in Computer Science, Springer-Verlag,<br />
Berlin, 1988.<br />
[Micr97] Microsoft FrontPage 97: Schritt für Schritt. Microsoft Press, Unterschleißheim,<br />
Deutschland, 1997.<br />
[Mise98] Andreas Misera. Forms & CGI. In Internet World Bd. 2/98, WebMedia GmbH,<br />
München, 1998.<br />
[MMM93] B. Mathiske, F. Matthes, and S. Müßig. The Tycoon System and Library Manual.<br />
DBIS Tycoon Report 212-93, Fachbereich Informatik, Universität Hamburg,<br />
Dezember 1993.<br />
[Morr95] Mary E. S. Morris. HTML : WWW effektiv nutzen. Verlag Heinz Heise,<br />
Hannover, Deutschland, 1995.<br />
[MP97] Computer Fachlexikon. Microsoft Press Deutschland, Unterschleißheim, 1997.<br />
[MS92] Florian Matthes und Joachim W. Schmidt. Definition of the Tycoon Language - A<br />
Preliminary Report. DBIS Tycoon Report 062--92, Fachbereich Informatik,<br />
Universität Hamburg, Deutschland, 1992.<br />
[MS93] Florian Matthes und Joachim W. Schmidt. System Construction in the Tycoon<br />
Environment: Architectures, Interfaces and Gateways. In: Proceedings of Euro--<br />
Arch'93 Congress. Springer--Verlag, Berlin u.a., 1993.<br />
[Mues94] Sven Müßig. Beiträge zur typsicheren generischen Datenvisualisierung.<br />
Diplomarbeit, Fachbereich Informatik, Universität Hamburg, Deutschland, 1994.<br />
[Münz96] Stefan Münz. JavaScripts selbst erstellen. http://www.netzwelt.com/selfjavs/, 1996.
106 Literaturverzeichnis<br />
[Münz97a] Stefan Münz. HTML-Dateien selbst erstellen : Das Kompendium für Entwickler<br />
von WWW-Seiten. http://www.netzwelt.com/selfhtml/, 1997.<br />
[Münz97b] Stefan Münz. Style-Sheets Formatvorlagen. http://www.netzwelt.com<br />
/selfhtml/tcj.htm, 1997.<br />
[Münz97c] Stefan Münz. Kurzreferenz: Style-Sheet-Angaben. http://www.netzwelt.com<br />
/selfhtml/tcjc.htm, 1997.<br />
[Niel96] Jakob Nielsen.. Top Ten Mistakes in Web Design. Jakob Nielsen's Alertbox for<br />
May 1996, http://www.useit.com/alertbox/9605.html, 1996.<br />
[Ober91a] Horst Oberquelle. Kooperative Arbeit und menschengerechte Groupware als<br />
Herausforderung für die Software-Ergonomie. In Horst Oberquelle, Kooperative<br />
Arbeit und Computerunterstützung : Stand und Perspektiven. Verlag für<br />
Angewandte Psychologie Göttingen, Verlagsgruppe Hogrefe,1991.<br />
[Ober91b] Horst Oberquelle. CSCW- und Groupware Kritik. In Horst Oberquelle,<br />
Kooperative Arbeit und Computerunterstützung : Stand und Perspektiven. Verlag<br />
für Angewandte Psychologie Göttingen, Verlagsgruppe Hogrefe, 1991.<br />
[Oppl92] Rolf Opplinger, Computersicherheit. Vieweg-Verlag Braunschweig, 1992.<br />
[PK97] James E. Pitkow, Colleen M. Kehoe. Results from the Third WWW User Survey.<br />
The World Wide Web Journal, Vol. 1, Nr. 1,<br />
http://www.gvu.gatech.edu/user_surveys/papers/survey_3_paper.html, 1995.<br />
[Ramm96] Kay Ramme. Hypertextbasierte Visualisierung von Tycoon-Bibliotheken in<br />
Netzwerken. Studienarbeit, Fachbereich Informatik, Universität Hamburg, April<br />
1996.<br />
[RBP+91] Rumbaugh, James, Blaha, Michael, Premerlani, William, Eddy, Frederick und<br />
Lorensen, William. Object-Oriented Modeling and Design. Prentice Hall,<br />
Englewood Cliffs, New Jersey 07632, 1991.<br />
[RBP+93] James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, William<br />
Lorensen, Doris Märtin (Übers.). Objektorientiertes Modellieren und Entwerfen.<br />
Carl Hanser Verlag, München mit Prentice-Hall International, London, 1993.<br />
[Rich97] Ingo Richtsmeier. Kommunizierende Informationssysteme am Beispiel autonomer<br />
Internet WebSiteProfiler: Vergleich objekt- und agentenbasierter Ansätze.<br />
Diplomarbeit, Fachbereich Informatik, Universität Hamburg, 1997.<br />
[Ripp98] Volker Ripp. Verbesserung der Lokalität und Wiederverwendbarkeit von<br />
Geschäftsprozessen: Probleme und Lösungsansätze am Beispiel kundenorientierter<br />
Hotelgeschäftsprozesse. Diplomarbeit in Vorbereitung, Fachbereich Informatik,<br />
Universität Hamburg, Deutschland, 1997.<br />
[Schm83] Alfred A. Schmitt. Dialogsysteme : Kommunikative Schnittstellen, Software<br />
Ergonomie und Systemgestaltung. In Reihe Informatik, Band 40,<br />
Bibliographisches Institut, Mannheim, Deutschland, 1983.<br />
[Sear69] J. Searle. Speech Acts. Technical Report, Cambridge University Press, Cambridge,<br />
1969.<br />
[SS92] SunSoft, Inc. The NeWS Toolkit 3.1 Reference Manual. SunSoft, Inc., Mountain<br />
View, 1992.<br />
[Sull96] Terry Sullivan. Interface Elements: To Frame, Or Not To Frame?,<br />
http://www.pantos.org/atw/35295.html, 1996.
Literaturverzeichnis 107<br />
[Vogt97] Petra Vogt. Designertricks: Tips zur besseren Gestaltung von Websites. In c’t<br />
13.97, Verlag Heinz Heise, Hannover, 1997.<br />
[W3C97] World Wide Web Consortium. HTML 4.0 Specification. http://www.w3.org/TR,<br />
1997.<br />
[W3C98] World Wide Web Consortium. Web Style Sheets: What are style sheets?.<br />
http://www.w3.org/style/, 1998.<br />
[Wagn97] Gerd Wagner. Software mit Managerqualitäten. c't 15.97, Seite 234 - 242, Verlag<br />
Heinz Heise, Hannover, 1997.<br />
[Wahl98] Jens Wahlen. Entwurf einer objektorientierten Sprache mit statischer Typisierung<br />
unter Beachtung kommerzieller Anforderungen. Diplomarbeit in Vorbereitung,<br />
Fachbereich Informatik, Universität Hamburg, Deutschland, 1998.<br />
[WBW96] Jason Wood, Ken Brodlie, Helen Wright. Visualization over the World Wide Web<br />
and its application to enviromental data. In Proceedings Visualization '96, IEEE<br />
Visualization Conference, IEEE Computer Society Press, Los Alamitos, 1996.<br />
[Wege95] Wegener, H. Die Erfindung des Rades, Wiederverwendbare Komponenten für die<br />
Benutzerschnittstelle. iX 3.1995.<br />
[Wegn98] Holm Wegner. Objektorientierter Entwurf und Realisierung eines<br />
Agentensystems für kooperative Internet-Informationssysteme. Diplomarbeit in<br />
Vorbereitung, Fachbereich Informatik, Universität Hamburg, Deutschland, 1998.<br />
[Weik98] Marc Weikard. Entwurf und Implementierung einer portablen multiprozessorfähigen<br />
virtuellen Maschine für eine persistente, objektorientierte<br />
Programmiersprache. Diplomarbeit in Vorbereitung, Fachbereich Informatik,<br />
Universität Hamburg, Deutschland, 1998.<br />
[Will96] André Willomat. Authentisierung in Tycoon: Eine polymorophe<br />
Entwicklungsschnittstelle zu Kerberos. Studienarbeit, Fachbereich Informatik,<br />
Universität Hamburg, 1996.<br />
[Wino87] Terry A. Winograd. A Language/Action Perspective on the Design of Cooperative<br />
Work. Technical Report STAN-CS-87-1158, Department of Computer Science,<br />
Stanford University, Stanford, CA 94305, 1987.
108<br />
Erklärung<br />
Hiermit erkläre ich, die vorliegende Diplomarbeit selbständig durchgeführt und keine anderen als<br />
die angegebenen Quellen und Hilfsmittel benutzt zu haben.<br />
Hamburg, den 29. März 1998<br />
(Heiko Zade)