01.11.2013 Aufrufe

Paper (PDF) - STS

Paper (PDF) - STS

Paper (PDF) - STS

MEHR ANZEIGEN
WENIGER ANZEIGEN

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)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!