konzeption und realisierung einer social bookmarking ... · pdf file4.2.5 erweiterung der...

117
Technische Universität München Fakultät für Informatik Lehrstuhl für Software Engineering betrieblicher Informationssysteme Prof. Dr. Florian Matthes Diplomarbeit Konzeption und Realisierung einer social bookmarking Erweiterung für ein Wissensmanagementsystem Andreas Halberkamp Aufgabensteller: Prof. Dr. Florian Matthes Betreut durch: Sheng Wei Abgegeben am: 15.11.2005

Upload: lycong

Post on 07-Feb-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Technische Universität München Fakultät für Informatik

Lehrstuhl für Software Engineering betrieblicher Informationssysteme Prof. Dr. Florian Matthes

Diplomarbeit

Konzeption und Realisierung einer social bookmarking Erweiterung für ein Wissensmanagementsystem

Andreas Halberkamp

Aufgabensteller: Prof. Dr. Florian Matthes

Betreut durch: Sheng Wei

Abgegeben am: 15.11.2005

II

Erklärung zur Diplomarbeit

Ich versichere, dass ich diese Diplomarbeit selbständig verfasst und nur die angegeben Quel-len und Hilfsmittel verwendet habe.

______________________ (Andreas Halberkamp)

III

Inhaltsverzeichnis 1 Einleitung..........................................................................................................................8

1.1 Vorgehensweise .........................................................................................................9 1.2 Aufbau der Arbeit.....................................................................................................10 1.3 Ergebnisse der Marktstudie (Funktionsanalyse) .....................................................11

2 Anforderungen an die social bookmarking Erweiterung ..........................................16

2.1 Generelle Anforderungen ........................................................................................16 2.2 Anforderungen an den Bookmarkaccount (private Schicht)....................................18 2.3 Anforderungen an die öffentliche Schicht der Erweiterung ....................................19

3 Realisierungstechnologien.............................................................................................21

3.1 Architektur des Infoasset Brokers............................................................................21 3.1.1 Funktionalität und Eigenschaften von Handlern .............................................22 3.1.2 Eigenschaften der Services ..............................................................................23

3.2 Asynchronous Javascript and XML (AJAX) ............................................................26 3.3 Content Syndication und Feeds ...............................................................................27

3.3.1 RSS 0.91 ..........................................................................................................28 3.3.2 RSS 1.0 ............................................................................................................29 3.3.3 ATOM..............................................................................................................30

4 Modellierung der Erweiterung .....................................................................................32

4.1 Modell der Erweiterung...........................................................................................32 4.2 Umsetzung des Modells ...........................................................................................35

4.2.1 Allgemeine Darstellung der Bookmarks..........................................................35 4.2.2 Benutzerschicht: Der Bookmarkaccount .........................................................37 4.2.3 Bookmarklogs..................................................................................................39 4.2.4 Öffentliche Schicht der Erweiterung ...............................................................40 4.2.5 Erweiterung der Struktur des Infoasset Brokers ..............................................42

5 Implementierung der Erweiterung ..............................................................................44

5.1 Datenstrukturen der Erweiterung............................................................................44 5.1.1 Das Asset „Weblog“ ........................................................................................44 5.1.2 Das Asset „BookmarkEntry“ ...........................................................................45 5.1.3 Das Asset „Tag“...............................................................................................46 5.1.4 Das Asset „Bsubscription“...............................................................................47

5.2 Implementierung des Bookmarkaccounts der Erweiterung.....................................48 5.2.1 Bookmarks einfügen ........................................................................................48

5.2.1.1 Suggestionsfunktion.....................................................................................48 5.2.1.2 Verarbeitung der Formulareingaben............................................................50

5.2.2 Übersichtsseite des Bookmarkaccounts...........................................................53 5.2.2.1 Generierung der Übersichtsseite..................................................................53 5.2.2.2 Kommentarfunktion.....................................................................................58 5.2.2.3 Funktionen der Übersichtsseite....................................................................59 5.2.2.4 Tagspezifische Seiten der Übersicht............................................................62

5.2.3 Abonnementverwaltung: Inbox .......................................................................63 5.2.4 Funktion: „Tags umbenennen“ ........................................................................66

IV

5.3 Implementierung des Bookmarklogs........................................................................67 5.3.1 Die Content Syndication Schnittstelle .............................................................69

5.3.1.1 RSS 1.0 Template ........................................................................................69 5.3.1.2 RSS 0.92 Template ......................................................................................71 5.3.1.3 ATOM 1.0 Template....................................................................................72 5.3.1.4 ATOM 0.3 Feed...........................................................................................73

5.3.2 Bookmarklogverzeichnis .................................................................................74 5.4 Implementierung der öffentlichen Schicht der Erweiterung....................................76

5.4.1 Öffentliche Übersichtsseite der Erweiterung...................................................77 5.4.1.1 Erstellung der Übersichtsseite .....................................................................77 5.4.1.2 Zugriffsmöglichkeiten auf die tagspezifischen Seiten.................................79

5.4.2 Implementierung der Importschnittstelle.........................................................80 5.4.2.1 Import externer Bookmarks .........................................................................81 5.4.2.2 Darstellung der importierten Bookmarks ....................................................83 5.4.2.3 Kommentarfunktion.....................................................................................85

5.5 Implementierung weiterer Funktionen.....................................................................86 5.5.1 Funktion: „Quick save“ ...................................................................................86 5.5.2 Funktion: „Quick Info“....................................................................................87 5.5.3 Erweiterung der Startseite des Infoasset Brokers ............................................88

5.6 Webservices .............................................................................................................89 5.6.1 Webservice: Export von Bookmarklisten ........................................................91 5.6.2 Webservice: Export von Taglisten...................................................................93 5.6.3 Webservice: Import von Bookmarks ...............................................................93

6 Ausblick ..........................................................................................................................96

7 Schlusswort.....................................................................................................................98

8 Literaturverzeichnis ......................................................................................................99

8.1 Monographien..........................................................................................................99 8.2 Internet - Dokumente ...............................................................................................99

9 Anhang..........................................................................................................................100

9.1 Funktionsübersicht.................................................................................................100 9.1.1 Bookmarklog anlegen ....................................................................................100 9.1.2 Funktionen des Bookmarkaccounts ...............................................................101

9.1.2.1 Bookmarks einfügen ..................................................................................101 9.1.2.2 Die Übersichtsseite ....................................................................................102 9.1.2.3 Abonnementfunktion - die Inbox...............................................................104 9.1.2.4 Funktion „Tags umbenennen“ ...................................................................105

9.1.3 Der Bookmarklog ..........................................................................................105 9.1.4 Funktionen der öffentlichen Schicht..............................................................106

9.1.4.1 Die öffentliche Übersichtsseite..................................................................107 9.1.4.2 Das Bookmarklogverzeichnis ....................................................................108

9.1.5 Sonstige Funktionen ......................................................................................109 9.1.5.1 Erweiterung der Startseite..........................................................................109 9.1.5.2 Das Bookmarklet „Quick save“.................................................................110 9.1.5.3 Die Funktion „Quick info“ ........................................................................110 9.1.5.4 Die Webservices ........................................................................................110

9.2 Der Featurevergleich.............................................................................................113

V

Abbildungsverzeichnis

Abb. 1: Projektphasen ( Quelle: eigene Darstellung ) .............................................................10

Abb. 2:Diagrammarten der Freitextsuche ( Quelle: eigene Darstellung ) ...............................14

Abb. 3: Diagramm: unterstützte Feedformate ( Quelle: eigene Darstellung ).........................14

Abb. 4: AJAX web application model ( Quelle: [Gar05]).......................................................16

Abb. 5: Client-Server Architektur des Infoasset Brokers (Quelle: [Leh05])...........................21

Abb. 6.: AssociationSchemas: ManyToMany-Association und OneToMany-Association (Quelle:[Leh05]) ..............................................................................................................24

Abb. 7: Struktur einer Query ( Quelle: eigene Darstellung )...................................................25

Abb. 8: Klassische und AJAX-basierte Client-Server Kommunikation (Quelle: [Gar05]) ....27

Abb. 9: Struktur eines „RSS 0.91“ Feeds (Quelle: [Ham03]) .................................................28

Abb. 10: Struktur eines "RSS 1.0" Feeds (Quelle: [HAM03]) ................................................29

Abb. 11: Modell der Erweiterung ( Quelle: eigene Darstellung ) ...........................................32

Abb. 12: Darstellung eines Bookmarks ( Quelle: eigene Darstellung )...................................36

Abb. 13: Übersichtsseite des Bookmarkaccounts ( Quelle: eigene Dargstellung) .................37

Abb. 14: Der Bookmarklog (Abbildung: Eigene Darstellung)...............................................39

Abb. 15: Die Startseite der öffentlichen Schicht der Erweiterung (Quelle: eigene Darstellung) .....................................................................................................................41

Abb. 16: Die "Suggestionsfunktion" ( Quelle: eigene Darstellung ) .......................................49

Abb. 17: Query: Abfrage der Vorschläge ( Quelle: eigene Darstellung ) ...............................50

Abb. 18: Hilfsfunktion: „isValid“ ( Quelle: eigene Darstellung ) ...........................................51

Abb. 19: Hilfsfunktion: "convertToHTML“ ( Quelle: eigene Darstellung ) ...........................52

Abb. 20: Die Funktion "getpage"( Quelle: eigene Darstellung ) .............................................54

Abb. 21: Die Funktion "createIndex" ( Quelle: eigene Darstellung )......................................56

Abb. 22: Die Kommentarliste ( Quelle: eigene Darstellung ) .................................................58

Abb. 23: Das Bearbeitungsformular ( Quelle: eigene Darstellung )........................................59

Abb. 24: Schematische Darstellung der Schnittstelle des Webservices ( Quelle: eigene Darstellung ) ....................................................................................................................61

Abb. 25: Die Funktion "getRelatedTagsofaTag" ( Quelle: eigene Darstellung ) ....................62

Abb. 26: die Funktion "getlatestbookmarksofasubscription"( Quelle: eigene Darstellung )...64

Abb. 27: Struktur eines RSS 1.0 Templates ( Quelle: eigene Darstellung )............................71

Abb. 28: Struktur eines RSS 0.92 Templates ( Quelle: eigene Darstellung )..........................72

Abb. 29: Struktur eines Atom 1.0 Templates ( Quelle: eigene Darstellung )..........................73

Abb. 30: Funktion: Einlesen des Feeds ( Quelle: [ABD05]) ...................................................74

Abb. 31: Ausgabe des umgewandelten Feeds (Quelle: vgl. [ABD05] )..................................74

VI

Abb. 32: Die Funktion "getallBookmarkslogs"( Quelle: eigene Darstellung ) .......................76

Abb. 33: Die Funktion "getpopulartags"( Quelle: eigene Darstellung )..................................78

Abb. 34: Graphische Darstellung eines RDF-Tripels ( Quelle: eigene Darstellung ) .............82

Abb. 35: Struktur einer RDQL-Anfage ( Quelle: eigene Darstellung )...................................82

Abb. 36: Query mit verschiedenen Where-Klauseln( Quelle: eigene Darstellung) ................83

Abb. 37: Query: Abfrage der verwandten Tags ( Quelle: eigene Darstellung ) ......................85

Abb. 38: Fehlermeldung bei einen fehlgeschlagenen Request ( Quelle: eigene Darstellung )91

Abb. 39:Antwortdokument eines Webservices ( Quelle: eigene Darstellung ) .......................92

Abb. 40: Formular: "neues Weblog anlegen" ( Quelle: eigene Darstellung ) .......................101

Abb. 41: Darstellung eines Bookmarks ( Quelle: eigene Darstellung)..................................102

Abb. 42: Die Inbox ( Quelle: Eigene Darstellung ) ...............................................................105

Abb. 43: URL der tagspezifischen Seiten ( Quelle: eigene Darstellung ) .............................107

Abb. 44: Das Bookmarklogverzeichnis ( Quelle: Eigene Darstellung).................................108

Abb. 45: Die Webservices der Erweiterung ( Quelle: eigene Darstellung )..........................111

Abb. 46: Antwortdokument eines Webservices ( Quelle: eigene Darstellung ) ....................111

VII

Tabellenverzeichnis Tab. 1: Queryconditions ( Quelle: eigene Darstellung ) ..........................................................25

Tab. 2: Wertebereich der Eigenschaft "Typ"( Quelle: eigene Darstellung ) ...........................47

Tab. 3: Die Events der Suggestionsfunktion ( Quelle: eigene Darstellung)............................49

Tab. 4: Typen des Exportfeeds ( Quelle: eigene Darstellung )................................................80

Tab. 5: Webservices der Erweiterung ( Quelle: eigene Darstellung ) .....................................90

Tab. 6: Bedeutungen der Formularfelder ( Quelle: eigene Darstellung) ...............................102

Tab. 7: Die Abonnementtypen ( Quelle: eigene Darstellung) ...............................................104

Abkürzungsverzeichnis AJAX asynchronous javascript and XML API application program interface DOM data object model HTML hypertext markup language http hypertext transfer protocol LDAP lightweight directory access protocol RDF resource description framework RDQL RDF query language REST repesentation state transfer ROME rss and atom utilities RSS RDF site summary URI uniform resource identifier URL uniform resource locator XHTML extensible hypertext markup language XML extensible markup language

8

1 Einleitung

Im Rahmen dieser Diplomarbeit wird eine „social bookmarking“ Erweiterung für ein Wis-

sensmanagementsystem konzipiert und realisiert. Bei dem Wissensmanagementsystem han-

delt es sich um den Infoasset Broker, der von der Infoasset AG in Zusammenarbeit mit dem

Lehrstuhl für Software Engineering Betrieblicher Informationssysteme (sebis) entwickelt

wurde. Dieses webbasierte System organisiert den unternehmensweiten Wissensworkflow,

indem es die verschiedenen Teilgebiete des Wissensmanagements, wie das Dokumenten-

oder das Skillmanagement, und vielseitige Communityfunktionen unterstützt. Durch die Ver-

netzung der unterschiedlichen Wissensquellen, die im folgendem als „Assets“ bezeichnet

werden, können diese effizient strukturiert und geordnet werden, so dass den Mitarbeitern

eine einheitliche Sicht auf das oftmals heterogene Wissen eines Unternehmens bereitgestellt

wird (vgl. [MAT05]). Dadurch wird vor allem das Teamwork, bei dem Wissen über ver-

schiedene Organisationseinheiten hinweg ausgetauscht wird, erleichtert.

Wie schon erwähnt wurde, war ist das Ziel der Diplomarbeit, eine social bookmarking Erwei-

terung zu entwickeln und dadurch die „Community“ Funktionen des Infoasset Brokers zu

erweitern. Ein social bookmarking System ermöglicht es den Anwendern einerseits eigene

Bookmarks zu definieren und anderseits diese mit den anderen Anwendern des Systems aus-

zutauschen. Bei der Definition von Bookmarks können die Anwender ihre Bookmarks kate-

gorisieren. Anhand der Kategorisierung erstellt die Anwendung verschiedene Verknüpfungen

zwischen diesen und erleichtert den Anwendern so das Auffinden von Bookmarks, die in

einem thematischen Zusammenhang stehen.

Die Kategorisierung basiert vor allem auf Tags, welche Schlüsselwörter darstellen, mit denen

der Anwender seine Bookmarks thematisieren kann. Dabei sollten Tags frei wählbar sein,

damit jedem Anwender eine individuelle Charakterisierung seiner Bookmarks ermöglicht

wird. Dennoch kann der Prozess der individuellen Thematisierung der Bookmarks durch das

Vorschlagen von bereits verwendeten Tags unterstützt werden, damit den Anwendern eine in

sich stimmige Kategorisierung ihrer Bookmarks erleichtert wird.

Der „Austausch von Bookmarks“ zwischen den Anwendern wird des Weiteren durch diverse

Abonnementfunktionen unterstützt. Mittels dieser Funktionen können die Anwender tagspe-

zifische oder personenspezifische Bookmarks abonnieren. Nachdem ein Anwender ein sol-

ches Abonnement abgeschlossen hat, wird er automatisch benachrichtigt, sobald ein Book-

mark, das diesem entspricht, in die Anwendung eingefügt wird.

9

Neben diesen Grundfunktionalitäten gibt es noch eine Reihe weiterer Anforderungen die an

die Implementierung eines solchen Systems gestellt werden. Auf sie wird in Kapitel 2 einge-

gangen.

Nachdem in der Einleitung der Kontext und die Zielsetzung der Diplomarbeit erläutert wur-

den, wird nun die Vorgehensweise, die für die Erstellung dieser Arbeit angewandt wurde,

vorgestellt.

1.1 Vorgehensweise

Die Vorgehensweise bei der Bearbeitung des Diplomarbeitsthemas kann man in drei Schritte

untergliedern:

• Einarbeitung in das Thema

• Konzeption und Implementierung der social bookmarking Erweiterung

• Verfassen der schriftlichen Ausarbeitung

Bei der Einarbeitung in das Thema mussten zwei Aspekte berücksichtigt werden. Einer-

seits mussten die Anforderungen an die Implementierung definiert werden, andererseits

mussten diese Anforderungen an die bestehende Implementierung und die Konzepte des In-

foasset Brokers angepasst werden. Darum war eine zur Anforderungsanalyse parallele Einar-

beitung in die Implementierung des Brokers notwendig. In dieser Projektphase wurde zu-

nächst eine Marktstudie, in der die Funktionalität von sieben bekannten social bookmarking

Anwendungen analysiert wurde, durchgeführt. Anhand einer Analyse der in Kapitel 1.3 zu-

sammengefasst dargestellten Ergebnisse der Marktstudie wurden die Anforderungen an die

Erweiterung definiert, auf denen der Konzeption des Systems basiert.

In der Konzeptionsphase wurden zum einen die Anforderungen an die bestehende Umge-

bung des Infoasset Brokers angepasst und zum anderen das Systemdesign, auf welchem die

Erweiterung basiert, entworfen. Um das Systemdesign zu visualisieren, wurden - neben ei-

nem UML-Diagramm, in dem das Modell der Erweiterung abgebildet wurde - „Screenshots“

des Infoasset Brokers erstellt und die zu implementierenden Funktionalitäten in diese einge-

fügt. Mit der gewählten Art der Darstellung der Modellierung wurde die Kommunikation

über die Modellierung sehr erleichtert, da diese Darstellungsweise sehr eingängig ist.

Die an die Konzeptionsphase anschließende Implementierung des Systems basierte groß-

teils auf dem „vertikalen Prototyping“, das besagt, dass die verschiedenen Komponenten

10

eines Systems jeweils nacheinander über alle Schichten hinweg realisiert werden [BÖH04].

Somit konnten schon während der Implementierung an Teilkomponenten des Systems Funk-

tionstests durchgeführt werden, und die daraus resultierenden Erfahrungen für die weiteren

Implementierungsschritte verwendet werden.

In der letzten Phase der Diplomarbeit wurde die vorliegende Ausarbeitung verfasst, auf des-

sen Gliederung im nächsten Kapitel eingegangen wird.

Abb. 1: Projektphasen ( Quelle: eigene Darstellung )

1.2 Aufbau der Arbeit

Im ersten Kapitel dieser Arbeit werden sowohl die Zielsetzung und der Kontext der Dip-

lomarbeit als auch die Vorgehensweise, die bei der Bearbeitung des Diplomarbeitthemas ver-

folgt wurde, erläutert.

Daran anschließend werden im zweiten Kapitel die Anforderungen an die Erweiterung, die

in allgemeine und spezifische Anforderungen untergliedert sind, vorgestellt.

Basierend auf den Anforderungen werden im dritten und vierten Kapitel zum einen die

Technologien, die für die Umsetzung der Anforderungen verwendet wurden, und zum ande-

ren das Systemdesign beschrieben.

Im fünften Kapitel der Ausarbeitung wird die konkrete Implementierung des Systems erläu-

tert. Dabei werden vor allem die verschiedenen Datenstrukturen und Algorithmen, die für die

Realisierung der social bookmarking Erweiterung verwendet wurden, erläutert. Schließlich

wird in den Kapiteln Sechs und Sieben die Ausarbeitung mit einem Ausblick auf mögliche

11

Weiterentwicklungen der Implementierung und einer Zusammenfassung der Ergebnisse der

Diplomarbeit abgeschlossen.

1.3 Ergebnisse der Marktstudie (Funktionsanalyse)

Auf der Basis der Ergebnisse der Marktstudie wurden die Anforderungen an die Implemen-

tierung der social bookmarking Erweiterung definiert. Dabei wurde darauf geachtet, dass

sowohl die standardisierten Funktionen, die von den meisten Systemen angeboten werden,

als auch spezielle Funktionen, mit denen sich die Erweiterung von den anderen System ab-

grenzen könnte, in das Pflichtenheft aufgenommen wurden.

Im Rahmen der Marktstudie wurden die Eigenschaften und die Funktionalitäten, welche ver-

schiedenen Kategorien zugeordnet werden können, der folgenden social bookmarking Anbie-

ter analysiert:

• Del.icio.us • Simpy • Furl

• Blogmark • Connectea • Spurl

• Linkroll

In der Kategorie Startseite wurde untersucht, welche Elemente auf den Startseiten der ver-

schiedenen Anwendungen dargestellt werden. Dabei stellte sich heraus, dass eine Übersicht

über aktuelle Bookmarks bei allen Anwendungen auf der Startseite angezeigt wurde. Vier

weitere Systeme stellten populäre Tags auf ihren Startseiten dar, wobei diejenigen Tags als

populär gelten, die von vielen verschiedenen Anwendern definiert wurden. Schließlich stell-

ten zwei Systemen auf ihren Startseiten ihre aktivsten Anwender vor. Dass diese Information

nur von wenigen Systemen ausgegeben wird, kann dadurch begründet werden, dass die Aus-

sagekraft dieser Information über die Eigenschaften der Bookmarks und somit deren Nutzen

für die Endanwender relativ gering ist.

Des Weiteren wurde untersucht, welche Eigenschaften zu einem Bookmark gespeichert

werden können und wie die Bookmarks in den verschiedenen Anwendungen dargestellt wer-

den. In allen Anwendungen können die Anwender den Bookmarks einen Titel, Tags und eine

Beschreibung zuordnen, wobei in manchen Systemen noch ein alternativer Titel zu dem

Bookmark hinzugefügt werden kann. Dadurch haben die Anwender die Möglichkeit, den

Bookmarks sowohl einen offiziellen Seitentitel als auch einen selbst gewählten Titel zuzu-

ordnen. In einer Anwendung können die Anwender darüber hinaus zwei verschiedene Be-

12

schreibungen zu ihren Bookmarks hinzufügen. Dabei wird zwischen der offiziellen Beschrei-

bung, die jeder Anwender sehen darf und dem persönlichen Kommentar, der nur dem jewei-

ligen Eigentümer des Bookmarks angezeigt wird, unterschieden.

Generell wird die Trennung zwischen „privaten“ und „öffentlichen“ Bookmarks durch

vier Anwendungen unterstützt. Mittels dieses Features können die Anwender selbst entschei-

den, ob ihre Bookmarks öffentlich oder nur in ihrem persönlichen Account angezeigt werden

sollen. Die Möglichkeit private Bookmarks zu definieren ist besonders für die Anwender von

Vorteil, die Bookmarks zu Seiten mit sensiblen Inhalten - z.B. „Online Banking“ - in diesen

Systemen speichern wollen.

In allen Systemen umfasst die Darstellung der Bookmarks deren Titel, deren Beschreibung

und deren Tags, wobei die Bookmarktitel auf die Ressourcen, die von den jeweiligen Book-

marks beschrieben werden, verweisen. Daneben wird von drei Anwendungen die Anzahl der

Bookmarks, welche mit der gleichen URL wie der jeweils angezeigte Bookmark verknüpft

sind, ausgegeben. Diese drei Anwender bieten des Weiteren eine Kommentarfunktion an, mit

der die Anwender diese Bookmarks aufrufen können. Dadurch wird es den Anwendern er-

möglicht beispielsweise auf alle Kommentare, welche über die Bookmarks einer URL zuge-

ordnet wurden, direkt zuzugreifen.

In der Kategorie „Sichtweisen auf den Bookmarkbestand“ wurde untersucht in welchem

Kontext die verschiedenen Bookmarks dargestellt werden können. Dabei stellte sich heraus,

dass die meisten Anwendungen - neben der Übersicht über die aktuellen Bookmarks - zwei

verschiedene Sichtweisen auf ihren Bookmarkbestand anbieten: Die personspezifische und

die tagspezifische Sicht. In der personspezifischen Sicht werden die Bookmarks eines be-

stimmten Anwenders angezeigt. Bei der tagspezifischen Sicht werden die Bookmarks, die

mit einem bestimmten Tag verknüpft sind, dargestellt. Der direkte Zugriff auf die verschie-

denen Übersichtsseiten über bestimmte URLs wird durch vier Anwendungen ermöglicht. Die

URLs sind dabei so aufgebaut, dass die Anwender den Namen der Person oder den Tag, de-

ren Bookmarks angezeigt werden sollen, direkt an diese anhängen können und dadurch die

entsprechenden Übersichtsseiten aufrufen können.

In einer weiteren Kategorie wurden die Funktionen der verschiedenen Systeme untersucht.

Die Grundfunktionalitäten

• einfügen

• bearbeiten

• löschen

13

von Bookmarks wurden von allen Systemen angeboten, wobei diese für die Funktion „Einfü-

gen“ neben dem „normalen Einfügeformular“ einen Bookmarklet anbieten. Das „Book-

marklet“ ist ein „aktiver“ Link zu den social bookmarking Anwendungen, welchen die An-

wender in ihre Browser integrieren können. Mittels dieses Bookmarklets können die Anwen-

der die URL der Seite, auf welcher sie sich gerade befinden, in einen Bookmark speichern,

ohne dass sie ihr social bookmarking System direkt öffnen müssen.

Fünf Systeme unterstützen neben der generellen Bearbeitungsfunktion die gesonderte Umbe-

nennung von Tags. Durch die Umbenennung von Tags können beispielsweise Tags aufge-

spaltet werden, was bedeutet, dass ein Tag durch zwei neue Tags ersetzt werden kann. Durch

diese Aufspaltung können die Anwender die Kategorisierung von bestimmten Bookmarks

verfeinern oder verändern.

Innerhalb der Anwendungen wird der Austausch von Bookmarks einerseits durch die Ko-

pierfunktion und andererseits durch eine Abonnentenfunktion unterstützt. Die Kopierfunkti-

on, welche von fünf Anwendungen angeboten wird, ermöglicht es jedem Anwender, Book-

marks von anderen Anwendern in seinen persönlichen Account zu kopieren. Dagegen können

die Anwender mit der „Abonnentenfunktion“ bestimmte Bookmarks abonnieren. Dies bedeu-

tet, dass die Anwender auf Wunsch automatisch informiert werden, wenn ein Bookmark ei-

nes bestimmten Typs in das System eingefügt wird. Diese Abonnementfunktion wird von

vier Systemen unterstützt.

Die Suchoptionen, die von den verschiedenen Systemen angeboten werden, können generell

in zwei Klassen unterteilt werden: Die Kategoriesuche und die Freitextsuche. Durch die Ka-

tegoriesuche können die Anwender nach Bookmarks einer bestimmten vordefinierten Kate-

gorie suchen. Ein Beispiel hierfür wäre die Liste der populären Tags, die von manchen Sys-

temen auf deren Startseite ausgegeben wird. Aus der Liste kann der Anwender nun einen

populären Tag auswählen und sich alle Bookmarks, die mit diesen verknüpft sind, anzeigen

lassen. Daneben werden noch Kategoriesuchen für neue Tags, aktive Anwender oder person-

spezifische Tags von den verschiedenen Systemen angeboten.

Mit der Freitextsuche kann der Bookmarkbestand eines Systems nach einem frei gewählten

Stichwort durchsucht werden. Die Arten der Freitextsuche der verschiedenen Systeme kön-

nen, wie im folgendem Diagramm dargestellt wird, vor allem anhand der Eigenschaften der

Bookmarks, die bei der Freitextsuche berücksichtigt werden können, voneinander abgegrenzt

werden.

14

4

4

3

1

nach Titelnnach Beschreibungnach Tagnach Personen

Abb. 2:Diagrammarten der Freitextsuche ( Quelle: eigene Darstellung )

Aus diesem Diagramm geht hervor, das von den meisten Systemen eine Freitextsuche inner-

halb der Titel und der Beschreibungen der Bookmarks unterstützt wird, wohingegen die Frei-

textsuche nach Tags oder nach Personen von wesentlich weniger Systemen angeboten wird.

Dies kann dadurch erklärt werden, dass der Zugriff auf tagspezifische oder personenspezifi-

sche Bookmarks entweder durch eine Kategoriesuche oder durch spezifische URLs ermög-

licht wird.

Schließlich wurden noch die Schnittstellen, die von den verschiedenen social bookmarking

Anwendungen angeboten werden, untersucht. Dabei stellte sich heraus, dass alle Anwendun-

gen Newsfeeds als generelle Exportschnittstelle unterstützen (siehe Abb.2 ).:

RSS 0.91; 14,30%

Atom 0.3; 28,60%

RSS1.0; 57,10%

RSS 2.0; 57,10%

0,00% 10,00% 20,00% 30,00% 40,00% 50,00% 60,00%

RSS 2.0

RSS1.0

RSS 0.91

Atom 0.3

Abb. 3: Diagramm: unterstützte Feedformate ( Quelle: eigene Darstellung )

15

Wie in diesem Diagramm dargestellt wird, werden von den verschiedenen Anwendungen vier

unterschiedliche Feedformate unterstützt, wobei die meisten Anwendungen die Formate

„RSS 1,0“ und „RSS 2.0“ anbieten. Des Weiteren ist auffällig, dass das Feedformat „Atom

0,3“ nur 28,60% der Anwendungen und die neueste Atomversion „Atom 1.0“ von keiner

Anwendung unterstützt wird. Dies kann dadurch erklärt werden, dass „Atom“ noch eine rela-

tiv „junge“ Technologie gegenüber den weiter verbreiteten und etablierten RSS-Formaten ist

und die Entwickler der social bookmarking Anwendungen die RSS-Schnittstellen den Atom-

schnittstellen vorziehen. In zwei Anwendungen (Simpy und Spurl) werden mehrere verschie-

dene Feedformate angeboten, womit die Entscheidung, welches Feedformat für den Export

von Bookmarks verwendet wird, den Endanwendern überlassen wird.

Darüber hinaus ermöglichen fünf Anwendungen den Import von Bookmarks. Über die Im-

portschnittstelle können die Anwender die Bookmarks, die in ihren Browser gespeichert wur-

den, mit ihrem social bookmarking Account synchronisieren. Die Importschnittstellen kön-

nen vor allem mit den bekannten Browsern wie dem „Internet Explorer“, „Netscape“ und „

Firefox“ interagieren. Von zwei Systemen wird des Weiteren eine Schnittstelle zu dem An-

bieter Del.icio.us angeboten. Mit dieser Schnittstelle wird es den Anwendern dieser Systeme

ermöglicht, ihre Bookmarks mit ihrem Del.icio.us-Account zu synchronisieren. Da die

Schnittstelle zu Del.icio.us die einzige anwendungsspezifische Schnittstelle ist, die von den

untersuchten Anwendungen angeboten wird, scheint Del.icio.us eine besondere Stellung un-

ter den verschiedenen Anwendungen einzunehmen.

In diesem Kapitel wurden die zentralen Erkenntnisse, die durch die Marktstudie gewonnen

wurden, kurz vorgestellt1. Im folgenden Kapitel werden nun die Anforderungen an die social

bookmarking Erweiterung, die sowohl aus den Ergebnissen dieser Marktstudie als auch aus

den Gesprächen mit dem Aufgabensteller abgeleitet wurden, vorgestellt.

1 Im Anhang befindet sich eine Funktionsübersicht der Systeme, die in dieser Marktstudie erfasst wurden

