Voraussetzungen
Wenn Sie das von uns empfohlene Standard-Setup auf Basis von Docker Compose(https://github.com/simplifier-ag/docker-compose) verwenden, wird das Content Repository Plugin standardmäßig gestartet und konfiguriert.
Wenn Sie Simplifier auf andere Weise ausführen, folgen Sie bitte Schritt 1.
Schritt 1: Einrichten des Content Repository-Plugins
Wenn Sie das empfohlene Docker-Compose-Setup verwenden, müssen Sie nichts weiter tun. Verwenden Sie einfach das Standard-Setup, und alles wird automatisch vorbereitet. Sie können Schritt 1 überspringen und mit Schritt 2 fortfahren.
Simplifer verwendet eine Namenskonvention. Um mit dieser Anleitung fortzufahren, müssen Sie den Namen der Hauptdatenbank von Simplifier und den Benutzernamen kennen, der für diese Verbindung verwendet wird. Bitte ersetzen Sie ${simplifierDatabaseName} durch den tatsächlichen Namen der Simplifier-Hauptdatenbank und ${simplifierDatabaseUser} durch den tatsächlichen Namen des Datenbankbenutzers, der bereits für die Simplifier-Hauptdatenbank verwendet wird.
1.1 Erstellen der Datenbank
Erstellen Sie eine Datenbank mit dem Namen
${simplifierDatabaseName}_content
Bitte befolgen Sie die Namenskonvention, um eine manuellere Einrichtung zu vermeiden.
1.2 Zugriffsrechte an DB-Benutzer vergeben
Geben Sie dem Benutzer, den Sie für die Simplifier-Hauptdatenbank konfiguriert haben, volle Rechte auf diese neue Datenbank.
GRANT ALL PRIVILEGES ON ${simplifierDatabaseName}_content TO ${simplifierDatabaseUser}@'%'
1.3 Content-Repository-Plugin aktivieren
Konfigurieren Sie Ihr Setup so, dass die Umgebungsvariable PLUGINLIST gesetzt wird. Wenn Sie diese Variable nicht verwenden, muss sie auf folgende Weise gesetzt werden:
PLUGINLIST=contentRepoPlugin
Wenn Sie die Variable bereits definiert haben, vergewissern Sie sich, dass contentRepoPlugin Teil der kommagetrennten Liste ist, die Sie als Wert angeben. Das Setup für den Start aller Standard-Plugins würde wie folgt aussehen:
PLUGINLIST=keyValueStorePlugin,pdfPlugin,captcha,contentRepoPlugin,jsonStore
Schritt 2: Dateisystem oder Dateisystem löschen?
Es stehen zwei Arten von Content Repositories zur Verfügung:
- Das Dateisystem speichert die empfangenen Content-Repository-Daten in einer Datenbank.
- Das übersichtliche Dateisystem speichert diese Daten in einem tatsächlichen Dateisystem (vgl. Windows Explorer).
Im Falle des dateisystembasierten Repositorys werden die Dateien und Ordner durch IDs identifiziert, während für das klare Dateisystem Ordner- und Dateipfade verwendet werden.
Darüber hinaus verfügt jedes dateisystembasierte Repository über einen expliziten Zugriffskontrollmechanismus, da bei der Erstellung von Ordnern und Dateien ebenfalls Berechtigungsobjekte definiert werden müssen.
Schritt 3: Verwenden Sie vorkonfigurierte Business Objects-Funktionen
Für die sofortige Nutzung der Plugin-Funktionen können Sie einfach die Business-Objekte ‘SF_ContentRepository_FileSystem’ oder ‘SF_ContentRepository_ClearFileSystem’ aus unserem Marketplace verwenden.
1. Legen Sie die Zugriffskontrolle fest: Implementieren Sie Ihr Sicherheitskonzept, indem Sie die Berechtigung “Plugin: Content Repository’ zu den Definitionen der relevanten Benutzerrollen hinzufügen. Sie können die “zugewiesenen Berechtigungen” verfeinern, indem Sie einzelne Berechtigungen auswählen oder abwählen. Darüber hinaus können Sie den Zugriff auf Repositories mit dem PermissionType ‘App’ und einer geeigneten PermissionID steuern.
Schritt 3a: Verwenden des Dateisystems
2. Zugriffskontrolle für Ordner und Dateien festlegen: Im Falle von Dateisystem müssen Sie die Zugriffskontrolle (mit PermissionType ‘Session’ und PermissionID) für Ordner und Dateien separat angeben.
3. Content Repository initialisieren: Prüfen Sie, ob das benötigte Content Repository bereits existiert oder ob es erst angelegt werden muss. Dazu können Sie z.B. die Funktion ‘contentRepositoryFind’ des Business Object (BO) ‘SF_ContentRepository_FileSystem’ verwenden. Für den Fall, dass das Content Repository nicht existiert, ist die Ausführung des BO nicht erfolgreich, d.h. die Verbindung des roten Ausgangsports kann genutzt werden, um die Funktion ‘contentRepositoryAdd’ auszuführen, um ein Content Repository mit dem Namen ‘newContentRepo’ anzulegen:
4. Erstellen Sie einen Ordner: Nachdem Sie das Repository erstellt haben, fügen Sie einen Ordner mit ‘contentFolderAdd’ des BO ‘SF_ContentRepository_FileSystem’ hinzu. Für das Input-Mappingsehen Sie sich bitte das folgende Beispiel an:
5. Hochladen einer Datei: Im Allgemeinen können Sie eine Datei hinzufügen, indem Sie entweder den Inhalt direkt als base64 übergeben (Eingabeparameter “data”), auf einen Upload-Sitzungsschlüssel verweisen (Eingabeparameter “uploadSession”) oder eine andere bestehende Inhaltsdatei anhand ihrer ID kopieren (Eingabeparameter“copyFrom”).
Exemplarisch werden wir einen Anwendungsfall implementieren, bei dem ein Benutzer eine Datei hochladen kann. Hierfür verwenden wir das Widget “ui_unified_FileUploader”:
Wenn Sie Dateien auf den Simplifier-Server hochladen möchten, stellen Sie bitte sicher, dass dem ausführenden Benutzer das Berechtigungsobjekt ‘Uploader’ mit der Eigenschaft ‘allow’ als Teil einer Rolle zugewiesen ist. Dies dient dazu, 403 Forbidden-Fehler zu vermeiden, die während der Upload-Aktion von der Uploader-API zurückgegeben werden.
Um die ausgewählte Datei zu erhalten, verwenden Sie einen Skriptblock mit den folgenden Codezeilen, um das Dateiobjekt in der globalen Variable ‘uploaderFile’ zu speichern:
var uploaderInput = this.getView().byId("FileUploader");
if (uploaderInput.getValue() !== "") {
var files = uploaderInput.oFileUpload.files;
if (files.length === 1) {
this.getGlobals().setVar("uploaderFile", files[0]);
}
}
Verwenden Sie diese Variable als Eingabe für die Hilfsfunktion ‘uploadFileToSimplifier’ des clientseitigen BO ‘SF_File’.
Mit dem zurückgegebenen Upload-Sitzungsschlüssel können Sie das Input-Mapping der Funktion ‘contentFileAdd’ des BO ‘SF_ContentRepository_FileSystem’ zum Anlegen einer neuen Datei im Content Repository definieren:
6. Eine Datei herunterladen: Um eine Datei aus dem Content Repository herunterzuladen, können Sie entweder die Download-URL oder den base64-kodierten Inhalt der Datei anfordern. Im Falle der base64-kodierten Daten verwenden Sie die Funktion ‘contentFileGet’ des BO ‘SF_ContentRepository_FileSystem’. Im Falle der Download-URL wird empfohlen, die Funktion ‘contentFileGetMetadata’ zu verwenden, da dies einen Performance-fressenden Full-Data-Download innerhalb der App vermeidet. Der Arbeitsablauf (und das Output-Mapping für die BO-Funktion) für diesen “externen” Datendownload wird hier beispielhaft dargestellt:
Um den Download-Prozess des Browsers zu nutzen, können Sie die ‘downloadFile’-Helper-Funktion der clientseitigen BO ‘SF_File’ (StandardContent) verwenden und das Input-Mapping wie folgt konfigurieren:
Schritt 3b: Verwenden des Clear File Systems
2. Content Repository initialisieren: Prüfen Sie, ob das benötigte Content Repository bereits existiert oder ob es erst angelegt werden muss. Dazu können Sie z.B. die Funktion ‘contentRepositoryFind’ des Business Object (BO)‘SF_ContentRepository_ClearFileSystem’ verwenden. Für den Fall, dass das Content Repository nicht existiert, ist die Ausführung des BO nicht erfolgreich, d.h. die Verbindung des roten Ausgangsports kann genutzt werden, um die Funktion ‘contentRepositoryAdd’ auszuführen, um ein Content Repository mit dem Namen ‘newContentRepo’ anzulegen:
3. Erstellen Sie einen Ordner: Nachdem Sie das Repository erstellt haben, fügen Sie einen Ordner mit ‘contentFolderAdd’ des BO ‘SF_ContentRepository_ClearFileSystem’ hinzu. Für das Input-Mappingsehen Sie sich bitte das folgende Beispiel an:
4. Hochladen einer Datei: Im Allgemeinen können Sie eine Datei hinzufügen, indem Sie entweder den Inhalt direkt als base64 übergeben (Eingabeparameter “data”), auf einen Upload-Sitzungsschlüssel verweisen (Eingabeparameter “uploadSession”) oder eine andere vorhandene Inhaltsdatei anhand ihres Dateipfads kopieren (Eingabeparameter“copyFrom”).
Exemplarisch werden wir einen Anwendungsfall implementieren, bei dem ein Benutzer eine Datei hochladen kann. Hierfür verwenden wir das Widget “ui_unified_FileUploader”:
Wenn Sie Dateien auf den Simplifier-Server hochladen möchten, stellen Sie bitte sicher, dass dem ausführenden Benutzer das Berechtigungsobjekt ‘Uploader’ mit der Eigenschaft ‘allow’ als Teil einer Rolle zugewiesen ist. Dies dient dazu, 403 Forbidden-Fehler zu vermeiden, die während der Upload-Aktion von der Uploader-API zurückgegeben werden.
Um die ausgewählte Datei zu erhalten, verwenden Sie einen Skriptblock mit den folgenden Codezeilen, um das Datei-Objekt in der globalen Variable ‘uploaderFile’ zu speichern:
var uploaderInput = this.getView().byId("FileUploader");
if (uploaderInput.getValue() !== "") {
var files = uploaderInput.oFileUpload.files;
if (files.length === 1) {
this.getGlobals().setVar("uploaderFile", files[0]);
}
}
Verwenden Sie diese Variable als Input für die ‘uploadFileToSimplifier’-Helper-Funktion des clientseitigen BO ‘SF_File’.
Mit dem zurückgegebenen Upload-Session-Schlüssel können Sie das Input-Mapping der ‘contentFileAdd’ -Funktion des BO ‘SF_ContentRepository_ClearFileSystem’ zum Anlegen einer neuen Datei im Content Repository definieren:
Hinweis: Dateien, die über https://simplifier.example.com/client/1.0/html5Uploader hochgeladen werden , werden in “/opt/simplifier/data/storage/uploads” gespeichert und nicht automatisch gelöscht. Dies muss innerhalb des Docker-Containers erfolgen.
5. Laden Sie eine Datei herunter: Um eine Datei aus dem Inhalts-Repository herunterzuladen, können Sie entweder die Download-URL oder den base64-codierten Inhalt der Datei anfordern. Im Falle der base64-kodierten Daten verwenden Sie die ‘contentFileGet’ -Funktion des BO ‘SF_ContentRepository_ClearFileSystem’. Im Falle der Download-URL empfiehlt es sich, die Funktion ‘contentFileGetMetadata’ zu verwenden, da so ein performancefressender Volldaten-Download innerhalb der App vermieden wird. Beispielhaft wird hier der Workflow (und das Ausgabemapping für die BO-Funktion) für diesen ‘externen’ Datendownload dargestellt:
Um den Download-Prozess des Browsers zu nutzen, können Sie die ‘downloadFile’-Helper-Funktion der clientseitigen BO ‘SF_File’ (StandardContent) verwenden und das Input-Mapping wie folgt konfigurieren:
Anhang
Datase-Verbindung manuell einrichten
WARNUNG: Bitte verwenden Sie diese Methode nur, wenn Sie vom Simplifier-Support dazu aufgefordert wurden.
Gehen Sie in das Verzeichnis ‘plugins/contentRepoPlugin/src/main/resources’ und kopieren Sie die Datei ‘settings.conf.dist’ als ‘settings.conf’. Passen Sie die Konfiguration der Einstellungen an Ihre Datenbankumgebung an:
database {
dbms: "mysql"
user: "simplifier"
pass: "simplifier"
host: "localhost"
port: 3306
database: "contentrepo"
}
Wenn für ein ‘FileSystem’-Repository ein relativer Pfad angegeben wird (der nicht mit einem ‘/’ beginnt), wird er relativ zu einem zuvor konfigurierten Verzeichnis zum Speichern von Dateien ausgewertet. Um dies zu setzen, muss die Eigenschaft ‘fileSystemRepository.baseDirectory’ auch in der Datei ‘settings.config’ konfiguriert werden:
fileSystemRepository {
baseDirectory: "/opt/simplifier/data/plugins/contentRepoPlugin"
}