Apache Lenya

Autor: Michael Wechner
Date: 2005.01.30

Inhaltsverzeichnis

Einleitung

Apache Lenya ist ein in Java geschriebenes Open Source Content Management System/Framework, das auf dem XML Applikations Framework Apache Cocoon aufgebaut ist. Apache Lenya basiert vollständig auf XML und XSLT und eignet sich deshalb ausgezeichnet für Cross-Media Publishing Lösungen (siehe Kasten). Apache Lenya wird in der Regel als Web Content Management System verwendet, kann aber auch als Dokumente Management System oder für reine print-orientierte Lösungen eingesetzt werden.

Apache Lenya ist als Framework konzipiert, das Apache Cocoon durch verschiedene Content Management Komponenten ergänzt, wie zum Beispiel Workflow, Versionskontrolle, Zugriffskontrolle oder Schnittstellen für verschiedene Editoren. Dies erlaubt das Zusammenbauen von individuellen Content Management Lösungen, welche auf dem sogenannten Publikationskonzept basieren und das im folgenden Text noch genauer erläutert werden wird. Die Standarddistribution von Apache Lenya enthält verschiedene Publikationen als Beispiele, die als out-of-the-box Lösungen verwendet werden können.

Apache Lenya wird mittlerweile in allen möglichen Bereichen eingesetzt, wie zum Beispiel Zeitungen, Universitäten oder allgemeine Corporate Websites. Konkrete Beispiele sind im Community Bereich der Apache Lenya Website zu finden. Apache Lenya kann für kleinere Websites auf einem einzelnen Standard PC installiert werden oder im Fall einer grösseren Website werden der Autoren- und Livebereich getrennt auf verschiedenen Server installiert und durch eine Replikation der Daten verbunden. Dies ermöglicht eine sehr gute Skalierung ohne grosse Hardwarekosten. So gibt es zum Beispiel auf Apache Lenya basierte Websites, die über 20 Millionen Pageviews pro Monat haben.

Installation und Quick Start

Apache Lenya ist erhältlich als Binär- und als Sourceversion. Als Laufzeitumgebung wird der Java Development Kit 1.4.2 von Sun empfohlen. Um einen ersten Einblick in Apache Lenya zu gewinnen lohnt es sich die Binärversion des neuesten Releases 1.2.X bei der Apache Software Foundation herunterzuladen, auszupacken und zu starten.

Der Release ist zu finden unter http://lenya.apache.org und ist als zip oder tar.gz Datei erhältlich. Nach dem Auspacken kann Apache Lenya mit dem Shell Script lenya.sh gestartet werden, wobei in der Kommandozeile der folgende Befehl eingegeben werden muss "sh lenya.sh servlet" (unter Windows kann die Batch Datei lenya.bat verwendet werden).

Die Binär- als auch die Sourceversion von Apache Lenya beinhalten den Servlet Container Jetty, der als Webapplikationsserver verwendet wird. Nach der Ausführung des Shell Scripts lenya.sh wird Jetty auf dem Port 8888 gestartet. Dies kann je nach Hardware einige Sekunden dauern. Sobald in der Kommandozeile der Port 8888 erscheint sollte Jetty bereit sein um Requests entgegenzunehmen. Es kann dann via Web-Browser auf Apache Lenya zugegriffen werden und zwar unter der URL "http://127.0.0.1:8888".

Bei erfolgreicher Installation sollte im Browser eine Willkommensseite erscheinen und in der linken Navigation die Links auf die zwei Beispielpublikationen "Default" und "Weblog".

Um eine eigene Publikation zu entwickeln ist es besser die Sourceversion zu verwenden. Diese kann als Release oder aktueller Snapshot heruntergeladen werden oder direkt aus dem Subversion Code Repository ausgecheckt werden. Die Sourceversion muss mit dem Build-Werkzeug Apache Ant gebaut werden, wobei dieses bereits im Source-Code beinhaltet ist und mit dem Shell Script build.sh ausgeführt werden kann (respektive build.bat im Fall von Windows). Bevor jedoch Apache Lenya gebaut werden kann muss Apache Cocoon gebaut werden, da Apache Lenya das XML Applikationsframework Apache Cocoon als Basis verwendet. Die Apache Lenya Sourceversion gibt es zurzeit als stabilen 1.2.X Branch, der für produktive Systeme gedacht ist und den instabilen 1.4-dev Branch der im trunk Verzeichnis vom Subversion Code Repository zu finden ist.

