Tomorrow Comes Today   I’m not gonna wait for anything to happen

Alfresco-Kopplung an TYPO3

Single-Source-Publishing mit Open Source

von Oliver Meimberg und Jan-Henrik Hempel

erschienen in t3n Nr. 15 (03/2009)

Als bei den Berliner Philharmonikern die Integration einer Dokumentenlösung sowie ein Relaunch des Internetauftritts anstanden, wurden große Überschneidungen bei den zu verwaltenden Inhalten festgestellt. Um diese nicht länger mehrfach pflegen zu müssen, fiel die Entscheidung für eine Single-Source-Publishing-Lösung auf Open-Source-Basis. Die Basis bildet dabei Alfresco als führende Content-Quelle, TYPO3 ist eines der möglichen Ausgabemedien.

Bei den Berliner Philharmonikern werden Texte im Rahmen eines aufwendigen redaktionellen Prozesses erstellt und redigiert, an dem interne und externe Personen beteiligt sind. Die Texte wer- den in Print-Publikationen und im Web gleichermaßen verwendet und durchlaufen mehrere Korrekturläufe. Die so geschaffenen In- halte haben eine sehr hohe Lebensdauer und sollen auch in mehreren Jahren noch wiederverwendet werden.

Quell- und Zielmedien

Die als Quellmedien vorliegenden Texte sind zum Beispiel Maga- zinartikel, Biografien, Werkstexte, Gesangstexte und Pressemel- dungen mit sehr unterschiedlichen Inhalten, die als „Open Documents“ abgelegt werden. Zusätzlich werden XML-Dateien für den Konzertkalender verwaltet.

Die Zielmedien sind entweder Print-Publikationen, zumeist er- stellt mit QuarkXPress, oder Onlinemedien wie die Website der Berliner Philharmoniker [1] und die der Digital Concert Hall [2] (DCH).

Alfresco als Quelle wiederverwendbarer Inhalte

Das Dokumenten-Management-System Alfresco soll die Abteilung Kommunikation der Berliner Philharmoniker bei der Verwal- tung der großen Menge von Dokumenten und Inhalten unter- stützen. Um die verschiedenen Inhalte zu klassifizieren und schnell wiederzufinden, wurde eine Reihe eigener Dokumenttypen mit teilweise individuell erweiterten Metadaten definiert. Alfresco bie- tet hierfür hervorragende Möglichkeiten über die Erweiterung des Content-Modells. Einige konkrete Beispiele hierfür sind:

Eigene Alfresco Dokumenttypen
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 Verer- bungsstrukturen zulässt, können allgemeingültige Metadatener- weiterungen auch über einen abstrakten Dokumenttyp generali- siert werden.

Alfresco erlaubt Metadatenerweiterungen über abstrakte Dokumenttypen.

Zusätzlich zur Erweiterung des Content-Modells lässt die Software auch eine individuelle Aspektierung zu. Zur Steuerung der Publizierung der Dokumente in den verschiedenen Medien wurde für jedes Zielmedium ein Aspekt hinzugefügt.

Aspekte zur Publikationssteuerung in die verschiedenen Medien
Aspekt Bedeutung
dchPublishable Dokument wird für die Digital Concert Hall publiziert
websitePublishable Dokument wird für die Website publiziert

Alfresco erlaubt den Zugriff auf sein Content-Repository über REST-konforme Web­skripte, eine leichtgewichtige Alternative zu herkömmlichen Web Services. Für die hier beschriebenen Publishing-Mechanismen bietet eine Webscript-Schnittstelle den beiden Zielmedien einen komfortablen Zugriff auf die publizierten Dokumente. Dabei wurde für jedes Zielmedium (Website, DCH) ein Service mit folgender Schnittstelle definiert:

REST-basierte Service-Schnittstelle zum Alfresco Content Repository
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 dieser Vorlage bilden zahlreiche Absatz- und Inlinevorlagen die Bandbreite der nötigen semantischen Unterscheidungen ab. Das Open-Document bietet nicht nur den Vorteil eines Standardformats. Es legt auch Inhalt und die Style-Informationen im (gezippten) XML-Format ab – das Format ist also leicht per XSLT weiter­zu­verarbeiten. Alternative Formate wie Word-XML oder auch proprietäre Formate mit entsprechenden Adaptern sind aber ebenso denkbar.

Da der mitgelieferte HTML-Exporter von OpenOffice keine zufrieden­stellenden 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 einen Alfresco-Transformer integriert und steht Alfresco damit als Standard-Transformer für die Umwandlung von Dokumenten zur Verfügung. Der für den TYPO3-Export erstellte Webscript-Service nutzt die selbe Transformation, die auch über die Alfresco-GUI oder per Workflow gestartet werden kann.

Integration in TYPO3

TYPO3 legt die importierten Dokumente in einer eigenen Datenstruktur ab und speichert sie als Entität „Alfresco-Dokument“ in einer individuellen Tabelle ab. Wesentliche Meta-Daten wie die Alfresco-UID und der Dokumenttyp, aber auch der komplette und unveränderte (aus dem ODT transformierte) XHTML-Body werden dabei in eigene Spalten geschrieben. Diese Dokumentensammlung bildet für den Redakteur einen Datenpool, den er nutzen kann. Zur Anzeige auf der Website lassen sich verschiedene Inhalte – zumeist in separaten Datenstrukturen als Plugins – mit den Alfresco-Dokumenten verknüpfen.

Ein alternativer Ansatz wäre, die importierten Dokumente direkt als Pages in TYPO3 zu verwalten. Die Alfresco-UID wäre dann eine zusätzliche Seiten­eigenschaft, die Unterscheidung der verschiedenen Dokumententypen im DMS ließe sich mit entsprechenden Doctypes umsetzen. Den XHTML-Body würde man TYPO3-konform direkt als Inhaltselement „HTML“ in „tt_content“ speichern. Auf diese Weise könnten Dokumente aus Alfresco komplett und unverändert im Web als Inhaltsseiten 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 Dokuments wird über die Methode „setOutgoingFalse“ das Flag „f4ph:Outgoing“ gelöscht.
  3. Über den Aufruf der Methode „getDocuments“ werden nun alle Alfresco-Dokumente ermittelt, die als publizierbar markiert 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 markiert ist. Ist der Datensatz nicht in der Liste der Alfresco-Dokumente vorhanden, so wird er 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, es wird ein strikter aufgebautes XML benötigt. Der Transformer erzeugt das entsprechende Format für die DCH und stellt dieses über die Webscripts zur Verfügung. Damit besteht in Alfresco 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 Skript, das per Cron angestoßen wird. Allerdings werden hier die XML-Dateien in einer spezifischen Ordnerstruktur abgelegt. Der Import erfolgt durch Drupal aus dem Filesystem.

Fazit

Nach der Umsetzung steht der Kommunikationsabteilung Alfresco als ein JSR-170-konformes Content-Repository für redaktionelle Inhalte zur Verfügung, das als Basis für eine leistungsfähige Single-Source-Publishing-Architektur dient. Die Integration heterogener Systeme wie Alfresco, TYPO3 und Drupal vervollständigt das System zu einer Multi-Channel-Publishing-Lösung.

Ausbaumöglichkeiten ergeben sich vor allem durch die Integration weiterer Zielmedien sowie die Einbeziehung weiterer Abteilungen und Inhalte. Die mediengerechte Aufbereitung beziehungsweise 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 die Bilder zu den Texten automatisch mitgeliefert werden können.

Download: Artikel als PDF (t3n_philharmoniker_casestudy_leseprobe.pdf)