Mittwoch, 1. April 2009

Case Study zu einer erfolgreichen Integration beider Content Management Systeme

Case Study: Alfresco meets TYPO3

Die Idee, redaktionelle Inhalte nicht mehrfach zu pflegen, ist nicht neu. In diesem Artikel wird die Umsetzung des Single Source Publishing Konzeptes auf Basis von Alfresco als führende Content Quelle und TYPO3 als eines der möglichen Ausgabemedien beschrieben.

Ursprünglich waren es zwei Projekte, die bei den Berliner Philharmonikern anstanden: Integration einer Dokumentenmanagementlösung und der Relaunch des Internetauftrittes www.berliner-philharmoniker.de. Als festgestellt wurde, dass es große Überschneidungen bei den zu verwaltenden Inhalten gibt, wurde die Idee einer Single Source Publishing Lösung geboren.

Ausgangssituation

Bei den Berliner Philharmonikern werden Texte im Rahmen eines redaktionellen Prozesses erstellt und redigiert, wobei immer interne als auch externe Personen beteiligt sind. Diese Texte werden in Print-Publikationen und im Web gleichermaßen verwendet und durchlaufen hier weitere Korrekturläufe. Dabei werden Inhalte geschaffen, welche z.T. eine sehr hohe Lebensdauer haben und  auch in mehreren Jahren noch wiederverwendet werden sollen.

Quell- und Zielmedien

Quellmedien sind primär Texte mit sehr unterschiedlichen Inhalten, wie z.B. Magazinartikel, Biografien, Werkstexte, Gesangstexte oder Pressemeldungen, welche als "Open Documents" abgelegt werden. Zusätzlich werden XML-Dateien für den Konzertkalender verwaltet.

Die Zielmedien sind Print-Publikationen, zumeist erstellt mit QuarkXPress, und Onlinemedien wobei dies derzeit die Webseite der Berliner Philharmoniker und die Digital Concert Hall (DCH) sind.

Quell- und Zielmedien (Alfresco, TYPO3)
Quell- und Zielmedien

Alfresco als Quelle wiederverwendbarer Inhalte

Die Abteilung "Kommunikation" der Berliner Philharmoniker verwaltet eine große Menge von Dokumenten und Inhalten, die in verschiedenen Formen und Medien Verwendung finden. Um diesen Prozess zu unterstützen wurde Alfresco als Dokumenten­management­sytsem eingeführt.

Definition eigener Dokumenttypen

Um die verschiedenen Inhalte zu klassifizieren und schnell wiederzufinden, wurde eine Reihe eigener Dokumenttypen mit z.T. individuell erweiterten Metadaten definiert. Alfresco bietet hierfür hervorragende Möglichkeiten über die Erweiterung des Content Models. Einige konkrete Beispiele hierfür sind:

Dokumenttyp Zusätzliche Metadaten Format
concert subtitle, editor, relatedTo, concertId XML
biography subtitle, editor, relatedTo ODT
program subtitle, editor, relatedTo ODT
songtext subtitle, editor, relatedTo ODT

Da Alfresco bei der Definition eigener Dokumenttypen auch Vererbungsstrukturen zulässt, können allgemeingültige Metadatenerweiterungen auch über einen abstrakten Dokuementtyp generalisiert werden:

Metadatenerweiterung
Metadatenerweiterung

Aspekte zur Publikationssteuerung

Zusätzlich zur Erweiterung des Content Modells bietet Alfresco auch die Möglichkeit einer individuellen Aspektierung. Zur Steuerung der Publizierung der Dokumente in die verschiedenen Medien wurde für jedes Zielmedium ein Aspekt hinzugefügt.

Aspekt Bedeutung
dchPublishable Dokument wird für die Digital Concert Hall publiziert
websitePublishable Dokument wird für die Website publiziert

Zugriff über Webscripts

Alfresco bietet die Möglichkeit, über REST-konforme Web­scrips, die eine leichtgewichtige Alternative zu herkömmlichen Webservices sind, auf das Content Repository zuzugreifen.

Für die hier beschriebenen Publishing-Mechanismen wurde eine Webscript-Schnittstelle geschaffen, die den Zielmedien (Website, DCH) einen komfortablen Zugriff auf die publizierten Dokumente ermöglicht. Für jedes Zielmedium (Website, DCH) wird ein Service mit folgender Schnittstelle definiert:

Methode Bedeutung
getDocsToPublish Liste aller uuids von Dokumenten mit dem Wert true im Attribut f4ph:Outgoing
getDocument XML-Payload mit Dokumenteninhalt als XHTML und allen Bildern als base64-encoded Byte-Array
setOutgoingFalse Setzt das Attribut f4ph:Outgoing des bezeichneten Dokumentes auf false
getDocuments Liste aller uuids von Dokumenten mit dem Aspekt f4ph

Transformation von ODT in XHTML

Als Grundlage zur Erzeugung von strukturierten und transformierbaren Dokumenten wurde zunächst eine Open Document Vorlage erstellt. In der Vorlage wurden zahlreiche Absatz- und Inlinevorlagen definiert, um die Bandbreite der nötigen semantischen Unterscheidungen abzubilden. Das Open Document Format wurde gewählt, weil es zum einen ein Standardformat ist und zum anderen den Inhalt und die Styleinformationen im (gezippten) XML-Format ablegt - das Format ist also leicht per XSLT weiterzuverarbeiten. Alternative Formate wie z.B. Word-XML oder auch proprietäre Formate mit entsprechenden Adaptern sind natürlich ebenso denkbar.