Wie oben erwähnt beinhalten die Binär- und die Sourceversion den Servlet Container Jetty als Webapplikationsserver. Apache Lenya wird in der Regel auch in anderen Servlet Containern wie zum Beispiel Apache Tomcat oder WebLogic Server von BEA eingesetzt.

Erste Schritte als Benutzer

Einloggen

Wie oben bereits erwähnt sind in der linken Navigation der Willkommensseite von Apache Lenya die Links auf die Beispielpublikationen Default und Weblog zu finden. Klickt man auf eine der beiden Publikationen, dann erreicht man eine Uebersichtsseite der entsprechenden Publikation und findet wiederum auf der linken Seite einen Link um sich in den Autorenbereich dieser Publikation einzuloggen. Als Beispieluser existiert der Username "lenya" mit dem Passwort "levi". Nach dem erfolgreichen Einloggen sollte am oberen Rand des Web-Browsers der sogenannte Lenya Menubar sichtbar sein.

Dokumente kreieren, bearbeiten und publizieren

Der sogenannte Lenya Menubar ist das zentrale Element der Benutzerschnittstelle von Apache Lenya. Im wesentlichen steckt die volle Funktionalität, die der Benutzer des Content Management Systems zu kennen braucht im Lenya Menubar. In der Regel wird der Lenya Menubar ein File/Datei Menu beinhalten, wo zum Beispiel Menuitems existieren um neue Dokumente anzulegen oder Dokumente mit einem spezifischen Editor zu öffnen und zu bearbeiten.

In der Default Publikation kann man im Menu File/Datei eine neues Dokument kreieren indem man auf das Menuitem "Neues Dokument" klickt. Nach Eingabe einer beliebigen Dokument-ID wird ein neues Dokument kreiert, das bereits einigen Dummyinhalt beinhaltet.

Das neuangelete Dokument kann nun bearbeitet werden indem man auf das Menu Edit klickt und einen entsprechenden Editor auswählt. Es gibt standardmässig vier verschiedene Editoren zur Auswahl, deren Unterschiede in den folgenden Textabschnitten noch genauer erläutert werden.

Nach der Bearbeitung kann das Dokument publiziert werden. Dazu klickt man in der Default Publikation auf das Menu Workflow. Die Default Publikation hat einen einfachen Workflow mit den Stati "Authoring", "Review" und "Live" definiert. Die Uebergänge (Transisations) von einem in den anderen Workflowstatus sind "Sumbit", "Reject", "Publish/Approve" und "Deactivate", und können im Menu Workflow ausgeführt werden. Durch Klicken auf "Submit" erhält das Dokument den Status "Review". Der Benutzer mit dem Username "lenya" kann das Dokument im Status "Review" nicht freigeben beziehungsweise publizieren, sondern nur der Benutzer mit dem Username "alice". Das heisst man muss sich unter dem Menu File/Datei ausloggen und als Benutzer "alice" neu einloggen. Das Dokument, das man als Benutzer "lenya" kreiert und bearbeitet hat, kann dann vom Benutzer "alice" publiziert werden.

Features und Architektur

Dokumenttypen und Editoren

In Apache Lenya lassen sich Dokumenttypen mit beliebigem XML definieren und entsprechende Dokumente können auf alle möglichen Arten kreiert werden. Die Dokumenttypen sind in der Regel definiert per RelaxNG oder XML Schema.

Für einen Autor beziehungsweise Redaktor ist das Bearbeitungstool sprich Editor das Kernstück eines Content Management Systems. Auch für sonstige CMS Benutzer steht der Editor meistens im Mittelpunkt. Damit Apache Lenya nicht die Gefahr droht sich in eine Sackgasse zu bewegen und da es vermutlich nie einen universellen Editor geben wird, können Dokumente in Apache Lenya mit verschiedenen Editoren bearbeitet werden. Apache Lenya beinhaltet standardmässig einen HTML-Formular-basierten Editor und einen sogenannten Source-Editor, der aus einem einzigen HTML-Formular besteht. Beide Editoren erlauben eine Validierung des bearbeiteten XML anhand RelaxNG.