16

2 Anforderungen an die social bookmarking Erweiterung

In diesem Kapitel werden die allgemeinen und die anwendungsspezifischen Anforderungen

an die Erweiterung erläutert. Die anwendungsspezifischen Anforderungen beziehen sich auf

die Funktionalität der zwei Schichten der Erweiterung. Die erste Schicht ist der Bookmarkac-

count, in dem jeder Anwender seine persönlichen Bookmarks definieren und verwalten kann.

Dagegen können die Anwender in der öffentlichen Schicht zum einen den Bookmarkbestand

der Erweiterung durchsuchen und zum anderen ihre Bookmarks untereinander austauschen.

2.1 Generelle Anforderungen

Eine grundsätzliche Anforderung an die Erweiterung ist die Benutzerfreundlichkeit. Sie

trägt dazu bei, dass die Erweiterung schnell von den Anwendern akzeptiert wird und diese

nach einer relativ kurzen Einführungsphase in den Arbeitsalltag integriert wird. Um die Er-

weiterung benutzerfreundlich zu gestalten, wurden zwei zentrale Anforderungen definiert:

• Implementierung von AJAX-basierten Funktionen.

• Realisierung einer einheitlichen Oberfläche

AJAX (Asynchronous Javascript and XML) ist eine Kombination von den verschiedenen

webbasierten Technologien und ermöglicht eine asynchrone Client-Server Kommunikation.

Durch diese Art der Kommunikation, welche in der folgenden Abbildung dargestellt wird,

können Daten zwischen einem Server und einem HTML-Client ausgetauscht werden, ohne

dass der Client neu geladen werden muss.

Abb. 4: AJAX web application model ( Quelle: [Gar05])

17

Durch den Einsatz der AJAX-Technologie, die im Kapitel 3.2 näher erläutert wird, entfallen

somit die Ladezeiten der Webseiten, die durch die herkömmliche synchrone Kommunikation

entstehen würden. Demzufolge laufen AJAX-basierte Webanwendungen selbst auf Rechnern,

die nur über eine langsame Verbindung zum Internet verfügen, schneller und flüssiger als

herkömmliche Webanwendungen.

Durch die Realisierung einer einheitlichen Oberfläche, in der sich ähnliche Elemente oder

Funktionen immer an den gleichen oder ähnlichen Positionen befinden, wird die Ergonomie

der Anwendung erhöht. Diese Ergonomie trägt wiederum dazu bei, dass die Handhabung der

Erweiterung für die Anwender erleichtert wird, wodurch deren Einarbeitungsaufwand redu-

ziert wird.

Des Weiteren sollte eine Schnittstelle zu dem social bookmarking System Del.icio.us2 reali-

siert werden, damit die Anwender der Erweiterung nicht nur auf intern gespeicherte Book-

marks, sondern auch auf die externen Bookmarks von Del.icio.us zugreifen können.

Hierdurch können die Anwender schon während der Einführungsphase, wenn erst wenige

interne Bookmarks in die Erweiterung eingefügt wurden, auf eine umfangreiche Bookmark-

bibliothek zugreifen.

Neben der Importschnittstelle sollten Exportschnittstellen für die Erweiterung implemen-

tiert werden, um den Export von Bookmarks in Fremdsysteme zu ermöglichen. Dabei sollten

einerseits verschiedene Newsfeeds (siehe Kap. 3.3) implementiert werden, mit denen der

Export von Bookmarklisten durch XML-Dokumente realisiert werden kann. Andererseits

sollte der Export von Bookmarklisten bzw. Taglisten auch als Webservice (siehe Kap. 5.6)

umgesetzt werden, damit diese webbasierten Anwendungen zur Verfügung gestellt werden

können.

Nachdem in diesem Kapitel die generellen Anforderungen erläutert wurden, werden im fol-

genden Kapitel die Anforderungen an den Bookmarkaccount beschrieben.

2 http://del.icio.us

18

2.2 Anforderungen an den Bookmarkaccount (private Schicht)

Wie bereits zu Beginn des zweiten Kapitels erwähnt wurde, stellt der Bookmarkaccount die

Schicht dar, in der die verschiedenen Anwender ihre persönlichen Bookmarks speichern und

verwalten können.

Bei der Definition eines Bookmarks, sollten die Anwender diesem die folgenden Eigen-

schaften zuordnen können:

• Titel des Bookmarks

• URL des Bookmarks

• Tags

• Beschreibung des Bookmarks (optional)

• Sichtbarkeit

Die zwei wichtigsten Elemente bei der Charakterisierung eines Bookmarks sind der Titel

sowie die URL der Ressource, auf die der Bookmark verweisen soll. Neben diesen Grund-

elementen sollten dem Bookmark Tags zugeordnet werden, damit dessen Kategorisierung

möglich ist. Außerdem sollte der Anwender noch eine kurze Beschreibung für den Bookmark

verfassen können und entscheiden dürfen, ob der Bookmark nur im Bookmarkaccount (pri-

vat) oder auch auf der öffentlichen Plattform der Erweiterung (public) angezeigt werden darf.

Neben dem Einfügen von Bookmarks sollte es den Anwendern möglich sein ihre Tags um-

zubenennen, damit sie zum Beispiel alle Bookmarks, die mit einem bestimmten Tag ver-

knüpft sind, einem neuen Tag, der die Bookmarks besser beschreibt, zuordnen können. Diese

Funktion würde die konsistente Kategorisierung der Bookmarks für die Anwender unterstüt-

zen.

Des Weiteren sollte für den Bookmarkaccount eine Übersichtsseite realisiert werden, die alle

Bookmarks des jeweiligen Anwenders darstellt. Die Darstellung der Bookmarks sollte dabei

nicht nur die Informationen wie Titel, Beschreibung, Tags und den Namen des Anwenders

umfassen, sondern auch wiedergeben, wie viele andere Anwender einen Bookmark zu der

gleichen URL gespeichert haben und welche Kommentare sie diesem zugeordnet haben. Zu-

sätzlich zu den Eigenschaften sollte jeder Bookmarkdarstellung eine Bearbeitungsfunktion

und eine Löschfunktion, sowie eine Funktion, mit Hilfe derer die Bookmarks nach

Del.icio.us exportiert werden können, zugeordnet werden.

19

Eine weitere Anforderung an den Bookmarkaccount ist die Realisierung von Abonnement-

funktionen, die es den Anwendern ermöglichen bestimmte Bookmarks zu abonnieren. Die

Bookmarks, die den Abonnements des Anwenders entsprechen, sollten schließlich in der so

genannten „Inbox“ innerhalb des Bookmarkaccounts angezeigt werden.

Schließlich sollte es jedem Anwender ermöglicht werden, seine öffentlichen Bookmarks den

anderen Anwendern der Erweiterung zur Verfügung zu stellen. Diese Schnittstelle zwischen

dem Bookmarkaccount und der öffentlichen Schicht der Erweiterung sollte durch den so ge-

nannten Bookmarklog realisiert werden. Dieser sollte analog zu der Übersichtsseite des

Bookmarkaccounts aufgebaut werden, so dass in diesem neben den Bookmarks auch die

Tags eines Anwenders dargestellt werden können. Außerdem sollte für die Bookmarklogs

eine Exportschnittstelle realisiert werden. Diese Exportschnittstelle sollte es jedem Anwender

ermöglichen, einerseits einzelne Bookmarks durch eine Kopierfunktion in ihren persönlichen

Bookmarkaccount zu kopieren und andererseits Feeds, welche die Bookmarks des Book-

marklogs enthalten, anzufordern.

2.3 Anforderungen an die öffentliche Schicht der Erweiterung

Die öffentliche Schicht, auf die im Gegensatz zu den Bookmarkaccounts jeder Anwender

zugreifen kann, ermöglicht es den Anwendern, den gesamten Datenbestand der Erweiterung

zu durchsuchen. Für die öffentliche Plattform wurden folgende Anforderungen festgelegt:

• Implementierung einer effizienten Darstellung des Datenbestandes der Erweiterung

• Realisierung der Schnittstelle zu Del.icio.us

Um das Durchsuchen des Datenbestandes für die Anwender zu erleichtern, sollte dieser

auf verschiedene Weisen dargestellt werden können. Neben den Bookmarklog, in dem die

Bookmarks einer bestimmten Person dargestellt werden (siehe Kap.2.2), sollte eine Übersicht

über die aktuellen Bookmarks und eine tagsspezifische Sicht auf den Bookmarkbestand reali-

siert werden. Die Übersicht über die neuesten Bookmarks ist für die Anwendergruppen inte-

ressant, die regelmäßig die Erweiterung nutzen und sich über die Änderungen des Datenbe-

standes informieren wollen. Für Anwendergruppen, die Bookmarks zu einem bestimmten

Thema suchen, ist dagegen die tagspezifische Sicht, geeignet. Diese verschiedenen Sichtwei-

sen auf den Datenbestand sollten eng miteinander verknüpft sein, so dass die Anwender je-

20

derzeit auf diese zugreifen und sich somit einen umfassenden Überblick über den Datenbe-

stand verschaffen können.

Des Weiteren soll in der öffentlichen Plattform der Erweiterung eine Importschnittstelle zu

Del.icio.us implementiert werden. Dadurch wird der Datenbestand, auf den die Anwender

zugreifen können, erheblich erweitert. Die importierten Bookmarks sollten dabei auf die glei-

che Art und Weise wie die internen Bookmarks dargestellt werden, damit die Einheitlichkeit

der Oberfläche der Erweiterung auch in dieser Importschnittstelle gewahrt bleibt. Schließlich

sollte vor allem den Bookmarks, die in der öffentlichen Schicht dargestellt werden, eine Ko-

pierfunktion, mit der die Anwender Bookmarks aus dieser Plattform in ihren persönlichen

Bookmarkaccount kopieren können, zugeordnet werden.

Nachdem in diesem Kapitel die Anforderungen an die social bookmarking Erweiterung er-

läutert wurden, werden im folgenden Kapitel die Technologien vorgestellt, die für die Um-

setzung der Anforderungen verwendet werden.

21

3 Realisierungstechnologien Zu Beginn dieses Kapitels wird die Architektur des Infoasset Brokers, in welchen die social

bookmarking Erweiterung eingebettet wird, vorgestellt. Daran anschließend wird ein Über-

blick über die Technologien, welche für die Umsetzung der Anforderungen verwendet wur-

den, gegeben.

3.1 Architektur des Infoasset Brokers

Der Infoasset Broker ist eine Software, die auf einer Client-Server Architektur basiert, wel-

che sich wie folgt darstellen lässt:

HTML-Client HTML-Client HTML-Client HTML-Client HTML-Client HTML-Client HTML-Client WML-Client

(optional)

infoAsset Broker

Content Management System

(optional)

SQL-Data Base (recommended)

File Systems Full Text Search

Engines

Client

Application Server

Data Layer

Abb. 5: Client-Server Architektur des Infoasset Brokers (Quelle: [Leh05])

Die Benutzerschnittstelle des Brokers wurde als HTML-Client realisiert, wodurch die An-

wender über einen Browser und somit arbeitsplatzunabhängig auf diese Software zugreifen

können.

Die Erzeugung der HTML-Seiten, die durch den Client ausgegeben werden, basiert auf

Templates, welche neben HTML-Elementen und Javascripts auch Platzhalter enthalten kön-

nen. Die Platzhalter stehen für variable Inhalte der HTML- Seiten, die durch Handler, in de-

nen die Anwendungslogik implementiert wird, dynamisch substituiert werden können.

22

3.1.1 Funktionalität und Eigenschaften von Handlern

Handler sind Java-Klassen, in denen die Anwendungslogik des Infoasset Brokers implemen-

tiert wird. Diese empfangen somit die Requests des HTML-Clienten und verarbeiten diese.

Nach der Verarbeitung der Requests führen die Handler, je nachdem zu welcher Handlerklas-

se sie gehören, unterschiedliche Abschlussaktionen aus.

Visible Handler ersetzen, nachdem sie die Requestparameter empfangen und diese verarbei-

tet haben, die Platzhalter in dem Template, das mit dem entsprechenden Handler verknüpft

ist. Für die Ersetzung der Platzhalter können verschiedene Substitutionen verwendet werden.

Printsubstitutions ersetzen Platzhalter durch einen Text. Dieser Text kann mit HTML-

Tags formatiert werden oder nur aus HTML-Elementen bestehen, so dass durch die Ausfüh-

rung der Substitutionen die Formatierung des Templates verändert werden kann.

Conditionalsubstitutions ersetzen bedingte Platzhalter in den Templates. Durch diese

Art der Platzhalter können bestimmte Elemente in den HTML-Dokumenten in Abhängigkeit

davon, ob eine bestimmte Bedingung wahr oder falsch ist, eingeblendet bzw. ausgeblendet

werden. Diese Bedingungen werden als reguläre Ausdrücke, welche während der Laufzeit

durch die Anwendungslogik ausgewertet werden, in den Conditionalsubstitutions

definiert.

Die Listsubstitutions ersetzen die Listenplatzhalter, innerhalb derer weitere Platzhalter

eingefügt werden können, die so oft substituiert werden, bis eine bestimmte Terminierungs-

bedingung erfüllt ist. Die Listsubstitutions definieren einerseits diese Terminierungs-

bedingung und andererseits die Substitutionen der Platzhalter, die sich innerhalb der Liste-

platzhalter befinden. Für die Definition dieser Substitutionen können wiederum Print-

substitutions, Conditionalsubstitutions oder Listsubstitutions verwendet

werden.

Durch die Verwendung von Platzhaltern ist eine flexible Änderung bzw. die effiziente Erstel-

lung von Templates möglich. So können verschiedene Elemente, die durch Platzhalter darge-

stellt werden, innerhalb eines Templates durch die Änderung der Reihenfolge der Platzhalter

verschoben oder durch das Entfernen der Platzhalter ausgeblendet werden. Des Weiteren

23

können bestimmte Elemente, die in einem Template mehrfach vorkommen sollen, jeweils

durch den gleichen Platzhalter dargestellt werden.

Die zweite Klasse von Handlern, die so genannten Invisiblehandler, verarbeitet Requests

und leitet diese an andere Handler weiter. Diese Handler können dazu genutzt werden, Re-

quests, die nur den Systemzustand ändern, zu verarbeiten. So werden Invisiblehandler bei-

spielsweise oft dazu verwendet, um Formulardaten zu verifizieren und diese anschließend in

die Datenbank einzutragen. Des Weiteren können mit den Invisiblehandlern die Eigenschaf-

ten von Requests untersucht werden und diese Requests somit - in Abhängigkeit von ihren

Eigenschaften - an den geeigneten Handler weitergeleitet werden. Diese Art der Requestve-

rarbeitung wurde für die Realisierung der Webservices angewandt (siehe Kap 5.6).

Schließlich gibt es noch die Mischhandler, eine Mischform zwischen Visible- und Invisible-

handlern. Nach der Verarbeitung der Requests substituieren diese Handler die Platzhalter in

den Templates, welche mit dem Handler verknüpft sind, oder leiten den Request an andere

Handler weiter.

Jeder Handler kann für verschiedene Templates verwendet werden, so dass für gleichartige

Templates nur einmal eine fachliche Logik implementiert werden muss, die jeweils mit den

entsprechenden Templates verknüpft wird.

3.1.2 Eigenschaften der Services

Bei der Verarbeitung der HTTP-Requests greifen die Handler über Services auf die Assets

zu, welche die Entitäten des Infoasset Brokers innerhalb des Systems darstellen. Der Infoas-

set Broker kann zurzeit folgende Entitäten verwalten:

• Dokumente • Personen • Projekte • Gruppen • Organisationseinheiten • Weblogs • Verzeichnisse • Bookmarks

Jede Entität wird auf einem bestimmten Assettyp abgebildet, welcher einerseits die Eigen-

schaften (Properties) der Entität darstellt und andererseits die Methoden (Assetmethoden)

enthält, über die auf die entsprechende Entität zugegriffen und diese manipuliert werden

kann. Die Assetmethoden sind vor allem get- und set-Methoden zum auslesen oder setzten

der Attribute eines Assets.

24

Die Eigenschaften eines Assets werden in einem so genannten Assetschema definiert, das

jeder Eigenschaft einen bestimmten Datentyp zuordnet. Der Infoasset Broker stellt hierfür

fünf Datentypen bereit:

• Integer (Intproperty)

• String (StringProperty)

• DomainValue (DomainValueProperty)

• CharStream (CharStreamProperty)

• Date (DateProperty)

Für jeden Datentyp kann ein Defaultwert festgelegt werden, welcher der Eigenschaft zuge-

ordnet wird, sobald eine Instanz des Assets, mit dem die Eigenschaft verknüpft ist, initiali-

siert wird.

Neben den Assetschemas können für jedes Asset noch AssociationSchemas, die die Bezie-

hung zwischen dem Asset und den anderen Assets darstellen, definiert werden. Grundsätzlich

unterstützt der Infoasset Broker zwei unterschiedliche Beziehungstypen: Die „1 zu M“ Be-

ziehung (OneToMany-AssociationSchema) und die „M zu N“ Beziehung (ManyToMany-

AssociationSchema). Das OneToMany-AssociationSchema besagt, dass eine Instanz3

eines Assets mit vielen Instanzen eines anderen Assets in Beziehung stehen kann, wohinge-

gen beim ManyToMany-AssociationSchema mehrere Instanzen eines Assets mehreren

Instanzen eines anderen Assettyps zugeordnet werden können. Ein Beispiel für eine „1 zu M“

Beziehung wäre die Verknüpfung zwischen Verzeichnissen und Dokumenten, da in einem

Verzeichnis mehrere Dokumente abgelegt werden können. Dagegen ist die Beziehung zwi-

schen Projekt und Person ein Beispiel für eine „M zu N“ Beziehung, da einem Projekt so-

wohl mehrere Personen zugeordnet werden können, als auch eine Person an mehreren Pro-

jekten teilnehmen kann. Die zwei Beziehungstypen werden in folgender Graphik dargestellt:

Abb. 6.: AssociationSchemas: ManyToMany-Association und OneToMany-Association (Quelle:[Leh05])

3 Instanzen bedeutet in diesem Zusammenhang eine bestimmte Ausprägung eines Assets

25

Nachdem das Assetschema und das Associationschema, die zusammen eine Entität des Info-

asset Brokers vollständig beschreiben, definiert wurden, werden diese in einem Datenspei-

cher abgebildet. .

Des Weiteren wurde eine Anfragesprache entwickelt, mit der die Instanzen einzelner Assets

effektiv abgefragt werden können. Die Basis jeder Anfrage bildet der Assetcontainer, in dem

sich alle Instanzen eines Assets befinden. Aus diesem können nun mittels Queries, deren

Struktur in der folgenden Abbildung dargestellt wird, bestimmte Instanzen abgefragt werden.

<Querycondition> (Container, <Property>, <Auswahlprädikat>) Abb. 7: Struktur einer Query ( Quelle: eigene Darstellung )

Grundsätzlich kann mit jeder Query genau eine Eigenschaft (<Property>) der Instanzen eines

Containers abgefragt werden. Durch die Queryconditions wird der Wert einer Eigenschaft

mit einem Auswahlprädikat in Bezug gesetzt. Dabei kann zwischen fünf grundlegenden Que-

ryconditions unterschieden werden:

QueryContains Überprüft, ob der Wert einer Eigenschaft den im Auswahlprädikat angegeben Wert enthält.

QueryBegins Überprüft, ob der Wert einer Eigenschaft mit dem Wert des Auswahlprädikats an-fängt.

QueryEqual/QueryUnequal Überprüft, ob der Wert einer Eigenschaft mit dem Wert des Auswahlprädikats über-einstimmt (bzw. nicht übereinstimmt).

QueryLess/ QueryGreater Überprüft, ob der Wert einer Eigenschaft kleiner (bzw. Größer) als der Wert des Auswahlprädikats ist.

Tab. 1: Queryconditions ( Quelle: eigene Darstellung )

Verschiedene Queries können mit den Operatoren „QueryAnd“ und „QueryOr“ verknüpft

werden, um komplexe Anfragen über verschiedene Properties zu formulieren, oder mit dem

Operator „QueryNot“ verneint werden. Nach der Ausführung einer Query werden die Asse-

tinstanzen, deren Eigenschaften den Auswahlprädikaten entsprechen, in einen Iterator ausge-

geben. Die Sortierung der Instanzen innerhalb des Iterators kann in einem so genannten Que-

rysortingcriterion bestimmt werden, wobei in diesem angegeben wird nach welcher Eigen-

schaft und in welcher Reihenfolge (absteigend oder aufsteigend) die Instanzen sortiert wer-

den sollen.

26

3.2 Asynchronous Javascript and XML (AJAX)

Wie schon in der Anforderungsanalyse kurz beschrieben, ist AJAX ein Konzept, das ver-

schiedene Technologien vereint, um eine asynchrone Client-Server Kommunikation zu er-

möglichen. Durch diese asynchrone Kommunikation können Daten zwischen dem Server und

dem Client ausgetauscht werden, ohne dass die clientseitige HTML-Seite, die die übermittel-

ten Daten darstellt, neu geladen werden muss. Dies hat für die Anwender von AJAX-

basierten Webanwendungen den Vorteil, dass sie zum Beispiel nachdem ein Formular abge-

schickt wurde, nicht darauf warten müssen bis die Client-Server Kommunikation abgeschlos-

sen ist und die Seite neu geladen wurde, sondern gleich auf derselben Seite weiterarbeiten

können. Die Verkürzung bzw. die Vermeidung von Ladezeiten macht sich besonders bei

Anwendern, die über eine langsame Internetverbindung verfügen, bemerkbar. AJAX kombi-

niert folgende Technologien miteinander:

• HTML und CSS

• Javascript

• XMLHttpRequest

• XML

• DOM

Bei der Client-Server Kommunikation mittels AJAX sendet der Client, im Gegensatz zu der

klassischen Client-Server Kommunikation, kein HTTP-Request direkt an den Server, sondern

ruft eine Javascript-Funktion mit den entsprechenden Requestparametern auf. In dieser Funk-

tion wird die fachliche Logik zur Verarbeitung des Requests implementiert. So wird im ers-

ten Schritt der Verarbeitung überprüft, ob der Request lokal bearbeitet werden kann oder eine

Interaktion mit dem Server notwendig ist. Ist dies der Fall, so wird ein XMLHttpRequest

generiert, welcher die serverseitige Anwendungslogik mit den Parametern, die für die

Verarbeitung des Requests notwendig sind, aufruft. Die Anwendungslogik verarbeitet den

Request und bettet die Rückgabedaten in ein XML-Dokument ein, welches an das Javascript,

das den XMLHttpRequest generiert hat, übergeben wird. Mit Hilfe des data object models

(DOM) kann das Javascript nun das übermittelte XML-Dokument parsen und verarbeiten.

Bei dieser Verarbeitung werden die relevanten Daten aus dem XML-Dokument extrahiert

und schließlich in das HTML-Dokument, in dem der Request initialisiert wurde, eingebettet.

27

Die folgende Graphik stellt diese AJAX-basierte Kommunikation im Vergleich zur klassi-

schen Kommunikation dar:

Abb. 8: Klassische und AJAX-basierte Client-Server Kommunikation (Quelle: [Gar05])

Bekannte Beispiele für Webanwendungen, in denen AJAX-Funktionen realisiert wurden,

sind „Google suggest“4und “Google Maps“5 . Im fünften Kapitel wird dargestellt, in welchen

Funktionen der Erweiterung AJAX verwendet wurde.

3.3 Content Syndication und Feeds

Eine wichtige Anforderung an die Implementierung der social bookmarking Erweiterung war

die Realisierung von Schnittstellen, über die Bookmarks exportiert werden können (siehe

Kap. 2.1). Dabei sollte neben den Webservices eine Exportschnittstelle auf Basis des Content

Syndication Konzeptes realisiert werden. „Content syndication makes part or all site´s con-

tent available for use by other services“[Ham03]. Wie in diesem Zitat erläutert wird, ermög-

licht „Content Syndication” den Export von Webseiteninhalten. Für diesen Export werden die

Inhalte von Webseiten in XML-Dokumenten strukturiert und in einer maschinenlesbaren

Form dargestellt, die von den entsprechenden Webseiten als so genannte Feeds von den An-

wendern angefordert werden können.

Für die Implementierung der Content Syndication Schnittstelle der Erweiterung wurden die

drei Feedformate RSS 0.91, RSS 1.0 und Atom verwendet.

4 http://www.google.com/webhp?complete=1&hl=en 5 http:/maps.google.com/

28

3.3.1 RSS 0.91

Die Entwicklung der Feedtechnologie basiert auf RDF, welches von Ramanathan V. Guha in

Zusammenarbeit mit Tim Bray entwickelt wurde. In RDF wurde ein Vokabular für XML-

Dokumente definiert, das die Beschreibung von Informationen innerhalb des World Wide

Webs ermöglicht (vgl. [HAM03]).

Das erste auf RDF basierende Feedformat, das „RDF site summary“ (RSS 0.90), wurde von

Netscape entwickelt, um Überschriften und URLs von externen Seiten auf der neu entwickel-

ten Plattform „ My Netscape Network“ anzeigen zu können. Obwohl RSS 0.90 in dieser An-

wendung (My Netscape Networt) erfolgreich eingesetzt wurde, wurde RSS 0.90 schon bald

durch RSS 0.91 ersetzt, da dieses Feedformat für die Enduser zu kompliziert zu sein schien.

Die Spezifikation von RSS 0.91, welches zu den bekanntesten Feedformaten gehört, umfasst

sowohl Elemente des RSS 0.90 Formats als auch Elemente des „ScriptingNews Formats“,

welches von „Userland Software“ entwickelt wurde.

Jeder RSS 0.91 Feed besteht aus einem Channel, der bis zu 15 „Items“ erhält, in denen je-

weils die Informationen eines bestimmten Informationstyps dargestellt werden. Dabei kann

generell, wie in folgender Abbildung dargestellt wird, zwischen den Informationstypen Fließ-

text (textinput), Bild(Image) und sonstige Information (Item) unterschieden werden.

Abb. 9: Struktur eines „RSS 0.91“ Feeds (Quelle: [Ham03])

Wie dieser Abbildung zu entnehmen ist, können dem „Channel“ Metainformationen über die

Webseite, die den Feed anbietet, zugeordnet werden. Zum Beispiel kann in den Attributen

29

„skipdays“ und „skiphours“ der Zeitraum festgelegt werden, im dem der Feed von Fee-

daggregatoren angefordert werden darf (vgl. [WIN05]).

3.3.2 RSS 1.0

Ein weiteres weit verbreitetes Feedformat ist RSS 1.0, welches komplexer und somit mächti-

ger ist als RSS 0.91. Doch der Hauptunterschied zwischen den Formaten ist, dass RSS 1.0

auf der RDF-Spezifikation basiert und den Einsatz von Namespaces für die Definition der

Eigenschaften des Feeds ermöglicht. Somit können zur Erstellung von RSS 1.0 Feeds sowohl

standardisierte als auch frei definierte Namespaces verwendet werden. Zur Zeit sind über 14

standardisierte Namespaces (vgl. [Ham03]) für die Erstellung von RSS 1.0 Dokumenten ver-

fügbar, die beliebig kombiniert werden können.

Da in unterschiedlichen Namespaces gleiche Elemente enthalten sein können, ist es möglich,

verschiedenartigen Informationsobjekten ähnliche Elemente zuzuordnen, die dennoch anhand

ihrer Zugehörigkeit zu Namespaces differenzierbar sind. Neben der Trennung von verschie-

denen Eigenschaften können Namespaces ebenfalls Eigenschaften gruppieren, indem zum

Beispiel für jeden Informationstyp, der in einem Feed beschrieben wird, ein individueller

Namespace definiert wird.

Des Weiteren existiert, wie in der folgenden Abbildung zu sehen ist, ein RSS 1.0 Namespace,

der die Grundstruktur eines RSS 1.0 Feeds darstellt.

Abb. 10: Struktur eines "RSS 1.0" Feeds (Quelle: [HAM03])

30

3.3.3 ATOM

Nach der Veröffentlichung der ersten RSS-Spezifikation wurden zahlreiche verschiedene

Versionen dieser Spezifikation definiert und publiziert, die parallel verwendet wurden. Diese

Entwicklung führte dazu, dass bald kein einheitlicher technologischer Standard für „Content

Syndication“ mehr existierte. Aus diesem Grund wurde eine neue, von RSS unabhängige

Feedversion namens „Atom“ entwickelt, welche die Vorteile der verschiedenen RSS-

Versionen vereinen sollte. Die Einführung dieses Formats wurde vor allem durch die Indust-

rievereinigung „Atom Enable Alliance“ unterstützt und vorangetrieben.

Atom-Feeds sind, ebenfalls wie RSS-Feeds, strukturierte XML-Dokumente, in denen die

Eigenschaften der verschiedenen Informationsobjekte in „Entries“ beschrieben werden. Zur

Beschreibung dieser Eigenschaften können zum einen der standardisierte Namespace des

Atomformats, der von dem „World Wide Web Consortium (W3C)“ bereitgestellt wird, und

zum anderen auch externe Namespaces verwendet werden. Dadurch ist es –wie in folgendem

Zitat erläutert - möglich, Module der RSS 1.0- bzw. der RSS 2.0–Spezifikation in Atom zu

verwenden: „Elements from other namespaces may be included pretty much anywhere. This

means that most RSS 1.0 and RSS 2.0 modules may be used in Atom” [Ato04].

Die Spezifikation der aktuellen Version 1.0 des Atomformats besagt, dass alle „Entries“ in

einem „Feed“-Objekt eingebettet werden müssen. Diesem Objekt werden Elemente zur Be-

schreibung der Metadaten der Ressource, die durch diesen Feed dargestellt werden soll, zu-

geordnet. Für diese Beschreibung gibt es drei Elemente, die bei der Erstellung eines Feed-

Objektes definiert werden müssen, und eine Reihe von optionalen Elementen. Dem Feed-

Objekt müssen eine URI, mit welcher der Feed eindeutig identifiziert werden kann, ein Titel,

der den Inhalt des Feeds kurz beschreibt, und ein Datum, das angibt wann der Feed zum letz-

ten Mal aktualisiert wurde, zugeordnet werden. Optional sind dagegen beispielsweise die

Elemente “category“, in welcher das Themengebiet des Feeds angegeben werden kann und

„author“, in das der Name des jeweiligen Autors eingefügt werden kann.

Nach der Definition des Feed-Objektes, können diesem die Entries, in denen letztendlich die

Eigenschaften der Informationsobjekte definiert werden, hinzugefügt werden. Den Entries

können nun, neben den verpflichtenden Elementen „id“, „title“ und „update“, weitere

Elemente zur Beschreibung dieser Informationsobjekte zugeordnet werden. Beispielweise

bietet Atom im Unterschied zu RSS zwei verschiedene Elemente zur Beschreibung des In-

formationsobjekts an: „content“ und „summary”. In das Element „content“ kann die

31

komplette Beschreibung des Informationsobjektes eingefügt werden, wohingegen dem Ele-

ment

„summary“ nur eine Zusammenfassung dieser Beschreibung zugeordnet werden kann. Des

Weiteren können die Elemente title, „summary“, „content“ und „rights“6 nicht nur rei-

nen Fließtext, sondern auch Textpassagen, die mit HTML-, XHTML- oder XML-tags forma-

tiert wurden, enthalten. Die Formatierung des Textes muss dabei in dem „Type“-Attribut des

entsprechenden Elementes angegeben werden.

Die Unterstützung verschiedener Textformate wurde in keinem RSS-Format umgesetzt, wo-

durch Atom vor allem zur Erstellung von textbasierten Feeds geeignet ist.

Im Kapitel 5.3.1 wird beschrieben, wie die Content Syndication Schnittstelle für die Erweite-

rung realisiert wurde und wie die Bookmarks, die exportiert werden sollen, in den vorgestell-

