Single-Source-Publishing mit Open Source: Alfresco-Kopplung an TYPO3
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 werden in Print-Publikationen und im Web gleichermaßen verwendet und durchlaufen mehrere Korrekturläufe. Die so geschaffenen Inhalte 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 Magazinartikel, Biografien, Werkstexte, Gesangstexte und Pressemeldungen 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 erstellt 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 Verwaltung der großen Menge von Dokumenten und Inhalten unterstützen. Um die verschiedenen Inhalte zu klassifizieren und schnell wiederzufinden, wurde eine Reihe eigener Dokumenttypen mit teilweise individuell erweiterten Metadaten definiert. Alfresco bietet hierfür hervorragende Möglichkeiten über die Erweiterung des Content-Modells. 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 Vererbungsstrukturen zulässt, können allgemeingültige Metadatenerweiterungen auch über einen abstrakten Dokumenttyp generalisiert werden.
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.
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 Webskripte, 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:
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-Arrayset |
OutgoingFalse | Setzt das Attribut „f4ph:Outgoing“ des bezeichneten Dokuments 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 weiterzuverarbeiten. 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 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 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 Seiteneigenschaft, 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:
- Aufruf der Service-Methode „getDocsToPublish“: TYPO3 erhält eine Liste mit allen neuen oder geänderten Dokumenten (f4ph:Outgoing == true) in Form von UUIDs.
- 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.
- Über den Aufruf der Methode „getDocuments“ werden nun alle Alfresco-Dokumente ermittelt, die als publizierbar markiert sind.
- 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.