Apache Lenya hat verschiedene Dritt-Partei-Editoren, wie zum Beispiel die beiden Editoren BXE (http://bxe.oscom.org) und Xopus (http://www.xopus.com), mit entsprechenden Schnittstellen angebunden. BXE und Xopus sind in JavaScript geschriebene, browser-basierte WYSIWYG Editoren mit denen beliebiges XML bearbeitet werden kann, wobei BXE bisher nur in Mozilla läuft und Xopus nur in Microsofts Internet Explorer. BXE verwendet vorwiegend CSS für die WYSIWYG Darstellung und RelaxNG für die XML Validierung, hingegen Xopus benötigt XML Schema für die Validierung und verwendet XSLT für die WYSIWYG Darstellung. Ein weiterer browser-basierter WYSIWYG Editor ist Kupu (http://kupu.oscom.org), der ebenfalls in JavaScript geschrieben ist und in Mozilla und Microsofts Internet Explorer funktioniert. Im Gegensatz zu BXE und Xopus kann Kupu nur XHTML Dateien bearbeiten, wobei das XHTML mit beliebigem XML vermischt sein kann und das XML von Kupu unberührt bleibt.

Desktop-basierte Editoren, wie zum Beispiel Suns OpenOffice.org, Microsofts Word oder Macromedias Dreamweaver werden von Apache Lenya über HTTP Download und Upload oder WebDAV angebunden. Bei den Anbindungen von Destkop-basierten Editoren existiert in der Regel ein Bruch zwischen dem Desktop und der browser-basierten Benutzerschnittstelle des Content Management Systems. Die Apache Lenya Community ist daran eine nahtlose Desktop-Integration mit Hilfe von XUL zu entwickeln.

Lenya Menubar

Der sogenannte Lenya Menubar ist das zentrale Element der Benutzerschnittstelle von Apache Lenya. Im wesentlichen steckt die volle Funktionalität, die der Benutzer des Content Management Systems zu kennen braucht im Lenya Menubar. In der Regel wird der Lenya Menubar ein File-Menu beinhalten, wo zum Beispiel Menuitems existieren um neue Dokumente anzulegen oder Dokumente mit einem spezifischen Editor zu öffnen. Aber auch allgemeine Funktionen wie zum Beispiel das Ausloggen aus Apache Lenya können als Menuitem implementiert sein.

Die Funktionalität des Lenya Menubars lässt sich belieig anpassen und ist in einem einfachen XML Format definiert. Es können verschiedene Menus für unterschiedliche URLs oder andere Muster definiert werden, wobei dieses Mapping mit einer spezifischen Cocoon sitemap implementiert wird.

Im Entwicklerbranch 1.4-dev ist der Lenya Menubar auch als XUL Version erhältlich und ist damit im Mozilla respektive Firefox vollständig integriert.

Workflow

In Apache Lenya lassen sich beliebige Workflows definieren und durch beliebige Funktionen erweitern. Ein spezifischer Workflow wird in einem einfachen XML Format definiert und per Dokumenttyp einem einzelnen Dokument zugewiesen. Diese Zuweisung wird in einer zukünftigen Version noch flexibler gestaltet, so dass sich Workflow Definitionen trotz bereits existierender Workflow Instanzen verändern lassen und sich die eigentliche Zuweisung über beliebige Muster steuern lässt.

Ein Workflow Schritt kann mit dem in Apache Lenya eingebauten Scheduler zeitlich gesteuert werden. So kann zum Beispiel eine Pressemitteilung von einem Quartalsbericht zu einer spezifischen Zeit publiziert werden. Die von Apache Lenya mitgelieferten Publikationen beinhalten einfache Workflows, die als Beispiele betrachtet werden können.

Versionierung

Wenn ein Dokument von einem Redaktor zum Bearbeiten geöffnet wird, dann wird das Dokument für andere Redaktoren gesperrt. Nach dem Speichern und Schliessen wird eine Revision vom Dokument angelegt und die Sperre wieder aufgehoben. Die verschiedenen Versionen können in ihrer zeitlichen Reihenfolge betrachtet werden und ein entsprechender Rollback durchgeführt werden.

Und noch vieles mehr

Apache Lenya beinhaltet noch viele andere wesentliche Features, wie zum Beispiel Sitetree-Management, Suchfunktionalität mit Hilfe von Apache Lucene, Mehrsprachigkeit, LDAP Anbindung, Unterstützung von Metainformationen wie zum Beispiel Dublin Core und noch vieles mehr. Die volle Liste kann auf der Apache Lenya Website nachgelesen werden respektive auf der Apache Lenya Mailingliste nachgefragt werden.

Geschichte und Community
Apache Lenya wurde 1999 ursprünglich von Michael Wechner unter dem Namen XPS (Extensible Publishing System) als Open Source Projekt kreiert. Michael Wechner gründete im Jahr 2000 die Softwareentwicklungsfirma Wyona, die das Projekt weiterentwickelte. Im Mai 2003 wurde das Projekt an die Apache Software Foundation gestiftet. Apache Lenya wurde im September 2004 ein Top Level Projekt bei der Apache Software Foundation. Zurzeit arbeiten circa 10 Kernentwickler am Source Code und mehrere hundert Benutzer und Contributors nehmen via Mailingliste am Projekt teil.

 

Cross-Media Publishing
Unter Cross-Media Publishing versteht man das Publizieren von Inhalten aus einer Quelle auf verschiedenen Ausgabemedien, wie zum Beispiel Papier, Web oder Mobiltelefon. Cross-Media Publishing ist für viele Marktbereiche ein Zauberwort und ist dank XML und XSLT näher gerückt. Die Hoffnung, dass XML und XSLT alleine das Cross-Media Publishing erlauben, hat sich nicht erfüllt, denn aus redaktioneller Sicht muss der Inhalt für die verschiedenen Ausgabemedien mehr oder weniger unterschiedlich sein. Als Ergänzung zu XML und XSLT werden deshalb Tools gebraucht, die es erlauben ein Mapping von verschiedenen Schemas, die die Struktur der Ausgabemedien repräsentieren, auf den wiederverwendbaren Inhalt zu definieren, so dass auch Teilinhalte überschrieben werden könnnen ohne dass die Referenz zum Original verloren geht.

Customization und eigene Publikationen

Eine Publikation wird charakterisiert über die Informationsarchitektur und die damit verbundene Funktionalität. Eine Zeitung hat zum Beispiel die folgende Informationsarchitektur: Frontseite mit Schlagzeilen und Uebersicht über alle Ressorts, Ressort als Container von Artikeln zu einer spezifischen Rubrik und den Artikel selber. Ein anderes Beispiel wäre ein Telefonbuch mit einer sehr einfachen Informationsarchitektur: Telefoneintrag einer einzelnen Entität. Als Funktionalität könnte man das Telefonbuch zum Beispiel alphabetisch durchsuchen oder direkt nach Name respektive Vorname durchsuchen.

Apache Lenya beinhaltet als Beispiele die sogenannte Default Publikation und die Blog Publikation. Die Default Publikation ist eine sehr allgemein orientierte Webpublikation, die eine Sitetree basierte Informationsarchitektur besitzt und über eine entsprechende Funktionalität verfügt, wie zum Beispiel ein neues Dokument als Node einfügen oder einen Subtree publizieren. Wie der Name der Blog Publikation verrät handelt es sich bei ihr um eine Publikation mit dem Charakter einer Weblog Publikation.

Das Ziel ist, dass der Integrator respektive Administrator möglichst keine Java-Kenntnisse besitzen muss um die Publikationen individuell anpassen zu können. Das Layout dieser beiden Publikationen kann durch Aenderungen am CSS und XSLT auf die eigenen Bedürfnisse angepasst werden. Falls dies nicht ausreichend ist oder eine gänzlich andere Informatiosarchitektur respektive Funktionalität verlangt wird, dann ist es wohl am besten eine von Grund auf neue Publikation zu starten.

Ausblick

Publets

Das gegenwärtige Publikationskonzept von Apache Lenya gewährleistet die Mandantenfähigkeit, aber ist sonst in verschiedener Hinsicht zu wenig flexibel. Um eine bessere Modularität zu erreichen ist die Apache Lenya Community daran sogenannte Publets zu entwickeln. Ein Publet charakterisiert sich über die Informationsarchitektur und die damit verbundene Funktionalität. Einfache Publets wären zum Beispiel ein Weblog, Pressemitteilungen oder ein Telefonbuch.

Portlets

Apache Cocoon unterstützt die Portlet Spezifikation JSR-168 und kann deshalb auch von Apache Lenya verwendet werden. Zurzeit existiert jedoch keine Benutzerschnittstelle in Apache Lenya um Portlets auf einfache Art und Weise in beliebige Seiten einzufügen. Das Ziel ist, dass ein Benutzer mit den entsprechenden Rechten ein Portlet aus einer Bibliothek von Portlets auswählen kann und via Drag-and-Drop in eine einzelne Seite integrieren kann. So könnte zum Beispiel das Telefonbuch-Publet mit einer Suchmaske als Portletschnittstelle angeboten werden, so dass das Telefonbuch von gewissen Seiten aus durchsucht werden kann.

XUL und XAML

Wie in einem oberen Abschnitt erwähnt bietet Apache Lenya den Lenya Menubar auch als XUL Version an. Dies reicht jedoch nicht aus um eine nahtlose Desktop-Integration zu ermöglichen. Ein weiterer Schritt wäre den Menubar als eigentliche Applikation beziehungsweise als sogenannte XPI in Mozilla zu integrieren, wobei der eigentliche Menuinhalt immer noch vom Content Management Server geliefert werden würde. Durch einen Metalink auf ein Introspection-Dokument im HTML Kopf einer Seite könnte der Menubar aktiviert werden. Der Menubar als Applikation würde es erlauben auf das Desktop direkt zuzugreifen und zum Beispiel entsprechende Desktopapplikationen zu starten.

Microsoft hat im Rahmen von Longhorn die sogenannte Extensible Application Markup Language (XAML) entwickelt, die eine klare Weiterentwicklung von XUL ist. Um konkurrenzfähig zu bleiben ist es entscheidend die Entwicklung von den verschiedenen Implementationen von sogenannten Rich Internet Applications zu beobachten und selber zu realisieren.

Java Content Repository API

Innerhalb der letzten drei Jahre wurde im Rahmen des Java Community Process der JSR-170 entwickelt, der die Schnittstelle zwischen der eigentlichen Applikation und einem Daten Repository definiert. Beispiele von Daten-Repositories wären eine relationale Datenbank, eine XML Datenbank oder ein Filesystem. Ein solcher Datenabstraktions-Layer erlaubt eine generische Anbindung und den einfachen Austausch von verschiedenen Datenrepositories, ohne dass die Applikation entsprechend umgeschrieben werden muss.

Das Inkubationsprojekt Apache Jackrabbit ist eine Referenzimplementation von JSR-170 und wird zurzeit von der Apache Lenya Community in deren 1.4-dev Version implementiert.

Topic Maps und RDF

Das semantische Web ist immer noch ein grosses Thema, wobei Topic Maps und RDF die Grundlagen dazu bilden. Um das semantische Web eine Realität werden zu lassen benötigt es benutzerfreundliche Werkzeuge für den Endbenutzer, die Teil einer Content Management Lösung sein können. Die Anbindung oder Verwirklichung von entsprechenden Komponenten ist deshalb ein grosses Ziel der Apache Lenya Gemeinschaft.

Zusammenfassung

Apache Lenya ist ein stabiles und flexibles Content Management System/Framework, das sich an den längerfristig orientierten Anwender respektive Integrator wendet. Die von Apache Lenya verwendeten Technologien und Standards sind weltweit breit gestützt und minimieren die Gefahr sich in eine Sackgasse zu bewegen.

Screenshots und Diagramme