Ein Gliederungseditor Ein Gliederungseditor als replizierbares

Werbung
Umsetzungeiner
einerverteilten
verteiltenAnwendung
Anwendungmit
mitder
der
Umsetzung
dokumentenorientiertenDatenbank
DatenbankCouchDB
CouchDB
dokumentenorientierten
EinGliederungseditor
Gliederungseditorals
alsreplizierbares
replizierbaresVerteiltes
VerteiltesSystem
System
Ein
Lena
Herrmann,
Dipl.-Inform.
(FH)
Lena
Herrmann,
Dipl.-Inform.
(FH)
Prof.
Stefan
Edlich
Prof.
Dr.Dr.
Stefan
Edlich
Ein
EinGliederungseditor
Gliederungseditor
Ein
EinVerteiltes
VerteiltesSystem
System
Ei nEiGliederungseditor
oder
Outliner
istist
eine
n Gliederungseditor
oder
Outliner
eine
Mischung
aus
einer
Freiform-Datenbank
und
Mischung
aus
einer
Freiform-Datenbank
und
einem
Texteditor.
MitMit
ihm
können
z. B.
Gedanken
einem
Texteditor.
ihm
können
z. B.
Gedanken
oder
Konzepte
hierarchisch
geordnet
aufgeoder
Konzepte
hierarchisch
geordnet
aufgeschrieben
werden.
DerDer
Inhalt
eines
Dokuments
schrieben
werden.
Inhalt
eines
Dokuments
wird
alsals
Baumstruktur
dargestellt.
DieDie
Zeilen
wird
Baumstruktur
dargestellt.
Zeilen
können
bearbeitet,
einund
ausgeklappt,
gelöscht
können
bearbeitet,
einund
ausgeklappt,
gelöscht
und
verschoben
werden.
und
verschoben
werden.
Allgemein
bezeichnet
einein
Verteiltes
System
eine
Allgemein
bezeichnet
Verteiltes
System
eine
Ansammlung
unabhängiger
Computer,
diedie
den
Ansammlung
unabhängiger
Computer,
den
BenutzerInnen
wiewie
einein
einzelnes
System
erscheinen.
BenutzerInnen
einzelnes
System
erscheinen.
FürFür
diese
Arbeit
wurde
diedie
Open-Source-Datenbank
diese
Arbeit
wurde
Open-Source-Datenbank
CouchDB
verwendet.
CouchDB
wird
aufauf
jedem
RechCouchDB
verwendet.
CouchDB
wird
jedem
Rechnerner
installiert,
aufauf
dem
diedie
Anwendung
laufen
soll.
installiert,
dem
Anwendung
laufen
soll.
DieDie
Anwendung
istist
dadurch
offloffl
ineine
benutzbar.
Anwendung
dadurch
benutzbar.
CouchDBs
eingebaute
Master-Master-Replikation
CouchDBs
eingebaute
Master-Master-Replikation
ermöglicht
verteiltes
Arbeiten
über
Netzwerke
ermöglicht
verteiltes
Arbeiten
über
Netzwerke
hinweg,
selbst
wenn
diedie
Benutzer
zwischenzeitlich
vom
Internet
getrennt
sind.
hinweg,
selbst
wenn
Benutzer
zwischenzeitlich
vom
Internet
getrennt
sind.
Zwei
Instanzen
derder
Datenbank
können
sich
untereinander
selbstständig
in in
synZwei
Instanzen
Datenbank
können
sich
untereinander
selbstständig
synchronem
Zustand
halten,
sofern
hinhin
und
wieder
eine
Internetverbindung
besteht.
chronem
Zustand
halten,
sofern
und
wieder
eine
Internetverbindung
besteht.
DerDer
in in
dieser
Arbeit
umgesetzte
Gliederungseditor
dieser
Arbeit
umgesetzte
Gliederungseditor
istist
mehrbenutzerfähig
- d.h.
mehrere
Benutzermehrbenutzerfähig
- d.h.
mehrere
BenutzerInnen
können
dasselbe
Outline
gemeinschaftlich
Innen
können
dasselbe
Outline
gemeinschaftlich
bearbeiten.
bearbeiten.
Bestehende
BestehendeAnsätze
Ansätzemit
mittraditioneller
traditionellerArchitektur
Architektur
Es Es
istist
mühsam,
einein
Dokument
zurzur
mühsam,
Dokument
Bearbeitung
perper
Email
hinund
Bearbeitung
Email
hinund
herzuschicken.
Es Es
gibt
bereits
herzuschicken.
gibt
bereits
einige
Lösungen,
mitmit
denen
einige
Lösungen,
denen
BenutzerInnen
meist
in in
Echtzeit
BenutzerInnen
meist
Echtzeit
gemeinsam
anan
einem
Dokument
gemeinsam
einem
Dokument
arbeiten
können.
AllAll
diese
arbeiten
können.
diese
Anwendungen
laufen
aufauf
WebAnwendungen
laufen
Webservern,
aufauf
diedie
von
den
Endservern,
von
den
Endgeräten
zugegriff
enen
wird.
geräten
zugegriff
wird.
Das
Backend
einer
normalen
Webanwendung
Das
Backend
einer
normalen
Webanwendung
wird
aufauf
einem
Webserver
betrieben.
DieDie
Datenwird
einem
Webserver
betrieben.
Datenbank
dient
hier
nurnur
zum
Speichern
derder
Daten.
bank
dient
hier
zum
Speichern
Daten.
Clientseitig
ausgeführtes
Javascript
dient
meist
Clientseitig
ausgeführtes
Javascript
dient
meist
nurnur
zurzur
Verbesserung
derder
User
Experience.
Verbesserung
User
Experience.
FürFür
diedie
Anwendungslogik
istist
derder
Einsatz
einer
Anwendungslogik
Einsatz
einer
Middleware
nötig,
diedie
zBzB
in in
Ruby
oder
PHP
Middleware
nötig,
Ruby
oder
PHP
geschrieben
ist.ist.
DaDa
diedie
Dokumente
aufauf
dem
geschrieben
Dokumente
dem
zentralen
Server
liegen,
sind
siesie
nurnur
beibei
zentralen
Server
liegen,
sind
bestehender
Internetverbindung
erreichbar.
bestehender
Internetverbindung
erreichbar.
Application
Javascript
Application
Javascript
Javascript
Framework
Frontend
Javascript
Framework
Frontend
(jQuery)
(jQuery)
Backend
Backend
Application
Application
(Ruby,
PHP,
etc)etc)
(Ruby,
PHP,
Database
(SQL)
Database
(SQL)
Umsetzung
Umsetzungmit
mitCouchDB
CouchDB
Synchronisierung
Synchronisierungdurch
durchReplikation
Replikation
Architektur
Architekturohne
ohneMiddleware
Middleware
DerDer
Gliederungseditor
läuft
aufauf
derder
lokalen
CouchDB-Instanz
imim
Browser
und
istist
Gliederungseditor
läuft
lokalen
CouchDB-Instanz
Browser
und
dadurch
offloffl
ineine
benutzbar.
Instanzen
können
über
einein
Intraoder
das
Internet
dadurch
benutzbar.
Instanzen
können
über
Intraoder
das
Internet
miteinander
bekannt
gemacht
werden.
Wenn
eine
Verbindung
zwischen
zwei
miteinander
bekannt
gemacht
werden.
Wenn
eine
Verbindung
zwischen
zwei
Instanzen
besteht,
werden
ihre
Dokumente
automatisch
wechselseitig
repliziert,
Instanzen
besteht,
werden
ihre
Dokumente
automatisch
wechselseitig
repliziert,
soso
dass
siesie
nach
dem
Replikationsvorgang
aufauf
dem
gleichen
Stand
sind.
Sobald
dass
nach
dem
Replikationsvorgang
dem
gleichen
Stand
sind.
Sobald
einein
Dokument
bearbeitet
wurde,
wird
seine
neue
Version
anan
diedie
Instanzen
weiterDokument
bearbeitet
wurde,
wird
seine
neue
Version
Instanzen
weiterverbreitet, die gerade online sind. Ist die Internetverbindung getrennt, verzögert
verbreitet, die gerade online sind. Ist die Internetverbindung getrennt, verzögert
sich dies entsprechend. Die Anwensich dies entsprechend. Die Anwendung benachrichtigt die Benutzerin,
dung benachrichtigt die Benutzerin,
wenn neue Änderungen vorliegen.
wenn neue Änderungen vorliegen.
DieDie
Anwendungslogik
istist
in in
Javascript
geschrieben.
Application Javascript
Anwendungslogik
Javascript
geschrieben.
Application Javascript
SieSie
wird
zusammen
mitmit
ihren
Daten,
also
den
Do-Dowird
zusammen
ihren
Daten,
also
den
JS Router/Controller
kumenten
des
Gliederungseditors,
in in
einer
lokalen
JS Router/Controller
kumenten
des
Gliederungseditors,
einer
lokalen
(Sammy.js)
CouchDB-Datenbank
gespeichert.
CouchDB
hat
(Sammy.js)
CouchDB-Datenbank gespeichert. CouchDB hat
Frontend
einen
HTTP-Server
eingebaut
und
kann
darüber
Framework
Frontend DOMDOM
einen HTTP-Server eingebaut und kann darüber
Framework
HTML,
CSS
und
Javascript
ausliefern,
das
dann
im
(jQuery)
HTML, CSS und Javascript ausliefern, das dann im
(jQuery)
Browser ausgeführt wird. Die Implementierung und
Browser ausgeführt wird. Die Implementierung und
Database
Backend
Wartung einer zusätzlichen Middleware kann
Database
Backend (REST, CouchDB)
Wartung einer zusätzlichen Middleware kann
(REST, CouchDB)
dadurch eingespart werden. Die BenutzerInnen
dadurch eingespart werden. Die BenutzerInnen
haben jederzeit volle Kontrolle über ihre Daten.
haben jederzeit volle Kontrolle über ihre Daten.
Konfl
iktbearbeitung
in
der
Anwendung
Konfliktbearbeitung in der Anwendung
Eine große Herausforderung ist der Umgang mit den Konflikten, die durch SynchroEine große Herausforderung ist der Umgang mit den Konflikten, die durch Synchronisierung nach Offline-Benutzung entstehen können. Bearbeiten beispielsweise
nisierung nach Offline-Benutzung entstehen können. Bearbeiten beispielsweise
zwei BenutzerInnen das gleiche Dokument, während sie offline sind, werden nach
zwei BenutzerInnen das gleiche Dokument, während sie offline sind, werden nach
einem Replikationsvorgang veränderte oder neu dazugekommene Zeilen von der
einem Replikationsvorgang veränderte oder neu dazugekommene Zeilen von der
Anwendung selbstständig eingefügt oder aktualisiert.
Anwendung selbstständig eingefügt oder aktualisiert.
Wurde die gleiche Zeile von beiden BenutzerInnen verändert, speichert CouchDB
Wurde die gleiche Zeile von beiden BenutzerInnen verändert, speichert CouchDB
die beiden Versionen der Zeile. Die Zeile wird als konflikthaft markiert und die Bedie beiden Versionen der Zeile. Die Zeile wird als konflikthaft markiert und die BenutzerInnen werden über das Problem benachrichtigt. Nebenstehender ScreensnutzerInnen werden über das Problem benachrichtigt. Nebenstehender Screenshot ermöglicht es einer Benutzerin, sich für eine Version der Zeile zu entscheiden.
hot
ermöglicht
es
einer
Benutzerin,
sich
für
eine
Version
der
Zeile
zu
entscheiden.
Das Ergebnis wird wiederum sofort zu der anderen Instanz der Anwendung
Das Ergebnis wird wiederum sofort zu der anderen Instanz der Anwendung
repliziert.
repliziert.
Upstream Agile GmbH
Upstream Agile GmbH
http://upstre.am/
http://upstre.am/
Herunterladen