ten Feedformaten darstellt werden können.

6 In dieses Element können „Copyright“-Angaben eingefügt werden

32

4 Modellierung der Erweiterung

Basierend auf den Technologien, die im letzten Kapitel vorgestellt wurden, wird in diesem

Kapitel die Modellierung der Erweiterung und somit die Umsetzung der Anforderungen an

diese dargestellt. Die konkrete Realisierung des Modells wird anschließend im fünften Kapi-

tel erläutert.

4.1 Modell der Erweiterung

Die social bookmarking Erweiterung wurde auf Basis des schon bestehenden Assettyps

“Weblog” entwickelt. Dieser Assettyp ermöglicht es dem Anwender, zum Beispiel eigene

Texteinträge, Feedsammlungen oder das eigene Benutzerprofil auf individuell gestalteten

Seiten im Infoasset Broker zu veröffentlichen. Die Weblogs haben zwei Schichten. Eine Be-

nutzerschicht, in der angemeldete Anwender Einträge in den Weblog einfügen oder sie edi-

tieren können und eine öffentliche Schicht, in der die Anwender ihre Weblogeinträge veröf-

fentlichen können. Da das Konzept der zwei verschiedenen Benutzerschichten auch für die

social bookmarking Erweiterung angewandt werden kann, war es nahe liegend, dieses für die

Realisierung der Erweiterung zu übernehmen und es an die speziellen Anforderungen der

Erweiterung anzupassen. Das folgende Diagramm stellt das Modell der Erweiterung dar:

Abb. 11: Modell der Erweiterung ( Quelle: eigene Darstellung )

33

Wie diesem Diagramm zu entnehmen ist kann jedem Anwender (Person) ein Weblog, der im

weiteren Textverlauf „Bookmarklog“ genannt wird, zugeordnet werden. Der Bookmarklog

enthält alle Bookmarks eines Anwenders, die durch Tags kategorisiert werden können.

Neben den Bookmarks werden dem Bookmarklog die Abonnements, die dessen Eigentümer

abgeschlossen hat, zugeordnet. Wenn ein Bookmark eines solchen Abonnements in das Sys-

tem einfügt wird, wird ein Ereignis ausgelöst und der entsprechende Bookmark im Book-

marklog des Abonnenten angezeigt.

Nachdem die Beziehungen, welche die Objekte zueinander haben, kurz dargestellt wurden,

werden nun die Eigenschaften dieser Objekte näher erläutert:

Der Anwender (Person) kann auf zwei verschiedene Arten mit der social bookmarking Er-

weiterung interagieren. Einerseits kann er in seinem persönlichen Bookmarkaccount seine

Bookmarks verwalten und andererseits in der öffentlichen Schicht den Bookmarkbestand der

Erweiterung durchsuchen.

Im Bookmarkaccount kann der Anwender neue Bookmarks definieren, bestehende Book-

marks bearbeiten bzw. löschen oder sie über eine Exportschnittstelle nach Del.icio.us expor-

tieren. Außerdem werden in dieser Schicht die aktuellsten Bookmarks seiner Abonnements

angezeigt.

In der öffentlichen Schicht der Erweiterung können die Anwender sowohl auf interne als

auch auf externe Bookmarks zugreifen und diese durchsuchen. Interne Bookmarks sind

Bookmarks, die von den verschiedenen Anwendern direkt in die Erweiterung eingefügt wur-

den. Dagegen werden die externen Bookmarks über eine Importschnittstelle von dem social

bookmarking Anbieter Del.icio.us in die Erweiterung importiert.

Dem Bookmarklog können zwei unterschiedliche Bedeutungen zugeordnet werden. Einer-

seits ist dieser ein Objekt des Modells und andererseits stellt er eine Komponente der social

bookmarking Erweiterung dar.

Der Bookmarklog als Objekttyp des Modells verknüpft jeweils die Bookmarks und die A-

bonnements mit deren jeweiligen Eigentümern (siehe Abb. 11). Darüber hinaus werden in

diesem die Einstellungen gespeichert, welche die Anwender für ihren jeweiligen Bookmar-

kaccount festlegen. Die Eigenschaften des Bookmarklogs als Objekttyp werden in dem Kapi-

tel 5.1.1 näher beschrieben.

Dagegen ermöglicht die Systemkomponente „Bookmarklog“ jedem Anwender seine Book-

marks öffentlich darzustellen, so dass die anderen Anwender der social bookmarking Erwei-

34

terung auf die Bookmarks des jeweiligen Anwenders zugreifen können. Durch die Book-

marklogs wird somit die personenspezifische Sicht auf den internen Bookmarkbestand der

Erweiterung realisiert. Die Systemkomponente „Bookmarklog“ wird im Kapitel 4.2.4 näher

beschrieben.

In Bookmarks können sowohl die URLs verschiedener Webressourcen als auch die ver-

schiedenen Entitäten des Infoasset Brokers, die ebenfalls mittels eindeutiger URLs adressiert

werden können, gespeichert und beschrieben werden. Bei der Definition von Bookmarks

müssen diesen, wie schon im Kapitel 2.2 beschrieben, folgende Attribute zugeordnet werden:

Title, URL, Tags, Beschreibung und Sichtbarkeit. Im Titel wird die Ressource, die in dem

Bookmark gespeichert werden soll, kurz beschrieben und dem Attribut „URL“ die Adresse

dieser Ressource zugeordnet. Bei der Wahl des Titels ist es in den meisten Fällen empfeh-

lenswert, den tatsächlichen Titel der Webressource zu übernehmen. Des Weiteren kann dem

Bookmark ein Kommentar („Beschreibung“) hinzugefügt und dessen Sichtbarkeit bestimmt

werden. Die Sichtbarkeit gibt an, ob ein Bookmark nur in dem Bookmarkaccount (privat)

dessen Eigentümers oder in der öffentlichen Plattform (öffentlich) angezeigt werden darf. Die

Tags werden in einem gesonderten Abschnitt dargestellt, da diese keine direkten Eigenschaf-

ten der Bookmarks sind, sondern eigenständige Objekte des Modells darstellen, die mit den

Bookmarks verknüpft werden (siehe Abb. 11).

Generell ist es möglich für eine Ressource mehrere Bookmarks zu definieren, damit diese in

unterschiedlichen Kontexten - beispielsweise mit verschiedenen Beschreibungen - dargestellt

werden kann.

Tags sind Schlüsselwörter, welche den Bookmarks verschiedene Themen zuordnen und diese

somit kategorisieren. Da jeder Bookmark mit beliebig vielen Tags verknüpft werden kann,

können durch die Analyse der Tagkombinationen, die den verschiedenen Bookmarks zuge-

ordnet wurden, Beziehungen zwischen den Tags definiert werden. So kann, wenn zwei unter-

schiedliche Tags gemeinsam mehreren Bookmarks zugeordnet wurden, darauf geschlossen

werden, dass sich die Bedeutungen dieser Tags überschneiden. Die Tags, die eine solche Be-

deutungsüberschneidung aufweisen, werden im weiteren Textverlauf „verwandte Tags“ ge-

nannt.

35

Abonnements unterstützen den Anwender dabei, die für ihn interessanten Bookmarks aus

der Menge der Bookmarks herauszufiltern. Wenn ein Anwender einen bestimmten Book-

marktyp abonniert, wird er automatisch benachrichtigt, sobald ein Bookmark, der dem abon-

nierten Bookmarktyp entspricht, in die Erweiterung eingefügt wird. Grundsätzlich kann zwi-

schen drei Abonnementtypen unterschieden werden:

• tagspezifische Abonnements

• personenspezifische Abonnements

• tag- und personenspezifische Abonnements

Bei tagspezifischen Abonnements wird der Anwender informiert, sobald ein Bookmark, dem

ein bestimmter Tag zugeordnet wurde, eingefügt wird. Wenn ein Anwender über die neuen

Bookmarks eines bestimmten Anwenders informiert werden will, so muss er dies in einem

personspezifischen Abonnement angeben. Das personen- und tagspezifische Abonnement

stellt schließlich eine Mischform der beiden vorgestellten Abonnementtypen dar und infor-

miert den Anwender, wenn eine bestimmte Person einen Bookmark, der mit einem speziellen

Tag verknüpft ist, einfügt. Die Bookmarks, die einem Abonnement entsprechen, werden in

dem Bookmarkaccount des jeweiligen Abonnenten angezeigt.

4.2 Umsetzung des Modells

Nachdem die unterschiedlichen Objekte des Modells und deren Beziehungen untereinander

dargestellt wurden, wird im nächsten Kapitel die Umsetzung des Modells erläutert.

4.2.1 Allgemeine Darstellung der Bookmarks

Die zentrale Aufgabe bei der Umsetzung des Modells ist es, eine geeignete Form für die Dar-

stellung der Bookmarks zu definieren. Zum einem sollte diese Darstellung übersichtlich sein

und die grundlegenden Eigenschaften der Bookmarks enthalten. Zum anderen sollte sie die

Vernetzung von verschiedenen Bookmarks unterstützen und für jede Sicht auf den Book-

markbestand einheitlich sein. Deshalb wurde für die Bookmarks folgende Darstellung ge-

wählt:

36

Abb. 12: Darstellung eines Bookmarks ( Quelle: eigene Darstellung )

Wie der Grafik zu entnehmen ist, erstreckt sich die Darstellung eines Bookmarks über vier

„Zeilen“. In der ersten Zeile wird das Datum des Tages angegeben, an welchem der Book-

mark eingefügt wurde. So sieht der Anwender gleich, ob es sich um einen aktuellen Book-

mark handelt oder ob dieser schon länger existiert. Dem Datum folgt der Titel des Book-

marks, der mit der Ressource verlinkt ist, deren URL in den Bookmark gespeichert ist. Daran

anschließend wird der Kommentar ausgegeben, mit dem der Eigentümer den Bookmark be-

schrieben hat. Die letzte Zeile enthält die Tags, die dem Bookmark zugeordnet wurden, den

Namen des Bookmark-Eigentümers und Anzahl der Personen, die ebenfalls einen Bookmark

für die Ressource, mit welcher der dargestellte Bookmark verknüpft ist, definiert haben. Die

Angabe dieser Anzahl ist eine Art qualitative Bewertung der Bookmarks, da, falls eine Res-

source von vielen Anwendern gespeichert wird, darauf geschlossen werden kann, dass diese

Ressource einen interessanten Inhalt hat. Diese Bewertung ist im weitesten Sinne mit dem

„PageRank“ Mechanismus der Suchmaschine „Google“ vergleichbar, der die Ressourcen

anhand der Anzahl der Links, die auf diese Seite verweisen, bewertet (vgl. [GOO05]).

Zu beachten ist, dass die drei Informationen der letzten Zeile als Links dargestellt werden,

welche die verschiedenen Sichten auf den Bookmarkbestand mit dem jeweils dargestellten

Bookmark vernetzen. Die Tags verweisen auf tagspezifische Seiten, die alle Bookmarks, die

mit den angezeigten Tags verknüpft sind, enthalten. Der Benutzername verweist auf den

Bookmarklog des Eigentümers des jeweiligen Bookmarks. Die Darstellung der Anzahl der

Anwender, die ebenfalls einen Bookmark zu derselben Ressource gespeichert haben, ist mit

einer Kommentarfunktion verknüpft. Diese Kommentarfunktion gibt die Beschreibungen

aller Bookmarks aus, die mit derselben Ressource wie der jeweils dargestellte Bookmark

assoziiert sind.

Die in diesem Abschnitt vorgestellte Darstellung der Bookmarks ist für alle Komponenten

der Erweiterung einheitlich, kann aber in den verschiedenen Komponenten durch weitere

Funktionen ergänzt werden.

Nachdem die allgemeine Darstellung der Bookmarks erläutert wurde, wird nun die Umset-

zung der verschiedenen Schichten der Erweiterung beschrieben.

37

4.2.2 Benutzerschicht: Der Bookmarkaccount

Die Bookmarkaccounts, auf die jeweils nur deren jeweilige Eigentümer zugreifen dürfen,

stellen den Anwendern vier grundlegende Funktionen bereit:

• Einfügen bzw. editieren von Bookmarks

• Übersicht über die Bookmarks des Anwenders

• Verwaltung der Abonnements

• Bearbeiten der Tags

Beim Einfügen eines Bookmarks kann der Anwender die Eigenschaften des Bookmarks in

ein Formular eingeben. Nachdem er alle Eigenschaften des Bookmarks festgelegt und das

Formular abgeschickt hat, wird von der fachlichen Logik überprüft, ob die eingegebene URL

gültig ist. Konnte die Gültigkeit der URL bestätigt werden, so wird der Bookmark in das Sys-

tem eingefügt. Dabei werden neben den eingegeben Daten, das Einfügedatum und der Name

des Eigentümers automatisch zu der Bookmarkdefinition hinzugefügt. Die eingefügten

Bookmarks werden auf der Übersichtsseite des Bookmarkaccount, die in der nachfolgenden

Abbildung dargestellt wird, angezeigt.

Abb. 13: Übersichtsseite des Bookmarkaccounts ( Quelle: eigene Dargstellung)

38

Auf der Übersichtsseite des Bookmarkaccounts werden sowohl die privaten als auch die

öffentlichen Bookmarks des jeweiligen Anwenders dargestellt. Zu der Darstellungsform der

Bookmarks, die im vorigen Kapitel beschrieben wurde, werden in dieser Ansicht noch vier

weitere Attribute hinzugefügt. Drei dieser Attribute haben eine funktionale Bedeutung: Bear-

beiten, löschen und exportieren von Bookmarks. Über die Attribute „bearbeiten“ und „lö-

schen“ werden Bearbeitungsfunktionen mit der Übersichtsseite verknüpft. Das Export-

Attribut ermöglicht es dem Anwender seine Bookmarks nach Del.icio.us zu exportieren. Da

der Export von Bookmarks nur für die Anwender möglich ist, die über einen Account bei

Del.icio.us verfügen, kann die Exportfunktion auf der „Einstellungsseite“ des Bookmarkac-

counts aktiviert oder deaktiviert werden. Das vierte Attribut stellt die „Sichtbarkeit“ der ver-

schiedenen Bookmarks dar und zeigt an, ob ein Bookmark privat oder öffentlich ist.

Neben den Bookmarks werden auf der Übersichtsseite die Tags, die von dem Anwender de-

finiert worden sind, angezeigt. Diese Tags verweisen auf die tagspezifischen Seiten, die so-

wohl alle Bookmarks des jeweiligen Tags als auch dessen verwandte Tags enthalten.

In der Inbox (siehe Anhang, Abb. 42) werden die aktuellen Bookmarks angezeigt, welche

mindestens einem Abonnement entsprechen. Damit in dieser immer nur die aktuellsten

Bookmarks des Abonnements dargestellt werden, wird die Inbox so realisiert, dass immer nur

diejenigen Bookmarks in der Inbox angezeigt werden, die seit dem letzten Zugriff an einem

vorherigen Tag auf diese, in das System gespeichert wurden. Da die Inbox wegen der tägli-

chen Aktualisierung kein dauerhafter Speicher für Bookmarks ist, wird von dieser eine Ko-

pierfunktion bereitgestellt, mit Hilfe derer die Anwender die angezeigten Bookmarks in ihren

eigenen Bookmarkaccount kopieren können.

Des Weiteren werden in der Inbox die verschiedenen Abonnements, die ein Benutzer abge-

schlossen hat, geordnet nach den Abonnementtypen angezeigt. Diese sind jeweils mit der

Quelle des Abonnements verlinkt.

Mit der Funktion „Tags bearbeiten“ können Tags umbenannt werden. Durch die Umbenen-

nung von Tags können alle Bookmarks, die mit einem bestimmten Tag verknüpft sind, einem

neuen Tag zugeordnet werden. Dadurch können alle Bookmarks eines Themas einem neuen

Thema zugeordnet werden, welches beispielsweise die Bookmarks treffender beschreibt.

39

Auf der Einstellungsseite des Bookmarkaccounts kann festgelegt werden, ob der Book-

marklog des Anwenders, der im Folgenden beschrieben wird, Newsfeeds anbieten soll. Bei

der Aktivierung von Newsfeeds, können Anwender bis zu vier Feedformate auswählen, die

schließlich von ihren Bookmarklogs bereitgestellt werden: RSS 0.91, RSS 1.0, Atom 0.3 und

Atom 1.0.

4.2.3 Bookmarklogs

Die Bookmarklogs (siehe Abb. 14) stellen jeweils die öffentlichen Bookmarks und Tags

einer bestimmten Person dar und bilden die Schnittstellen zwischen den Bookmarkaccounts

und der öffentlichen Schicht des Infoasset Brokers. Die in den Bookmarklogs dargestellten

Tags verweisen auf die tagspezifischen Seiten, die alle tagspezifischen Bookmarks des jewei-

ligen Eigentümers des Bookmarklogs enthalten. Somit können in den verschiedenen Book-

marklogs einerseits die personspezifischen und andererseits die person- und tagspezifischen

Bookmarks dargestellt werden.

Die Anwender können mittels einer Kopierfunktion die angezeigten Bookmarks in ihren ei-

genen Bookmarkaccount kopieren oder durch die Abonnementfunktion sowohl die personen-

spezifischen Bookmarks als auch die personen- und tagspezifischen Bookmarks, die in dem

jeweiligen Bookmarklog dargestellt werden, abonnieren.

Des Weiteren kann jeder Anwender - wie schon erwähnt - Feeds für seinen Bookmarklog

anbieten. Diese enthalten die Bookmarks, die in den jeweiligen Bookmarklogs dargestellt

werden. Somit können ebenfalls personenspezifische oder tag- und personenspezifische

Bookmarks durch Feeds exportiert werden.

Abb. 14: Der Bookmarklog (Abbildung: Eigene Darstellung)

40

4.2.4 Öffentliche Schicht der Erweiterung

Die öffentliche Schicht der Erweiterung stellt alle Bookmarks des Systems dar und fungiert

somit als eine Bookmarksammlung des Infoasset Brokers, in der sowohl angemeldete als

auch anonyme Anwender nach interessanten Bookmarks suchen können.

Angemeldete Anwender, die einen Bookmarkaccount haben, können Bookmarks aus dieser

Schicht in ihren eigenen Account kopieren und ihre Bookmarks in dem Bookmarklog, der im

letzten Kapitel vorgestellt wurde, veröffentlichen. Dadurch wird dem „sozialen Aspekt“ eines

solchen Systems Rechnung getragen.

Die Startseite (siehe Abb. 15) der öffentlichen Schicht enthält alle Bookmarks, die erst

kürzlich in das System einfügt worden sind. Somit können sich die Anwender auf einen Blick

informieren, ob neue Bookmarks eingefügt worden sind oder ob sich der Bookmarkbestand

der Erweiterung seit dem letzten Aufruf dieser Seite nicht geändert hat. Dies erleichtert es

den Anwendern, einen Überblick über den aktuellen Bookmarkbestand des Systems auch

über einen längeren Zeitraum hinweg zu wahren. Außerdem werden auf der Startseite die

Tags, die von vielen Anwendern der Erweiterung genutzt werden (populäre Tags), angezeigt.

Durch die Angabe der populären Tags wird ersichtlich, zu welchen Themen sich gerade viele

Bookmarks in der Erweiterung befinden und für welche Themen sich die Anwender momen-

tan interessieren.

Die populären Tags verweisen jeweils auf die tagspezifischen Seiten der öffentlichen Über-

sicht. Analog zu den tagspezifischen Seiten des Bookmarkaccounts werden auf diesen Seiten

die mit den gewählten Tags verwandten Tags ausgegeben. Außerdem bieten die tagspezifi-

schen Seiten eine Funktion an, mit welcher die Bookmarks dieser Seite abonniert werden

können (tagspezifisches Abonnement).

Um auf eine bestimmte tagspezifische Seite zugreifen zu können, bietet die Erweiterung -

neben der Liste der populären Tags - noch zwei weitere Möglichkeiten an. Einerseits kann

über eine Freitextsuche nach tagspezifischen Seiten gesucht und andererseits direkt über

eine bestimmte URL auf eine tagspezifische Seite zugegriffen werden.

Mit dieser URL können die tagspezifischen Seiten geladen werden, ohne dass die komplette

Oberfläche des Infoasset Brokers geladen werden muss und sich die Anwender dann bis zu

der entsprechenden Seite „durchklicken“ müssen. Dadurch wird ein effizienter Zugriff auf

die tagspezifischen Bookmarks ermöglicht.

41

Abb. 15: Die Startseite der öffentlichen Schicht der Erweiterung (Quelle: eigene Darstellung)

Neben den internen Bookmarks werden in der öffentlichen Schicht auch die externen Book-

marks des social bookmarking Anbieters Del.icio.us dargestellt, der die Bookmarks auf die

gleiche Weise wie die social bookmarking Erweiterung des Infoasset Brokers verwaltet und

kategorisiert. Aus diesem Grund können die externen Bookmarks, die über ein RSS-Feed in

die Erweiterung importiert werden, auf die gleiche Weise wie die internen Bookmarks inner-

halb der Erweiterung dargestellt werden, wodurch die Einheitlichkeit der Benutzoberfläche

auch in dieser Übersicht gewahrt bleibt.

Der Vorteil der Integration externer Bookmarks ist, dass die Anwender bereits in der Einfüh-

rungsphase der Erweiterung, wenn erst wenige Bookmarks direkt in diese eingefügt worden

sind, auf einen sehr großen Datensatz von externen Bookmarks zugreifen können. Des Weite-

ren können die Anwender, die einen Account bei Del.icio.us haben, auf die Bookmarks die-

ses Accounts zugreifen (personenspezifische Bookmarks) ohne die Umgebung des Infoasset

Brokers verlassen zu müssen.

Neben den Übersichten über Bookmarks, stellt die öffentliche Schicht einen Index bereit,

über den die Anwender auf alle Bookmarklogs des Infoasset Brokers zugreifen können. Die-

ser Index enthält neben den Titeln und den Namen der Eigentümer auch die Aktualisierungs-

daten der verschiedenen Bookmarklogs. Dadurch können die Anwender auf einen Blick er-

kennen, welche Bookmarklogs neue Informationen enthalten und welche nicht mehr gepflegt

werden.

42

4.2.5 Erweiterung der Struktur des Infoasset Brokers

Es gibt drei grundlegende strukturelle Erweiterungen des Infoasset Brokers, die in diesem

Kapitel vorgestellt werden:

• Erweiterung der Startseite

• Einfügen eines Bookmarklets

• Einfügen eines „Kommentarbuttons“

Die Startseite des Infoasset Brokers enthält aktuelle Informationen über dessen Systemzu-

stand. Beispiele dafür sind Dokumente oder Nachrichten, die erst kürzlich in den Infoasset

Broker eingefügt wurden. Folglich kann sich der Anwender auf dieser Seite einen kurzen

Überblick über aktuelle Änderungen des Infoasset Brokers verschaffen. Zusätzlich sind alle

Nachrichten mit ihrer ursprünglichen „Quelle“ verlinkt, so dass der Anwender direkt auf die-

se zugreifen kann, um so detaillierte Informationen über die verschiedenen Kurznachrichten

zu erhalten.

Um die social bookmarking Erweiterung ebenfalls mit der Startseite zu verknüpfen, werden

auf dieser zum einen die zehn aktuellsten Bookmarks und zum anderen die zehn populärsten

Tags ausgegeben. Die Darstellung der Bookmarks ist dabei wesentlich kompakter als die der

social bookmarking Erweiterung (siehe Kapitel 4.2.1). Die kompakte Darstellung enthält

lediglich den Titel, der auf die Ressource des Bookmarks verweist, den Namen des Book-

markeigentümers, der auf dessen Bookmarklog verweist, und das Einfügedatum des Book-

marks.

Die zehn populärsten Tags werden in absteigender Reihenfolge angezeigt und verweisen auf

die jeweiligen Seiten der öffentlichen Schicht der Erweiterung. Die unterschiedliche Popula-

rität der verschiedenen Tags innerhalb dieser Liste wird anhand der Schriftgröße, mit der

diese dargestellt werden, visualisiert.

Neben den Änderungen an der Nachrichtenseite wird ein Bookmarklet in den Infoasset Bro-

ker eingefügt, mit dem die Anwender für jede beliebige Entität des Infoasset Brokers einen

Bookmark definieren können.

Wenn ein Anwender die Seite, auf der er sich gerade befindet, speichern will, muss dieser das

Bookmarklet „anklicken“. Dadurch wird das Einfügeformular, dessen URL-Eingabefeld mit

der URL der Ressource, die gespeichert werden soll, vorbelegt ist, seines Bookmarkaccounts

43

geöffnet. In diesem Formular kann der Anwender einen Bookmark für die Entität definieren

und diesen anschließend speichern.

Schließlich wird noch ein „Kommentarbutton“ zum Infoasset Broker hinzugefügt, mit dem

jeder Anwender Kommentare zu jeder Entität des Systems aufrufen kann. In diesem Fall sind

die Kommentare einer Entität die Beschreibungen der Bookmarks, die für diese Entität defi-

niert wurden.

Nachdem in diesem Kapitel das Modell der Erweiterung beschrieben und dessen Umsetzung

erläutert wurde, wird im nächsten Kapitel die konkrete Implementierung dieser Erweiterung

vorgestellt.

44

5 Implementierung der Erweiterung

Dieses Kapitel befasst sich mit der Implementierung der Erweiterung. In Abschnitt 5.1 dieses

Kapitels werden die Datenstrukturen, mit denen die Objekte des Modells realisiert wurden,

vorgestellt. Darauf aufbauend wird die konkrete Implementierung der verschiedenen Schich-

ten der Erweiterung und somit die konkrete Umsetzung des Modells dargestellt. Dabei wird

vor allem auf die besonderen Algorithmen und die Eigenschaften der Implementierung ein-

gegangen.

5.1 Datenstrukturen der Erweiterung

Für die Realisierung der Erweiterung mussten sowohl bestehende Datenstrukturen, die im

folgenden Asset genannt werden, erweitert als auch neue Datenstrukturen zu der Anwendung

hinzugefügt werden. Die Definition der Datenstrukturen erfolgt in Services, die jeweils aus

zwei Interfaces und aus zwei konkreten Klassen, die die Funktionalitäten der Interfaces imp-

lementieren, bestehen. In einem Interface werden sowohl die „Properties“ und die „Associa-

tionSchemas“ des Assets definiert als auch die Methodensignaturen der Funktionen, in denen

beispielsweise Queries (siehe Kap. 3.1.2) für die Abfrage von Assetinstanzen realisiert wer-

den können, deklariert. In dem anderen Interface werden dagegen die get- bzw. set-Methoden

und weitere Methoden zur Manipulation von jeweils einer Instanz eines Assettyps definiert.

Die verschiedenen Interfacemethoden werden, wie am Anfang des Abschnittes erwähnt, in

konkreten Klassen implementiert. Über die Interfaces können die Handler, in denen die fach-

liche Logik der Erweiterung implementiert wird, auf die Eigenschaften und die Methoden der

Assets zugreifen.

Im Folgenden werden die Datenstrukturen beschrieben, mit denen die Objekte des Modells

(siehe Abb. 11) innerhalb des Infoasset Brokers dargestellt werden.

5.1.1 Das Asset „Weblog“

Wie schon im Kapitel 4.1 erläutert wurde, basiert die social bookmarking Erweiterung auf

dem Assettyp „Weblog“. Dieses Asset verknüpft die Bookmarks, die in diese Anwendung

eingefügt werden, mit deren Eigentümer und ist somit die physische Darstellung des Modell-

objekts „Bookmarklog“. Da dieser Assettyp nicht nur für die Realisierung der social book-

marking Erweiterung, sondern auch für die Weblog Erweiterung des Infoasset Broker ver-

45

wendet wird, hat dieser sowohl Eigenschaften, die von der social bookmarking Erweiterung

genutzt werden, als auch Eigenschaften, welche für die Erweiterung nicht relevant sind. Um

für eine Instanz dieses Assettyps feststellen zu können, ob sie einen Weblog oder einen

Bookmarklog darstellt, wurde die Eigenschaft „isBookmarklog“ definiert. Dieser Eigenschaft

wird der numerische Wert „1“ zugeordnet, wenn es sich bei der Instanz um einen Book-

marklog handelt, ansonsten hat sie den Wert „0“. Des Weiteren sind folgende Eigenschaften

des Asset für die Realisierung der Erweiterung von Bedeutung.

• Description • Exportfeeds • ExportToDelicious

• Lastpublished • Owner • WeblogTitle

• lastpublished

Der WeblogTitle ordnet dem Bookmarklog einen Titel zu, der von dem jeweiligen Eigentü-

mer, dessen eindeutige ID in der Eigenschaft „Owner“ gespeichert wird, frei gewählt werden

darf. Des Weiteren kann dem Bookmarklog ein kurzer Kommentar („Description“) hinzuge-

fügt werden, in dem beispielsweise beschrieben werden kann, welche Art von Bookmarks in

dem Bookmarklog gesammelt werden.

Sobald ein Bookmark in den Bookmarklog eingefügt oder bearbeit wird, wird das Aktualisie-

rungsdatum des Bookmarkslogs, welches in der Eigenschaft „lastpublished“ gespeichert

wird, aktualisiert.

Die Eigenschaft „ExportToDelicious“ und die „exportfeeds“-Eigenschaften (ExportRss1.0,

ExportRss0.3, ExportAtom0.3, ExportAtom1.0) enthalten die Exporteinstellungen des

Bookmarklogs. In der Eigenschaft „ExportsToDelicious“ wird gespeichert, ob der Eigentü-

mer des jeweiligen Bookmarklogs die „Exportfunktion“ seines Bookmarkaccount aktiviert

hat oder nicht. Die „exportfeeds“-Eigenschaften geben dagegen an, welche Feeds von dem

jeweiligen Bookmarklog angeboten werden soll. Die restlichen Eigenschaften des Assettyps

„Weblog“ haben für Bookmarklogs keine Relevanz.

5.1.2 Das Asset „BookmarkEntry“

In diesem Assettyp werden die Bookmarks, die in die Erweiterung eingefügt werden, gespei-

chert. Da jeder Bookmark genau einer Person und einem Bookmarklog zugeordnet werden

kann, steht der Assettyp mit den Assets „Person“ und „Weblog“ jeweils in einer „1 zu N“

Beziehung („OneToMany- Association“). Daneben existiert eine „N zu M“ Beziehung

46

(„ManytoMany Association“) zwischen Bookmarks und Tags, da sowohl mehrere Book-

marks einem Tag als auch mehrere Tags einem Bookmark zugeordnet werden können. Ne-

ben diesen Beziehungen wurden für das Asset folgende Eigenschaften definiert:

• Title • URL • Description

• Published • View

In diesen Eigenschaften werden die in Kapitel 4.2.2 erläuterten Attribute eines Bookmarks

gespeichert. Die Eigenschaften „Title“, „URL“ und „Description“ speichern die Titel, die

URLs und die Beschreibungen der Bookmarks, die Eigenschaft „Published“ das Einfügeda-

tum und „view“ die Sichtbarkeit des Bookmarks. Wird der zuletzt genannten Eigenschaft der

Wert „1“ zugeordnet, so bedeutet dies, dass der Bookmark „privat“ ist, ansonsten wird dieser

der Defaultwert „0“ zugeordnet. Da alle Eigenschaften der Bookmarks von den Anwendern

frei gewählt werden dürfen, kann jeder Bookmark nur durch die vom System automatisch

generierte ID eindeutig identifiziert werden.

5.1.3 Das Asset „Tag“

Tags sind Schlüsselwörter, die den Bookmarks verschiedene Themen zuordnen. Da einem

Bookmark mehrere Tags zugeordnet werden können, ist der Assettyp, wie schon im vorheri-

gen Abschnitt beschrieben, mit dem Assettyp „BookmarksEntry“ über eine „ManyToMany-

Association“ verknüpft. Daneben besteht noch eine 1 zu N Beziehung zwischen Tag und Per-

