Content Repository

Werbung
Datenbanken > Content Repository
WissenHeute Jg. 62 10/2009
Das Thema im Überblick
Ein „Content Repository for Java API“ ist eine objektorientierte Datenbank für JavaPlattformen. Die Grundlage ist der JCR-Standard (Java Content Repository), der festlegt, wie auf Content (Inhalt) unabhängig von der Speicherarchitektur von Datenbanken
effektiv zugegriffen werden kann. In diesem Beitrag werden die Funktionen eines
Content Repository am Beispiel einer Projektaktenverwaltung aus Anwendersicht beschrieben. Zudem werden deren Topologie und Merkmale anhand eines Programmierbeispiels mit Programmcode erklärt.
Content Repository – einheitlicher Zugriff
auf elektronische Daten in Datenbanken
Durch die steigenden Anforderungen der Unternehmen an die Informationstechnik wachsen die Datenmenge und die Zahl der vorliegenden
Datentypen ständig an. Dies erschwert das Auffinden und die Zusammenstellung einzelner Daten, die oft an verschiedenen Speicherorten
und auf verschiedenen Speichermedien abgelegt sind. Daraus ergeben sich Zeitverzögerungen und erhöhte Kosten, die Unternehmen
durch den Einsatz von Content Repositorys (Lager für Medieninhalte) verringern können. Content Repositorys bieten als Datenbank die
Möglichkeit, elektronisch gespeicherte Daten auf eine effiziente und schnelle Art zu finden und zu ordnen.
Einleitung
Der Autor
kommt es vor, dass im Fall eines Rechtsstreits die zur Beweissicherung notwendigen
1
Dr. Martin Bartonitz
ist verantwortlicher
Product Manager
Workflow bei der
SAPERION AG.
Die Themen IT-Compliance (Informations-
Dokumente nicht schnell gefunden werden.
technik) und IT-Governance2, die die Ein-
Durch die zahlreichen Schnittstellen zu den
haltung von Gesetzen und Regularien be-
Speicherorten entstehen zudem hohe Kosten
treffen, haben in letzter Zeit stark an
für das Zusammenstellen der einzelnen
Bedeutung gewonnen. In Unternehmen
Daten. Eine Abhilfe bieten die JCR-Stan-
steigt dadurch unter anderem die Menge
dards (Java Content Repository). Sie verein-
der Daten, die zu speichern sind, stark an.
fachen den einheitlichen Zugriff auf Content
Daher rückt der effiziente Umgang mit den
Repositorys.
Daten immer mehr in den Blickpunkt der
Unternehmen. Je nach Datentyp werden
die Informationen an unterschiedlichen
1
IT-Compliance: Beschreibt die Vorgaben zur Einhaltung
von Gesetzen und Regelungen im IT-Bereich eines
Unternehmens.
2
IT-Governance: Der Vorstand eines Unternehmens stellt
durch Führung, Organisation und Prozessgestaltung
sicher, dass der IT-Bereich die Unternehmensziele
unterstützt.
Stellen abgelegt und müssen häufig mit
großem Aufwand in einer gemeinsamen
Ansicht, z. B. einer Kunden-, Projekt- oder
Personalakte, zusammengeführt werden. So
26
WissenHeute Jg. 62 10/2009
Content
Rohdaten beschreiben, interpretiert aber
Speicherorte
auch subjektiv. Die Leser berücksichtigen
Der Begriff Content entspricht dem deut-
die Autorität und die Perspektive des Autors,
In Unternehmen werden elektronische Da-
schen Begriff Medieninhalt und wird im
wenn sie über die Vertrauenswürdigkeit des
ten auf verschiedenen Speicherorten und
Zuge der Verbreitung des WWW (World Wide
Contents entscheiden.
-medien gesichert. Die dadurch entstehen-
Web) vorrangig für die auf Webseiten verfüg-
den verteilten Daten-Ablageorte werden als
baren Inhalte verwendet. Mit Content kann
Der Content besitzt Eigentumsrechte. Auf
Informationsinseln bezeichnet. Die Möglich-
eine Homepage, ein Film, ein Bild, ein Doku-
Daten liegt üblicherweise kein Urheberrecht,
keiten zur Datenablage sind:
ment oder auch der Inhalt eines ausgefüllten
auf einem Content hingegen schon. Perso-
Formulars bezeichnet sein. Der Content
nen, die Content wie z. B. Berichte, Filme
File-Server (Dateiserver) zur Bereit-
umfasst also sämtliche Datenformate, wie
oder Musik erzeugen, werden in ihren Rech-
stellung von Dateisystemen für die
strukturierte Adressdaten, die in Datenbank-
ten verletzt, wenn andere Personen diese
„einfache“ Ablage von Office-Dateien
tabellen gespeichert werden, oder auch
Inhalte kopieren oder für ihre Arbeit verwer-
DMS/ECM (Datenbankmanagement-
Dokumente wie Rechnungen, die in einem
ten.
system/Enterprise-Content-Management)
revisionssicheren3, elektronischen Archiv
als Archive und Dokumenten-Manage-
abgelegt sind. Content kann auch eine Pro-
Content ist für ein Publikum gedacht. Con-
ment-Systeme mit einer optimierten
duktbeschreibung sein, die in einem Doku-
tent-Manager streben danach, Inhalte von
Verwaltung eingehender Dokumente und
menten-Management-System verwaltet wird.
ihrer Präsentation zu trennen. Autoren hin-
Office-Dateien
Für die Verwaltung dieser unterschiedlichen
gegen bemühen sich um ein insgesamt
WCMS (Web-Content-Management-
Daten werden verschiedene Systeme ein-
stimmiges Bild der Darstellung. Sie wollen
System) zur internen Präsentation von
gesetzt. Für die Präsentation im WWW
z. B. die Kontrolle über jeden Zeilenumbruch
Regeln und neuen Unternehmensinfor-
werden z. B. Content-Management-Systeme
oder jede Hervorhebung haben, um ihre
mationen sowie zur externen Präsenta-
verwendet.
Botschaft optimal zu präsentieren.
tion von Produktbeschreibungen, anste-
Der Content durchläuft im Regelfall den
Das sogenannte semantische Web5 besteht
ERP-Systeme7 (Enterprise Resource
Prozess von der Erstellung, der Prüfung mit
aus Maschinen, die Web-Content zu ver-
Planning), CRM-Systeme8 (Customer
Überarbeitung bis zur Freigabe mit Veröffent-
stehen scheinen. Dennoch sind es lediglich
Relationship Management) oder indivi-
lichung sowie der Archivierung und abschlie-
Agenten, die versuchen, brauchbare Infor-
duell entwickelte Legacy-Systeme9 zur
ßenden kontrollierten Löschung. Jede dieser
mationen für das menschliche Auge zu fin-
Verwaltung und Steuerung der internen
Tätigkeiten wird meist von verschiedenen
den. Der Content wird mit dem Publikum im
und externen Prozesse
Mitarbeitern durchgeführt, wodurch eine
Hinterkopf geschaffen, Daten werden nur
Web-2.0-Anwendungen wie Wikis10 und
Zugriffsrechteverwaltung erforderlich wird.
aufgenommen.
Blogs
henden Events und Erfolgsnachrichten
Weil sich der Content durch die schrittweise
Bearbeitung verändert, möchten Anwender
Ein Content hat Kontext6. Neben der Kennt-
gelegentlich die verschiedenen Versionen
nis, von wem ein Inhalt stammt, ist auch
abspeichern. In manchen Fällen ist dies
die Platzierung des Inhalts von Bedeutung.
sogar gesetzlich zwingend vorgeschrieben.
So ist es bedeutend, wie der Inhalt klassifi-
Typische Beispiele für Aufbewahrungsvor-
ziert und organisiert ist, damit er einfacher
gaben und -pflichten sind veröffentlichte
gefunden werden kann. Eine Datenbank-
AGBs (Allgemeine Geschäftsbedingungen)
tabelle ignoriert, wie die enthaltenen Daten
oder zugesicherte Produkteigenschaften.
sortiert sind, weil es die Aufgabe der Anwen-
3
revisionssicher: Informationen müssen laut steuerund handelsrechtlicher Vorgaben datenbankgestützt
archiviert werden und wieder auffindbar, nachvollziehbar, unveränderbar und verfälschungssicher sein.
4
Blog: Tagebuch oder auch Journal, das auf Webseiten
online gepflegt wird und damit meist öffentlich
einsehbar ist.
5
semantisches Web: Verknüpft Web-Content und dessen
Bedeutung computergesteuert miteinander; siehe
„Semantisches Web – den Bedeutungszusammenhang
im Netz herstellen“, WissenHeute Nr. 2/2009, S. 44 ff.
6
Kontext: In einem Zusammenhang stehende
Informationen.
7
ERP: System zur effizienten Planung der Verwendung
von Unternehmensressourcen wie Kapital und Personal;
es stehen ERP-Systeme als komplexe Anwendungssoftware und als ERP-Software zur Verfügung.
8
CRM: Maßnahmen zum Management der Kundenbeziehungen.
9
Legacy-System: Altsystem einer bewährten
Unternehmenssoftware mit hoher Komplexität, die als
überholt gilt.
10
Wiki: Hypertext-System, bei dem ein Inhalt nicht nur
gelesen, sondern auch online verändert werden kann,
umgesetzt durch die Wiki-Software (vereinfachtes
Content-Management-System).
dung ist, zusammen mit dem Autor festDer Content hat eine „Stimme“, er will
zulegen, wo genau ihre Inhalte in den Auf-
etwas kommunizieren. Wenn beispielsweise
listungen erscheinen.
jemand einen Blog4 schreibt, so will er eine
Idee oder einen Standpunkt vermitteln oder
Ein Content braucht einen Ablageort, der
jemand anderen von etwas überzeugen. Der
die Datensicherheit gewährleistet und eine
Content ist zudem persönlich. Wenn z. B.
je nach Anforderung gestaltete Oberfläche
ein Autor im Auftrag eines Unternehmens
zur Präsentation bietet. Für die Ablage sorgt
schreibt, so wird zur Sicherstellung, dass
das Content Repository, für die Präsenta-
auch die Unternehmensmeinung dargestellt
tion sind die jeweiligen Anwendungen zu-
wird, eine Freigabe benötigt. Ein Autor kann
ständig.
27
Datenbanken > Content Repository
Verwendete Abkürzungen
AGB
Allgemeine Geschäftsbedingungen
API
Application Programming
Interface
CIFS
Common Internet File System
CMIS
Content Management
Interoperability Services
CMS
Content-Management-System
CRM
Customer Relationship
Management
DMS
Datenbankmanagementsystem
ECM
Enterprise-ContentManagement
ERP
Enterprise Resource Planning
HTTP
Hypertext Transfer Protocol
IETF
Internet Engineering Task
Force
JCR
Java Content Repository
JQOM
Java Query Object Model
JSR
Java Specification Request
JTA
Java Transaction API
OASIS
Organization for the
Advancement of Structured
Information Standards
SNIA
Storage Network Industry
Association
SQL
Structured Query Language
SQL(n) Structured Query Language,
Version n
UUID
Universally Unique Identifier
WCMS
Web Content Management
System
WebDAV Web-based Distributed
Authoring and Versioning
WWW
World Wide Web
XAM
Extensible Access Method
XML
Extensible Markup Language
XPath
XML Path Language
WissenHeute Jg. 62 10/2009
verschiedenen Systeme der Datenspeicherung zu kontrollieren, die beispielsweise
nach Zukäufen weiterer Unternehmensteile
Ein großer Vorteil der JCR-Schnittstelle ist
hinzukommen. Neben der Herausforderung,
ihre Unabhängigkeit von der darunterliegen-
diese Systeme zu organisieren, besteht ein
den Speicherarchitektur. So können die
großer Aufwand darin, alle Daten zu einem
Daten in einer relationalen Datenbank, in
Geschäftsfall (Kunde oder Projekt) über nur
einem Dokumenten-Management-System,
eine Anwendung zusammenzustellen. Häufig
einem File-System oder in einem System
müssen diese Daten aus unterschiedlichen
liegen, das auf XML (Extensible Markup
Anwendungen gezogen werden. Das ist oft
Language) aufbaut. Ein Anwender kann sein
schwierig, weil auch viele E-Mail-Postein-
Repository immer seinen Anforderungen an
gänge von Mitarbeitern für einen Vorgang
Leistungsfähigkeit und Datensicherheit ent-
wichtig sind, auf die aus Gründen des Daten-
sprechend auswählen.
schutzes jedoch nicht ohne Erlaubnis der
Mitarbeiter zugegriffen werden darf.
Weil die Unternehmen durch gesetzliche
Vorgaben dazu verpflichtet sind, Belege,
Lösung JCR-Schnittstelle
Dokumente und elektronische Daten zu
archivieren, kann es nützlich sein, ein Doku-
Um das Problem der verteilt vorliegenden
menten-Management-System als Repository
Daten zu lösen, wurde im Jahr 2003 eine
zu nutzen, das Aspekte der Aufbewahrungs-
Expertengruppe aus Vertretern von Herstel-
fristen und notwendiger Löschungen für
lern und Anwendern innerhalb der Sun Java
den Datenschutz bietet. Sind die Daten von
Community gegründet. Das Ziel war es, eine
geringerer rechtlicher Bedeutung, ist ein
einheitliche Schnittstelle für den Zugriff auf
Repository von Vorteil, das auf einem File-
beliebige Informationen zu entwickeln und
System aufbaut und bei geringen Daten-
als Standard einzuführen. So sollen Anwen-
mengen eine höhere Verarbeitungsgeschwin-
dungen, die diese Schnittstelle zur Ablage
digkeit bietet – dies geht jedoch zu Lasten
und Suche von Informationen verwenden
der Datensicherheit.
(konsumieren), mit beliebigen Speichersystemen (Content Repositorys) zusammen-
Weitere Expertengruppen
arbeiten können. Die erste Version dieser
Spezifikation wurde im Jahr 2005 unter der
Weil die JCR-Schnittstelle für die Program-
Bezeichnung JSR 170 (Java Specification
miersprache Java entwickelt wurde, auf-
Request 170) freigegeben. Als Synonym
grund der hohen Funktionsanforderungen
wird auch das Kürzel JCR für Java Content
komplex und gleichzeitig für „einfache“ und
Repository verwendet. Inzwischen steht die
„netzwerkbasierte“ Anwendungen ungeeig-
Nachfolgeversion mit der Bezeichnung JSR
net ist, wurde eine weitere Expertengruppe
283, auch als JCR 2.0 bezeichnet, vor der
gegründet. Sie reichte im Herbst 2008 den
Freigabe.
ersten Entwurf für das CMIS-Protokoll
(Content Management Interoperability Ser-
Ein JCR-konformes Content Repository
vices), das mit Content Repositorys zusam-
vereint die Vorteile von File-Systemen und
menarbeitet, bei der OASIS (Organization
Directory-Services11 mit systemspezifi-
relationalen Datenbanken13, wie Transak-
schen Benutzerdaten
tionssicherheit, Skalierbarkeit, Zugriffskont-
Versioning-Management-Systeme12 zur
rollen, Datenhierarchisierung, effiziente
Verwaltung von Programmiercode
Handhabung großer Dateien, Volltextsuche,
Mail-Server mit individuellen und Grup-
Versionierung14 und einen „Data First-An-
penablagen von Geschäftskorrespondenz
satz“. Relationale Datenbanken und FileSysteme gehen von einem „Structure-First-
Je größer ein Unternehmen ist, desto mehr
Ansatz“ aus, bei dem die Datensätze erst
Informationsinseln gibt es. Vor allem Kon-
gespeichert werden können, wenn die
zerne haben einen hohen Aufwand, um die
Strukturen geklärt und angelegt sind.
28
Vorteile der JCR-Schnittstelle
11
Directory-Service: Datensammlung als Verzeichnisdienst in einer hierarchischen Datenbank mit Suchfunktionen.
12
Versioning-Management-System: System, das
Änderungen und Versionen von elektronisch
gespeicherten Daten in einem Archiv sichert.
13
Relationale Datenbank: Elektronische Datenbank nach
dem von Edgar F. Codd 1970 entwickelten
relationalem Datenbankmodell, das sich als Standard
durchgesetzt hat.
14
Versionierung: Verwaltung verschiedener Versionsstände
von Dateien.
WissenHeute Jg. 62 10/2009
Bild 1: Anwenderoberfläche einer typischen Aktendarstellung
for the Advancement of Structured Informa-
buted Authoring and Versioning), der unter
Schnittstelle für Storage-Systeme (Datei-
tion Standards) zur Standardisierung ein.
Federführung der IETF (Internet Engineering
Ablagesysteme).
Task Force) erstellt wurde. Das WebDAV ist
Anwendungsbeispiel Projektaktenverwaltung
Das JSR 170/283 beschreibt ein Anwen-
eine Erweiterung des HTTP17 (Hypertext
dungs-Programmier-Interface (API). Mit
Transfer Protocol), das die Grundlage der
CMIS hingegen wird ein Protokoll für Web-
Kommunikation für Web-Browser darstellt.
Services spezifiziert15. Mithilfe von CMIS
Mit WebDAV können auch Inhalte auf einem
Zunächst wird hier anhand einer einfachen
können daher auch Anwendungen, die nicht
Web-Server verändert werden. Weil WebDAV
Projektaktenverwaltung beschrieben, wie
mit Java entwickelt wurden, ein Content
ein Protokoll ist, gibt es inzwischen auch
sich für den Anwender das Ablegen und
Repository ansprechen. Aufgrund des tech-
Umsetzungen auf dem JCR-API, sodass
Wiederfinden von Dokumenten mithilfe eines
nischen Unterschieds der beiden Schnitt-
hierüber mittels WebDAV Dateien gesucht,
Content Repositorys bei einer Projektab-
stellen ist ein direkter Vergleich nicht mög-
gelesen und geschrieben werden können.
wicklung darstellt:
lich. Dennoch kann festgestellt werden, dass
Für den Anwender ist die Nutzung einer
der Umfang der Funktionen von CMIS ge-
WebDAV-Quelle transparent (durchschaubar),
Menschen sind in der Regel gewohnt, Dinge,
ringer ausfällt als bei JCR. Für Anwendungen
weil sie z. B. als weiteres Laufwerk in seinem
die sie in einer großen Menge wiederfinden
wie Dokumenten-Management-Systeme
Datei-Explorer erscheint. Eine Weiterent-
wollen, anhand ihrer Gemeinsamkeiten zu
reichen diese Funktionen jedoch meist aus.
wicklung dieses Standards ist unsicher, weil
gruppieren. Man spricht im Rahmen des
Es ist vorstellbar, dass CMIS als weitere
die IETF die WebDAV-Arbeitsgruppe im
Schriftgutmanagements auch von Klassifi-
Schicht in der Architektur zwischen einer
Jahr 2007 aufgelöst hat.
zierung. Hier finden sich Ablagestrukturen
bis hinunter zu Unterordnern in Akten. Diese
Anwendung und der JCR-Schnittstelle selbst
dienen könnte, sodass JCR-konforme
Ein wichtiges Filesharing-Protokoll18 ist das
Repositorys auch per CMIS angesprochen
CIFS (Common Internet File System), das
werden können. Es gibt bereits einen ersten
bei der SNIA (Storage Network Industry
16
„Open-Source-Prototypen“ mit dem Namen
Association) standardisiert und im Jahr
„Chemistry“.
2002 in der Version 1.0 freigegeben wurde.
Die SNIA beschreibt den API-Standard, der
WebDAV und CIFS
ebenfalls für Content von Bedeutung ist,
Gewohnheit wurde in Betriebssystemen mit
15
spezifizieren: Formalisiertes beschreiben und definieren
von Merkmalen.
16
Open Source: Sammlung von Software-Lizenzen mit
frei zugänglichem Quellcode.
17
HTTP: Protokoll zur Übertragung von Daten in
Computer-Netzwerken. Es wird benutzt, um Webseiten
aus dem WWW auf den lokalen Web-Browser zu laden.
18
Filesharing: Frei- und weitergeben von Dateien im
Internet.
und die XAM (Extensible Access Method),
Ein weiterer wichtiger Standard für Daten-
deren Version 1.0 im Jahr 2008 freigegeben
bankzugriffe ist WebDAV (Web-based Distri-
wurde. Die XAM definiert eine einheitliche
29
Datenbanken > Content Repository
WissenHeute Jg. 62 10/2009
aufgerufen werden, wie z. B. das Herausziehen („Auschecken“) zur Bearbeitung, um
das gleichzeitige Bearbeiten von Dokumenten durch mehrere Personen zu verhindern.
Dem Anwender steht auch die Funktion
„Favoriten“ zur Verfügung, die er sich selbst
einrichten kann. Besonders hilfreich sind
Favoriten, die auf häufig bearbeitete Akten
verweisen (Bild 2).
Weil das Suchen von Dokumenten über die
Bild 2: schnelles Springen zu Akten mit der Favoritenfunktion
Navigation aufwendig sein kann, stehen
aktenabhängige Suchmasken zur Verfügung.
Die Suche in einem Content Repository wird
in der Regel von Datenbanktechniken unterstützt und ist daher viel schneller als in
einem Dateisystem. Damit die Dokumente
auf der Grundlage von Eigenschaften (Index)
gefunden werden können, kann der Anwender bei der Ablage des Dokuments weitere
Informationen in das Repository einfügen.
Neben der Auswahl des Ablageordners im
Verzeichnisbaum (Bild 3) können weitere
Werte in einer Maske ausgewählt und eingetragen werden (Bild 4).
Bild 3: Auswahl des Ablageordners
JSR 170-kompatibel
Ein Content Repository darf sich „JSR-170kompatibel“ nennen, wenn es die mehr als
1 000 Testprozeduren des Standards ohne
Fehler besteht. Es darf sich „voll kompatibel“ nennen, wenn es auch die Tests der
optionalen Funktionen besteht. Die TestTools werden von der JSR-170-Expertengruppe zur Prüfung der Kompatibilität zur
Verfügung gestellt.
JSR 170 im Detail
Bild 4: Angabe von Werten zu den Dokument-Eigenschaften
Das Datenmodell JSR 170 ist einfach aufder Einführung von Verzeichnisbäumen be-
runter kann der Anwender durch die Unter-
gebaut und gleicht einem n-ary Tree19. Es
rücksichtigt, in denen Dateien abgelegt
ordner der Akte navigieren. Je nach markier-
ist mit einem Verzeichnisbaum für Dateien
werden. So verwundert es nicht, dass sich
tem Ordner werden in dem rechten Fenster-
eines Betriebssystems vergleichbar. Jedes
ähnliche Darstellungen inzwischen in den
bereich die darin abgelegten Dokumente
Repository besitzt mindestens einen Work-
Anwenderoberflächen aller Dokumenten-
angezeigt. Im Ordner „Kaufm.-Akte“ sind
Management-Systemen wiederfinden. Ein
beispielsweise Rechnungen von Gutachtern
Beispiel ist in Bild 1 gezeigt. Hier werden
und Fotos von technischen Abnahmen hin-
links die wichtigsten Daten einer Projektakte
terlegt. Über ein Kontextmenü können Be-
in Form von Aktendeckeln angezeigt. Da-
arbeitungsfunktionen zu jedem Dokument
30
19
n-ary Tree: Daten- oder Verzeichnisstruktur als Baumstruktur, bei der jeder Knoten n Kindknoten haben
kann. Beim binary Tree hingegen ist die Anzahl der
Kindknoten auf zwei begrenzt.
WissenHeute Jg. 62 10/2009
space, z. B. eine Ablage für Personalakten
Bild 5
Content-Repository-Funktionen im Überblick
und eine für die Finanzbuchhaltung. Ein
Workspace besitzt ein oder mehrere Items
Content Repository
(Ausprägung). Eine Ausprägung könnte z. B.
einen Aktenschrank, eine Akte oder eine
Hierarchie
Struktur
Unterakte darstellen. Ein Item kann entweIntegrität
der ein Node (Knoten) oder eine Property
Datenstrom
lesen
Datenbank
sein. Ein Node wiederum kann mehrere
Datei-System
schreiben
Transaktion
Kinder oder auch keines haben sowie keine
Abfrage
Property oder mehrere Propertys besitzen,
Zugriff
Zugriffskontrolle
in denen der Content gespeichert wird. Eine
unterschiedliche Variablentypen
Property kann kein Kind besitzen. Ein Node
Versionierung
Datensortierung
mit einem Kind steht meist für einen Ordner,
Suche nach
unstrukturierten Daten
wobei ein Node ohne Kind ein einzelnes
Dokument sein kann. [1]
Überwachung
Volltextsuche
Ein Node besitzt nur einen primären NodeTyp, der seine Charakteristik festlegt, wie
z. B. die Propertys und Kinder, die er haben
Der JCR-Standard unterscheidet mehrere
21
Transaktionen (JTA Support22, Java Trans-
darf. Darüber hinaus können Nodes ein oder
Compliance-Level . Ein JCR-System, das
action API), komplexe Suche (SQL-Query23;
mehrere sogenannte Mixin-Typen20 zuge-
zum Level 1 konform ist, bietet für die Ver-
Structured Query Language) und Funktionen
wiesen werden. Diese steuern, ob für einen
wendung von gespeicherten Daten neben
rund um Aufbewahrungszeiten (Retention
Node eine Versionierung unterstützt wird,
den Strukturen die Funktionen Query (Ab-
and Records Management). Beispiele für
ob ein Node zeitweise für einen Zugriff ge-
frage) und Read von hierarchischen Struk-
ein vollständig konformes JCR sind:
sperrt werden kann oder ihm bei der Anlage
turen, aber auch den Export der enthalte-
eine eindeutige Identifikationsnummer zu-
nen Daten. Typische Anwendungen für den
Complete ECM System
gewiesen werden soll. [1]
Level 1 sind:
Transactional Applications
Source Control Management System
Das Datenmodell ermöglicht ein einfaches
CMS Templates (Schablonen; hier als
Ablegen ohne Strukturen, indem jeder zu
fertiges Programmiergerüst zu verstehen)
In Bild 5 ist dargestellt, dass ein Content
speichernde Content in einem Node unter-
und Content Delivery
Repository mehr Funktionen bietet als eine
halb der Root-Node eines Workspace ge-
Anzeige von Portlets (Komponenten
Datenbank und ein File-System zusammen.
speichert wird. Dies entspricht der „Data-
einer Benutzeroberfläche)
First-Strategie“, in der sich der Repository-
Repository Export
Entwickler vorab keine Gedanken um ein
Generierung von Berichten
Suchen über vorab angelegte Strukturen wie
Federation-Repositorys
Nutzen JCR
Unternehmen wollen möglichst kein herstellerspezifisches Login nutzen. Zudem setzen
in einem File-System machen muss. Weil
Nodes wiederum mit anderen Nodes verlinkt
Im Level 2 kommen die Funktionen zum
sie meist mehr als ein Content Repository
werden können, kann eine Struktur, wie
Schreiben von geänderten Daten, die Voll-
ein, weil Abteilungen bisher meist frei
z. B. eine Kundenakte, viel später nachge-
text-Suche, der Import und auch die Zu-
waren in der Wahl ihrer Anwendungen oder
zogen werden. Es wird dann, ähnlich wie
griffskontrolle hinzu. Typische Anwendungen
zugekaufte Unternehmensteile schon ein
bei Web-Suchmaschinen, über den Volltext
für Level 2 sind:
anderes Content Repository einsetzten. In
der Vergangenheit musste viel investiert
gesucht. [1]
Entry Level Content Management
Im JCR-Modell kann nach aktuellen Inhalten
Entry Level Document Management
gesucht werden oder auch nach Inhalten, die
Workflow
zuvor modifiziert wurden. Sind die Struktu-
Collaboration (Zusammenarbeit)
ren des Repository im Voraus klar und der
Content Aggregation (Content Warehouse)
werden, damit diese Anwendungen zusam-
20
Mixins: Sie stellen zusätzliche Attribute eines Node
dar, wodurch der Node-Typ erweiterbar wird.
21
Compliance-Level: Maß für die Einhaltung von
Regelungen, hier auf die Konformität zum JCRStandard bezogen.
22
JTA: Interface zur Kontrolle von Datenmanipulationen
in einer Datenbank.
23
SQL: Datenbanksprache in relationalen Datenbanken.
Content soll auch nur nach diesen Strukturen für ein effizienteres Wiederfinden abge-
Optionale Funktionen (Advanced) sind die
legt werden, kann nach der „Structure-First-
Versionierung, das Sperren von Objekten
Strategie“ verfahren werden. [1]
(Locking), die Beobachtung (Events), die
31
Datenbanken > Content Repository
Bild 6
WissenHeute Jg. 62 10/2009
JCR für das jeweils beste Repository, das
Aufbau eines Content Repositorys
beste Tool und die beste Anwendung entscheiden.
[root]
Hersteller von CMS mussten bisher ihr
wiki:encyclopedia
eigenes Repository entwickeln und pflegen,
was viel Programmierarbeit verursachte. Nun
wiki:entry[2]
können sie die Entwicklung von Content
Repositorys spezialisierten Herstellern über-
wiki:entry[1]
wiki:title
wiki:title
wiki:content
lassen und sich auf die Entwicklung der
eigenen CMS-Anwendung konzentrieren.
wiki:content
wiki:category
rose
...
wiki:category
...
shake
Programmierbeispiele
poet
Grundlegendes
rose
plant
flower
Dieser Absatz ist vorrangig an die Programmier-Interessierten gerichtet und zeigt die
Nutzung einzelner Funktionen der JCR-API
am Beispiel einer Wiki-Anwendung. In Bild 6
Kasten 1
Programmierbeispiel 1
ist anhand dieses Beispiels der Aufbau eines
Punkt 1
Repository r = new TransientRepository();
Session session = r.login(new SimpleCredentials(„userid“, „“.toCharArray()));
Workspace ws = session.getWorkspace();
Node rn = session.getRootNode();
Punkt 2
ws.getNamespaceRegistry().registerNamespace
(„wiki“, „http://www.myNameSpace.net/wiki/1.0“);
Content Repositorys dargestellt.
Der Root-Node enthält den Node „encyclopedia“, der wiederum die beiden KinderNodes „entry[1]“ und „entry[2]“ besitzt. Die
Kinder-Nodes enthalten Daten wie „title“,
„category“ und „content“ in Propertys (im
Bild sind dies die Kästchen), wodurch der
Wiki „entry“ beschrieben wird. Dadurch,
Punkt 3
Node encyclopedia = rn.addNode(„wiki:encyclopedia“);
Node p = encyclopedia.addNode(„wiki:entry“);
p.setProperty(„wiki:title“, new StringValue(„rose“));
p.setProperty(„wiki:content“, new
StringValue(„A rose is a flowering shrub.“));
p.setProperty(„wiki:category“, new Value[ ]{
new StringValue(„flower“),
new StringValue(„plant“),
new StringValue(„rose“)});
Node n = encyclopedia.addNode(„wiki:entry“);
n.setProperty(„wiki:title“, new StringValue(„Shakespeare“));
n.setProperty(„wiki:content“, new
StringValue(„A famous poet who likes roses.“));
n.setProperty(„wiki:category“, new StringValue(„poet“));
session.save();
dass die Kinder-Nodes keine weiteren Kinder
besitzen, ergibt sich in dem Beispiel eine
sehr flache Struktur.
Um die Objekte wie in Bild 6 anzulegen,
müssen Operationen auf dem Repository
über das API mit einem Programmiercode
(Kasten 1, Punkt 1) ausgeführt werden.
Nachdem in der Programmierung die Objekte
„Workspace“ und „RootNode“ für weitere
Operationen verfügbar sind, wird noch der
Namespace24 „wiki“ festgelegt, damit die
Namensgebungen nicht mit anderen Projekten kollidieren (Kasten 1, Punkt 2).
Schreiben von Content
menarbeiten können. Mit JSR 170 entsteht
schen API erlernen müssen. Sobald sie mit
Im Anschluss daran können die Nodes mit
eine Investitionssicherheit, weil die gleiche
JSR 170 vertraut sind, können sie mit allen
ihrem Content in das Repository geschrieben
Anwendung mit allen Content Repositorys
JSR-konformen Repositorys arbeiten. In der
werden (Kasten 1, Punkt 3). Wie im Pro-
zusammenarbeiten kann.
Vergangenheit mussten sie sich zwischen
einem guten Repository und einem eher
Ein weiterer Vorteil von JSR 170 ist, dass die
schlechten Entwicklungswerkzeug oder um-
Software-Entwickler keine herstellerspezifi-
gekehrt entscheiden. Sie können sich mit
32
24
Namespace: Bezeichnet einen Bereich mit frei wählbarem Namen (Namensraum). So wird den Namen, die
in ihm enthalten sind, bereichsübergreifend eine
Eindeutigkeit verschafft.
WissenHeute Jg. 62 10/2009
grammierbeispiel 1 für den Wiki-Eintrag
Kasten 2
Programmierbeispiel 2
„category“ zu erkennen ist, können Propertys
auch sogenannte Multi-Value-Felder mit den
String Values „rose“, „plant“ und „flower“
Punkt 1
Node encyclopedia = rn.getNode(„wiki:encyclopedia“);
NodeIterator entries = encyclopedia.getNodes(„wiki:entry“);
sein.
while (entries.hasNext()) {
Zugriff auf Content
Auf den Content wird entweder direkt über
Node entry = entries.nextNode();
die eindeutige Nummer eines Nodes (UUID
= Universally Unique Identifier) oder, wie im
Programmierbeispiel 2 gezeigt ist, traversierend25 zugegriffen. Das Traversieren kann
von jeder Stelle im Baum aus geschehen.
System.out.println(entry.getName());
System.out.println(entry.getProperty(„wiki:title“).getString());
System.out.println(entry.getProperty(„wiki:content“).getString());
System.out.println(entry.getPath());
}
Hier startet es vom obersten Node „encyclopedia“ (Kasten 2, Punkt 1). Im Programmierbeispiel ist die Suche nach allen WikiEinträgen mit dem Wort „rose“ im Titel
dargestellt. Die Suche ist in der JCR-Spezifikation mittels XPATH (XML Path Language)
vorgesehen, weil die JCR-Strukturen denen
von XML sehr ähnlich und damit gut geeig-
Punkt 2
QueryManager qm = ws.getQueryManager();
Query q = qm.createQuery
(„//wiki:encyclopedia/wiki:entry[@wiki:title = ‚rose‘]“,
Query.XPATH);
QueryResult result = q.execute();
NodeIterator it = result.getNodes();
net sind. Gesucht wird mithilfe des QueryManager-Objekts (Kasten 2, Punkt 2).
while (it.hasNext()) {
Node n = it.nextNode();
Migration von JCR-Implementierungen
Die JCR-Spezifikation berücksichtigt auch
Funktionen zur Portierbarkeit26 von JCRImplementierungen, sodass der Content von
kompatiblen Systemen herstellerübergreifend mit nur wenigen Zeilen Programmiercode übertragen werden kann. Sie werden
jeweils über XML-Dateien importiert und
exportiert (Kasten 2, Punkt 3).
Speichern von binären Daten
Im Beispiel wurde bisher nur Content vom
Typ String27 genutzt. Das JCR kennt weitere
Typen wie Date28, Long Integer29 oder
System.out.println(n.getName());
System.out.println(n.getProperty(„wiki:title“).getString());
System.out.println(n.getProperty(„wiki:content“).getString());
}
Punkt 3
File outputFile = new File(„systemview.xml“);
FileOutputStream out = new FileOutputStream(outputFile);
session.exportSystemView(„/wiki:encyclopedia“, out, false, false);
Und der Import ist ebenso kurz:
File inputFile = new File(„systemview.xml“);
FileInputStream in = new FileInputStream(inputFile);
session.importXML
(„/“, in, ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW);
session.save();
Boolean30. Es können aber auch binäre
Daten gespeichert werden. Im Beispiel wird
dargestellt, wie die Datei „rose.gif“ als Pro-
punkt im vorhandenen Node gespeichert
onen wie Arbeitsanweisungen enthält. In
perty mit Informationen zum Änderungszeit-
wird (Kasten 3, Punkt 1).
Content Repositorys wird die Nachweisbarkeit durch die Versionierung gesichert.
25
Traversierung: Suchverfahren mit einem eindeutigen
Ausgangs- und Zielpunkt, bei dem die dazwischen
liegenden Knoten im Verzeichnisbaum durchlaufen
werden.
Versionierung
In vielen Anwendungen muss sichergestellt
Die Versionierung wird mittels weiterer Nodes
und nachgewiesen werden, dass frühere
umgesetzt (Bild 7). Sobald einem Node der
26
portieren: Übertragen von Hardware-Plattformen auf
andere Systeme oder Änderungen von Software, auch
als Kombination von Hard- und Software möglich.
Versionen von Dokumenten weiterhin zu-
Mixin-Typ „mixin:versionable“ zugewiesen
gänglich sind. Dies gilt speziell für die
wurde, wird ihm bei der Anlage automatisch
27
String: Variablentyp für Zeichenketten mit variabler
Länge.
Pharmazie oder auch in technisch kritischen
der Version-History-Node (VH) angehängt,
28
Date: Variablentyp für Datumsangaben.
Bereichen wie der Flugzeugindustrie. Ein
gefolgt von dem Version-Root-Node (Vroot)
und dem ersten Version-Node (Va). Wird eine
neue Version abgelegt, so wird ein weiterer
29
Integer: Variablentyp für ganzzahlige Werte.
weiteres Beispiel ist ein Qualitätsmanage-
30
Boolean: Variablentyp für logische Werte.
ment-Handbuch, das wichtige Informati-
33
Datenbanken > Content Repository
Kasten 3
WissenHeute Jg. 62 10/2009
JSR-283-Spezifikation
Programmierbeispiel 3
Punkt 1
File file = new File(„rose.gif“);
MimeTable mt = MimeTable.getDefaultTable();
String mimeType = mt.getContentTypeFor(file.getName());
if (mimeType == null) mimeType = „application/octet-stream“;
Die kurz vor der Freigabe stehende JSR-283Spezifikation, die auch als JCR 2.0 bezeichnet wird, führt die Spezifikation der JSR 170
mit einigen weiteren Funktionen fort. Dazu
gehören unter anderem eine erweiterte Zu-
Node fileNode = roseMode.addNode(file.getName(), „nt:file“);
Node resNode = fileNode.addNode(„jcr:content“, „nt:resource“);
resNode.setProperty(„jcr:mimeType“, mimeType);
resNode.setProperty(„jcr:encoding“, „“);
resNode.setProperty(„jcr:data“, new FileInputStream(file));
Calendar lastModified = Calendar.getInstance();
lastModified.setTimeInMillis(file.lastModified());
resNode.setProperty(„jcr:lastModified“, lastModified);
Punkt 2
n.checkout();
n.setProperty(„wiki:content“, „Updated content for the entry.“);
n.save(); n.checkin();
Punkt 3
VersionHistory vh = n.getVersionHistory();
VersionIterator vi = vh.getAllVersions();
vi.skip(1);
while (vi.hasNext()) {
Version v = vi.nextVersion();
NodeIterator ni = v.getNodes();
while (ni.hasNext()) {
Node nv = ni.nextNode();
System.out.println(„Version: „ +
v.getCreated().getTime());
System.out.println(nv.getProperty(„wiki:title“).getString());
System.out.println(nv.getProperty(„wiki:content“).getString());
}
}
griffskontrolle und ein erweitertes Versionsmanagement. Weitere Bestandteile sind das
Journaling31 von Events, Aktivitäten für Workflows und Funktionen zum LebenszyklusManagement. Es wird jedoch nicht mehr
mittels XPATH sondern mit SQL232 und
JQOM (Java Query Object Model) gesucht.
Ausblick
Im Zusammenhang mit JCR wird häufig von
einer Revolutionierung für Datenbankenfunktionen gesprochen, die das Einbinden
von neuen, Content-verwaltenden Anwendungen erleichtern soll. Der Ansatz für den
JCR-Standard, die Möglichkeiten von relationalen Datenbanken und strukturierten
File-Systemen zu vereinen und mit weiteren
nützlichen Funktionen auszustatten, ist ein
weiterer wichtiger Schritt dorthin. Dieser
Standard muss sich nun an der Marktakzeptanz messen lassen, also vorrangig an der
Einfügung entsprechender Schnittstellen
auf den vorhandenen Content-ManagementSystemen der Hersteller. Der Markt zeigt,
dass JCR auf einem guten Weg dorthin ist.
(Gl)
Bild 7
Übersicht zur Versionierung
Version-Node (Vb, Vc) an den Version-Histo-
Internetadressen und Literaturhinweise
ry-Node gehängt. Die Version-Nodes erhalten
[1]
www.wikipedia.de (entnommen 27.07.2009)
[2]
www.camunda.com/know-how/publikationen/
JavaMagazin0307_JCR_Jackrabbit_Beck_Ruecker.
pdf (entnommen 23.07.2009)
[3]
www.zdnet.de/itmanager/
tech/0,39023442,2128085-1,00.htm
(entnommen 23.07.2009)
Die zu nutzenden Methoden für das Ändern
[4]
www.jcp.org/en/jsr/detail?id=170
(entnommen 23.07.2009)
des Contents eines Node „n“ sind in Kas-
[5]
www.jcp.org/en/jsr/detail?id=283
(entnommen 23.07.2009)
[6]
www.oasis-open.org (entnommen 23.07.2009)
[7]
http://it-republik.de/jaxenter/artikel/Java-ContentRepository-meets-Document-ManagementSystems-1905.html (entnommen 23.07.2009)
[8]
http://nuovodoc.com/analysis/ODMA-Analysis.htm
(entnommen 23.07.2009)
[9]
Daniel Hinderink: WCMS 2017 – nicht ohne
Standards; Ein Ausblick auf die Zukunft von Web
Content Management Systemen. In: Magazin t3n
OPEN SOURCE WEB, Nr. 8/2008.
eine Referenz, die von dem VorgängerversionNode kommt. Es ist also möglich, den Con-
VH
tent einer älteren Version zu laden, zu verändern und als neue Version abzuspeichern.
Vroot
Va
Vb
Vc
ten 3, Punkt 2 dargestellt.
VH
Version-History-Node
Vroot
Version-Root-Node
V(a – c) Version-Nodes (a – c)
Der Programmiercode in Kasten 3, Punkt 3
zeigt, wie in dem Versionierungsbaum nach
vorhergehenden Versionen gesucht werden
31
Journaling: Das Erfassen von Änderungen in einer
Datei, bevor sie abgespeichert wird. Es gewährleistet
damit jederzeit die Rekonstruktion von Dateien.
kann. Der Version-Root-Node wird über-
32
SQL2: Auch als SQL-92 bezeichnet; die Definition der
Datenbanksprache in relationalen Datenbanken; wurde
1992 als Standard veröffentlicht.
onen enthält und nur als Vorgänger für den
34
sprungen, weil er keine weiteren Informatiersten Version-Node dient.
[10] David Nüscheler; Michael Marth: Was ist Content?
In: Javamagazin, September 2008.
Herunterladen