In unseren vergangenen Blogs haben wir über die neuen Versionen der Nuxeo Platform, den neuesten Funktionen und Verbesserungen und den Einzelheiten der Implementierung gesprochen. Heute werfen wir einen genaueren Blick auf sie und schauen sie uns von Grund auf an.

Die Architektur von Nuxeo:

Die Nuxeo-Runtime stellt allen Ebenen die grundlegenden Services bereit, beginnend mit dem Speicher. Dabei handelt es sich um die funktionalen Grundlagen für die Verwaltung eines Content-Repositorys und die Interaktion mit Content-Objekten.

OSGI

Im Mittelpunkt der Nuxeo Platform steht das Repository für das Speichern von Inhalt und den zugehörigen Metadaten. Wir speichern Metadaten in einer SQL-Datenbankstruktur, während sich Content-Binarys normalerweise in einem Dateisystem befinden. Dies entspricht dem Document Store und dem Blob Store.

Der Document Store wird durch unseren Visible Content Store (VCS) und eine beliebige SQL-Datenbank implementiert. Aufgrund der Performance bevorzugen wir PostgreSQL, Benutzer können je nach Vorliebe jedoch jede beliebige SQL-Datenbank verwenden. Alle Metadaten werden im VCS aufbewahrt. Was wir als “Dokument” bezeichnen, ist eine Sammlung von Metadaten, wobei es sich beim Binary oder dem Blob nur um ein Feld des Nuxeo-Dokuments handelt.

Der Blob Store befindet sich normalerweise in einem Dateisystem und einer einfachen Struktur, wo der Inhalt des Binarys zu einem eindeutigen Kennzeichen umbenannt wird. Dies ist der einzige Verweis auf den VCS. Dadurch, dass es so flach und einfach gehalten wird, müssen keine teuren Aktionen an Dateisystemen durchgeführt werden. Sicherungen und Wiederherstellungen können leicht erstellt werden und Wechsel zu anderen Blob-Managern wie Amazon S3 sind möglich.

Nuxeo Repository

Über den Speicherstrukturen und der Runtime gibt es eine Konfigurationsebene für die Definition von Content Typen und Feldern. Dies wird durch strukturierte XML-Definitionen ausgeführt, mit denen Anpassungen auf die gleiche Weise wie in der Voreinstellung erweitert und bereitgestellt werden können. Dies wird alles auf sehr flexible Weise durchgeführt und definiert die statische Struktur des Repositorys.

Komponenten von Nuxeo

Es gibt Operationen, die alle Funktionen und Aktionen auf der Nuxeo Platform definieren. Auch diese sind alle modular und konfiguriert und bestehen aus Klassen, die einen Vorgangstyp implementieren und die Laufzeit für die Interaktion mit dem Repository verwenden. Sie sind auch für alle höheren Ebenen offen und stellen den Schlüssel für die Erweiterbarkeit der Nuxeo Platform dar. Sie können in sogenannte Automations-Ketten zur Definition von bestimmtem Verhalten ineinander verkettet werden. Sie sind für externe Aufrufe durch verschiedene APIs offen, die ich in Kürze besprechen werde, und können auch benutzerdefiniert und an die Nuxeo Platform angeschlossen werden, um zusätzliche Benutzerfunktionen zu erstellen. Da das Framework modular und modular ausgerichtet ist, ist die Anpassung leicht und stimmt mit den Systemzielen überein.

Für Workflows, Lebenszyklen, Ereignisse und Ereignisausführungen sind Konzepte vorhanden, die auf gleiche Weise flexibel und anpassbar sind. Bei der Erweiterung der Funktionen von Nuxeo muss nur eine Definition in XML-Format und eine mögliche benutzerdefinierte Java-Klassenerweiterung hinzugefügt werden.

Benutzerdefinierte Operation

Nun haben wir das Nuxeo System funktional definiert. Jetzt können wir uns andere Möglichkeiten für die Interaktion mit dem System ansehen. Normalerweise gäbe es eine UI und eine Anwendung, die für bestimmte Anwendungsfälle entwickelt wurden. Standardmäßig stellt die Nuxeo Platform Anwendungen für das Dokumentenmanagement und das Digital Asset Management System (DAM) bereit. Bei DAM handelt es sich nur um zusätzliche Content definitionen und unterschiedliche UI-Komponenten, die sich auf digitale Assets, wie Bilder und Videos, konzentrieren. Bei der Anwendung handelt es sich um UI-Komponenten und zugehörigem Verhalten, die für eine Reihe von Anwendungsfällen entwickelt und ausgelegt wurden. Es wurden jedoch die gleichen zugrundeliegenden Anwendungen verwendet, die jeder anderen Anwendung zur Verfügung stehen.