son, mit der jeder Tag eindeutig einer Person zugeordnet werden kann. Das Thema, das die

Tags darstellen (=Tagthema), werden in der Eigenschaft „Value“ gespeichert.

Bei der Implementierung der Erweiterung wurde zwischen zwei Arten des Zugriffes auf tag-

spezifische Bookmarks unterschieden. Wenn alle Bookmarks einer Person, die einem Tag

zugeordnet wurden, ermittelt werden sollen, können über eine Query alle Bookmarks abge-

fragt werden, die genau einem Tag-Objekt zugeordnet sind, da jedes Tag-Objekt personen-

spezifisch ist. Sollen jedoch die Bookmarks aller Personen, die mit einem bestimmten Tag-

thema verknüpft sind, ermittelt werden, so müssen zuerst alle Instanzen des Asset „Tag“,

denen dieses Tagthema zugeordnet ist, abgefragt werden und dann für jede dieser Instanzen

die entsprechenden Bookmarks ermittelt werden.

47

Die direkte Verknüpfung zwischen den Objekten „Tag“ und „Person“ hat den Vorteil, dass

die Verbindung zwischen diesen beiden Assets nachvollziehbar bleibt und somit das person-

spezifische und konsistente Umbenennen von Tags möglich ist.

5.1.4 Das Asset „Bsubscription“

In diesem Assettyp werden die verschiedenen Abonnements der Anwender der social book-

marking Erweiterung gespeichert. Wie schon erwähnt wurde, gibt es drei Abonnementtypen:

die personenspezifischen-, die tagspezifischen- und die tag- und personenspezifischen Abon-

nements. Der Abonnementtyp wird in der Eigenschaft „Typ“ gespeichert, welcher folgende

numerischen Werte zugeordnet werden können:

Wert der Eigenschaft „Typ“: Bedeutung

0 tagspezifisches Abonnement

1 personenspezifisches Abonnement

2 Tag- und personenspezifisches Abonnement Tab. 2: Wertebereich der Eigenschaft "Typ"( Quelle: eigene Darstellung )

Die Eigenschaft „Subscription“ speichert das tatsächliche Abonnement. In diese Eigenschaft

wird, wenn es sich um ein personenspezifisches Abonnement handelt, die ID der Person, de-

ren Bookmarks abonniert wurden, eingefügt. Bei einem tagspezifischen Abonnement wird in

dieser Eigenschaft das Tagthema gespeichert. Wenn schließlich ein personen- und tagspezifi-

schen Abonnement erzeugt werden soll, wird die ID der Instanz des abonnierten Tags der

Eigenschaft zugeordnet, da diese Instanz den abonnierten Tagwert mit einer bestimmten Per-

son verknüpft (siehe Kap. 5.1.3).

In den Eigenschaften „Lastsession“ und „Currentsession“ werden die Daten des letzten bzw.

der gegenwärtigen Zugriffes auf die Inbox des jeweiligen Anwenders gespeichert. Diese zwei

Daten wurden für die Implementierung des Algorithmus, welcher die tägliche Aktualisierung

der Inbox ermöglicht, genutzt. (siehe Kap. 5.2.3).

Nach der Vorstellung der Datenstrukturen, auf welchen die Objekte des Modells der Erweite-

rung abgebildet werden, wird in den folgenden Kapiteln die konkrete Implementierung des

Modells erläutert.

48

5.2 Implementierung des Bookmarkaccounts der Erweiterung

Jeder Anwender der social bookmarking Erweiterung kann in seinem persönlichen Book-

mark- account neue Bookmarks definieren und diese verwalten. Dafür wurden verschiedene

Funktionalitäten, die im Folgenden vorgestellt werden, realisiert.

5.2.1 Bookmarks einfügen

Die Anwender können mit der Funktion „neuer Eintrag“ Bookmarks in ihren Bookmarkac-

count einfügen. Diese Funktion wurde mit einem Webformular realisiert, in das die Anwen-

der die Eigenschaften des Bookmarks, den sie einfügen wollen, eingeben können. Die Eigen-

schaften Titel, URL und die Tags des Bookmarks können in Textfelder eingegeben werden

und für die Beschreibung des Bookmarks wurde eine „Textarea“, also ein mehrzeiliges Text-

feld, in das auch längere Texte eingefügt werden können, definiert. Des Weiteren enthält das

Webformular zwei Radiobuttons, mit denen der Anwender festlegen kann, ob der Bookmark,

der eingefügt werden soll, öffentlich oder privat sein soll.

Mit dem Eingabefeld, in das die Tags eingefügt werden, wurde eine AJAX-basierte Sugges-

tionsfunktion, die im folgenden Abschnitt erläutert wird, verknüpft.

5.2.1.1 Suggestionsfunktion

Die Suggestionsfunktion erkennt den Text, der von den Anwendern in das Textfeld, welches

mit dieser Funktion verknüpft ist, eingegeben wird, und gibt dementsprechend eine Liste mit

Vorschlägen für die Fertigstellung des Textes aus. Der Anwender kann aus dieser Liste nun

einen Vorschlag auswählen, der daraufhin automatisch in das Textfeld eingefügt wird.

Durch die Realisierung einer Suggestionsfunktion für das Tag-Eingabefeld, kann der An-

wender bei der Eingabe der Tags direkt sehen, welche Tags schon von den anderen Anwen-

dern definiert wurden und diese für die Kategorisierung seines Bookmarks verwenden. Diese

Funktion gibt den Anwendern somit einen Anreiz, bestehende Tags wieder zu verwenden,

wodurch die Kategorisierung ähnlicher Bookmarks homogener wird. Außerdem können

durch die „Suggestionfunktion“ Texte schneller eingegeben werden, da lediglich die ersten

Buchstaben eines Begriffes eingegeben werden müssen und dieser schließlich durch die Aus-

wahl des entsprechenden Vorschlages automatisch fertig gestellt wird. Die folgende Abbil-

dung stellt eine „Suggestionfunktion“ dar:

49

Abb. 16: Die "Suggestionsfunktion" ( Quelle: eigene Darstellung )

Das Textfeld (Suggestionsfeld), das mit der Suggestionsfunktion verknüpft ist, löst, sobald

dieses aktiviert wird, einen Event aus (Event: onfocus), wodurch ein Javascript ausgeführt

wird, das die „Suggestionfunktion“ für dieses Textfeld initialisiert. Bei der Initialisierung

werden die verschiedenen Eventhandler erzeugt, die ausgeführt werden, sobald jemand ein

Zeichen in das Suggestionsfeld eingibt. Die folgende Tabelle gibt die Zuordnung der E-

venthandler zu den verschiedenen Zeichen (Tasten) wieder:

Taste Bedeutung

Zeichentasten (a…z, 1….10) Neue Vorschläge werden ausgegeben Keydown (Keycode=38) Die Markierung der Vorschläge („oranger

Balken“, siehe Abb. 16) wird nach unten verschoben.

KeyUp (Keycode=40) Die Markierung der Vorschläge wird nach oben verschoben.

Tab (Keycode=9) Der markierte Vorschlag wird in das Sug-gestionsfeld eingefügt

Esc (Keydode= 27) Die Vorschlagsliste wird ausgeblendet Tab. 3: Die Events der Suggestionsfunktion ( Quelle: eigene Darstellung)

Wie dieser Tabelle zu entnehmen ist, wird durch das Drücken einer „Zeichentaste“ ein Event

ausgelöst, welches die Generierung einer Vorschlagsliste anstößt. Bei dieser Generierung

wird im ersten Schritt die Zeichenkette aus dem Suggestionsfeld ausgelesen und aus dieser

durch die Funktion „Split()“ deren letztes „Wort“, für das die Vorschläge ausgegeben werden

sollen, extrahiert. Dieses „Wort“ wird nun durch einen XMLHttpRequest an einen Handler

übertragen.

Der Handler erzeugt nun ein Dokument, welches die Tags, die als Vorschläge für die Ergän-

zung des übermittelten Worts ausgegeben werden sollen, enthält. Die entsprechenden Tags

werden durch die Funktion „suggesttags()“ ermittelt, in der folgende zwei Queries aus-

geführt werden:

50

QueryBegins(container, asValue ,wort.trim().toLowerCase()); QueryBegins(container, asValue ,wort.trim().toUpperCase());

Abb. 17: Query: Abfrage der Vorschläge ( Quelle: eigene Darstellung )

Diese Queries fragen die Tags ab, deren Tagwerte mit dem vom Javascript übergebenen Teil-

wort beginnen. Damit die Vorschläge unabhängig von der Groß- und Kleinschreibung des

übergebenen Teilwortes durch die Funktion „suggesttags()“ermittelt werden können,

werden einerseits die Tags, die mit dem kleingeschriebenen Teilwort

(wort.trim().toLowerCase()) beginnen und andererseits die Tags, die mit dem groß-

geschriebenen Teilwort (wort.trim().toUpperCase()) beginnen, durch die Queries

abgefragt. Nachdem die Queries ausgeführt wurden, gibt die Funktion „suggesttags()“

die abgefragten Tags zurück. Diese werden nun von dem Handler durch eine Listsubsti-

tution in das Antwortdokument eingebettet. Am Ende dieser Substitution liegen die ver-

schiedenen Tags, jeweils durch Strichpunkte getrennt, in diesem Dokument vor. Über das

„responseText“-Objekt kann nun das Dokument an das Javascript, welches den

XMLHttpRequest initialisiert hat, übermittelt und von diesen verarbeitet werden. Das Javasc-

ript extrahiert die einzelnen Tags aus dem Antwortdokument und fügt diese in eine „Aufzäh-

lungsliste“ ein, die schließlich unterhalb des „Suggestionsfeld“ in das HTML-Dokument ein-

gebettet wird. Die Einbettung erfolgt dadurch, dass ein Platzhalter, der sich im Quelltext des

Einfügeformulars unterhalb des „Suggestionsfeld“ befindet, durch die Aufzählungsliste er-

setzt wird.

Die Anwender können nun mittels der Funktionstasten „Keyup“ und „Keydown“ durch die

angezeigte Vorschlagliste navigieren und mit der Tabulatortaste einen Vorschlag auswählen,

der schließlich in das Suggestionsfeld eingefügt wird. Die Auswahlbestätigung wurde mit der

„Tab-Taste“ anstatt der „Enter-Taste“ verknüpft, da diese schon für das Abschicken des

Formulars verwendet wird.

5.2.1.2 Verarbeitung der Formulareingaben

Nachdem der Anwender den Bookmark definiert und das Formular abgeschickt hat, werden

die Benutzereingaben durch einen Handler verarbeitet. Am Anfang dieser Verarbeitung wird

überprüft, ob alle Textfelder ausgefüllt wurden. Dies erfolgt durch einen einfachen String-

vergleich7 mit einer leeren Zeichenkette. Wurde ein Textfeld nicht ausgefüllt, wird die Ver-

7 Funktion : „CompareTo()“

51

arbeitung der Eingaben abgebrochen und eine Fehlermeldung ausgegeben. Sind dagegen alle

Eingaben korrekt, wird mit Hilfe der folgenden Funktion (siehe Abb. 18) die Gültigkeit der

URL überprüft:

public boolean isValid(String URL) { isValid=false; try{URL url = new URL(URL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("HEAD"); conn.setUseCaches(false); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {isValid=true; return isValid;} else { return isValid;}} Catch(Exception e){ return isValid;} }

Abb. 18: Hilfsfunktion: „isValid“ ( Quelle: eigene Darstellung )

Diese Hilfsfunktion versucht eine HTTP-Verbindung zu der Ressource, auf welche die URL,

die an diese Funktion übergeben wird, verweist, aufzubauen und den „Header“ dieser Res-

source zu laden. Konnte eine Verbindung zu dieser Ressource aufgebaut werden, wird der

Responsecode „200“ der Funktion übergeben. Wenn dies der Fall ist, gibt die Funktion „is-

Valid“ den bool´schen Wert „True“ zurück und ein Bookmarkeintrag mit den eingegebenen

Eigenschaften kann erstellt werden. Ansonsten wird die Verarbeitung der Formulardaten ab-

gebrochen und eine Fehlermeldung ausgegeben.

Bei der Erstellung eines Bookmarkeintrags wird eine neue Instanz des Assettyps „Bookmar-

kEntry“ erzeugt. Diesem werden sowohl die eingegebenen Eigenschaften als auch die Eigen-

schaften „Einfügedatum“ und „Eigentümer“, die automatisch durch das System erzeugt wer-

den, zugeordnet. Um aber eine einwandfreie Darstellung der Bookmarks im Infoasset Broker

zu gewährleisten, werden die deutschen Umlaute in den eingegebenen Eigenschaften, bevor

sie dem neuen Bookmarkeintrag zugeordnet werden, durch die Funktion „ConvertToHTML“

umgewandelt..

52

public String convertToHTML(String property) int length = property.length(); StringBuilder b = new StringBuilder(length); for (int i = 0; i < length; i++) { char c =zk.charAt(i); if (c == 'ö') {b.append("oe");} else if (c == 'ä') {b.append("ae");} else if (c == 'ü') {b.append("ue");} else if (c == 'Ä') {b.append("Ae");} else if (c == 'Ü') {b.append("Ue");} else if (c == 'Ö') {b.append("Oe");} else {b.append(c);}} String ns=b.toString(); return ns;}

Abb. 19: Hilfsfunktion: "convertToHTML“ ( Quelle: eigene Darstellung )

Die abgebildete Funktion konvertiert mit Hilfe eines „StringBuilders“ die Zeichenkette,

welche an die Funktion übergeben wird, in eine neue Zeichenkette. Bei der Konvertierung

wird jedes Element der „originalen“ Zeichenkette überprüft, ob es ein Umlaut ist. Ist dies der

Fall, so wird der neuen Zeichenkette der umgewandelte Umlaut, also z. B. statt ein „ä“ ein

„ae“, hinzugefügt. Ansonsten wird der neuen Zeichenkette das „originale“ Element zugeord-

net. Nachdem alle Elemente in die neue Zeichenkette eingefügt und somit alle Umlaute um-

gewandelt wurden, wird diese von der Hilfsfunktion zurückgegeben.

Neben den Eigenschaften, die dem Bookmarkeintrag direkt zugeordnet werden können, müs-

sen noch die Tags, die in getrennten Assets gespeichert werden (siehe Kap. 5.1.3 ), mit dem

Bookmarkeintrag verknüpft werden. Dabei muss für jeden eingegebenen Tag entweder ein

neues Asset erstellt und dieser mit dem Bookmarkeintrag verknüpft werden oder, falls ein

Asset für diesen schon existiert, nur eine Beziehung zwischen diesem und dem Bookmark-

eintrag definiert werden.

Um die Tags, die in einer Zeichenkette an die fachliche Logik übergeben werden, einzeln

verarbeiten zu können, muss diese Zeichenkette durch die Funktion „Split“ aufgespaltet wer-

den. Diese Funktion spaltet die Zeichenkette jeweils bei den Leerzeichen, welche die Tags

innerhalb der Zeichenkette voneinander trennen, auf und fügt deren Teilelemente in ein Ar-

ray ein. Über das Array kann nun der Handler auf die einzelnen Tags zugreifen und diese auf

die im vorigen Abschnitt beschriebene Art dem Bookmarkeintrag zuordnen.

Nachdem der Bookmark erzeugt und mit den Tags verknüpft wurde, muss noch die Funktion

„commit()“ ausgeführt werden, die das Datum der letzten Änderung des Bookmarklogs, mit

dem das eingefügte Bookmark verknüpft ist, aktualisiert. Schließlich wird noch eine Bestäti-

53

gungsmeldung ausgegeben, die dem Anwender mitteilt, dass der Bookmark erfolgreich ein-

gefügt wurde.

5.2.2 Übersichtsseite des Bookmarkaccounts

Auf der Übersichtsseite des Bookmarkaccounts werden sowohl die privaten als auch die öf-

fentlichen Bookmarks des jeweiligen Eigentümers ausgegeben. Neben der reinen Darstellung

der Bookmarks werden auf dieser Seite Funktionen zur Bearbeitung, zum Löschen und zum

Export der Bookmarks angeboten. Die Bearbeitungsfunktion, auf die später näher eingegan-

gen wird, wurde auf der Basis von AJAX realisiert. Durch die asynchrone Client-Server

Kommunikation, die durch AJAX ermöglicht wird, können Bookmarks bearbeitet werden,

ohne dass, nachdem das entsprechende Bearbeitungsformular abgeschickt wurde, die

komplette Übersichtsseite neu geladen werden muss. Doch der zentrale Aspekt bei Realisie-

rung dieser Übersichtsseite war es, die Darstellung der Bookmarks effektiv umzusetzen.

Diese wurde daher so realisiert, dass darauf höchstens 10 Bookmarks gleichzeitig angezeigt

werden. Sollen dennoch mehr als 10 Bookmarks auf der Übersichtseite dargestellt werden,

werden Indexseiten generiert, die jeweils 10 Bookmarks enthalten und durch einen Index

miteinander verknüpft werden. Über diesen Index können die Anwender auf die verschiede-

nen Indexseiten zugreifen.

5.2.2.1 Generierung der Übersichtsseite

Auf der Übersichtsseite werden entweder alle Bookmarks des Anwenders oder dessen tag-

spezifischen Bookmarks chronologisch sortiert angezeigt. Welche Bookmarks auf dieser Sei-

te ausgegeben werden, hängt von den Requestparametern ab, die an den Handler, der diese

Seite generiert, übergeben werden. Wird nur Bookmarklogid übergeben, werden alle Book-

marks des Anwenders dargestellt, ansonsten werden, wenn neben der Bookmarklogid auch

eine TagId übergeben wird, nur die tagspezifischen Bookmarks in der Übersicht angezeigt. In

Abhängigkeit dieser Requestparameter können durch die Funktionen „getallBookmark-

sOfWeblog()“ oder „getAllbookmarksofaTag()“ die entsprechenden Bookmarks er-

mittelt werden.

In der Funktion „getallBookmarksofWeblog()“ wurde eine Query realisiert, die alle

Instanzen des Assettyps „BookmarkEntry“, die mit einem bestimmten Bookmarklog ver-

knüpft sind, abfragt. Da die Query die Bookmarks sortiert nach dem Einfügedatum zurück-

54

geben soll, wurde dieser ein „QuerySortingCriterion“ zugeordnet, welches die entspre-

chende Sortierung festlegt. Nach Ausführung der Query werden Bookmarks, die dem Anfra-

geprädikat entsprechen, von der Funktion „getallBookmarksofWeblog()“ in einen Itera-

tor zurückgegeben.

Die Implementierung der Funktion „getAllbookmarksofaTag()“, welche die tagspezifi-

schen Bookmarks einer Person zurückgibt, basiert nicht auf einer Query, da die Tags keine

direkten Eigenschaften von Bookmarks sind, sondern über eine „n zu M“ Beziehung mit die-

sen verknüpft sind. Aus diesem Grund muss für die Abfrage von tagspezifischen Bookmarks

die Funktion „getAssociatedAssets()“ verwendet werden. Diese Funktion ermittelt

alle Instanzen eines Assets, die mit einer bestimmten Instanz eines anderen Assets assoziiert

sind und gibt diese in einen Iterator zurück. In diesem Fall können somit durch diese Funkti-

on die Bookmarks, die mit einem bestimmten Tag verknüpft sind, ausgelesen werden. Die

ausgelesenen Bookmarks werden schließlich durch die Funktion „getAllbookmarksof-

Tag()“, in einen Iterator zurückgegeben.

Da die beiden vorgestellten Funktionen die ermittelten Bookmarks jeweils in einen Iterator

zurückgeben, können die Bookmarks, unabhängig von welcher Funktion diese ermittelt wur-

den, auf die gleiche Art und Weise durch den Handler verarbeitet werden.

Nachdem die Bookmarks abgefragt wurden, muss deren Anzahl ermittelt werden, damit fest-

gestellt werden kann, ob alle Bookmarks auf einer Seite dargestellt werden können oder die

Übersichtsseite in mehrere Indexseiten untergliedert werden muss. Wenn Indexseiten erzeugt

werden müssen, werden mit der Funktion „getpage“ diejenigen Bookmarks ausgewählt, die

auf der aktuellen Indexseite ausgegeben werden sollen. Welche Bookmarks ausgewählt wer-

den, hängt von der Indexnummer ab, die an den Handler, der die Indexseite erstellt, übertra-

gen wurde. In der folgenden Abbildung wird die Funktion „getpage()“ dargestellt, der die

Indexnummer und der Iterator mit den Bookmarks, die durch die Funktion „getAllbook-

marksofaTag()“ oder „getallBookmarksOfWeblog()“ ermittelt wurden, übergeben

wird.

public Iterator getpage(int Indexnummer, Iterator Bookmarks){ if (Indexnummer >10){ for(int w=0;w< Indexnummer-10;w++){ Bookmarks.next();}} Vektor v=new Vektor(); int step=0; while(step<10 && Bookmarks.hasNext()){ v.add((BookmarkEntry) Bookmarks.next()); step=step+1;}} return v.Iterator(); }

Abb. 20: Die Funktion "getpage"( Quelle: eigene Darstellung )

55

Die abgebildete Funktion legt in Abhängigkeit von der Indexnummer I das Intervall [ I-10: I]

innerhalb des Iterators fest, aus dem diejenigen Bookmarks ausgelesen werden, die auf der

aktuellen Indexseite angezeigt werden sollen. Da der Iterator keine Funktion anbietet, mit der

auf eine bestimmte Indexposition innerhalb des Iterators zugegriffen werden kann, muss so-

lange die Iteratorfunktion „next()“ aufgerufen werden, bis der Pointer des Iterators auf die

untere Grenze (I-10) des Intervalls I zeigt (siehe Abb. 17/ „if 1“). Danach können iterativ die

folgenden zehn Bookmarks aus dem Iterator ausgelesen werden und in einen Vektor einge-

fügt werden.

Falls aber die letzte Indexseite der Übersicht generiert wird und somit die letzten Bookmarks

des Iterators abgefragt werden sollen, kann es sein, dass sich in diesem Intervall weniger als

zehn Bookmarks befinden. Um dies zu überprüfen, wurde der Bedingung der While-Schleife,

in der die Bookmarks iterativ ausgelesen werden, die Funktion „hasNext()“ des Iterators

hinzugefügt. Die Funktion „hasNext()“ bricht die While-Schleife ab, sobald kein Element

mehr aus dem Iterator ausgelesen werden kann.

Nachdem alle Bookmarks des Intervalls I in den Vektor eingefügt worden sind, wird dieser in

einen Iterator, der von der Funktion „getpage()“ schließlich zurückgegeben wird, umge-

wandelt. Nach Ausführung dieser Funktion befinden sich somit die 10 Bookmarks, die in der

aktuellen Indexseite der Übersicht dargestellt werden sollen, in einem Iterator.

Des Weiteren muss für die Indexseite ein Index, der diese mit den anderen Indexseiten ver-

knüpft, erzeugt werden. Über den Index können die Anwender durch das „Anklicken“ der

Seitenzahlen, die als Links dargestellt werden, zu den verschiedenen Indexseiten der Über-

sicht gelangen. Den Links wird zum einem die blogid (bzw. tagid) zugeordnet, mit der die

Bookmarks, die in der Übersicht dargestellt werden sollen, abgefragt werden können. Zum

anderem wird den Links die Indexnummer I zugeordnet, mit der die Teilmenge der Book-

marks, welche die jeweilige Indexseite ausgeben soll, bestimmt werden kann.

Die im folgendem dargestellte Funktion erzeugt den Index:

56

public void createIndex(int numberofbookmarks){ index+="Seite: "; int i=numberofbookmarks; int se=10; while(i>0){ if(se==<current index> index+=se/10+" ";} else{ index+="<ahref='AdministrationView.htm? blogid="+blogid+"&tag="tagid"&seite="seite" class='txtlink11'>"+se/10+"</a> ";} se=se+10; i=i-10; } }

Abb. 21: Die Funktion "createIndex" ( Quelle: eigene Darstellung )

Die Funktion „createIndex(int numberofbookmarks)“ erstellt den Index, indem sie

iterativ jeweils eine neue Seitenzahl zu diesem hinzufügt, bis keine weitere Seitenzahl dem

Index zugeordnet werden muss. Dies ist der Fall, wenn für jede Indexseite, die benötigt wird,

um die Bookmarks in der Übersicht dazustellen, sich eine entsprechende Seitenzahl in dem

Index befindet.

Diese Funktionalität wird realisiert, indem in einer While-Schleife von der Gesamtzahl der

Bookmarks iterativ jeweils 10, also die Anzahl der Bookmarks, die höchstens auf einer In-

dexseite dargestellt werden, subtrahiert wird. Bei jeder dieser Iterationen wird eine neue Sei-

tenzahl zu dem Index hinzugefügt, bis das Ergebnis der Subtraktion kleiner oder gleich Null

ist und somit die Iteration abgebrochen wird. Wenn dabei die Seitenzahl der aktuellen Index-

seite in den Index eingefügt werden soll, wird diese im Gegensatz zu den anderen Elementen

des Indexes nicht als Link dargestellt. Somit hat diese Seitenzahl eine andere Formatierung

als die restlichen Seitenzahlen, wodurch der Anwender sofort sehen kann, auf welcher Index-

seite er sich befindet. Nachdem der Index generiert und von der Funktion „createIn-

dex()“ in einen String zurückgegeben wurde, kann dieser durch eine Printsubstitu-

tion in das Template, welches schließlich die Indexseite anzeigt, eingefügt werden.

Die 10 Bookmarks, die in der Indexseite dargestellt werden sollen, werden dagegen durch

eine Listsubstitution in das Template eingebettet. Listsubstitutions können so-

wohl in sichtbaren als auch in Mischhandlern definiert werden und ersetzen die Listenplatz-

halter in Templates. Listenplatzhalter definieren, wie schon im Kapitel 3.1.1 erläutert, in den

Templates Bereiche, in die weitere Platzhalter eingefügt werden können. Diese Platzhalter

werden dann iterativ solange substituiert, bis eine Abbruchbedingung, die in der Listsub-

stitution definiert wird, erfüllt wird. Mit Listsubstitutions können somit Listen

57

erzeugt werden, die gleichartige Objekte, wie in diesem Fall Bookmarks, enthalten. Bei der

Definition von Listsubstitutions müssen folgenden Funktionen definiert werden:

• start ()

• hasNext ()

• next ()

• init ()

In der Funktion „start()“ wird in den meisten Fällen ein Iterator angegeben, der iterativ

durchlaufen wird und mit dessen Elementen die Platzhalter innerhalb des Listenplatzhalters

substituiert werden. In der Funktion „hasNext()“ wird die Abbruchbedingung festgelegt,

die bei jeder Iteration ausgewertet wird. Wenn die Abbruchbedingung nicht erfüllt ist, wird

mit der Funktion „next()“ der Pointer des Iterators Iauf das nächste Listelement gesetzt.

Schließlich werden in der Funktion „init“ die Substitutionen der verschieden Platzhalter defi-

niert

Für die Definition der Listsubstitution der Bookmarkliste wird der Funktion „Start“ der

Iterator, der durch die Funktion „getpage()“ erzeugt wurde, zugeordnet und in die Funktio-

nen „hasNext()“ und „Next()“ die Funktionen „hasNext“ und „Next()“ des Iterators

eingefügt. Danach können in der Funktion „init()“ die Substitutionen, welche die Platzhal-

ter des Templates durch die Eigenschaften der verschiedenen Bookmarks ersetzen, definiert

werden. Durch „Printsubstitutions“ können die Eigenschaften Titel, Eigentümername

und die Tags des Bookmarks in das Template eingebettet werden. Da die Bookmarkbeschrei-

bung optional ist, muss durch eine „Conditionalsubstitution“ für jeden Bookmark

überprüft werden, ob diesem eine Beschreibung zugeordnet wurde. Wenn dies der Fall ist,

wird die Beschreibung, ebenfalls wie die restlichen Eigenschaften des Bookmarks, durch eine

Printsubstitution in das Template eingefügt, ansonsten wird diese Substitution nicht

ausgeführt.

Neben den Eigenschaften des Bookmarks wird, wie im Kapitel 4.2.1 beschrieben, für jeden

Bookmark die Anzahl der Bookmarks angezeigt, die auf die gleiche Ressource verweisen,

wie der jeweils angezeigte Bookmark. Falls mehrere Anwender einen Bookmark zu dieser

Ressource definiert haben, wird die entsprechende Anwenderanzahl als Link dargestellt, die

zu einer Kommentarfunktion verweist. Die Kommentarfunktion zeigt die Beschreibungen

aller Bookmarks an, die mit der gleichen URL verknüpft sind wie der Bookmark, für den die

Kommentare angefordert wurden.

58

5.2.2.2 Kommentarfunktion

Die Kommentarfunktion basiert auf der AJAX-Technologie, wodurch die Übersichtsseite

weder neu geladen werden muss noch ein Popup-Fenster geöffnet wird, wenn diese Funktion

aufgerufen wird.

Wenn ein Anwender die Kommentare eines Bookmarks aufrufen will und somit die Kom-

mentarfunktion aufruft, wird ein Javascript aktiviert, welches einerseits die Kommentare des

Bookmarks über ein XMLHttpRequest von der serverseitigen Logik abfragt und andererseits

diese in das HTML-Dokument, in dem das Javascript aufgerufen wurde, einbettet.

Mit dem XMLHttpRequest wird die URL des Bookmarks, für den die Kommentare angezeigt

werden sollen, an die serverseitige Logik übertragen, welche die Funktion “getBookmarko-

fanURL()“ aufruft. In dieser Funktion wird eine Query ausgeführt, die alle Bookmarks ab-

fragt, die mit der URL, die an diese Funktion übergeben wird, verknüpft sind. Nachdem die

ermittelten Bookmarks von der Funktion zurückgegeben wurden, werden deren Beschreibun-

gen jeweils in das Antwortdokument eingebettet. Nachdem alle Beschreibungen eingefügt

wurden, liegen diese hintereinander angeordnet und jeweils durch Strichpunkte voneinander

getrennt in dem Antwortdokument vor.

Das Javascript, dem das Antwortdokument übergeben wird, kann nun auf die einzelnen Be-

schreibungen zugreifen, indem es diese durch die Funktion „Split()“ jeweils an den Strich-

punkten von einander trennt. Aus den einzelnen Kommentaren erstellt das Javascript schließ-

lich eine Aufzählungsliste, die in der folgenden Abbildung dargestellt wird, und bettet diese

in die Übersichtsseite unterhalb des Bookmarks, für den die Kommentare angefordert wur-

den, ein.

Abb. 22: Die Kommentarliste ( Quelle: eigene Darstellung )

Wie dieser Abbildung zu entnehmen ist, wird in dieser Liste jeder Kommentar mit dem Na-

men dessen Autors verknüpft. Die Namen der Autoren verweisen auf deren Bookmarklogs,

wodurch wiederum zwei verschiedene Informationsquellen über Bookmarks (Kommentarlis-

te und Bookmarklog) miteinander vernetzt werden.

59

5.2.2.3 Funktionen der Übersichtsseite

Neben den Eigenschaften der Bookmarks und der Kommentarfunktion wird jeder Book-

markdarstellung eine Bearbeitungsfunktion, eine Löschfunktion und eine Exportfunktion

zugeordnet, deren Realisierung im Folgenden dargestellt wird.

Wenn ein Anwender die Bearbeitungsfunktion eines Bookmarks aufruft, wird ein Javascript

ausgeführt, welches einen XMLHttpRequest initialisiert, das wiederum die ID des zu bear-

beitenden Bookmarks an die serverseitige Logik übergibt. Nach der Aktivierung der server-

seitigen Logik fragt diese mit der Methode „getBookmark()“ den Bookmark, der mit der

übergebenen ID verknüpft ist, aus der Datenquelle ab und erstellt im Antwortdokument das

entsprechende Bearbeitungsformular. Dabei werden dessen Eingabefelder mit den Eigen-

