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.