Die Nuxeo-Oberfläche basiert auf JSF/Seam und ist eine Sammlung von Vorlagen und Konfigurationen für das Erscheinungsbild der Oberfläche sowie das Verhalten. Dies wiederum ist modular und die verschiedenen Teile der Oberfläche können konfiguriert werden. Wenn Verhalten und Layout so definiert werden, können Erweiterungen, Änderungen und Hinzufügungen als “Add-On Plug-In” vorgenommen werden, ohne das feste Design ändern zu müssen. Kurz gesagt: Sie fügen hinzu, ändern jedoch nichts.

Erweitern

Nun haben wir eine funktionierende Nuxeo Platform mit allen Funktionen und eine Standardanwendung für das Dokumentenmanagement und Digital Asset Management. Dadurch wird das Nuxeo Modell zu einem Arbeitsprozess und der Benutzer muss nicht im Detail verstehen, wie man mit Nuxeo arbeitet. Beginnen wir mit der Anpassung der Plattform. Wie schon zuvor beschrieben, steht die Erweiterbarkeit der Nuxeo Platform von Grund auf im Mittelpunkt. Wir stellen nicht nur ein Explorer-Tool bereit, um alle Erweiterungspunkte und Operationen zu durchsuchen, und die standardmäßigen und benutzerdefinierbaren Operationen zu identifizieren, sondern stellen auch das Nuxeo Studio-Entwicklungs- und Konfigurations-Tool bereit, um dies visuell und leicht darzustellen.

API - Automatisierung

Nuxeo Studio

Nuxeo Studio ist eine visuelle und zentrale Methode, um Anpassungen an der Nuxeo Platform vorzunehmen, sodass formatierter XML-Code weder manuell identifiziert noch geschrieben werden muss. Alle zuvor angesprochenen Konfigurationsmöglichkeiten auf der Nuxeo Platform können leicht über diese Online-Anwendung durchgeführt werden. Sie können die Plattform mithilfe von Studio an Ihre Geschäftsvorgänge anpassen und abbilden und müssen Ihre Content Management-Verfahren nicht am Enterprise Content Management system ausrichten. Dadurch maximieren Sie die Effizienz und die Benutzerfreundlichkeit. Studio ist ein Ort, wo Sie alle statischen Content wie Metadatenschemas, Dokumenttypen und zugehörige Anzeigelayouts konfigurieren können.

Im nächsten Schritt würden Sie Workflows mit einem visuellen Editor, Lebenszyklen und Ereignissen oder Benutzeraktionen konfigurieren. Zu guter Letzt können alle zuvor erwähnten Nuxeo-Operationen in Ketten gruppiert werden. Diese können von Ereignissen, Benutzeraktionen oder über die APIs externer Anwendungen aufgerufen werden.

Bei einem Studio-Projekt handelt es sich um Konfigurationen, die direkt mit nur einem Klick in einer Instanz von Nuxeo bereitgestellt wird. Es passt sehr gut zur Modularität der Nuxeo Platform.

Kopie von Komponenten von Nuxeo - Content Modell

WebEngine

Nuxeo ist nicht nur eine Content Management-Anwendung, sondern eine Plattform. Das bedeutet, dass Nuxeo Ihre Anwendungen auf verschiedene Weisen unterstützt und selbst standardmäßig erweiterbar ist. Den letzten Punkt habe ich schon zuvor beschrieben: der Grund liegt in der flexiblen Modularität und dem Studio-Tool.

Der nächste Schritt, wie Sie mehr Kontrolle über Ihre Oberfläche und Anwendung erhalten, ist ein von der Nuxeo Platform bereitgestelltes WebEngine-Framework. Dieses kann dazu verwendet werden, Ihre eigene Oberfläche und Ihr eigenes Frontend zu verwenden, die auf dem Nuxeo-Server ausgeführt werden. Über diese Methode erlangen Sie direkten Zugriff auf die Nuxeo-Runtime, während Sie gleichzeitig Ihre eigene Obefläche mithilfe von HTML- und Freemarker-Vorlagen erstellen können.

API

Nuxeo unterstützt über APIs externe Anwendungen genauso wie interne Konfigurationen und Exposition zu Operationen und Rest-Aufrufen. Sie können alle Nuxeo-Operationen und Automations-Ketten über einen Java-Client, REST-Aufrufe und JavaScript aufrufen, wodurch die Nutzung der Nuxeo Platform mit jeder Anwendung ermöglicht wird.

Kopie von Komponenten von Nuxeo - Benutzerdefinierte Erweiterungen

Zur Sicherstellung der Versionskompatibilität und -verwaltung stellt Nuxeo außerdem ein IDE-Plug-In für Eclipse bereit, mit dem fast jeder Punkt mit benutzerdefiniertem Java-Code erweitert werden kann. Dadurch kann ein wahrhaft erweiterbares System ohne Änderung des Codes von Nuxeo erstellt werden.