schaften des zu bearbeitenden Bookmarks vorbelegt(siehe Abb. 23).

Abb. 23: Das Bearbeitungsformular ( Quelle: eigene Darstellung )

Wie in dieser Abbildung zu sehen ist, wurde das Formular so gestaltet, dass die Anordnung

seiner Elemente vergleichbar mit der Darstellung der Eigenschaften eines Bookmarks (vgl.

Abb. 12) ist. Durch diese Anordnung der Formularfelder kann der Anwender allein durch die

Positionierung der einzelnen Formularfelder auf deren Bedeutung schließen. Des Weiteren

wird das Formular innerhalb der Übersichtsliste an der Position angezeigt, an der normaler-

weise der Bookmark, der bearbeitet wird, dargestellt wird. Aus diesem Grund ist es ebenfalls

wichtig, dass das Formular auf ähnliche Art wie die Bookmarkdarstellung formatiert wird,

damit die homogene Oberfläche der Übersichtseite durch das Einfügen des Bearbeitungsfor-

mulars weitestgehend nicht unterbrochen wird

60

Das Javascript, dem das Antwortdokument übergeben wird, kann das Formular aus diesem

auslesen und die Darstellung des Bookmarks, das bearbeitet werden soll, durch dieses erset-

zen. Nach der Einbettung des Formulars, kann der Anwender den Bookmark bearbeiten.

Wenn der Anwender die Bearbeitung des Bookmarks abgeschlossen und das Formular ab-

schicken will, wird durch ein Javascript überprüft, ob alle Formularfelder ausgefüllt wurden.

Wenn ein Feld außer dem Beschreibungsfeld8 nicht ausgefüllt wurde, wird eine Fehlermel-

dung ausgegeben, die den Anwender auf die Unvollständigkeit des Formulars hinweist. An-

sonsten wird ein XMLHttpRequest erzeugt, mit dem die Formularparameter an die serversei-

tige Logik übertragen werden. Diese verarbeitet die Formularparameter, indem sie dem

Bookmarkeintrag, der bearbeitet wurde, die übertragenen Werte zuordnet. Dabei erfolgt die

Zuordnung der „neuen“ Tags zu den Bookmarkeintrag in zwei Schritten. Im ersten Schritt

werden alle Verknüpfungen zwischen den alten Tags und dem Bookmarkeintrag gelöscht und

gleichzeitig überprüft, ob diese Tags noch mit weiteren Bookmarks verknüpft sind. Wenn

dies nicht der Fall ist, werden diese ebenfalls gelöscht, da Tags existenzabhängig von den

Bookmarks sind. Im zweiten Schritt wird der Bookmarkeintrag mit den neuen Tags ver-

knüpft, wobei, falls ein neuer Tag noch nicht im System existiert, eine entsprechende Instanz

des Assettyps „Tag“ erzeugt wird (vgl. Kap. 5.2.1.2).

Nachdem der Bookmark aktualisiert wurde, wird durch die fachliche Logik ein HTML-

Fragment, das die Darstellung des aktualisierten Bookmarks enthält, erstellt und über ein

Antwortdokument an ein Javascript übergeben. Das Javascript, dem das Antwortdokument

übergeben wird, kann nun das Bearbeitungsformular des Bookmarks wieder durch dessen

Darstellung ersetzen. Da die Übermittlung der Formularparameter und der Darstellung des

Bookmarks AJAX-basiert erfolgt, kann der Bookmark asynchron zu dem normalen

Programmablauf aktualisiert werden. Somit muss nach dem Abschicken des Bearbeitungs-

formulars die Übersichtsseite nicht neu geladen werden. Dies trägt zur Benutzerfreundlich-

keit der Erweiterung bei.

Wenn der Anwender einen Bookmark löschen will und die entsprechende Funktion aufruft,

wird eine Seite ausgegeben, auf der der Anwender bestätigen muss, dass der ausgewählte

Bookmark wirklich gelöscht werden soll. Wird dies bestätigt, wird die Bookmark-ID des zu

löschenden Bookmarks an die fachliche Logik übertragen und der entsprechende Bookmark-

eintrag aus der Datenquelle gelöscht. Außerdem müssen dessen Verknüpfungen zu den As-

8 Die Eigenschaft „Beschreibung“ ist für alle Bookmarks optional.

61

sets „Weblog“, „Person“ und „Tags“ (siehe Kap. 5.1.2) entfernt werden, damit das Löschen

eines Bookmarks keinen inkonsistenten Systemzustand hervorruft. Nachdem die Beziehung

zu den Tags gelöscht wurde, muss überprüft werden, ob diese noch mit weiteren Bookmarks

verknüpft sind. Wenn dies nicht der Fall ist, werden die Tags wegen ihrer Existenzabhängig-

keit zu den Bookmarks ebenfalls gelöscht.

Schließlich wird der Bookmarkdarstellung noch die optionale Funktion „exportieren“ zuge-

ordnet, die die Anwender über die Einstellungsseite ihrer Bookmarkaccounts aktivieren oder

deaktivieren können. Diese Funktion ermöglicht den Anwendern, einzelne Bookmarks aus

der Erweiterung nach Del.icio.us exportieren.

Der Export von Bookmarks wird mittels des Webservices, der von Del.icio.us angeboten

wird, realisiert. Die Schnittstelle des Webservices, der auf der REST-Architektur basiert,

wird in der folgenden Abbildung dargestellt.

http://del.icio.us/api/posts/add?&url=<url>&description=<Title>&extended=<Beschreibung>&tags=<Tags>

Abb. 24: Schematische Darstellung der Schnittstelle des Webservices ( Quelle: eigene Darstellung )

Wie in dieser Abbildung dargestellt wird, können über die Schnittstelle die zentralen Eigen-

schaften eines Bookmarks (Titel, URL, Beschreibung und Tags) nach Del.icio.us exportiert

werden.

Nach Aufruf dieses Webservices wird der Anwender aufgefordert, die Benutzerkennung des

Accounts anzugeben, in den der Bookmark eingefügt werden soll, damit eine sichere Verbin-

dung zu Del.icio.us hergestellt werden kann. Nachdem die eingegebenen Benutzerdaten er-

folgreich verifiziert wurden und somit diese Verbindung aufgebaut werden kann, wird der

Webservice ausgeführt und der Bookmark in den entsprechenden Account eingefügt.

Um die Exportfunktion in die Übersichtsseite einzubetten, muss jeder Bookmarkdarstellung

ein Link zugeordnet werden, der die URL des Werbservices, an die die Eigenschaften des

jeweiligen Bookmarks angehängt sind, darstellt. Wenn ein Anwender diesen Link anklickt,

wird der Webservice für den entsprechenden Bookmark ausgeführt und dieser nach

Del.icio.us exportiert.

62

5.2.2.4 Tagspezifische Seiten der Übersicht

Neben der Bookmarkliste wird auf der Übersichtsseite eine Liste, die alle Tags des Anwen-

ders enthält, ausgegeben. Da die Instanzen des Asset „Tag“ personenspezifisch sind, können

die Tags einer Person durch eine einfache Query ermittelt werden, die alle Instanzen des As-

set „Tags“ abfragt, die mit einer bestimmten Person assoziiert sind. Diese Query wurde in der

Funktion „getTagsOfaPerson()“ realisiert, welche die ausgelesenen Tags als Iterator zu-

rückgibt. Durch diese Funktion kann der Handler, der die Übersichtsseite erzeugt, nun die

Elemente für die Tagliste abfragen und jene durch eine „Listsubstitution“ in das ent-

sprechende Template einbetten. Die Elemente dieser Tagliste werden jeweils als Links reali-

siert, die zu den tagspezifischen Übersichtsseiten verweisen.

Die tagspezifischen Seiten enthalten die gleichen Elemente wie die allgemeine Übersichtssei-

te und zeigen zusätzlich noch eine Liste der verwandten Tags des Tags, dessen Bookmarks

auf der jeweiligen Seite dargestellt werden, an. Die Elemente dieser Liste können mit der

Funktion „getRelatedTagsofTag()“, die in der folgenden Abbildung dargestellt wird,

ermittelt werden.

public Iterator getRelatedTagsofTag(String tagid) { Vektor v = new Vektor(); Iterator bi= servces.getBookmarks(). getAllbookmarksofaTag(services.getTags(). getTag(tagid)); while (bi.hasNext()) { BookmarkEntry bookmark = (BookmarkEntry) bi.next(); if (bookmark != null) {// if1 Iterator it = bookmark.getTags(); while (it.hasNext()) { Tag tag = (Tag) it.next(); if (tag != null) { int nu=Numberofcommonbookmarks(services. getTags().getTag(tagid).getValue() ,tag.getValue()); if (!v.contains((tag.getValue().trim())) && nu>2) { .add((String) tag.getValue());}}}}} v.remove(services.getTags().getTag(tagid).getValue()); return v.Iterator();}

Abb. 25: Die Funktion "getRelatedTagsofaTag" ( Quelle: eigene Darstellung )

Die Funktion „getRelatedTagsofTag()“ ermittelt alle verwandten Tags eines Tags t,

indem diese im ersten Schritt die Menge b der Bookmarks abfragt, die mit t verknüpft sind.

Da alle Tags, die mit den Bookmarks der Menge b verknüpft sind, mit t verwandt sein könn-

ten, muss nun für jeden dieser Tags überprüft werden, ob dieser noch einen weiteren gemein-

samen Bookmark mit t hat (siehe Definition: Verwandte Tags, Kap. 4.2). Somit werden itera-

63

tiv die Tags von jedem Bookmark der Menge b mit der Funktion „getTags()“ abgefragt

und für jeden Tag die Anzahl der Bookmarks ermittelt, die er gemeinsam mit dem Tag t hat

(Funktion: Numberofcommonbookmarks()). Wenn ein Tag mehr als zwei gemeinsame

Bookmarks mit t hat, ist dieser mit t verwandt und wird in einen Vektor eingefügt.

Da es aber sein kann, dass bestimmte Tags mehreren Bookmarks der Menge b zugeordnet

sind und somit deren Verwandtschaft zu t mehrmals ermittelt wird, muss, bevor ein neuer

Tag in den Vektor eingefügt wird, festgestellt werden, ob sich dieser schon in dem Vektor

befindet. Nachdem der Algorithmus ausgeführt wurde, liegen alle verwandten Tags von t in

einem Vektor vor. Dieser wird schließlich in einen Iterator umgewandelt, der von der Funkti-

on „getRelatedTagsofTag()“ zurückgegeben wird.

Die verwandten Tags können nun durch eine Listsubstitution in das Template, welches

die tagspezifische Übersichtsseite schließlich ausgibt, eingebettet werden.

Nachdem in diesem Kapitel die Umsetzung der Übersichtsseite des Bookmarkaccounts erläu-

tert wurde, wird anschließend die Abonnementverwaltung, die in der so genannten „Inbox“

realisiert wurde, beschrieben.

5.2.3 Abonnementverwaltung: Inbox

In der Inbox werden die aktuellen Bookmarks der Abonnements eines Anwenders ausgege-

ben. Diese wird täglich aktualisiert, was bedeutet, dass in ihr die Bookmarks höchstens einen

Tag lang angezeigt werden und sie somit nur einen temporären Speicher für die Bookmarks

darstellt. Innerhalb der Inbox werden die Bookmarks auf die gleiche Art dargestellt wie in

der Übersichtsseite (siehe Kap. 5.2.2) mit dem Unterschied, dass statt einer „Bearbeitungs-„

bzw. „Löschfunktion“ eine „Kopierfunktion“ jedem Bookmark zugeordnet wird. Des Weite-

ren werden die verschiedenen Abonnements eines Anwenders, sortiert nach deren „Abonne-

mentarten“, in der Inbox dargestellt.

Die zentrale Aufgabe bei der Implementierung dieser Inbox war der Entwurf eines Algorith-

mus, mit dem die aktuellsten Bookmarks der verschiedenen Abonnementarten ermittelt und

schließlich in der Inbox angezeigt werden können. Dieser Algorithmus wurde so realisiert,

dass er alle Bookmarks aller Abonnements ermittelt, die seit dem letzten Zugriff auf die In-

box an einem vorherigen Tag in das System eingefügt wurden. Durch den Algorithmus, der

in der folgenden Abbildung dargestellt wird, werden somit die aktuellen Bookmarks der A-

64

bonnements jeweils einen Tag lang in der Inbox angezeigt und bei einem Zugriff auf die In-

box an einen darauf folgenden Tag wieder aus dieser gelöscht.

public Iterator getlatestbookmarksofasubscription (String bid,Date sessiondate) { Vektor bv = new Vektor(); Iterator bookmarks; Iterator subscriptions = services.getSubscriptions() .getallsubscriptionsfaBookmarklog(bid); while (subscriptions.hasNext()) { subscription sub = (subscription) subscriptions.next(); if (sub != null) { sub.Updatelastdate(sessiondate); if(sub.getTyp()==0){ bookmarks=services.getBookmarks(). getAllCurrentbookmarksofaTagname (sub.getSubscription().trim(), sub.getLastSession());} else if(sub.getTyp()==1){ bookmarks=services.getBookmarks(). getAllCurrentpublicBookmarksofPerson (sub.getSubscription(), sub.getLastSession());} else{bookmarks = services.getBookmarks(). getAllCurrentpublicBookmarksofatag(sub.getSubscription(), sub.getLastSession());} while (bookmarks.hasNext()) { BookmarkEntry bookmark = (BookmarkEntry) boomarks.next(); if (bookmark != null && !bv.contains((BookmarkEntry) bookmark)) { bv.add((BookmarkEntry) bookmark); }}}} return bv.Iterator();}

Abb. 26: die Funktion "getlatestbookmarksofasubscription"( Quelle: eigene Darstellung )

Die Funktion „getlatestbookmarksofasubscription“ gibt einen Iterator zurück, der

alle Bookmarks enthält, die in der Inbox ausgegeben werden sollen. Zunächst werden durch

die Funktion alle Abonnements des Anwenders, der auf die Inbox zugreift, abgefragt. Da die

Abonnements indirekt über den Bookmarklog mit deren Eigentümer verknüpft sind (siehe

„Modell der Erweiterung“, Abb. 11), wird nicht die PersonID, sondern die ID des Book-

marklogs des Abonnenten an diese Funktion übergeben. Nachdem die Abonnements ermittelt

wurden, müssen iterativ deren aktuellen Bookmarks abgefragt werden. Dabei wird zuerst die

Eigenschaft „LastSession“, die jedem Abonnement zugeordnet ist (siehe Kap. 5.1.4 ), durch

die Hilfsfunktion „.Updatelastdate ()“ aktualisiert. Diese Funktion ordnet, wenn auf die

Inbox zum ersten Mal an einen bestimmten Tag zugegriffen wird, das Datum des letzten

Zugriffes auf die Inbox (z.B. das Datum von gestern) der Eigenschaft „Lastsession“ zu, an-

sonsten bleibt diese unverändert. Dadurch wird erreicht, dass die Bookmarks immer einen

Tag lang in der Inbox angezeigt werden, auch wenn der Anwender mehrmals täglich auf die-

65

se zugreift. Nachdem das Aktualisierungsdatum festgelegt wurde, werden nun nacheinander

die aktuellen Bookmarks der verschiedenen Abonnements ausgelesen. Da für jeden Abon-

nementtyp eine spezielle Funktion zur Ermittlung der Bookmarks realisiert wurde, muss,

bevor die Bookmarks für ein bestimmtes Abonnement abgefragt werden, dessen Typ be-

stimmt werden.

Handelt es sich um ein tagspezifisches Abonnement (Typ= 0), werden die aktuellen Book-

marks durch die Funktion „getAllCurrentbookmarksofaTagname()”, an die der abon-

nierte Tagwert übergeben wird, ermittelt. Der Tagwert kann dabei aus der Eigenschaft

„Subscription“ des Assettyps „Bsubscription“, welcher die Abonnements physisch speichert,

ausgelesen werden.

Bei personenspezifischen Abonnements (Typ=1) wird dagegen in dieser Eigenschaft die ID

der Person gespeichert, dessen Bookmarks abonniert wurden. Anhand der ID können nun die

aktuellen Bookmarks mittels der Funktion „getAllCurrentpublicBookmarksofPerson

()“ angefordert werden.

Den Eigenschaften „Subscription“ der Instanzen des Assets „Bsubscription“, die ein tag-

und personenspezifisches Abonnement enthalten, müssen nur die ID der Taginstanzen, die

dem abonnierten Tags entsprechen, zugeordnet werden, da diese Instanzen personspezifisch

sind. Um auf die aktuellen Bookmarks eines solchen Abonnementtyps zugreifen zu können,

müssen somit lediglich die Bookmarks abgefragt werden, die mit dem Tag verknüpft sind,

dessen ID in dem entsprechenden Abonnementeintrag gespeichert wurde. Diese Funktionali-

tät wurde in der Funktion "getAllCurrentpublicBookmarksofatag()" realisiert.

Nachdem die aktuellen Bookmarks eines Abonnements abgefragt wurden, müssen sie in ei-

nen Vektor, der diese mit den Bookmarks der anderen Abonnements vereint, eingefügt wer-

den. Da es aber sein kann, dass ein Bookmark verschiedenen Abonnements zugeordnet ist,

muss, bevor ein neuer Bookmark in den Vektor eingefügt wird, überprüft werden, ob sich

dieser schon in den Vektor befindet.

Nachdem die aktuellen Bookmarks von allen Abonnements eines Anwenders in den Vektor

eingefügt wurden, wird dieser in einen Iterator, der schließlich von der Funktion

„getlatestbookmarksofasubscription()“ zurückgegeben wird, umgewandelt.

Die ermittelten Bookmarks können nun durch eine „Listsubstitution“ in das Template,

das die Inbox anzeigt, eingefügt werden. Dabei wird jedem Bookmark eine „Kopierfunktion“

zugeordnet, mit der die Anwender die abonnierten Bookmarks aus der Inbox in ihre eigenen

Bookmarkaccounts kopieren können. Wenn ein Anwender einen Bookmark kopieren will

und die Kopierfunktion aufruft, wird das Einfügeformular seines Bookmarkaccounts geöff-

66

net, dessen Felder mit den Eigenschaften dieses Bookmarks vorbelegt sind. In diesem Formu-

lar kann der Anwender die Eigenschaften des Bookmarks nun beliebig bearbeiten und diesen

anschließend speichern (vgl. Kap. 5.2.1)

Neben den Bookmarks werden die verschiedenen Abonnements eines Anwenders sortiert

nach Abonnementtypen in der Inbox dargestellt. Die Elemente der verschiedenen Abonne-

mentlisten werden jeweils als Links dargestellt, die zu den „Quellen“ der verschiedenen A-

bonnements verweisen. Die tagspezifischen Abonnements verweisen jeweils zu der tagspezi-

fischen Seite, die alle Bookmarks enthält, die mit dem jeweiligen abonnierten Tag verknüpft

sind. Dagegen verweisen die personenspezifischen Abonnements auf die Bookmarklogs der

Anwender, deren Bookmarks abonniert wurden. Die tag- und personenspezifischen Abonne-

ments sind schließlich jeweils mit der entsprechenden tagspezifischen Seite des Book-

marklogs des Anwenders, dessen Bookmark abonniert wurden, verknüpft.

Jedem Abonnement wird jeweils eine Funktion zugeordnet, mit der sich der Anwender von

den verschiedenen Abonnements abmelden kann. Wenn ein Abonnement gelöscht werden

soll und diese Funktion ausgeführt wird, wird die dem Abonnement entsprechende Instanz

des Assettyps „Bsubscription“ aus der Datenquelle gelöscht.

5.2.4 Funktion: „Tags umbenennen“

Der Bookmarkaccount bietet eine Funktion an, mit der Tags konsistent umbenannt werden

können. Durch die Umbenennung eines Tags kann jeder Bookmark, der mit diesem Tag ver-

knüpft ist, einem neuen Themengebiet zugeordnet werden.

Wenn diese Funktion aufgerufen wird, öffnet sich ein Formular, in dem der Anwender aus

einer Auswahlliste den Tag, den er umbenennen will, auswählen und in ein Textfeld den neu-

en Wert des Tags eingeben kann. Dem Textfeld wurde die im Kapitel 5.2.1.1 vorgestellte

Suggestionfunktion, die die Benutzereingaben erkennt und Vorschläge für deren Fertigstel-

lung ausgibt, zugeordnet. Dadurch kann der Anwender beispielsweise bei der Eingabe des

neuen Tagnamen direkt sehen, welche Tags schon von anderen Anwendern definiert wurden

und einen von diesen für die Umbenennung seines Tags übernehmen. Nachdem der Anwen-

der das Formular abgeschickt hat, wird von der fachlichen Logik überprüft, ob beide Formu-

larfelder ausgefüllt wurden. Ist dies nicht der Fall, wird eine Fehlermeldung ausgegeben.

Ansonsten wird durch die Funktion „getTagbyName“ die Instanz, in der das Tag, das umbe-

nannt werden soll, gespeichert ist, ermittelt und dieser der neue Tagname zugeordnet. Da die

67

Instanz über eine „N zu M“ Beziehung mit den Bookmarks verknüpft ist, ist die Umbenen-

nung des Tags über diese Bookmarks konsistent.

In dem folgenden Kapitel wird die Realisierung des Bookmarklogs, der die Bookmarks einer

bestimmten Person öffentlich darstellt und somit eine Art Schnittstelle zwischen der privaten

und der öffentlichen Schicht der Erweiterung ist, vorgestellt.

5.3 Implementierung des Bookmarklogs

Die Bookmarklogs enthalten jeweils alle öffentlichen Bookmarks eines Anwenders und

stellen somit die personenspezifische Sicht auf den Bookmarkbestand der öffentlichen

Schicht der social bookmarking Erweiterung dar. Innerhalb der Bookmarklogs können so-

wohl alle Bookmarks, die nach deren Einfügedatum sortiert sind, als auch die tagspezifischen

Bookmarks einer Person angezeigt werden. Die verschiedenen Übersichten werden auf die

gleiche Weise erzeugt wie die Übersicht in dem Bookmarkaccount (siehe Kap, 5.2.2), jedoch

mit dem Unterschied, dass nur die öffentlichen Bookmarks einer Person in das Template, das

die Bookmarklogs anzeigt, eingebettet werden. Diese Bookmarks können durch die Funktio-

nen „getallPublicBookmarksOfaPerson()” beziehungsweise mit der Funktion „ge-

tAllPublicBookmarksofaTag()“, die alle tagspezifischen Bookmarks einer Person zu-

rückgibt, ermittelt werden.

In den Bookmarklogs wird der Bookmarkdarstellung eine Kopierfunktion zugeordnet, mit

der die verschiedenen Anwender die anzeigten Bookmarks in ihre eigenen Bookmarkac-

counts kopieren können. Da aber auch Anwender, die keine Bookmarks kopieren dürfen wie

z. B. unangemeldete Anwender, auf die Bookmarklogs zugreifen können, muss die Kopier-

funktion dynamisch ein- und ausgeblendet werden können. Aus diesem Grund wird die

Funktion in einen bedingten Platzhalter eingebettet, dem eine Conditionalsubstitution

zugeordnet wird, welche die drei folgenden Bedingungen definiert und auswertet:

• Der Anwender ist angemeldet

• Der Anwender hat einen Bookmarkaccount

• Der Anwender ist nicht der Eigentümer des Bookmarklogs

Wenn diese drei Bedingungen erfüllt sind, darf der Anwender, der auf den Bookmarklog zu-

greift, Bookmarks kopieren und die Kopierfunktion wird angezeigt.

68

Neben den Bookmarks werden die Tags, die von dem jeweiligen Eigentümer des Book-

marklogs definiert wurden, dargestellt. Diese Tags verweisen zu den tagspezifischen Seiten

des Bookmarklogs, auf denen analog zu den tagspezifischen Seiten des Bookmarkaccounts,

die tagspezifischen Bookmarks und die verwandten Tags des jeweiligen Tags angezeigt wer-

den. Die verwandten Tags werden durch die Funktion „getRelatedTagsofTag“, die im Kapitel

Fehler! Verweisquelle konnte nicht gefunden werden. beschrieben wurde, ermittelt.

Auf jeder Seite des Bookmarklogs befindet sich ferner eine Funktion, mit der ein Anwender

die Bookmarks, die ihm angezeigt werden, abonnieren kann. Befindet sich der Anwender

auf der „generellen“ Seite des Bookmarklogs, auf der alle Bookmarks einer Person angezeigt

werden, so kann er ein personenspezifisches Abonnement abschließen. Wenn er dagegen eine

tagspezifische Seite des Bookmarklogs aufruft, kann er die auf dieser Seite angezeigten tag-

spezifischen Bookmarks abonnieren (tag- und personspezifisches Abonnement). Nachdem

der Anwender die Abonnementfunktion aufgerufen hat, erzeugt die fachliche Logik, die in

den SubscriptionsHandler implementiert wurde, eine Instanz des Assets „Bsubscription“ (sie-

he Kap. 5.1.4). Dieser wird in Abhängigkeit der Requestparameter, die an den Handler über-

tragen werden, ein bestimmter Abonnementtyp zugeordnet. Wenn der Handler eine Perso-

nen-ID erhält, wird ein personenspezifisches Abonnement erstellt und der Eigenschaft „Typ“

dieser Instanz der Wert „null“ zugeordnet. Wird dem Handler dagegen die ID einer Tagin-

stanz übergeben, wird ein tag- und personenspezifisches Abonnement erzeugt und die Eigen-

schaft „Typ“ dieser Instanz auf „2“gesetzt (vgl. Tab. 2).

Des Weiteren wird dieser Instanz das Erstellungsdatum des Abonnements hinzugefügt.

Nachdem ein Anwender die Abonnementfunktion ausgeführt hat, wird diese auf der Seite,

die mit dem eingefügten Abonnement verknüpft ist, dem Anwender nicht mehr angezeigt.

Somit kann zu einem ausgeschlossen werden, dass ein Anwender zweimal das gleiche Abon-

nement abschließt und zum anderen kann der Anwender gleich sehen, welche Abonnements

er schon abgeschlossen hat.

Neben den Übersichten über die Bookmarks einer Person wurde für die Bookmarklogs eine

Content Syndication Schnittstelle, die im folgendem vorgestellt wird, realisiert.

69

5.3.1 Die Content Syndication Schnittstelle

Die Content Syndication Schnittstelle ermöglicht den Anwendern, Feeds für ihre Book-

marklogs bereitzustellen, mit denen die Bookmarks ihrer Bookmarklogs exportiert werden

können. Um diese Schnittstelle möglichst allgemein zu gestalten, wurden vier verschiedene

Feedformate für diese realisiert:

• RSS 1.0 • RSS 0.92 • Atom 1.0 • Atom 0.3

Da jeder Anwender selbst bestimmen sollte, welche Feeds auf seinem Bookmarklog angebo-

ten werden sollen, können die Anwender über die Einstellungsseite ihres Bookmarkaccounts

die einzelnen Feeds aktivieren bzw. deaktivieren. Die entsprechenden Einstellungen werden

in den Eigenschaften „ExportRss092“, „ExportRss10“, „ExportAtom03“, „ExportRss10“ der

Instanz der Asset „Weblog“ eingefügt, in der die Konfiguration des Bookmarklogs des jewei-

ligen Eigentümers gespeichert ist. Da Bookmarklogs standardmäßig keinen Feed exportieren,

haben diese Eigenschaften den Defaultwert „0“. Wird ein bestimmter Feed aktiviert, wird der

Wert der entsprechenden Eigenschaft auf „1“ gesetzt. Diese Eigenschaften werden bei der

Generierung der Bookmarklogs durch eine „ConditionalSubstitution “ abgefragt und falls ein

bestimmter Feed von den Bookmarklogs angeboten werden soll, wird eine entsprechende

Exportfunktion in diese eingebettet.

Wenn die Anwender die Exportfunktion aufrufen und somit einen Feed anfordern, wird des-

sen Generierung angestoßen. Die Erzeugung der Feedversionen RSS 1.0, RSS 0.92 und Atom

1.0 erfolgt wie bei der Generierung von HTML-Seiten mittels eines Templates, dessen Platz-

halter durch einen Handler dynamisch ersetzt wird. Somit wurde für jeden dieser drei Feede-

typen jeweils ein XML-Template erstellt, welches die Struktur des jeweiligen Feedtyps ent-

hält.

5.3.1.1 RSS 1.0 Template

Der RSS 1.0 Feed der Erweiterung hat die gleiche Struktur wie der Feed, der von Del.icio.us

angeboten wird, damit dieser zu den Anwendungen, die bereits den Feed von Del.icio.us le-

sen und verarbeiten können, kompatibel ist.

Am Anfang dieses Feedtemplates werden die Namespaces, die für die Darstellung der Attri-

bute verwendet werden, deklariert. Obwohl für die Darstellung der Bookmarks nur die Attri-

70

bute der Namespaces „Dublincore“ und „RDF“ verwendet werden, wurden noch weitere

Namespaces definiert, die bei eventuellen Erweiterungen des Feedtemplates verwendet wer-

den können.

Danach wird der Channel definiert, der die eigentlichen Informationen des Feeds enthält. Im

Channel, dessen „about-Attribut“ die Url des Bookmarklogs, der den Feed anbietet, zu-

geordnet wird, werden allgemeine Metainformationen über den Feed angegeben. Als Titel

des Channels wird der Name des Bookmarklogs verwendet und in das Attribut „Link“ wird

nochmals die URL des Bookmarklogs eingefügt. Nachdem die Metadaten dem Channel zu-

geordnet wurden, wird der Inhalt des Channels innerhalb des „items“ Elements zusammen-

gefasst dargestellt. Dieses Element umfasst eine Liste (rdf:li) mit den Referenzen zu den

verschiedenen „item“-Elementen, in denen schließlich die Bookmarks beschrieben werden.

Da jedes “item“-Element jeweils über die URL des Bookmarks, der in diesem beschrieben

wird, identifiziert und referenziert wird, muss diese URL dem „about“ Attribut des jeweili-

gen Items hinzugefügt werden.

Innerhalb eines Items werden nun die verschiedenen Eigenschaften eines Bookmarks be-

schrieben. Dabei kann, wie der Abbildung 23 zu entnehmen ist, jede Eigenschaft des Book-

marks einem bestimmten Element des „Dublin Core“- oder des „RDF“- Namespace zugeord-

net werden. Der Eigentümer, das Einfügedatum und die Tags eines Bookmarks werden den

„Dublin Core“ Elementen „dc:creator“, „dc:date“ und „dc:subject.“ zugeordnet.

Dagegen werden der Titel, die URL und die Beschreibung des Bookmarks durch die „RDF“

Elemente „title“, „link“ und „description“ beschrieben. Das Template für den RSS

1.0 Feed wird in der folgenden Abbildung dargestellt:

71

<?xml version="1.0" encoding="UTF-8" ?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc=“http://purl.org/dc/elements/1.1/“ xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/"> <channel rdf:about="http://$host$/socialbookmarking/$weblogtitle$"> <title>Bookmarks von $user$ </title> <link>http://$host$/socialbookmarking/$weblogtitle$</link> <description /> 0<items> <rdf:Seq> $[bookmarks b$ <rdf:li rdf:resource="$b.url$" /> $bookmarks]$ </rdf:Seq> </items> </channel> $[bookmarks b$ <item rdf:about="$b.url$"> <title>$b.title$</title> <link>$b.url$</link> <dc:creator>$b.buser$</dc:creator> <dc:date>$b.date$</dc:date> <dc:subject>$b.tags$</dc:subject> $[b.hasdescription$ <description>$b.description$</description> $b.hasdescription]$ </item> $bookmarks b]$ </rdf:RDF>

Abb. 27: Struktur eines RSS 1.0 Templates ( Quelle: eigene Darstellung )

5.3.1.2 RSS 0.92 Template

In RSS 0.92 –Feeds können, wie im Kapitel 3.3.1 beschrieben wurde, keine externen Na-

mespaces verwendet werden. Aus diesen Grund können in diesem Feedformat die Book-

marks nur mit den Elementen „Title“, “link“, “category“9 und „description“ des

RSS-Namespaces beschrieben werden. Neben den Bookmarks werden als Metadaten das

Erstellungsdatum des Feeds, der Bookmarklogtitel, die URL des Bookmarklogs und der Na-

me des Eigentümers des Bookmarklogs in den Feed eingefügt. Die folgende Abbildung stellt

das Template für die Generierung eines RSS 0.92 Feeds dar:

9 In diesem Element werden die Tags des Bookmarks dargestellt.

72

?xml version="1.0" encoding="UTF-8"?> <rss version="0.92"> <channel> <title>$Bookmarklogtitle$</title> <link>$host$/socialbookmarking/bookarmarklog? blogid=$blogid$</link> <managingEditor>$name$</managingEditor> <lastBuildDate>$date$</lastBuildDate> $[entries e$ <item> <title>$e.btitle$</title> <link>$e.burl$</link> <category>$e.btags$</category> $[e.hasdescription$ <description>$e.bdescription$</description> $hasdescription]$ </item> $entries]$ </channel> </rss>

Abb. 28: Struktur eines RSS 0.92 Templates ( Quelle: eigene Darstellung )

5.3.1.3 ATOM 1.0 Template

Neben den RSS-Templates wurde ein Template für einen Atom 1.0 Feed erstellt. In das Feed-

template werden die Bookmarks als „entries“ eingefügt, denen eindeutige IDs zugeordnet

werden müssen. Als entryids werden in diesem Fall die Bookmarkids, welche das System

automatisch den verschiedenen Bookmarks zuordnet und die eindeutig sind, verwendet.

Die Eigenschaften der Bookmarks können durch die Elemente der „ATOM“- und „Dublin

Core“-Namespaces dargestellt werden, wobei aber nur die Eigenschaft „Beschreibung“ des

Bookmarks einem Element des „Dublin Core“ Namespaces zugeordnet werden muss. Die

restlichen Eigenschaften der Bookmarks können dagegen mit den Elementen des Atom-

Namespaces dargestellt werden. Des Weiteren werden der Titel des Feeds („title“), der

Eigentümer des Bookmarklogs („author“) und das Erstellungsdatum („Updated“) als Me-

tadaten in den Feed eingefügt. Die URL des Bookmarklogs, der den Feed anbietet, fungiert

als Feed-ID, die laut der ATOM-Spezifikation eindeutig sein muss (vgl. [ATO04]. Im fol-

gendem wird die Struktur des Atom 1.0 Templates abgebildet.

73

<?xml version="1.0" encoding="utf-8"?> <Feed xmlns=http://www.w3.org/2005/Atom“ xmlns:dc="http://purl.org/dc/elements/1.1/" version="1.0"> <title>$Bookmarklogtitle$</title> <updated>$date$</updated> <author> <name>$name$</name> </author> <id>$host$/socialbookmarking/bookarmarklog?blog=$blogid$</id> $[entries e$ <entry> <id>$e.bookmarkid$</id> <title>$e.btitle$</title> <link rel="alternate" href="$e.burl$"/> <dc:subject>$e.btags$</dc:subject> <updated>$e.bdate$</updated> $[e.hasdescription$ <content type="text">$e.bdescription$</content> $e.hasdescription]$ <author> <name>$e.buser$</name> </author> </entry> $entries]$ </Feed>

Abb. 29: Struktur eines Atom 1.0 Templates ( Quelle: eigene Darstellung )

Wenn ein Anwender eine der drei vorstehend beschriebenen Feedarten anfordert, wird ein

Handler aufgerufen, der die Platzhalter in den vorgestellten Feedtemplates substituiert. Dabei

werden <item>-Elemente der RSS-Feeds bzw. die Entries bei Atomfeeds iterativ durch eine

Listsubstitution, die höchstens 10 der aktuellsten Bookmarks ausgibt, erzeugt. Durch

die Begrenzung der Anzahl der Bookmarks, die in den Feed ausgegeben werden, wird die

Generierung eines übersichtlichen Feed, der effektiv weiterverarbeitet werden kann, ermög-

licht. Nachdem die Platzhalter substituiert wurden, wird der Atom 1.0- bzw. der RSS 1.0

Feeds dem Anwender angezeigt oder, wenn es sich um einen RSS 0.92 Feed handelt, dieser

zum „Download“ angeboten.

5.3.1.4 ATOM 0.3 Feed

Die Generierung eines Atom 0.3 Feeds basiert nicht auf XML-Template, sondern erfolgt

durch Umwandlung des RSS 1.0 Feeds. Die Umwandlung kann mit den Methoden durchge-

führt werden, welche von der ROME- Bibliothek bereitgestellt werden. Diese Methoden er-

möglichen sowohl das Einlesen von Feeds als auch deren Umwandlung. Beim Einlesen der

Feeds werden diese automatisch erkannt und mit jeweils geeigneten Parser verarbeitet. Der

74

Algorithmus, der für die Umwandlung des RSS 1.0 Feeds und somit für die Erstellung des

ATOM 0.3 Feeds verwendet wird, umfasst drei grundlegende Schritte.

Im ersten Schritt liest ein „SyndFeedInput“-Objekt den Feed ein und leitet diesen zum rich-

tigen Parser weiter, der diesen verarbeitet:

SyndFeedInput input = new SyndFeedInput(); SyndFeed Feed = input.build(new XmlReader(feedUrl));

Abb. 30: Funktion: Einlesen des Feeds ( Quelle: [ABD05]) Im zweiten Schritt wird durch „Feed.setFeedType()“ das Format, in das der Feed mit den

folgenden Funktionen umgewandelt werden soll, festgelegt.

SyndFeedOutput output = new SyndFeedOutput(); FeedString=output.outputString(Feed)

Abb. 31: Ausgabe des umgewandelten Feeds (Quelle: vgl. [ABD05] )

Schließlich wird im dritten Schritt der transformierte Feed, in diesem Fall ein ATOM 0.3-

Feed, als ein „String“-Objekt ausgegeben. Dieses „String“-Objekt kann nun durch

„Printsubstitution“ in das Template, das den Feed den Anwendern anzeigt, eingebettet

werden.

Diese Umwandlung von Feeds hat den Nachteil, dass der dadurch erzeugte Feed nicht direkt

wartbar bzw. erweiterbar ist, sondern nur indirekt durch die Modifizierung des Quellfeeds

überarbeitet werden kann. Des Weiteren wurden bei der Umwandlung öfters fehlerhafte

Feeds, deren Elementen zum Beispiel falsche Werte zugeordnet wurden, erzeugt. Aus diesen

Gründen wurde der Umwandlungsalgorithmus nur zu Testzwecken für die Erstellung des

ATOM 0.3 Feeds verwendet.

5.3.2 Bookmarklogverzeichnis

Für die Anwender des Infoasset Brokers gibt es zwei Möglichkeiten auf einen Bookmarklog

einer bestimmten Person zuzugreifen. Zu einem kann jeder Anwender über die Bookmark-

darstellung auf die Bookmarklogs zugreifen( vgl. Kap. 4.2.1). Zum anderen wird der Zugriff

auf die verschiedenen Bookmarklogs durch ein Bookmarklogverzeichnis ermöglicht.

Das Bookmarklogverzeichnis enthält alle Bookmarklogtitel, die jeweils mit den entsprechen-

den Bookmarklogs verlinkt sind. Damit die Suche nach bestimmten Bookmarklogs innerhalb

des Verzeichnisses erleichtert wird, wurden dessen Einträge alphabetisch untergliedert. Dies

75

bedeutet, dass das Verzeichnis aus mehreren Unterseiten besteht, welche jeweils die Book-

marklogtitel auflisten, die mit dem gleichen Buchstaben beginnen. Innerhalb des Book-

marklogverzeichnisses kann der Anwender über einen Index auf die verschiedenen Untersei-

ten zugreifen.

Wenn ein Anwender einen Buchstaben des alphabetischen Indexes „anklickt“ und somit eine

Unterseite des Verzeichnisses aufruft, wird ein Handler, der die entsprechende Seite gene-

riert, ausgeführt. Der Handler ermittelt mit der Funktion „getallBookmarkslogs()“(siehe

Abb. 32) alle Bookmarklogs, deren Titel mit dem Buchstaben, der als Requestparameter an

den Handler übergeben wurde, beginnen und bettet die Titel, die Eigentümernamen und die

Aktualisierungsdaten der abgefragten Bookmarklogs in die angeforderte Unterseite ein.

Mit der Funktion „getallBookmarkslogs ()“ können, falls dieser eine leere Zeichenket-

te übergeben wird, alle Bookmarklogs oder ansonsten alle Bookmarklogs, deren Titel mit

dieser Zeichenkette beginnen, ermittelt werden.

Wenn demnach eine leere Zeichenkette an die Funktion übergeben wird, wird nur eine Query

ausgeführt, die alle Instanzen des Assets „Weblog“, die einen Bookmarklog darstellen, zu-

rückgibt.

Ist die Zeichenkette aber nicht leer, wird neben dieser Query noch eine weitere Query defi-

niert, die alle Instanzen des Assettyps „Weblog“ abfragt, deren Titel mit dem übergebenen

String beginnen. Da die Schnittmenge der Ergebnismengen dieser beiden Queries die ge-

suchten Bookmarklogs enthält, werden diese durch die Querycondition „QueryAnd“ mitein-

ander verknüpft.

Unabhängig davon, welche Bookmarklogs abgefragt werden, wird den Queries ein „Query-

sortingcriterion“ zugeordnet, welches festlegt, dass die Bookmarklogs sortiert nach deren

Aktualisierungsdaten zurückgeben werden sollen. Nachdem die entsprechende Query ausge-

führt wurde, liegen die ermittelten Bookmarklogs in einem Iterator vor, der von der Funktion

„getallBookmarkslogs()“ zurückgegeben wird. Die folgende Abbildung stellt diese

Funktion dar:

76

public Iterator getallBookmarkslogs (String letter){ Query q; if(letter.compareTo("")==0){ q = new QueryEquals(container, asIsBookmarkBlog , 1);} else{ Query q1 = new QueryEquals(container,asIsBookmarkBlog,1); Query q2 = new QueryBegins(container, asWeblogTitle ,letter.trim().toLowerCase()); Query q3 = new QueryBegins(container, asWeblogTitle ,letter.trim().toUpperCase()); Query q4 = new QueryOr(q2, q3); q = new QueryAnd(q1, q4);} QuerySortingCriterion[] qscsort = new QuerySortingCritrion[1]; qscsort[0] = new QuerySortingCriterion(container, asLastPub lished, QuerySortingCrite rion.DESCENDING); Iterator it = container.queryContent(q, qscsort); return new WrapperIterator(it) { public Object wrap(Object o) { Content cg = ((QueryResult) o).content; return getAsset(cg); } };}}

Abb. 32: Die Funktion "getallBookmarkslogs"( Quelle: eigene Darstellung )

Nachdem der Handler mit dieser Funktion die Bookmarklogs abgefragt hat, wird nun mittels

einer „Listsubstitution“ die angeforderte Unterseite des Verzeichnisses erzeugt. Dabei

werden neben dem Titel auch die Eigentümer und die Aktualisierungsdaten der Book-

marklogs ausgegeben. Durch die Ausgabe der Aktualisierungsdaten und die Sortierung der

Bookmarklogs nach diesen Daten kann der Anwender auf einen Blick sehen, wann die ver-

schiedenen Bookmarklogs zum letzten Mal aktualisiert wurden.

Nachdem in diesem Kapitel die Implementierung der Bookmarklogs und im Zusammenhang

mit dieser das Bookmarklogverzeichnis, das der öffentlichen Schicht der social bookmarking

Erweiterung zugeordnet werden kann, vorgestellt wurde, wird im folgenden Kapitel die Rea-

lisierung der restlichen Funktionen der öffentlichen Schicht erläutert.

5.4 Implementierung der öffentlichen Schicht der Erweiterung

Neben dem Bookmarklogverzeichnis umfasst die öffentliche Schicht der Erweiterung zwei

weitere zentrale Komponenten: Die Übersicht über den gesamten Bookmarkbestand des Sys-

tems und die Schnittstelle zu del.icio.us.

77

5.4.1 Öffentliche Übersichtsseite der Erweiterung

Auf der öffentlichen Übersichtsseite der Erweiterung können sowohl die 10 aktuellsten

Bookmarks der Erweiterung als auch tagspezifische Bookmarks angezeigt werden. Daneben

wird auf dieser eine Liste mit den populärsten Tags des Systems angezeigt sowie eine Frei-

textsuche angeboten, mit der die Anwender nach bestimmten tagspezifischen Seiten suchen

können. Die Darstellung der Bookmarks in dieser Schicht wurde analog zu der Bookmark-

darstellung in den Bookmarklogs realisiert.

5.4.1.1 Erstellung der Übersichtsseite

Der Handler, der die Übersichtseite erzeugt, kann die 10 aktuellsten Bookmarks mit der

Funktion „getallpublicBookmarks()“ abfragen. In dieser Funktion werden entweder

alle öffentlichen Bookmarks oder, falls der der Bool´sche Wert „True“ an diese übergeben

wird, die zehn aktuellsten Bookmarks des Systems abgefragt und diese sortiert nach deren

Einfügedaten in einem Iterator ausgegeben. Die Ermittlung der öffentlichen Bookmark er-

folgt.

Zur Generierung der auf der Übersichtsseite angezeigten Liste der populärsten Tags wurde

die Tatsache, dass die Instanzen des Assettyps „tag“ personenspezifisch sind, genutzt. Wegen

dieser Eigenschaft werden für gleiche Tags, die von verschiedenen Anwendern definiert

wurden, jeweils unterschiedliche Instanzen erzeugt. Damit kann von der Anzahl der Instan-

zen, die einem bestimmten Tag zugeordnet sind, auf die Zahl der Anwender, welche den Tag

definiert haben, geschlossen werden. Auf dieser Folgerung basiert die im Folgenden darge-

stellte Funktion „getpopulartags()“, welche die populärsten Tags des Systems ermittelt.

78

public Iterator getpopulartags(){ Vektor pt=new Vektor(); Iterator tn=services.getTags().getTagnames(); while(tn.hasNext()){ String tagname=(String)tn.next();// Der Tag t if(tagname!=null){ int tused=services.getTags(). Numberofusedtag(tagname); if(pt.isEmpty()){ pt.add((String)tagname);} else for(int i=0;i<pt.size();i++){ if(services.getTags().Numberofusedtag ((String)pt.lastElement())>tused){ pt.add((String)tagname); i=pt.size();} else if(tused>=services.getTags(). ^ Numberofusedtag((String)pt. elementAt(i))){ pt.add(i,(String)tagname); i=pt.size();} }}} return pt.Iterator(); }

Abb. 33: Die Funktion "getpopulartags"( Quelle: eigene Darstellung )

Der Rückgabewert dieses Algorithmus ist ein „Iterator“, der alle Tags des Systems sortiert

nach deren Popularität enthält. Im ersten Schritt werden alle Tags, die sich in der Erweiterung

befinden, mit der Methode „getTagnames()“ abgefragt. Danach wird für jeden Tag t mit

der Methode „Numberofusedtag()“ die Anzahl der Instanzen bestimmt, denen dieser Tag

zugeordnet wurde. Basierend auf dieser Anzahl wird der Tag t an einer bestimmten Indexpo-

sition eines Vektors eingefügt. Dabei muss zwischen drei verschiedenen Fällen unterschieden

werden.

Ist der Vektor leer, kann der Tag t an der ersten Indexposition eingefügt werden. Wurde dem

Tag t weniger Instanzen zugeordnet als der Tag, der sich auf der letzten Indexposition des

Vektors befindet, wird der Tag t an den Vektor angehängt. Ansonsten wird der Vektor itera-

tiv durchlaufen und bei jeder Indexposition überprüft, ob der Tag t mit mehr Instanzen ver-

knüpft ist als der Tag der jeweiligen Indexposition. Wenn dies der Fall ist, so wird dieser an

der aktuellen Indexposition eingefügt. Nachdem alle Tags sortiert in den Vektor eingefügt

wurden, wird dieser in einen Iterator, der schließlich von der Funktion „getpopulartags

()“ zurückgegeben wird, umgewandelt.

Mittels dieser Funktion kann der Handler, der die Übersichtsseite generiert, auf die populärs-

ten Tags des Systems zugreifen und diese zusammen mit den aktuellen Bookmarks, die durch

die Funktion „getallpublicBookmarks()“ abgefragt wurden, in die Übersichtsseite ein-

betten. Die populären Tags verweisen auf die tagspezifischen Seiten mit den öffentlichen

Bookmarks, die mit diesen Tags verknüpft sind.

79

Beim Aufruf einer tagspezifischen Seite wird nicht - wie bei der Übersichtsseite des Book-

markaccounts - die TagID an den entsprechenden Handler übertragen, sondern ein Tagwert.

Mit diesem werden zuerst alle Instanzen des Assettyps „Tags“, in denen dieser Tagwert ge-

speichert ist, abgefragt und dann die Bookmarks, die den jeweiligen Instanzen zugeordnet

wurden, ermittelt. Das ist notwendig, da in den tagspezifischen Seiten nicht nur die Book-

marks eines bestimmten Tagobjektes, sondern die Bookmarks aller Taginstanzen, die mit

einen bestimmten Tagwert verknüpft sind, angezeigt werden sollen. Die beschriebene Vorge-

hensweise zu Ermittlung der tagspezifischen Bookmarks aller Personen wurde in der Funkti-

on „getAllbookmarksofaTagname()“ realisiert. Die durch diese Funktion ermittelten

Bookmarks werden schließlich zusammen mit der Liste der populären Tags und Liste der

verwandten Tags auf der tagspezifischen Seite angezeigt.

5.4.1.2 Zugriffsmöglichkeiten auf die tagspezifischen Seiten

Generell wird der direkte Zugriff auf eine tagspezifische Seite der öffentlichen Schicht durch

eine Freitextsuche, die auf jeder Seite der öffentlichen Schicht angezeigt wird, oder über eine

spezifische URL ermöglicht.

Über die Freitextsuche kann jeder Anwender durch die Eingabe eines Tags nach der tagspe-

zifischen Seite, die alle mit dem eingegebenen Tag Bookmarks enthält, suchen und direkt auf

diese zugreifen. Dem Eingabefeld der Freitextsuche wurde die „Suggestionsfunktion“ (siehe

Abb. 16) zugeordnet, damit der Anwender bei der Eingabe eines Tags sofort sehen kann,

welche Tags in dem System existieren und für welche Eingaben die Freitextsuche Ergebnisse

anzeigen kann. Nachdem der Suchbegriff eingegeben wurde und der Anwender die Suchan-

frage bestätigt hat, wird die entsprechende tagspezifische Seite, auf die gleiche Weise wie bei

den „normalen“ Aufruf dieser Seite, generiert und ausgegeben.

Der direkte Zugriff auf tagspezifische Seiten über eine URL wird durch die Eigenschaft

der Handler ermöglicht mit verschiedenen URLs verknüpft werden zu können. Dadurch kann

der Handler mit einer bestimmten BasisURL assoziiert werden, an die beliebig viele Zeichen

angehängt werden können. Wenn dieser Handler nun aufgerufen wird, kann er auf die Daten,

die der BasisURL zugeordnet wurden, zugreifen und diese für die Verarbeitung des Request

verwenden.

80

Die tagspezifischen Seiten wurden mit die BasisURL „http://<host>:<port>/Tags“ verknüpft,

an welche die Anwender lediglich den Namen des Tags anhängen müssen, dessen Book-

marks auf der angeforderten Seite angezeigt werden sollen. Bei der Generierung der tagspezi-

fischen Seiten kann der entsprechende Handler nun durch die documentId auf den angehäng-

ten Tag zugreifen und mit diesem die Bookmarks, die auf dieser Seite darstellt werden sollen,

aus der Datenquelle auslesen. Danach können die ermittelten Bookmarks zusammen mit den

populären und den verwandten Tags in das Template, das schließlich die tagspezifische Seite

ausgibt, eingebettet werden

5.4.2 Implementierung der Importschnittstelle

In der in der öffentlichen Schicht können neben den internen Bookmarks auch externe, von

Del.icio.us importierte Bookmarks dargestellt werden. Da in Del.icio.us den Bookmarks die

gleichen Eigenschaften zugeordnet werden wie den Bookmarks der social bookmarking Er-

weiterung des Infoasset Brokers, können die externen Bookmarks bis auf einige Abweichun-

gen, auf die später noch eingegangen wird, genauso wie die internen Bookmarks in der Er-

weiterung dargestellt werden.

Die externen Bookmarks können durch RSS 1.0 Feeds, die von Del.icio.us angeboten wer-

den, in die Erweiterung importiert werden. Wie der nachfolgenden Tabelle zu entnehmen ist,

bietet Del.icio.us verschiedene Feeds an, in denen die Bookmarks in verschiedenen Kontex-

ten dargestellt werden, wodurch in der Importschnittstelle verschiedenen Sichten auf die ex-

ternen Bookmarks realisiert werden konnten.

Feedtyp Beschreibung

aktueller Feed Dieser Feed enthält die Bookmarks, die erst kürzlich einge-fügt wurden.( URL: del.icio.us/rss/)

Tagspezifischer Feed Dieser Feed enthält alle Bookmarks, die einem bestimmten Tag zugeordnet wurden. (URL: del.icio.us/rss/tag/<tag>)

Personenspezifischer Feed

Dieser Feed umfasst die Bookmarks einer Person (URL: del.icio.us/rss/<person>)

Tag- und personenspezi-fischer Feed

Dieser Feed enthält tagspezifische Bookmarks einer Person (URL: del.icio.us/rss/<person>/<tag>)

Urlspezifischer Feed Dieser Feed umfasst die Bookmarks, die einer bestimmten URL zugeordnet sind. (URL: del.icio.us/rss/url?url=<URL>)

Tab. 4: Typen des Exportfeeds ( Quelle: eigene Darstellung )

81

Da die verschiedenen Exportfeeds höchstens die 30 aktuellsten Bookmarks der entsprechen-

den Kategorie enthalten, ist es nicht möglich, den ganzen Bookmarkbestand von Del.icio.us

in die Erweiterung zu importieren und dort darzustellen.

5.4.2.1 Import externer Bookmarks

Die Generierung der Importseite erfolgt wie bei den anderen Übersichtsseiten durch einen

Handler, der die Bookmarks in ein Template einbettet. Bei der Ermittlung der Bookmarks

kann der Handler allerdings nicht wie sonst auf interne Assets zugreifen, sondern muss die

erforderlichen Daten aus den Feeds, die von Del.icio.us angefordert werden, auslesen. Da

Feeds XML-Dokumente sind, müssen diese geparst werden, bevor der Handler auf deren

Inhalte zugreifen und diese verarbeiten kann. “Das Ergebnis eines vom Parser bearbeiteten

Dokumentes ist üblicherweise eine Datenstruktur, die durch andere XML-Werkzeuge oder

durch Java-APIs manipuliert und bearbeitet werden kann“ [MCL02]. Die XML-Werkzeuge,

mit denen die durch das Parsen erzeugte Datenstruktur bearbeitet wird, werden durch die

Jena-API bereitgestellt. Die Jena-API wurde speziell für das Parsen und die Verarbeitung von

RDF-basierten Dokumenten entwickelt und kann somit für die Verarbeitung der Feeds, die

von Del.icio.us angeboten werden, eingesetzt werden.

Durch das Parsen eines Feeds wird ein Graph erzeugt, der die verschiedenen Ressourcen ei-

nes Feeds als Tripel darstellt, welche jeweils aus den Elementen

• Ressource

• Property

• Value

bestehen. Das Element Ressource enthält die Bezeichnung der Ressource, die in dem jeweili-

gen Tripel beschrieben wird. Der Ressource werden Properties zugeordnet, welche die Ei-

genschaften der Resource symbolisieren und mit denen die konkreten Ausprägungen der Ei-

genschaften durch das „Value“-Element verknüpft werden. Bei der graphischen Darstellung

eines Tripel, werden die Ressourcen als Ellipse, die Properties als Kanten und die Values als

Rechtecke dargestellt. In der folgenden Darstellung wird ein graphisches Tripel, das einen

Bookmark beschreibt, abgebildet.

82

Abb. 34: Graphische Darstellung eines RDF-Tripels ( Quelle: eigene Darstellung )

Nachdem alle Ressourcen eines Feeds als Tripel in den Graphen eingefügt worden sind, kön-

nen nun bestimmte Informationen mit der Anfragesprache „RDQL“ aus dem Graphen abge-

fragt werden. Der Syntax von „RDQL“ ähnelt dem SQL-Syntax, da in dieser Anfragesprache

ebenfalls die Rückgabewerte der Anfrage in einer „Select-Klausel“ und die Anfragestate-

ments in einer „Where-Klausel“ angegeben werden müssen. Doch die in SQL übliche „From-

Klausel“ wird in RDQL nicht benötigt, da sich jede Query auf den Graphen des zuvor gepars-

ten Feeds bezieht.

Die Anfragestatements der „Where-Klausel“ setzen sich jeweils aus den drei Elementen Re-

source, Property und Value zusammen, die den Elementen eines Tripels des Graphen ent-

sprechen. Innerhalb eines Prädikats werden diejenigen Elemente durch einen Platzhalter,

welcher durch ein vorgestelltes Fragenzeichen markiert wird, ersetzt, die durch die Query

abgefragt werden sollen. Dadurch ist es möglich, jedes Element eines Tripels abzufragen. Die

in der folgenden Abbildung dargestellte Query gibt beispielsweise den Namen der Person

zurück, die einen Bookmark für die URL „http//www.google.de“ (vgl. Abb. 34 ) gespeichert

hat.

SELECT ?creator WHERE (<http://www.google.de>,<dc:creator>,?creator) USING dc FOR http://purl.org/dc/elements/1.1/"

Abb. 35: Struktur einer RDQL-Anfage ( Quelle: eigene Darstellung ) Die Klausel „USING“ definiert den Namespace der Property, die in der Where-Klausel ver-

wendet wird. Die Zuordnung der Namespace zu den Properties ist notwendig, da es sein

83

kann, dass in einer Query mehrere verschiedene Properties mit dem gleichen Bezeichner, die

sich nur anhand ihrer Namespaces unterscheiden lassen, vorkommen können. Falls eine Que-

ry ein Ergebnis, welches von mehreren Bedingungen abhängt, oder mehrere Ergebnisse, wie

zum Beispiel das Datum und den Autor eines bestimmten Bookmarks, zurückgeben soll, kön-

nen in einer Query auch mehrere Anfragestatements beziehungsweise Platzhalter definiert

werden (siehe Abb. 36).

SELECT ?creator, ?date WHERE (<http://www.google.de>,<dc:creator>,?creator), (<http://www.google.de>,<dc:date>,?date) USING dc FOR <http://purl.org/dc/elements/1.1/">

Abb. 36: Query mit verschiedenen Where-Klauseln( Quelle: eigene Darstellung) Mittels der Jena-API und RDQL können nun die RSS 1.0 Feeds, mit denen die Bookmarks

von Del.icio.us in den Infoasset Broker importiert werden, geparst und die relevanten Eigen-

schaften der Bookmarks aus diesen extrahiert werden.

5.4.2.2 Darstellung der importierten Bookmarks

Wenn ein Anwender eine Übersichtsseite der Importschnittstelle aufruft, wird ein Handler

aktiviert, der einen Bookmarkfeed von Del.icio.us anfordert. Welcher Feedtyp (siehe Tab. 4)

dabei gewählt wird, hängt von den Parametern ab, die an den Handler übergeben werden.

Nachdem der Feed angefordert wurde, kann dieser durch die Methoden der Jena-API geparst

werden und die Ressourcen des Feeds in einen RDF-Graph eingefügt werden. Aus diesem

Graph können nun in zwei Schritten die Eigenschaften der Bookmarks ausgelesen und dem

Handler zur Weiterverarbeitung zur Verfügung gestellt werden.

Im ersten Schritt werden durch die Funktion „getDeliciousBookmarks“ alle URLs aus dem

Feed ausgelesen, über die auf die Items, welche die Eigenschaften der Bookmarks enthalten,

zugegriffen werden kann. Die ausgelesenen URLs werden von dieser Funktion in einen Itera-

tor zurückgegeben

Im zweiten Schritt wird mit diesen URLs iterativ auf die einzelnen Items des Feeds zuge-

griffen und deren Eigenschaften mit einer RQL-Query ausgelesen. Da in Del.icio.us die

Bookmarkeigenschaften „Beschreibung“ und „Tag“ nicht jeden Bookmark zugeordnet wer-

den müssen, können die verschiedenen Items des Importfeeds unterschiedlich viele Eigen-

schaften enthalten. Aus diesem Grund muss für jedes Item ermittelt werden, welche Eigen-

schaften dieses enthält und eine entsprechende Query definiert werden. Mit einem so be-

stimmten Query werden die Eigenschaften eines Items und somit die Eigenschaften eines

84

Bookmarks ausgelesen und in einem „Resultbinding“ zurückgegeben. In dieser Datenstruktur

liegen die Eigenschaften als Wertpaare vor, sodass auf die einzelnen Eigenschaften über die

jeweils dazugehörigen Variablen zugegriffen werden kann

Die importierten Bookmarks müssen nun durch eine Listsubstitution in das Template,

das schließlich die Übersichtsseite der Importschnittstelle darstellt, eingebettet werden. Wie

in den vorigen Kapiteln schon ausgeführt wurde, müssen für Listsubstitutions die vier

Funktionen Start(), hasNext(), Next() und Init() definiert werden. Der Funktion

„Start“ wird in diesem Fall der Iterator mit den URLs übergeben, die durch die Funktion

„getDeliciousBookmarks()“ ermittelt wurden. Für jedes Element dieses Iterators ruft

die Funktion „Next“ die Hilfsfunktion „getBookmarks()“ auf. Diese Funktion liest die

Eigenschaften des Item-Elementes, das mit der URL, die der Funktion übergeben wird, ver-

knüpft ist, aus dem importierten Feed aus und gibt diese in einem Resultbinding zurück. Die-

ses Resultbinding wird schließlich an die Funktion „init()“ übergeben, welche die Eigen-

schaften des Bookmarks in das Template einbettet.

In der Übersicht der Importschnittstelle können Seiten mit den aktuellen, den tagspezifi-

schen, den personspezifischen oder den personen- und tagspezifischen Bookmarks von

Del.icio.us dargestellt werden. Jede dieser Seiten wird mit der – im vorherigen Abschnitt

beschriebenen – Vorgehensweise erzeugt, wobei in Abhängigkeit davon, welche Bookmarks

diese Seite enthalten soll, jeweils unterschiedliche Feeds (siehe Tab. 4) geparst und verarbei-

tet werden müssen.

Auf den tagspezifischen Seiten der Importschnittstellen werden - analog zu den tagspezifi-

schen Seiten der anderen Übersichtseiten der Erweiterung - neben den Bookmarks die ver-

wandten Tags des selektierten Tags angezeigt. Da aber Del.icio.us die verwandten Tags eines

Tags nicht explizit in einen Feed exportiert, müssen diese Tags durch die Verarbeitung von

tagspezifischen Feeds ermittelt werden. Um dies zu vereinfachen und um den teilweise zeit-

aufwändigen Parsingprozess zu optimieren, wurde für diesen Fall die Definition der ver-

wandten Tags leicht abgeändert. Die geänderte Definition besagt, dass zwei Tags miteinander

verwandt sind, wenn diese mindestens einen gemeinsamen Bookmark haben. Demnach sind

in einem tagspezifischen Feed des Tags t alle Tags, die mit mindestens einem Bookmark die-

ses Feeds verknüpft sind, mit t verwandt. Die verwandten Tags eines Tags t können somit

durch das Abfragen der Ausprägungen der dc:Subject Eigenschaften der verschiedenen

Items, welche die Tags der Bookmarks darstellen, eines tagspezifischen Feed ermittelt wer-

den. Diese Abfrage wird durch folgende Query realisiert :

85

Select ?tags

WHERE (?y <http://purl.org/dc/elements/1.1/subject> ?tags)

Abb. 37: Query: Abfrage der verwandten Tags ( Quelle: eigene Darstellung )

Da es aber sein kann, dass manche Tags mehreren Bookmarks zugeordnet wurden und diese

bei der Ausführung der Query redundant in dessen Ergebnismenge eingefügt werden, müssen

die doppelten Tags aus dieser entfernt werden. Die Entfernung der doppelten Tags erfolgt

dadurch, dass die Tags iterativ aus der Ergebnismenge ausgelesen und in einen Vektor einge-

fügt werden, wenn diese sich noch nicht darin befinden. Nachdem alle Tags in diesen einge-

fügt wurden und somit alle redundanten Tags beseitigt wurden, wird dieser in einen Iterator

umgewandelt, der schließlich an die Listsubstitution, welche die Tagliste in das ent-

sprechende Template einbettet, übergeben wird.

Auf den personenspezifischen Seiten werden neben den Bookmarks die personenspezifi-

schen Tags ausgegeben. Diese Tags können durch die Abfrage der dc:subject Eigenschaf-

ten der Items eines personenspezifischen Feeds ermittelt werden. Somit können diese Tags

auf eine ähnliche Weise wie die verwandten Tags ermittelt werden (s.o.).

Die verschiedenen Seiten dieser Übersicht sollten ebenfalls wie bei den anderen Übersichts-

seiten vor allem über die Bookmarkdarstellung miteinander verknüpft werden. Darum wird

jeder Bookmarkdarstellung sowohl der Eigentümername, der auf die personenspezifische

Seite der Exportschnittstelle verweist, als auch die Tags, die auf die tagsspezifischen Seiten

verweisen, zugeordnet.

Außerdem können die tagspezifischen Seiten über eine Freitext-Suche, mit der nach beliebi-

gen Tags gesucht werden kann, aufgerufen werden. Dieser wurde ebenfalls - wie bei der Frei-

textsuche der Übersichtsseite der internen Bookmarks (siehe Kap. 5.4.1.2) - eine Suggesti-

onsfunktion zugeordnet.

5.4.2.3 Kommentarfunktion

Jede Bookmarkdarstellung der Importschnittstelle ist mit einer Kommentarfunktion ver-

knüpft. Diese Funktion wird nicht - wie bei den sonstigen Übersichten - durch die Angabe,

wie viele Anwender einen bestimmten Bookmark verwenden, den Bookmarkdarstellungen

hinzugefügt, sondern durch einen gesonderten Link. Diese Art der Verknüpfung der Kom-

mentarfunktion mit der Bookmarkdarstellung wurde verwendet, da die Ermittlung der Anzahl

der Bookmarks, die für eine URL definiert wurden, aus folgenden Gründen nicht effizient

86

möglich war. Zum einen wird diese Anzahl nicht direkt in den Importfeeds angegeben. Zum

anderen könnte diese Anzahl durch das Zählen der Bookmarks, die sich in einem URL-

spezifischen Feed (siehe Tab. 4: Typen des Exportfeeds) befinden, ermittelt werden. Da aber

bei diesem Vorgehen für jeden Bookmark ein URL- spezifischer Feed geparst und dessen

Items gezählt werden müssten, würde sich die Ladezeiten der Übersichtsseiten über ein ak-

zeptierbares Maß hinaus verlängern.

Die Erstellung und die Ausgabe der Kommentarliste zu einem Bookmark erfolgt auf die glei-

che Weise wie bei den anderen Übersichtsseiten: Durch den Aufruf der Kommentarfunktion

wird ein AJAX-basiertes Javascript aktiviert, das in Interaktion mit der serverseitigen Logik

eine Kommentarliste erstellt und diese in die angezeigte HTML-Seite unterhalb des Book-

marks, für den die Kommentare angezeigt werden sollten, einbettet10. In diesem Fall können

die Kommentare zu einem Bookmark aus der Eigenschaft „Description“ der verschiedenen

Items eines URL-Spezifischen Feeds( siehe Tab. 5) ausgelesen werden.

Da der Import der Bookmarks durch Feeds erfolgt, die von einem externen Server angefor-

dert werden, kann auf die Importschnittstelle nur zugegriffen werden, wenn eine Verbindung

zum Internet besteht.

5.5 Implementierung weiterer Funktionen

Neben den in den vorigen Kapiteln vorgestellten Funktionen wurden noch weitere Funktio-

nen implementiert, die weder dem Bookmarkaccount noch der öffentlichen Schicht der Er-

weiterung eindeutig zugeordnet werden können. Die Funktionen ermöglichen es, einerseits

die social bookmarking Erweiterung enger mit der Umgebung des Infoasset Brokers zu ver-

knüpfen und andererseits Bookmarks mittels Webservices zu exportieren bzw. zu importie-

ren.

5.5.1 Funktion: „Quick save“

Mittels der Funktion „Quick save“ kann jeder Anwender jede beliebige Seite des Infoasset

Brokers in der Erweiterung speichern. Dadurch wird es den Anwendern ermöglicht, Book-

marks für die Seiten des Infoasset Brokers, die für sie relevant sind, zu definieren und in ih-

ren Bookmarkaccounts zu speichern.

10 Die Generierung der Kommentarliste ist in Kapitel 5.2.2.2 detailliert beschrieben.

87

Die Funktion „Quick save“ wurde durch ein so genanntes Bookmarklet realisiert, das sich auf

der rechten Seite der Oberfläche des Infoasset Brokers befindet. Will ein Anwender die Seite,

auf der er sich gerade befindet, speichern, muss er lediglich das Bookmarklet anklicken, wor-

aufhin sich das Einfügeformular seines Bookmarkaccounts öffnet. In diesem Formular, des-

sen URL-Feld mit der URL der Seite, die gespeichert werden soll, vorbelegt ist, kann er nun

den entsprechenden Bookmark definieren und anschließend speichern.

Die Oberfläche des Infoasset Brokers hat eine Frame-Struktur, die diese in verschiedene

Frames, die unterschiedliche Inhalte enthalten und jeweils durch eine eindeutige URL adres-

sierbar sind, untergliedert. Drei dieser Frames, die nebeneinander positioniert sind, kann die

Funktionalität des Infoasset Brokers hauptsächlich zugeordnet werden. Im „linken Frame“

wird das Menü, aus dem der Anwender die verschiedenen Funktionen des Systems auswäh-

len kann, angezeigt. Bei einem Funktionsaufruf wird die Seite, welche die Funktion darstellt,

im mittleren Frame angezeigt und im rechten Frame, in dem sich das Bookmarklet befindet,

werden weitere Funktionalitäten wie beispielsweise Suchfunktionen angeboten. Da die Inhal-

te des rechten und linken Frame statisch sind und die verschiedenen Funktionsseiten nur im

mittleren Frame dargestellt werden, muss, falls ein Anwender eine bestimmte Seite speichern

will, nur die URL des mittleren Frames einem Bookmark zugeordnet werden. Basierend auf

dieser Eigenschaft der Oberfläche wurde das Bookmarklet implementiert.

Nachdem ein Anwender das Bookmarklet angeklickt und somit die Funktion „Quick save“

aufgerufen hat, wird ein Javascript ausgeführt, welches auf das Frame-Objekt des mittleren

Frames zugreift und dessen URL ausliest. Diese URL wird an einen Handler übertragen, der

das Einfügeformular des Bookmarkaccounts, in dem der Bookmark gespeichert werden soll,

erzeugt. Bei der Erzeugung des Formulars, die im Kapitel 5.2.1 näher beschrieben wurde,

wird dessen URL-Eingabefeld mit der übergebenen URL vorbelegt. Nach der Ausgabe des

Formulars kann der Anwender den Bookmark für die ausgewählte Seite definieren und die-

sen abschließend speichern.

5.5.2 Funktion: „Quick Info“

Die Funktion „Quick Info“ ist sozusagen die Komplementärfunktion zu „Quick save“. Wenn

ein Anwender diese Funktion aufruft, so wird ein „Popup“-Fenster geöffnet, das alle Book-

marks anzeigt, welche für die Seite, auf der sich der Anwender momentan befindet, definiert

wurden. Dadurch kann sich der Anwender beispielsweise darüber informieren, welche

Kommentare durch die Bookmarks der aktuellen Seite zugeordnet wurden.

88

Bei der Ausführung dieser Funktion wird, wie bei „Quick save“ ein Javascript aufgerufen,

welches die URL des mittleren Frames ermittelt und diese an einen Handler übergibt. Der

Handler kann nun durch die Funktion „getBookmarkofanURL()“ die Bookmarks, die für

die übermittelte URL definiert wurden, auslesen und diese durch eine Listsubstitution

in das Template, welches das „Pop-up“ Fenster schließlich anzeigt, einfügen.

Die Bookmarks, die das „Pop-up“ Fenster darstellt, sind weder mit einer Kopierfunktion

noch mit einer Kommentarfunktion verknüpft, da diese legendlich als Kommentare zu einer

bestimmten Quelle fungieren sollen.

5.5.3 Erweiterung der Startseite des Infoasset Brokers

Um die social bookmarking Erweiterung mit der Startseite des Infoasset Brokers zu verknüp-

fen, wurden für diese Seite zwei Übersichten, die zum einen die 10 aktuellsten Bookmarks

und zum anderen die 10 populärsten Tags der Erweiterung enthalten, realisiert. Für die Imp-

lementierung dieser zwei Übersichten konnten die gleichen Funktionen verwendet werden

wie für die Generierung der Übersichtsseite der öffentlichen Schicht der Erweiterung (siehe

Kap 5.4.1), da auf dieser ebenfalls die zehn aktuellsten Bookmarks und die populären Tags

dargestellt werden. Somit können die aktuellen Bookmarks durch die Funktion „getall-

publicBookmarks (boolean limit)“ und die populärsten Tags durch die Funktion

„getpopulartags“ (siehe Kap. 5.4.1) für die Übersichten ermittelt werden. Die Substitutionen,

welche die ermittelten Bookmarks bzw. Tags in die Übersichten einfügen, wurden in den

schon bestehenden Handler, der die Startseite des Infoasset Brokers erzeugt, definiert. .

Die Bookmarks werden auf der Startseite in einer gekürzten Form dargestellt. Dies bedeutet,

dass die Bookmarkdarstellungen lediglich aus dem Bookmarktitel, der zu dessen Verweisziel

verlinkt ist, dem Namen des jeweiligen Bookmarkeigentümers und dessen Einfügedatum

besteht. Diese Darstellungsart wurde gewählt, da auf der Startseite jeweils nur die wesentli-

chen Informationen über die verschiedenen Objekte des Infoasset Brokers dargestellt werden

sollen, damit sich die Anwender auf der Startseite einen gezielten Überblick über den Sys-

temzustand verschaffen können. Sollte sich ein Anwender dennoch für Eigenschaften eines

Bookmarks näher interessieren, kann er direkt über einen Link, der sich oberhalb der Über-

sicht befindet, auf die Übersicht der öffentliche Schicht der social bookmarking Erweiterung,

in der die Bookmarks im vollen Umfang dargestellt werden, zugreifen.

89

5.6 Webservices

Webservices sind verteilte Anwendungen, die über die Kommunikationskanäle des Internets

(bzw. Intranet) Nachrichten austauschen können. Mit diesen Webservices konnte für die so-

cial bookmarking Erweiterung einerseits eine von der Feedtechnologie unabhängige Export-

schnittstelle für Bookmarks bzw. Tags und andererseits eine Importschnittstelle für Book-

marks realisiert werden. Die Webservices wurden nicht für die Interaktion mit einem speziel-

len Clientsystem sondern als eine generelle Schnittstelle zu der Erweiterung entwickelt. Aus

diesem Grund mussten beim Entwurf der XML-Dokumente, welche die Nachrichten der

Webservices darstellen, keine besonderen Anforderungen berücksichtigt werden. Dennoch

wurde darauf geachtet, dass diese eine ähnliche Struktur wie die Dokumente des Webservi-

ces, der von Del.icio.us angeboten werden, aufweisen, damit die Webservices der Erweite-

rung leicht in Clientanwendungen, die schon mit Del.icio.us interagieren, integriert werden

können.

Die Implementierung der Webservices basiert auf der „Representational State Transfer“

(REST) Architektur. Der REST-Architektur liegt die zugrunde, dass jede beliebige Ressour-

ce, die mit einer eindeutigen URI identifizierbar ist, in einer maschinenlesbaren Form z. B.

XML-Dokument, dargestellt werden kann. Die Darstellung einer Ressource wird von einem

Server bereitgestellt und kann durch einen HTTP-Request von einem Client angefordert und

verarbeitet werden. Diese Client-Server Kommunikation hat laut Roy Fielding, der im Rah-

men seiner Dissertation „Architectural Styles and the Design of Network-based Software Ar-

chitectures“ die REST-Architektur entwickelt und beschrieben hat, folgende Merkmale (vgl.

[LAN02]):

• Die Kommunikation findet zwischen einem Server und einem Client statt.

• Jeder Request, mit der eine Ressource angefordert wird, ist gültig, damit dieser vom

Server verarbeitet werden kann.

• Jede Ressource, die an der Kommunikation beteiligt ist, hat eine eindeutige URI.

• Die Antwort (Darstellung einer Ressource) des Servers kann „gepuffert“ oder auch

„nicht gepuffert“ an den Client übermittelt werden.

• Die Ressourcen, die durch den Server angeboten werden, sind durch eine fest defi-

nierte Schnittstelle erreichbar.

90

• Gleichen Darstellungen einer Ressource können verschiedene URIs zugeordnet wer-

den.

• Die Darstellungen verschiedener Ressourcen können untereinander verlinkt werden.

Wenn die vorgestellten Bedingungen erfüllt sind, kann eine REST-basierte Client-Server

Kommunikation erfolgen und der Webservice, welcher durch einen Client angefordert wurde,

ausgeführt werden.

Für die social bookmarking Erweiterung wurden verschiedene Webservices, die in folgender

Tabelle dargestellt werden, zum Export (bzw. Import) von Bookmarks oder Tags, realisiert.

Typ des Webservices URL des Webservices

Export von aktuellen Bookmarks

http://<host>:<port>/api/bookmarks

Export von tagspezifi-sche Bookmarks

http://<host>:<port>/api/bookmarks?tag=<tag>

Export von personen- und tagspezifischen Bookmarks

http://<host>:<port>/api/bookmarks?tag=<tag>&person=<Login>

Export von populären Tags

http://<host>:<port>/api/tags

Export von person-spezifischen Tags

http://<host>:<port>/api/tags?person=<login>

Bookmarks einfügen http://<host>:<port>/api/add?person=<Login> &passwort=<Passwort> &titel=<Title> &tag=<Tags> &url=<Url> &beschreibung=<Beschreibung> &sichtbarkeit=<privat | public>

Tab. 5: Webservices der Erweiterung ( Quelle: eigene Darstellung )

Wie dieser Tabelle zu entnehmen ist, können die Clientsysteme über eine „BasisURL“

(http://<host>:<port>/api) auf die Webservices der Erweiterung zugreifen. Wenn ein Web-

service angefordert und somit die BasisURL aufgerufen wird, wird der WebserviceHandler

aktiviert, der den eingehenden Request überprüft. Nachdem der Request erfolgreich verifi-

ziert wurde, greift der WebserviceHandler über die „documentId“ auf die Zeichenkette, die

der „BasisURL“ angehängt wurde, zu. In Abhängigkeit des Inhaltes der Zeichenkette, leitet

der WebserviceHandler den Request an einen anderen Handler weiter, der schließlich den

91

angeforderten Webservice ausführt. Wurde der BasisURL das Wort „Bookmarks“11 ange-

hängt, so wird eine bestimmte Bookmarkliste angefordert. Wenn dagegen die BasisURL mit

dem Wort „Tags“12 ergänzt wurde, wird eine Liste mit Tags abgefragt. Ansonsten soll, falls

die BasisURL das Wort „add“13 enthält, ein neuer Bookmark in das System eingefügt wer-

den.

5.6.1 Webservice: Export von Bookmarklisten

Wenn eine Bookmarkliste angefordert wird, kann anhand der Parameter, die dem Request

zugeordnet wurden, festgestellt werden, welche Bookmarks diese enthalten soll:

• Werden keine Parameter an den Handler übergeben, so wird eine Bookmarkliste mit

den 10 aktuellsten Tags ausgegeben

• Wird der „Login“ einer Person mit diesem, Request übergeben, so wird eine Liste

mit allen Bookmarks dieser Person angefordert.

• Wird sowohl der Login als auch ein Tag an diesen Request angehängt, so werden die

tagspezifischen Bookmarks dieser Person ausgegeben.

Wenn als Parameter ein Login einer Person an den Handler übergeben wird, so wird über-

prüft, ob dieser Login in dem System existiert und ob die Person, die mit diesem Login iden-

tifiziert werden kann, über einen Bookmarklog verfügt. Ist dies nicht der Fall, so wird die

Verarbeitung des Requests abgebrochen und ein XML-Formular, welches eine Fehlermel-

dung (siehe Abb. 38) enthält, als Antwort auf den Request ausgegeben.

Abb. 38: Fehlermeldung bei einen fehlgeschlagenen Request ( Quelle: eigene Darstellung )

11 DocumentId: api/Bookmaks 12 DocumentId: api/tags 13 DocumentId: api/add

92

Ansonsten wird der Request an den Handler14, der den Webservice für Bookmarks ausführt,

weitergeleitet. Für den Fall, das die tagspezifischen Bookmarks einer Person angefordert

wurden, überprüft der Handler, ob diese Person den Tag, dessen Bookmarks ausgegeben

werden sollen, definiert hat. Wird der entsprechende Tag nicht von dieser Person verwendet,

so gibt der Handler eine Fehlermeldung (vgl. Abb. 34) aus, ansonsten wird die Generierung

des XML-Dokumentes, welches die angeforderten Bookmarks enthält, angestoßen.

Bei der Erzeugung des Dokumentes werden alle Eigenschaften der Bookmarks, die auch bei

der Darstellung der Bookmarks auf den verschiedenen Übersichtsseiten ausgegeben werden,

in dieses eingebettet. Somit war es möglich, bei der Implementierung des Handlers auf be-

reits bestehende Funktionen zur Ermittlung der Bookmarks zurückzugreifen, die schon für

die Erstellung der verschiedenen Übersichtseiten verwendet wurden. Aus diesem Grund wird

an dieser Stelle nicht auf die Ermittlung der Bookmarks, welche in die Antwortdokumente

eingefügt werden sollen, eingegangen.

Die folgende Abbildung stellt beispielhaft ein XML-Dokument dar, welches durch diesen

Handler generiert und als Antwort auf einen angeforderten Webservice ausgegeben werden

kann.

Abb. 39:Antwortdokument eines Webservices ( Quelle: eigene Darstellung )

Wie in dieser Abbildung zu sehen ist, beginnt das Antwortdokument mit einem posts Tag,

in dem der Inhalt des Antwortdokumentes anhand verschiedener Attribute beschrieben wird.

Das „Type“- Attribut gibt an, welche Art von Bookmarks, in diesem Fall „tagspezifische

Bookmarks“, sich in diesem Dokument befinden und dem Attribut „Tag“ wird der Tag, mit

dem die Bookmarks des Dokumentes verknüpft sind, zugeordnet. Bei personenspezifischen

Dokumenten hat das posts Tag dagegen das Attribut „Person“, das den Name der Person,

dessen Bookmarks angefordert wurde, darstellt. Die einzelnen Bookmarks werden jeweils

durch post Tags, deren Attribute die Eigenschaften des jeweiligen Bookmarks enthalten, in

das Antwortdokument eingefügt. In den Attribut „others“ des post Tags wird Anzahl der

Bookmarks angegeben, welche auf die gleichen URL verweisen wie der in den jeweilige

postTag dargestellte Bookmark. Die anderen Attribute dieses Tags sind selbsterklärend und

benötigen deshalb keine näheren Erläuterungen.

14 xmlbookmarkhandler

93

Durch die Ausgabe des Antwortdokumentes wird die Ausführung des Webservices schließ-

lich beendet.

5.6.2 Webservice: Export von Taglisten

Wie schon im Kapitel 5.6 beschrieben wurde, können nicht nur Bookmarks sondern auch

Tags durch die Webservices angefordert werden. Diese Webservices ermöglichen die Abfra-

ge von populären oder personspezifischen Tags und werden durch den „XMLltaghandler“

realisiert. Wenn ein Request durch den Webservicehandler an diesen Handler weitergeleitet

wird, so wird anhand der übergebenen Requestparameter überprüft, welche Tagliste angefor-

dert wurde. Wurden dem Request keine Parameter zugeordnet, so wird eine Liste mit den

populärsten erzeugt, ansonsten wird, wenn ein Benutzername einer Person mit dem Request

verknüpft ist, eine Liste mit den Tags dieser Person ausgegeben. Nachdem die Art des zu

erbringenden Webservices ermittelt wurde, wird das Antwortdokument erzeugt.

Soll eine Liste der populären Tags in das Antwortdokument eingefügt werden, so können

deren Elemente mit der Funktion „getpopularTags()“, die im Kapitel 5.4 vorgestellt

wurde, ermittelt werden. Ansonsten werden die Elemente für eine personspezifische Tagliste

mit der Funktion „getTagsOfaPerson“ aus der Datenquelle ausgelesen.

Die durch eine der beiden Funktionen ermittelten Tags werden nun in ein Template, welches

die Struktur des Antwortdokumentes des Webservices darstellt, eingebettet. Das Antwortdo-

kument enthält ebenso wie das Antwortdokument, das von den „Bookmark Webservices“

generiert wird, die Tags posts und post. In dem posts Tag wird die Art des angeforderten

Webservices durch das Attribut „typ“ angegeben. Daneben wird, falls personenspezifische

Tags angefordert wurden, dem posts Tag das Attribut „Person“ zugeordnet, das mit dem

Namen der Person, dessen Tags sich in den Antwortdokument befinden, verknüpft ist.

Die verschiedenen Tags werden anschließend durch post Tag in das Antwortdokument ein-

gebettet. Diesen Tags wird durch das Attribut „Number“ die Anzahl der Anwender, welche

den jeweils dargestellten Tag definiert haben, zugeordnet.

5.6.3 Webservice: Import von Bookmarks

Der Webservice „Bookmarks einfügen“ ermöglicht es den Anwendern, über die Befehlszeile

des Browsers Bookmarks in die Erweiterung einzufügen ohne den Infoasset Broker laden zu

müssen. Wenn ein Anwender diesen Webservice aufruft, muss er neben den Eigenschaften

94

des Bookmarks, den er einfügen will, auch sein Login und Passwort angeben, da nur autori-

sierte Anwender den Webservice nutzen dürfen.

Nachdem die Ausführung des Webservices angestoßen wurde, überprüft der Webservice-

Handler, ob alle Eigenschaften, die für die Erzeugung eines Bookmarks definiert werden

müssen und die Benutzerdaten des Anwenders an entsprechenden Servicerequest angehängt

wurden. Ist dies der Fall, so wird der Request, an den „GetdigestHandler“ weitergeleitet, um

die eingegebenen Benutzerdaten zu verifizieren. Für diese Verifizierung wird ein zweiteiliger

Autorisierungsprozess ausgeführt, der auch für die Autorisierung eines Anwenders, der sich

beim Infoasset Broker anmelden will, verwendet wird. Im ersten Schritt des Autorisierungs-

prozesses wird mittels des „MD5“ Algorithmus des Anbieters „RSA Data Security“ das ein-

gegebene Login und das Passwort zusammen mit einem Lizenzierungscode („nonce“) chiff-

riert und ein eindeutiger Schlüssel erzeugt. Danach wird im zweiten Schritt dieser Schlüssel

zusammen mit denn Login gegenüber dem „Lightweight Directory Access Protocol“ verifi-

ziert. Ist diese Verifikation erfolgreich, so sind die Benutzerdaten gültig und der Bookmark

kann in das System eingefügt werden.

Da der „MD5“ Algorithmus in einem Javascript implementiert wurde, müssen die Benutzer-

daten, die mit dem Servicerequest an den WebserviceHandler übergeben werden, wieder in

ein HTML-Dokument eingebettet werden, um die Chiffrierung dieser Daten zu ermöglichen.

Dies erfolgt mit dem „GetdiggestHandler“, an den der Request weitergeleitet wird. Der „Get-

diggestHandler“ fügt die übergebenen Parameter zusammen mit dem Lizenzierungscode in

ein HTML-Dokument ein, welches lediglich die Javascriptfunktion „requestdigest“ mit den

Parametern, die in dieses eingebettet wurden, aufruft. Die Funktion „requestdigest“ aktiviert

den „MD5“-Algorithmus, welcher die Benutzerkennung chiffriert. Der dadurch erzeugte

Schlüssel wird anschließend zusammen mit der Benutzerkennung und den restlichen Parame-

tern, die für die Definition des Bookmarks notwendig sind, an den „Addbookmarkhandler“

übergeben. Dieser Handler setzt die Verifizierung der Benutzerkennung fort, indem er den

Schlüssel, der durch den „MD5“- Algorithmus erzeugt wurde, gegenüber des „Lightweight

Directory Access Protocols“ verifiziert. Kann durch diese Überprüfung die Gültigkeit der

Benutzerdaten nicht bestätigt werden, so wird die Ausführung des Webservices abgebrochen

und ein Antwortdokument, das eine Fehlermeldung enthält (siehe Abb. 38), ausgegeben. An-

sonsten wird der angeforderte Webservice ausgeführt und ein Bookmark mit den Eigenschaf-

ten, die mit dem Servicerequest verknüpft waren, erzeugt. Die Erzeugung des Bookmarks

erfolgt dabei analog zu der Erzeugung eines Bookmarks, der über das Formular des Book-

markaccounts definiert wurde (siehe Kap. 5.2.1) .Nachdem der Bookmark erstellt wurde,

95

wird ein XML-Dokument, welche eine Bestätigungsmeldung enthält, ausgegeben und die

Ausführung des Webservices abgeschlossen.

Nachdem in diesen Kapiteln die konkrete Realisierung der social bookmarking Erweiterung

vorgestellt wurde, werden im nächsten Kapitel verschiedene Möglichkeiten zur Weiterent-

wicklung dieser Erweiterung vorgestellt.

96

6 Ausblick

Nachdem in den vorigen Kapiteln die Realisierung der social bookmarking Erweiterung be-

schrieben wurde, werden in diesem Kapitel Erweiterungsmöglichkeiten vorgestellt, mit de-

nen die Funktionalität der Erweiterung optimiert oder erweitert werden kann.

Eine Weiterentwicklungsmöglichkeit wäre, dass Anwender nicht nur Bookmarks, sondern

auch Fotos oder sonstige Graphiken in der Erweiterung verwalten oder austauschen können.

Diese könnten auf die gleiche Art und Weise wie Bookmarks beschrieben und mit Tags kate-

gorisiert werden, so dass die Erweiterung Beziehungen zwischen den Bildern herstellen und

diese automatisiert sortieren könnte. Dadurch wäre die Erweiterung imstande, Fotoalben au-

tomatisiert zu erstellen, die zum Beispiel die Bilder einer Reise chronologisch darstellen. Die

Sortierung der Bilder innerhalb der Fotoalben könnte durch die Anwender dann beliebig

überarbeitet werden, so dass diese nicht mehr nach den Daten der Aufnahmen, sondern nach

Themengebieten geordnet dargestellt werden (z.B. nach Städten bei einer Rundreise). Außer-

dem wäre es möglich, eine Importschnittstelle zu dem Fotosharing Anbieter „Flickr“15, der

einen Exportfeed für dessen Bilder anbietet, zu realisieren. Die importierten Bilder könnten

dann innerhalb des Infoasset Brokers dargestellt werden.

Daneben wäre eine Implementierung zusätzlicher anwendungsspezifischer Schnittstellen für

die social bookmarking Erweiterung sinnvoll. So könnte zum Beispiel eine Schnittstelle zu

der Desktopmanagementsoftware „Personal Brain“, die unter anderem auch Bookmarks ver-

waltet, für die Erweiterung entwickelt werden. Eine Ansatzmöglichkeit für die Realisierung

der Schnittstelle wäre der Zugriff auf die XML-Version dieser Software. Über diese könnten

nun die Bookmarks von „Personal Brain“ ausgelesen und schließlich in der social bookmar-

king Erweiterung des Infoasset Broker angezeigt werden.

Des Weiteren wäre vorstellbar, Tags, die in der Erweiterung der Kategorisierung der Book-

marks dienen, auch anderen Assets z.B. Dokumenten des Infoasset Brokers zuzuordnen. Da-

durch könnten für jedes Asset automatisch die Bookmarks, die denselben Tags und somit

denselben Themengebieten wie dem Asset zugeordnet wurden, ermittelt werden. Diese aus-

gewählten Bookmarks könnten schließlich mit der Übersichtsseite des jeweiligen Assets ver-

knüpft werden.

Die drei Erweiterungsmöglichkeiten sollen Anregungen dafür geben, in welche Richtungen

die in dieser Arbeit vorgestellte Erweiterung weiterentwickelt werden kann. Den zukünftigen

15 http://www.flickr.com/

97

Weiterentwicklungen sollten jedoch immer die Prinzipien des social bookmarkings, also die

Verwaltung und der Austausch von Ressourcen, zugrunde gelegt werden.

98

7 Schlusswort

Aufgabe und Ziel der vorliegenden Arbeit war, die social bookmarking Erweiterung des In-

foasset Brokers zu konzipieren, zu modellieren und anschließend zu implementieren. Dabei

hat der Verfasser großen Wert darauf gelegt, die Zusammenhänge zwischen den drei Ent-

wicklungsphasen zu verdeutlichen.

Im Rahmen der Beschreibung der Implementierung konnte herausgearbeitet werden, dass alle

Kernanforderungen an die social bookmarking Erweiterung erfolgreich umgesetzt worden

sind. Wie im vorstehenden Kapitel beschrieben, hat sich gezeigt, dass es verschiedene Wei-

terentwicklungsmöglichkeiten für die Erweiterung gibt.

Momentan ermöglicht die Erweiterung den Anwendern des Infoasset Brokers, ihre Book-

marks innerhalb des Infoasset Brokers zu speichern, zu verwalten und untereinander auszu-

tauschen.

Beim Einfügen der Bookmarks werden diese mittels Tags kategorisiert, so dass sie auf ver-

schiedene Arten miteinander vernetzt und in unterschiedlichen Kontexten auf den Über-

sichtsseiten der Erweiterung dargestellt werden können. Dadurch wird es den Anwendern

ermöglicht, den Bookmarkbestand der Erweiterung effektiv und zügig zu durchsuchen. Um

den Austausch der Bookmarks zwischen den Anwendern zu unterstützen, wurden einerseits

Kopierfunktionen realisiert, mit denen die Anwender einzelne Bookmarks in ihren Bookmar-

kaccount kopieren können und andererseits Abonnementfunktionen umgesetzt, welche die

Anwender über die Änderung des Bookmarkbestands der Erweiterung automatisch informie-

ren. Des Weiteren wurden diverse Schnittstellen, mit denen die Erweiterung mit anderen

Anwendungen interagieren kann, implementiert. Somit können die Anwender die in die Er-

weiterung eingefügten Bookmarks auch in anderen Anwendungen nutzen oder von der Er-

weiterung aus über die Schnittstelle zu Del.icio.us auf externe Bookmarks zugreifen.

Abschließend kann gesagt werden, dass bei der Entwicklung der social bookmarking Erwei-

terung viele unterschiedliche Technologien verwendet und Konzepte entwickelt werden

mussten wurden, wodurch die Entwicklungsarbeit stets vielseitig und anspruchvoll war, aber

auch sehr interessant geblieben ist.

99

8 Literaturverzeichnis 8.1 Monographien

[HAM03]

HAMMERSLEY, Ben. Content Syndication with RSS. Sebastopol. O´Reilly. 2003

[LEH05]

LEHEL, Vanda; LEHMANN, Kathrin; BÜCHNER, Thomas. Einführung in den Infoasset Broker.München.2005

[MCL02]

MCLAUGHLIN, Brett. Java&XML. 2. Auflage ( Deutsche Ausgabe). Köln. O´Reilly. 2002

[BÖH04] BÖHMANN, Tilo. Management des organisatorischen Wandels- LE 2. München. 2004

8.2 Internet - Dokumente

[ABD05] ABDELNUR Alejandro. Using ROME to convert a syndication feed from one type to

another. http://wiki.java.net/bin/view/Javawsxml/Rome05TutorialFeedConverter. 2005

[ATO04]

ATOMENABLED. Atom Syndication Format – Introduction. http://www.atomenabled.org/developers/syndication/.2004

[GAR05]

GARRET Jesse James. Ajax: A New Approach to Web Applications. http://www.adaptivepath.com/publications/essays/archives/000385.php. 2005.

[GOO05] GOOGLE. Warum man Google benutzen sollte. http://www.google.de/why_use.html.2005

[LAN02]

LANGHAM, Metthew: Der ganze REST- Eine Dissertation und die Folgen. http://www.xmlmagazin.de/itr/online_artikel/show.php3?id=209&nodeid=69 .2002

[MAT05] MATTHES, NASTARAN: Der Infoasset Broker- Standardsoftware für das Wissens-management. http://www.infoasset.de/index.html. 2005

[WIN05] WINER, Dave: RSS at Harvard Law- RSS 2.0 Specification, http://blogs.law.harvard.edu/tech/rss. 2005

100

9 Anhang 9.1 Funktionsübersicht

In diesem Kapitel wird die Funktionalität der social bookmarking Erweiterung des Infoasset

Brokers erläutert. Die verschiedenen Funktionalitäten dieser Erweiterung werden zwei ver-

schiedenen Schichten zugeordnet. In der privaten Schicht, die im weiteren Bookmarkaccount

genannt wird, können die Anwender der Erweiterung Bookmarks definieren und verwalten.

Der Bookmarkaccount ist ein zugriffsbeschränkter Bereich der Erweiterung, auf den nur des-

sen jeweiliger Eigentümer zugreifen darf. Die Anwender müssen sich deshalb, bevor sie auf

ihren Bookmarkaccount zugreifen können, beim System anmelden.

Die öffentliche Schicht der Erweiterung steht dagegen allen Anwendern, also sowohl anony-

men als auch angemeldeten Anwendern, zur Verfügung. Diese Schicht stellt alle Bookmarks

des Infoasset Brokers dar und ermöglicht somit den Austausch dieser zwischen den Anwen-

dern. Des Weiteren wurde in dieser Schicht eine Schnittstelle zu dem social bookmarking

Anbieter „del.icio.us16“ realisiert, mit der die Bookmarks von Del.icio.us in die Erweiterung

importiert und in dieser dargestellt werde können.

Im Folgenden werden die Funktionen der Erweiterung beschrieben und in kurzen Demovi-

deos vorgestellt. Zum Abspielen der Demovideos kann der „Camtasia Player“, der sich auf

der beiliegenden CD befindet oder von der Camtasia-Homepage17 heruntergeladen werden

kann, verwendet werden.

9.1.1 Bookmarklog anlegen

Jeder Anwender, der einen Benutzeraccount beim Infoasset Broker hat, kann einen Book-

marklog, in dem er seine Bookmarks speichern kann, wie folgt anlegen:

1. Der Anwender öffnet sein Benutzerprofil.

(Mein profil > Meine Kontaktinformationen)

2. Der Anwender wählt die Funktion „Neues Weblog anlegen“ aus, die sich oben

ooorechts über dessen Kontaktinformationen befindet, aus.

16 http://del.icio.us/ 17http://de.techsmith.com/download/studiodefault.asp?lid=DownloadCamtasiaStudio

101

3. Durch das Ausfüllen des ausgegebenen Formulars kann der Anwender nun einen Book-

marklog anlegen. Dabei muss beachtet werden, dass im Formularfeld „Art des Weblogs“

Bookmarklog angeben wird (siehe Abbildung)

Abb. 40: Formular: "neues Weblog anlegen" ( Quelle: eigene Darstellung )

Nachdem der Anwender den Bookmarklog angelegt hat, wird der Bookmarklogtitel im rech-

ten Frame der Benutzeroberfläche des infoasset Brokers angezeigt. Durch Anklicken dieses

Titels gelangt der Anwender zu seinem Bookmarkaccount, in dem er Bookmarks in seinen

Bookmarklog einfügen und später seine Bookmarks verwalten kann.

9.1.2 Funktionen des Bookmarkaccounts

Jeder Anwender der social bookmarking Erweiterung kann in seinem persönlichen

Bookmarkaccount neue Bookmarks definieren und diese verwalten. Dafür wurden verschie-

dene Funktionalitäten, die im Folgenden vorgestellt werden, realisiert.

9.1.2.1 Bookmarks einfügen

Um einen Bookmark in den Bookmarklog einzufügen, muss der Anwender in seinem Book-

markaccount die Funktion „neuer Eintrag“ aufrufen und in dem daraufhin angezeigten For-

mular die Eigenschaften des Bookmarks definieren. Die einzelnen Formularfelder haben da-

bei folgende Bedeutung:

102

Formularfeld Bedeutung

Titel: In diesem Feld wird der Titel des Bookmarks eingegeben. (Empfeh-lung: Der Titel sollte mit dem tatsächlichen Titel der Seite, auf die der Bookmark verweist, übereinstimmen)

URL: Die URL der Seite, auf die der Bookmark verweisen soll. Tags: Tags (engl. Kennzeichnung) sind Schlüsselwörter, die den Bookmarks

bestimmte Themengebieten zuordnen. Sie dienen somit der Kategori-sierung der Bookmarks

Beschreibung: In diesem optionalen Attribut kann der Bookmark näher beschrieben werden.

Sichtbarkeit In diesem Feld kann festgelegt werden, ob der Bookmark nur in den Bookmarkaccount (=privat) oder auch in der öffentlichen Schicht (=öffentlich) angezeigt werden soll.

Tab. 6: Bedeutungen der Formularfelder ( Quelle: eigene Darstellung)

Nachdem der Anwender das Formular ausgefüllt und abgeschickt hat, wird vom System ü-

berprüft, ob die URL der Seite, auf die der Bookmark verweisen soll, gültig ist. Dies erfolgt

dadurch, dass das System eine Verbindung zu der angegebenen URL aufbaut und überprüft,

ob die Seite, auf die die eingegebene URL verweist, geladen werden kann. Deshalb ist es

notwendig, dass eine Verbindung zum Internet besteht, wenn ein Bookmark eingefügt wer-

den soll, da ansonsten die URL nicht verifiziert werden kann und eine Fehlermeldung ausge-

geben wird. Wenn die URL gültig ist, wird der Bookmark in dass System eingefügt .

9.1.2.2 Die Übersichtsseite

Unter dem Menüpunkt „Eigene Einträge“ des Bookmarkaccounts werden alle, also sowohl

öffentliche als auch private, Bookmarks und die Tags des Anwenders angezeigt. Dabei wer-

den die Bookmarks wie folgt dargestellt:

Abb. 41: Darstellung eines Bookmarks ( Quelle: eigene Darstellung)

103

In der ersten Zeile der Bookmarkdarstellung wird das Einfügedatum des Bookmarks ausge-

geben. Danach werden der Titel des Bookmarks, welcher auf die URL des Bookmarks ver-

weist, und daran anschließend die Beschreibung des Bookmarks dargestellt. Die vierte Zeile

enthält Zusatzinformationen zu den Bookmarks, also die Tags, die diesen zugeordnet wurden,

den Namen deren Eigentümer und die Anzahl der Anwender, die einen Bookmark zu der

gleichen URL wie der dargestellte Bookmark in das System eingefügt haben.

Zu beachten ist, dass die drei Informationen der letzten Zeile als Links dargestellt werden,

welchen die verschiedenen Sichten auf den Bookmarkbestand mit den jeweils dargestellten

Bookmarks vernetzen. Die Tags verweisen zu tagspezifischen Seiten, die alle Bookmarks, die

mit den angezeigten Tags verknüpft sind, enthalten. Der Benutzername verweist zu dem

Bookmarklog des Eigentümers des jeweiligen Bookmarks. Die Darstellung der Anzahl der

Anwender, die ebenfalls einen Bookmark zu derselben Ressource gespeichert haben, ist mit

einer Kommentarfunktion verknüpft. Diese Kommentarfunktion gibt die Beschreibungen

aller Bookmarks aus, die mit der gleichen Ressource wie der jeweils dargestellte Bookmark

assoziiert sind.

Des Weiteren werden jedem Bookmark eine Bearbeitungs-, eine Lösch- und eine Export-

funktion zugeordnet. Durch die Bearbeitungsfunktion können die Eigenschaften eines Book-

marks geändert werden und durch die Löschfunktion Bookmarks aus der Erweiterung ent-

fernt werden. Mittels der Exportfunktion, die der Anwender nach Belieben auf der „Einstel-

lungsseite“ des Bookmarkaccounts aktivieren oder deaktivieren kann, können einzelne

Bookmarks nach Del.icio.us exportiert werden. Dies ist aber nur möglich, wenn der Anwen-

der über einen Account bei diesem social bookmarking Anbieter verfügt.

Neben den Bookmarks werden auf dieser Übersichtseite die Tags angezeigt, die von dem

Anwender definiert worden sind. Die Tags dieser Tagliste verweisen auf die tagspezifischen

Seiten, die die Bookmarks enthalten, die dem jeweiligen Tag zugeordnet wurden. Auf diese

tagsspezifischen Seiten werden des Weiteren die verwandten Tags des ausgewählten Tags

ausgegeben. Die Verwandtschaft zwischen zwei Tags kann dabei wie folgt definiert werden:

Zwei Tags sind miteinander verwandt, wenn diese gemeinsam mindestens mit zwei Book-

marks verknüpft sind. Durch die Verwandtschaften können Tags und somit Themengebiete,

die durch diese dargestellt werden, miteinander verknüpft und dadurch die Bookmarks, die

mit diesen verknüpft sind, vernetzt werden.

104

9.1.2.3 Abonnementfunktion - die Inbox

Eine weitere Funktion, die von der social bookmarking Erweiterung angeboten wird, ist die

Abonnementfunktion. Durch diese Funktion können die Anwender bestimmen, dass sie alar-

miert werden, wenn Bookmarks eines bestimmten Typs in das System eingefügt werden.

Grundsätzlich kann sich der Anwender zwischen den folgenden drei Abonnementtypen ent-

scheiden:

Abonnementtyp Bedeutung tagspezifisches Abonne-ment

Bei einen tagspezifischen Abonnement wird der Anwen-der informiert, wenn eine Bookmark zu einen bestimmten Tag eingefügt wird.

Personenspezifische Abon-nement

Dieser Abonnementtyp informiert den Anwender, wenn eine bestimmte Person einen Bookmark definiert hat.

personen- und tagspezifi-sches Abonnement

Dieses Abonnement stellt eine Mischform der beiden oben genannten Abonnementtypen dar und informiert den An-wender, wenn eine bestimmte Person einen Bookmark mit einem bestimmten Tag in das System einfügt

Tab. 7: Die Abonnementtypen ( Quelle: eigene Darstellung)

Der Anwender kann die Abonnements auf verschiedenen Seiten der öffentlichen Schicht, die

in den folgenden Abschnitten näher erläutert werden, einrichten.

Wenn der Anwender Abonnements eingerichtet hat, werden jeweils die Bookmarks, die den

Abonnements entsprechen, in der Inbox des Bookmarkaccounts des Abonnenten angezeigt.

Diese Inbox wird einmal täglich aktualisiert, so dass in dieser nur die aktuellsten Bookmarks

der Abonnements angezeigt werden. Um Bookmarks dennoch für längere Zeit zu speichern,

können die Anwender diese durch eine Kopierfunktion, die jedem Bookmark zugeordnet ist,

in ihrem eigenen Bookmarkaccount kopieren.

Neben den aktuellen Bookmarks werden die verschiedenen Abonnements angezeigt, die je-

weils zu der Seite, auf der das Abonnement abgeschlossen wurde, verweisen. Jedem Abon-

nement wurde des Weiteren eine Löschfunktion zugeordnet, mit der der Anwender die A-

bonnements wieder entfernen kann. In der folgenden Abbildung wird die „Inbox“ des Book-

markaccounts dargestellt:

105

Abb. 42: Die Inbox ( Quelle: Eigene Darstellung )

9.1.2.4 Funktion „Tags umbenennen“

Mit dieser Funktion kann der Anwender seine Tags konsistent umbenennen. Diese Funktion

ermöglicht es, alle Bookmarks eines Tags mit einem neuen Tag verknüpfen, der beispiels-

weise diese Bookmarks besser beschreibt.

Wenn die Funktion aufgerufen wird, öffnet sich ein Formular, in dem der Anwender aus ei-

ner Auswahlliste den Tag, den er umbenennen will, auswählen und in einem Textfeld den

neuen Tag eingeben kann. Dem Textfeld ist eine Suggestionsfunktion, die die Benutzerein-

gaben erkennt und Vorschläge für deren Fertigstellung ausgibt, zugeordnet. Dadurch kann

der Anwender beispielsweise bei der Eingabe des neuen Tagnamen direkt sehen welche Tags

schon von anderen Anwendern definiert wurden und einen von diesen für die Umbenennung

seines Tags übernehmen. Nachdem der Anwender einen Tag umbenannt und das Formular

abgeschickt hat, wird der neue Name dem Objekt des Tags, der umbenannt werden soll, zu-

geordnet. Da das Tagobjekt über eine „N zu M“ Beziehung mit den Bookmarks verknüpft ist,

ist die Umbenennung des Tags über diese Bookmarks konsistent.

9.1.3 Der Bookmarklog

Der Bookmarklog bildet die Schnittstelle zwischen dem privaten Bookmarkaccount und der

öffentlichen Schicht und stellt die Bookmarks einer Person öffentlich dar. Die Startseite des

Bookmarklog enthält alle Bookmarks und Tags des jeweiligen Eigentümers. Die Elemente

der Tagliste, die sich links neben der Bookmarkliste befinden, verweisen zu den tagspezifi-

schen Seiten, auf denen die tagspezifischen Bookmarks des Eigentümers ausgegeben werden.

106

Wenn ein angemeldeter Anwender, der über einen Bookmarkaccount verfügt, einen Book-

marklog aufruft, wird jedem Bookmark eine „Kopierfunktion“ zugeordnet, mit der der An-

wender die Bookmarks in seinen eigenen Bookmarkaccount kopieren kann. Des Weiteren

befindet sich oberhalb der verschiedenen Bookmarklisten eine Abonnementfunktion, mit der

der Anwender entweder personenspezifische oder tag- und personenspezifische Abonne-

ments einrichten kann. Führt der Anwender diese Funktion auf der Startseite des Book-

marklog aus, abonniert er alle Bookmarks des Eigentümers des Bookmarklogs (personenspe-

zifisches Abonnement). Wird dagegen die Abonnementfunktion auf den tagspezifischen Sei-

ten des bookmarklogs aufgerufen, werden nur die Bookmarks des Eigentümers abonniert, die

den ausgewählten Tags zugeordnet sind (person- und tagspezifisches Abonnent).

Darüber hinaus haben die Bookmarklogs eine Content Syndication Schnittstelle, mit der die

Bookmarks der Bookmarklogs als Feeds exportiert werden können. Feeds sind XML-

Dokumente, die die Information über Bookmarks strukturiert darstellen, so dass sie von ande-

ren Programmen (z.B. Feedreadern) gelesen und verarbeitet werden können. Um die Content

Syndication dieser Schnittstelle möglichst allgemein zu gestalten, wurden vier verschiedene

Feedformate für diese realisiert:

• RSS 1.0 • RSS 0.92 • Atom 1.0 • Atom 0.3

Da jeder Anwender selbst bestimmen sollte, welche Feeds auf seinem Bookmarklog angebo-

ten werden sollen, können die Anwender über die Einstellungsseite ihres Bookmarkaccounts

die einzelnen Feeds aktivieren bzw. deaktivieren. Wenn ein Anwender einen Feed aktiviert

hat, wird auf dessen Bookmarklog die entsprechende Exportfunktion ausgegeben. Durch

Ausführen dieser Exportfunktion können die Anwender den entsprechenden Feed nun anfor-

dern und die Bookmarks des Bookmarklogs exportieren.

9.1.4 Funktionen der öffentlichen Schicht

In der öffentlichen Schicht der social bookmarking Erweiterung, auf die jeder Anwender

zugreifen kann, werden alle öffentlichen Bookmarks des Infoasset Brokers und die importier-

ten Bookmarks des social bookmarking Anbieters Del.icio.us dargestellt. Diese Übersichtsei-

ten können über den Menüpunkt „Bookmarks“ des Hauptmenüs des Infoasset Brokers aufge-

rufen werden.

107

9.1.4.1 Die öffentliche Übersichtsseite

Die Startseite der öffentlichen Übersichtsseite enthält alle Bookmarks, die erst kürzlich in

das System einfügt worden sind. Somit können sich die Anwender auf einen Blick informie-

ren, ob neue Bookmarks eingefügt worden sind oder ob sich der Bookmarkbestand der Er-

weiterung seit dem letzten Aufruf dieser Seite nicht geändert hat. Dies erleichtert den An-

wendern den Überblick über den aktuellen Bookmarkbestand des Systems über einen länge-

ren Zeitraum zu behalten. Zusätzlich werden auf der Startseite die Tags, die von vielen An-

wendern der Erweiterung genutzt werden (populäre Tags), angezeigt. Durch die Angabe der

populären Tags wird ersichtlich, für welche Themen sich die Anwender momentan interessie-

ren.

Die populären Tags verweisen jeweils auf die tagspezifischen Seiten der öffentlichen Über-

sicht. Analog zu den tagspezifischen Seiten des Bookmarkaccounts werden auf diesen Seiten

die verwandten Tags des selektierten Tags ausgegeben. Außerdem bieten die tagspezifischen

Seiten eine Funktion an, mit der die Bookmarks dieser Seite abonniert werden können.

Um auf eine bestimmte tagspezifische Seite zugreifen zu können, werden von der Erweite-

rung neben der Liste der populärsten Tags noch zwei weitere Möglichkeiten angeboten. Ei-

nerseits kann über eine Freitextsuche nach tagspezifischen Seiten gesucht und andererseits

direkt auf eine tagspezifische Seite über eine bestimmte URL, die im Folgenden dargestellt

wird, zugegriffen werden.

http://<host>:<port>/tags Abb. 43: URL der tagspezifischen Seiten ( Quelle: eigene Darstellung )

An die dargestellte URL können die Anwender den Tag anhängen, dessen Bookmarks auf der

tagspezifischen Seite ausgegeben werden sollen. Durch diese URL können somit die tagspe-

zifischen Seiten geladen werden, ohne dass die komplette Oberfläche des infoasset Brokers

geladen werden muss und sich die Anwender dann bis zur der entsprechende Seite „durchkli-

cken“ müssen. Dadurch wird ein effizienter und schneller Zugriff auf die tagspezifische

Bookmarks ermöglicht.

Des Weiteren kann der Anwender über einen Link auf eine weitere Übersichtsseite zugreifen,

auf der die externen von Del.icio.us importierten Bookmarks angezeigt werden.

Die externen Bookmark können – analog zu den internen Bookmarks - in den vier folgenden

Kontexten dargestellt werden:

108

• aktuelle Bookmarks

• tagspezifische Bookmarks

• personenspezifische Bookmarks

• personen- und tagspezifische Bookmarks

Um angemeldeten Anwendern die Möglichkeit zu geben, die externen Bookmarks in ihren

eigenen Bookmarkaccount zu kopieren, wurde auch in dieser Schicht jedem Bookmark eine

Kopierfunktion zugeordnet.

Da die externen Bookmarks über einen Feed, der von einem externen Server angefordert

wird, in den Infoasset Broker importiert werden, muss beim Aufruf der Übersichtsseite über

die externen Bookmarks eine Verbindung zum Internet bestehen.

9.1.4.2 Das Bookmarklogverzeichnis

Das Bookmarklogverzeichnis ermöglicht den Anwendern, gezielt nach den Bookmarklogs

einer bestimmten Person zu suchen. Innerhalb dieses Indexes werden, wie in der folgenden

Abbildung dargestellt wird, die Titel, die Eigentümer und die Aktualisierungsdaten der ver-

schiedenen Bookmarklogs dargestellt:

Abb. 44: Das Bookmarklogverzeichnis ( Quelle: Eigene Darstellung)

Durch die Ausgabe der Aktualisierungsdaten, nach denen die Einträge des Verzeichnisses

auch sortiert wurden, können die Anwender sofort sehen, welche Bookmarklogs erst vor kur-

zem aktualisiert wurden. Des Weiteren kann über einen alphabetischen Index auf Unterseiten

des Verzeichnisses zugegriffen werden, die die Bookmarklogtitel darstellen, die mit den aus

dem Index ausgewählten Buchstaben beginnen. Dadurch wird die Suche nach einem

109

bestimmten Bookmarklog für die Anwender erleichtert. Nachdem der Anwender einen inte-

ressanten Bookmarklog gefunden hat, kann er direkt durch das Anklicken des Titels auf den

Bookmarklog zugreifen.

9.1.5 Sonstige Funktionen

Neben den Funktionen der social bookmarking Erweiterung wurden weitere Funktionen rea-

lisiert, die diese Erweiterung mit den anderen Objekten des Infoasset Broker verknüpft.

9.1.5.1 Erweiterung der Startseite

Auf der Startseite des Infoasset Brokers werden aktuelle Mitteilungen und Nachrichten der

verschiedenen Assets angezeigt, damit der Anwender sofort sehen kann, welche Inhalte zum

Infoasset Broker neu hinzugefügt wurden bzw. überarbeitet wurden. Damit sich die Anwen-

der auf dieser Seite über neue Bookmarks, die in die Erweiterung eingefügt wurden, infor-

mieren können, wurden zu dieser Seite zwei weitere Übersichten über den Bookmarkbestand

der Erweiterung hinzugefügt. Zum einen werden die zehn aktuellsten Bookmarks und zum

anderen die populärsten Tags angezeigt.

Die aktuellen Bookmarks werden im Gegensatz zu der Bookmarkdarstellung in der Erweite-

rung in einer gekürzten Form, die lediglich aus dem Titel, dem Eigentümernamen und dem

Einfügedatum besteht, dargestellt. Dabei wurden sowohl der Titel als auch der Eigentümer-

name als Links realisiert, die zu dem URL der Bookmarks und zu dem Bookmarklog des

Bookmarkeigentümers verweisen. Sollte sich ein Anwender dennoch für die Eigenschaften

eines Bookmarks näher interessieren, kann er direkt über einen Link, der sich oberhalb der

Übersicht befindet, auf die Übersicht der öffentlichen Schicht der social bookmarking Erwei-

terung, in der die Bookmarks in vollem Umfang dargestellt werden, zugreifen.

Im Informationsblock „beliebte Tags“ werden die zehn populärsten Tags, also die Tags, die

von den meisten Anwendern der Erweiterung verwendet werden, ausgegeben. Um die Popu-

larität der verschiedenen Tags zu visualisieren, wurden diese mit verschiedenen Schriftgrö-

ßen, die in Abhängigkeit von deren Popularität variieren, dargestellt. Die angezeigten Tags

verweisen auf ihre tagspezifischen Seiten der Übersichtseite.

110

9.1.5.2 Das Bookmarklet „Quick save“

Die Funktion „Quick save“ ermöglicht den Anwendern, die Seiten des Infoasset Brokers, die

sie interessieren, in ihren Bookmarkaccount zu speichern, so dass sie auf diese von einem

zentralen Ort aus zugreifen können.

Wenn ein Anwender einen Bookmark für die Seite, auf der er sich gerade befindet, anlegen

will, muss er lediglich das Bookmarklet „Quick Save“ anklicken. Dadurch gelangt er zu dem

Einfügeformular seines Bookmarkaccounts, dessen URL-Feld mit der URL der Seite vorbe-

legt ist, die er speichern will. Nun kann der Anwender die weiteren Felder dieses Formulars

ausfüllen und somit den Bookmark zu dieser Seite definieren.

9.1.5.3 Die Funktion „Quick info“

Ebenfalls auf der rechten Seite der Oberfläche des Infoasset Brokers befindet sich der Button

„Quick Info“. Wird dieser von einem Anwender angeklickt, werden in einem „Pop-up“-

Fenster die Bookmarks angezeigt, die mit der Seite verknüpft sind, auf der sich der Anwen-

der gerade befindet. Dadurch kann der Anwender sowohl sofort sehen, welche Personen die-

se Seite gespeichert haben und diese somit als interessant erachten, als auch die Kommentare

durchlesen, die diesen Bookmarks zugeordnet wurden.

Da durch die Speicherung dieser Seiten durch „Quick Save“, Beschreibungen zu diesen hin-

zugefügt werden können, die durch die Funktion „Quick Info“ wieder abgerufen werden

können, unterstützen diese Funktionen die Zuordnung von verschiedenen Anmerkungen zu

internen Seiten und deren Austausch.

9.1.5.4 Die Webservices

Die Webservices ermöglichen den Anwendern, sowohl Bookmarks und Tags aus der Erwei-

terung zu exportieren als auch Bookmarks in diese einzufügen, ohne die Benutzeroberfläche

des Infoasset Brokers laden zu müssen. Die verschiedenen Webservices können jeweils durch

bestimmte URLs, die in der folgenden Tabelle dargestellt werden, aufgerufen werden:

111

Typ des Webservices URL des Webservices

Export von aktuellen Bookmarks

http://<host>:<port>/api/bookmarks

Export von tagspezifi-schen Bookmarks

http://<host>:<port>/api/bookmarks?tag=<tag>

Export von personen-/tagspezifischen Bookmarks

http://<host>:<port>/api/book-marks?tag=<tag>&person=<Login>

Export von populären Tags

http://<host>:<port>/api/tags

Export von personen-spezifischen Tags

http://<host>:<port>/api/tags?person=<login>

Bookmarks einfügen http://<host>:<port>/api/add?person=<Login> &passwort=<Passwort> &titel=<Title> &tag=<Tags> &url=<Url> &beschreibung=<Beschreibung> & sichtbarkeit=<privat | public>

Abb. 45: Die Webservices der Erweiterung ( Quelle: eigene Darstellung )

Es existieren drei Webservices, mit denen Bookmark exportiert werden können. Werden kei-

ne Parameter an die URL des „Bookmark Webservices“ angehängt, werden die aktuellsten

Bookmarks der Erweiterung ausgegeben. Wenn dagegen der Benutzername eines Anwenders

zu der URL hinzugefügt wird, wird ein Antwortdokument mit den Bookmarks dieses An-

wenders erzeugt. Wird zusätzlich zu dem Login noch ein bestimmter Tag an diese URL an-

gehängt, gibt der entsprechende Webservice die tagspezifischen Bookmarks einer bestimm-

ten Person aus.

Nachdem ein solcher Webservice ausgeführt wurde, werden die angeforderten Bookmarks in

ein XML-Dokument, das in der folgenden Abbildung dargestellt wird, eingebettet:

Abb. 46: Antwortdokument eines Webservices ( Quelle: eigene Darstellung )

Wie dieser Abbildung zu entnehmen ist, wird in dem posts-Tag die Art des ausgeführten

Webservices (Attribut: „Type“) und in diesem Fall das Tag (Attribut: „Tag“) angegeben, mit

112

den die Bookmarks dieses Dokumentes verknüpft sind. Wenn dagegen personenspezifische

Bookmarks angefordert wurden, wird dem posts-Tag das Attribut „Person“ zugeordnet, das

das Login der Person, dessen Bookmarks exportiert werden, enthält. Die einzelnen Book-

marks werden jeweils durch post-Tags, deren Attribute die Eigenschaften des jeweiligen

Bookmarks enthalten, in das Antwortdokument eingefügt. Dem Attribut „others“ des

„post“-Tags wird die Anzahl der Bookmarks zugeordnet, welche auf die gleichen URL ver-

weisen wie der jeweils dargestellte Bookmark. Die anderen Attribute dieses Tags sind selbst-

erklärend und benötigen deshalb keine näheren Erläuterungen.

Des Weiteren können entweder die populärsten Tags des Systems oder personenspezifische

Tags durch die entsprechenden Webservices angefordert werden. Nachdem ein solcher Web-

services ausgeführt wurde, werden die angeforderten Tags ebenfalls in einem XML-

Dokuments ausgeben, welches - analog dem Antwortdokument, das von den „Bookmark

Webservices“ erstellt wird - strukturiert ist. Dem posts- Tag wird wiederum durch das Att-

ribut „typ“ der Typ des angeforderten Webservices zugeordnet und, falls personenspezifische

Tags ausgegeben werden, diesem der Namen der Person, dessen Tags angefordert wurden,

durch das Attribut „Person“ hinzugefügt . Die verschiedenen Tags werden anschließend

durch posts-Tags in das Antwortdokument eingebettet, denen die Anzahl der Anwender, die

den jeweiligen dargestellten Tag definiert haben, durch das Attribut „Number“ zugeordnet

wird.

Schließlich ermöglicht ein weiterer Webservice den Import von Bookmarks. Da nur autori-

sierte Anwender Bookmarks in das System einfügen dürfen, müssen neben den Eigenschaf-

ten, die für die Definition eines Bookmarks benötigt werden, auch die Benutzerdaten des

Anwenders, der diesen einfügen will, beim Aufruf dieses Webservices angegeben werden.

Die Benutzerdaten werden von dem Webservice verifiziert und falls diese gültig sind, der

Bookmark entsprechend in das System eingefügt. Nachdem der Webservice erfolgreich aus-

geführt wurde, wird ein Antwortdokument mit einer Bestätigungsmeldung erzeugt und aus-

gegeben.

113

9.2 Der Featurevergleich

In den folgenden Tabellen werden die Features der social bookmarking Anwendungen, die im Rahmen der Marktstudie untersucht worden sind, dargestellt:

Features Linkroll Simpy Furl Blogmark Connectea Spurl del.icio.us Elements of the Startpage popularTags recently added Bookmarks active user Properties of a Bookmark URL official title self selected title description tags comment categories

visibility (private or public)

114

Features Linkroll Simpy Furl Blogmark Connectea Spurl del.icio.us presentation of the bookmarks within the application URL title description tags category comment owner of the Bookmark creationdate related bookmarks number of user which also save the pages Views on the Bookmarkinventory user specific sites ... which have their own URLs tag specific sites ... which have their own URLs User & tagsspecific sites

115

Features Linkroll Simpy Furl Blogmark Connectea Spurl del.icio.us Search options Free text search options

For title For descriptions For tags For users

Categoric search Archive function Functions of the application add/modify/delete bookmarks webbased subscriptions of book-marks edit tags “copy to my bookmarks”-feature

116

Features Linkroll Simpy Furl Blogmark Connectea Spurl del.icio.us Export- resp. Importinterfaces bookmarklets Exportinterfaces RSS

Feed Explorer Netscape Mozillla

Explorer Netscape Mozilla

Feeds RIS-Format Feeds

JavascriptFeeds Del.icio.us

Webservices

Import from .... Internet Explorer Netscape Mozilla Firefox Opera Delicious

Feedversion RSS 2.0 RSS 0,91/1.0/2.0 Atom 0.3

RSS 2.0 RSS 1.0 RSS 1.0 RSS 2.0 Atom

RDF

Bookmarkrecommendations via Email �

117