Da der mitgelieferte HTML-Exporter von Open Office keine zufriedenstellenden Ergebnisse liefert, wurde ein eigener XHTML-Transformer erstellt. Die Transformation selbst verwendet die im ODT eingebetteten content.xml und styles.xml als Eingangsdokumente und erzeugt per XSL-Transformation ein Ziel-XHTML.

Dieses XSLT ist in einem Alfresco-Transformer eingebettet, so dass Alfresco diesen als Standard-Transformer für die Umwandlung von Dokumenten verwenden kann. Der für den TYPO3-Export erstellte Webscript-Service nutzt also die selbe Transformation, welche auch über die Alfresco GUI oder per Workflow gestartet werden kann.

Integration in TYPO3

Rendering Alfresco Content
Rendering Alfresco Content

In TYPO3 werden die importierten Dokumente in einer eigenen Datenstruktur abgelegt. Diese werden als eigene Entität "Alfresco Dokument" in einer individuellen Tabelle gespeichert. Dabei werden wesentliche Meta-Daten, wie die Alfresco-UID und der Dokumenttyp, in eigenen Spalten gespeichert. Der (aus dem ODT transformierte) XHTML-Body wird komplett und unverändert in eine eigene Spalte geschrieben. Diese Dokumentensammlung bildet für den Redakteur einen Datenpool, welchen er nutzen kann. Zur Anzeige auf der Webseite können verschiedene Inhalte - zumeist in separaten Datenstrukturen als Plugins - mit den Alfresco Dokumenten verknüpft werden.

Ein alternativer Ansatz wäre, die importierten Alfresco Dokumente direkt als Pages in TYPO3 zu verwalten. Die Alfresco-UID wäre eine zusätzliche Seiteneigenschaft. Die Unterscheidung der verschiedenen Dokumententypen im DMS würde mit entsprechenden Doktypes umgesetzt werden. Der XHTML-Body würde TYPO3-konform direkt als Inhaltelement ?HTML? in tt_content gespeichert werden. Auf diese Weise könnten Dokumente aus Alfresco komplett und unverändert im Web als Inhaltseiten dargestellt werden. Spezielle Entitäten in TYPO3 wären so nicht erforderlich.

Import in TYPO3

Der Import von Dokumenten aus Alfresco wird regelmäßig per Cron über ein CLI-Script auf dem TYPO3-Server gestartet und erfolgt in folgenden Schritten:

  1. Aufruf der Service-Methode getDocsToPublish: TYPO3 erhält eine Liste mit allen neuen oder geänderten Dokumenten (f4ph:Outgoing == true) in Form von UUIDs.
  2. Für jede dieser UUIDs wird die Service-Methode getDocument aufgerufen. Das Dokument wird als transformiertes XHTML ausgeliefert und von TYPO3 in die Tabelle tx_bphalfrescointerface_document importiert. Nach dem Import eines jeden Dokumentes wird über die Methode setOutgoingFalse das Flag  f4ph:Outgoing gelöscht.
  3. Über den Aufruf der Methode getDocuments werden nun alle Alfreco-Dokumente ermittelt, die als publizierbar aspektiert sind.
  4. TYPO3 iteriert über alle Datensätze in der  Tabelle tx_bphalfrescointerface_document. Für jeden Datensatz wird geprüft, ob dieser noch in Alfresco vorhanden und als publizierbar aspektiert ist. Ist der Datensatz nicht in der Liste der Alfresco-Dokumente, so wird der Datensatz aus  tx_bphalfrescointerface_document gelöscht.

Import in die Digital Concert Hall

Als zweites Zielmedium im Web wird die Digital Concert Hall mit Inhalten aus Alfresco bedient. Diese wurde mit Flash im Frontend und Drupal im Backend umgesetzt. Für Flash reicht in diesem Fall die XHTML-Datei nicht aus, sondern es wird ein strikter aufgebautes XML benötigt. Der Transformer erzeugt entsprechend dieses Format für die DCH und stellt diese über die Webscripts zur Verfügung. Zur Steuerung in Alfresco besteht hier ein separater Aspekt um medienspezifisch publizieren zu können. Zur einfachen Abgrenzung der Systeme erfolgt das Abholen der Dokumente ähnlich wie bei TYPO3 über ein Script, welches per Cron angestoßen wird. Nur werden hier die XMLs in einer spezifisches Ordnerstruktur abgelegt. Der Import erfolgt durch Drupal aus dem Filesystem.

Fazit

Als Ergebnis steht nun Alfrsco als ein JSR-170-konformes Content Repository für die redaktionellen Inhalte der Kommunikationsabteilung zur Verfügung. Dieses Repository dient als Basis für eine leistungsfähige Single Source Publishing Architektur.

Die Integration heterogener Systeme wie Alfresco, TYPO3 und Drupal vervollständigt das System zu einer Multi Channel Publishing Lösung.

Ausblick

Ausbaumöglichkeiten ergeben sich vor allem durch die Integration weiterer Zielmedien sowie durch die Einbeziehung weiterer Abteilungen und zusätzlicher Inhalte.

Die mediengerechte Aufbereitung bzw. Transformation der Quelldokumente soll im nächsten Schritt für die Print-Publikationen erfolgen. Dabei ist eine Transformation in ein QuarkXPress-optimiertes XML geplant.

Zudem wird die Verknüpfung der Textdokumente mit Bildern aus einer externen Bilddatenbank angedacht. So sollen in speziellen Kommentaren oder Verlinkungen die Bilder per URL oder ID in OpenOffice verknüpt werden, sodass bei der Transformation in die Zielmedien auch Bilder zu den Texten automatisch mitgeliefert werden können.

comments powered by Disqus

Lesen Sie weiter: