Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core für Administratoren > Konfigurationen zum Import und Export
Mit der Datei structure.yml legen Sie im agorum core explorer Ordnerstrukturen inklusive ACLs, Benutzergruppen, Systemflags und Metadaten an.
Wenn Sie mit dem agorumc ore template manager ein neues Konfigurationsprojekt erstellen, wird die Datei structure-basis.yml mit den Standardeinstellungen im Ordner yml angelegt.
Hinweis: Diese Dokumentation beschreibt die Syntax und Best Practices der structure-basis.yml. Für allgemeine YAML-Regeln siehe Regeln für agorum core YML-Dateien.
Die Datei structure-basis.yml führen Sie mit einem JavaScript aus. Das kann etwa über die JavaScript-Konsole oder mit einem JavaScript beim Deployment geschehen.
Das JavaScript zum Aufruf der Datei structure-basis.yml über den structure-builder.js kann folgenden Aufbau haben:
/* global sc */
global.sessionControllerAdmin = sc;
let objects = require('common/objects');
let sb = require('/agorum/roi/customers/Standard/js/structure-builder');
let yamlbasis = objects.find('/agorum/roi/customers/<CONFIGURATIONPROJECT>/yml/structure-basis.yml');
sb(yamlbasis).create();
// ATTENTION: when using true, everything is reset, should only be used for testing
// sb(yamlbasis, true).create();
Das Skript wird normalerweise ohne den Parameter true aufgerufen, da dieser sehr viele Einstellungen neu setzt und das System die betroffenen Objekte erneut indizieren muss.
Hinweis: Die Datei structure-builder.js wird im Standard-Template mitgeführt. Wenn Sie das Skript für ein Template speziell angepasst haben, müssen Sie das Skript im Template selbst mitführen. Der Aufruf des Skripts muss pro Konfiguration implementiert werden.
/agorum/roi/customers/<Konfigurationsprojekt>/yml/structure-basis.yml
Das folgende Beispiel zeigt die Einträge in der Datei structure-basis.yml mit den Standardeinstellungen für das Testprojekt agorum.test.temp:
#
# This file defines the base structure with access rights
#
_prefix: agorum_test_temp_
_postfix: Bereich
_aclPrefix: ACL_agorum_test_temp_
_grpPrefix: GRP_agorum_test_temp_
#
# In _default everything can be set, what should be valid for each folder
#
_default:
acl:
unique: false
systemFlags: 65564
_leaf:
systemFlags: 28
# No area and identifier is to be set here.
#+ /agorum/roi/Files --:
#
# Internal workspace folder, can be used to store things for the module, e.g. for the drop area
#
+ /agorum/roi/workspace -- workspace:
acl: acl:Published
+ agorum.test.temp:
acl: acl:Published
_prefix: demo_
Setzt das Präfix allen internen Namen von Metadaten voran, die durch die Struktur automatisch erzeugt werden (z. B. bei localIdentifiers).
Beispiel
demo_<Metadatum>
_postfix: Bereich
Hängt das Postfix an interne Namen an, die bei aktivierten localIdentifiers automatisch erzeugt werden.
Beispiel
<Metadatum>_Bereich
Achtung: Metadaten, deren Name mit dem Wert aus _postfix endet (z. B. *Bereich), werden vom Builder nicht als „normale“ Metadaten gespeichert, da diese Endung für den localIdentifiers-Automatismus reserviert ist.
_aclPrefix: ACL_DEMO_
Verwendet das Präfix für neu angelegte ACLs.
Beispiel
ACL_DEMO_<ACL>
_grpPrefix: GRP_DEMO_
Verwendet das Präfix für automatisch angelegte Benutzergruppen.
Beispiel
GRP_DEMO_<Gruppe>
_default: acl: unique: false systemFlags: 65564
Definiert Einstellungen, die als Standardwerte für jeden angelegten Ordner gelten (sofern sie nicht am Ordner selbst überschrieben werden). Typisch sind hier: ACL-Erzeugung, unique und systemFlags.
_leaf: systemFlags: 28
Definiert Einstellungen, die für jeden Endordner (oder Blatt-Ordner) gesetzt werden.
Ein Endordner ist ein Ordner, der in der Struktur am weitesten eingerückt ist (d. h. keine Unterordner mehr definiert).
Beispiel
Ordner 1
Ordner 1.1
Ordner 1.1.1
Ordner 2
Ordner 2.1
Ordner 3
In diesem Beispiel sind demnach die Endordner:
Auf diese werden die Einträge unter _leaf: gesetzt.
Nach der Definition der globalen Einstellungen legen Sie die Ordnerstruktur an.
+ /agorum/roi/Files --:Das -- hinter Files bedeutet, dass das System die Metadaten area und identifier nicht setzen soll.
Beispiel
+ /agorum/roi/Files --:
acl: acl:Published
+ Schulung:
acl: acl:Published
+ Videos:
acl: acl:Published
+ tmp_:
acl: acl:Public
flags: 39 Wenn Sie per Datei structure-basis.yml einen Ordner erstellen, legt das System automatisch folgende Metadaten an:
| Metadatum | Beschreibung |
|---|---|
| area | siehe Wichtige Metadaten |
| identifier | |
| level | Wird verwendet, wenn Sie eine Suche benötigen, die alle Objekte direkt in einem Ordner mit identifier:xyz zurückliefert (level:xyz). |
| internes Metadatum | Definiert den internen Namen eines Ordners. Zusätzlich wird hier der für area ermittelte Wert hinterlegt.
Dieses Metadatum ist im Standard deaktiviert und wird nicht gesetzt. Über die Option localIdentifiers: true können Sie diese Option wieder aktivieren: + /agorum/roi/Files --:
acl: acl:Published
+ Schulung:
acl: acl:Published
localIdentifiers: true
+ Videos:
acl: acl:Published
localIdentifiers: true
+ tmp_:
acl: acl:Public
flags: 39 |
Das Keyword acl definiert, welche ACL ein neu angelegter Ordner erhält. Es gibt mehrere Varianten:
acl: ^)acl: ^.
Name der Benutzergruppe
Präfix der Benutzergruppe + Name der ACL
Kein Endordner (_leaf nicht zutreffend)
Anlegen einer Read-Benutzergruppe: Gruppenname>_Read
Ist Endordner
Drei Benutzergruppen:
<Gruppenname>_Read
<Gruppenname>_Write
<Gruppenname>_All
Benutzergruppen werden an denselben Ordnern angelegt wie die ACL.
Das Keyword unique = definiert eine ACL als einzigartig, wenn true (Standard: false).
Tipp: Werden ACLs in zusammenhängender Reihenfolge für aufeinanderfolgende Ordner angelegt, werden Benutzergruppen eines neuen ACLs automatisch in die _Read-Benutzergruppe der vorherigen ACLs eingefügt. Dadurch kann ein Benutzer (z. B. aus einer _All-Gruppe) die Struktur leichter durchlaufen.
Möglichkeit 1: Vorhandene ACL wählen
+ /agorum/roi/Files/Demo: acl: acl:Public
Setzt die bereits vorhandene ACL Public auf den neu anzulegenden Ordner Demo.
Möglichkeit 2: Neue ACL mit ID des Ordners definieren
+ /agorum/roi/Files/Demo: acl:
Legt eine neue ACL an, die u. a. die Ordner-ID im Namen enthält. Das ist besonders hilfreich bei gleichen Strukturen mit identischen Ordnernamen in unterschiedlichen Pfaden.
+ /agorum/roi/Files --:
acl: acl:Published
+ Firma Kurz AG:
acl:
+ Niederlassung 1:
acl:
+ Finanzen:
acl:
+ Belege:
acl:
+ Niederlassung 2:
acl:
+ Finanzen:
acl:
+ Belege:
acl:
Hier wäre die ACL auf den Ordnern Finanzen und Belege dasselbe, wenn diese ohne die ID angelegt wurden. Mit ID besitzen alle Ordner eine andere ACL und unterscheiden sich durch die ID im Namen der ACL.
Die ACL kann nicht in anderen Skripten verwendet werden, da der Name unbekannt ist. Soll die ACL auch anderweitig zur Verfügung stehen, empfiehlt sich Möglichkeit 5, bei der die Namen selbst vergeben werden.
Möglichkeit 3: Neue ACL ohne ID des Ordners definieren
+ /agorum/roi/Files/Demo: acl: unique: true
Durch unique: true entfällt die Ordner-ID im ACL-Namen. Dadurch lautet der Name des ACLs ACL_DEMO_Demo (_aclPrefix + Name Ordner). Der Name wird damit stabiler, setzt aber voraus, dass er eindeutig bleibt.
Möglichkeit 4: Neue ACL mit ID des Ordners und mit festgelegten Namen definieren
+ /agorum/roi/Files/Demo: acl: Demo_demo
Legt die ACL mit dem Namen ACL_DEMO_<ID des Ordners>Demo_demo an, da das Präfix nicht weggelassen werden kann.
Möglichkeit 5: Neue ACL ohne ID des Ordners und mit festgelegten Namen definieren
+ /agorum/roi/Files/Demo: acl: Demo_demo unique: true
Legt die ACL mit dem Namen ACL_DEMO_Demo_demo an.
Dieses Vorgehen hat bei gleichen Strukturen den Vorteil, dass die ACL eindeutig ist und trotzdem einen eindeutigen Namen hat, den Sie in anderen Skripten verwenden können:
+ /agorum/roi/Files --:
acl: acl:Published
+ Firma Lang AG:
acl: "Firma Lang AG"
unique: true
+ Niederlassung 1:
acl: "Firma Lang AG_Niederlassung 1"
unique: true
+ Finanzen:
acl: "Firma Lang AG_Niederlassung 1_Finanzen"
unique: true
+ Belege:
acl: "Firma Lang AG_Niederlassung 1_Finanzen_Belege"
unique: true
+ Niederlassung 2:
acl: "Firma Lang AG_Niederlassung 2"
unique: true
+ Finanzen:
acl: "Firma Lang AG_Niederlassung 2_Finanzen"
unique: true
+ Belege:
acl: "Firma Lang AG_Niederlassung 2_Finanzen_Belege"
unique: true
Der Name der ACL für .../Niederlassung 2/Finanzen/Belege lautet hier:
<ACL-Prefix>Firma Lang AG_Niederlassung 2_Finanzen_Belege
Möglichkeit 6: ACL vom Parent-Ordner erben
+ /agorum/roi/Files/Demo: acl: ^
Der Ordner Demo erbt die ACL des Ordners Files.
Steuert die Generierung von Benutzergruppen, die in Abhängigkeit der ACLs angelegt werden.
Wird eine ACL angelegt, wird im Standardfall eine Read-Benutzergruppe pro Ordner erzeugt. Bei Endordnern (den letzten Ordnern in der Ordnerstruktur) werden Read-, Write- und All-Benutzergruppen erzeugt.
Geben Sie das Keyword an, können Sie steuern, welche der 3 Benutzergruppen erstellt werden. Soll mehr als nur eine Benutzergruppe erzeugt werden, verwenden Sie den Trenner |.
In folgendem Beispiel werden die read-, write- und all-Benutzergruppen angelegt:
_default: acl: unique: true generateGroups: "read|all|write"
Optional können Sie initiale Mitglieder für die automatisch erzeugten Gruppen definieren:
+ /agorum/roi/Files/Projekt:
acl:
unique: true
generateGroups: "read|write|all"
read:
- user:roi
- group:Vertrieb
write:
- group:Sachbearbeitung
all:
- group:Administratoren
Auf einen neuen Ordner setzt das System automatisch die Metadaten „area“ und „identifier“. Beide erhalten standardmäßig den Namen des neuen Ordners.
Standard
+ /agorum/roi/Files/Demo:
Das System setzt auf den Ordner Demo die Metadaten area und identifier jeweils mit dem Wert Demo.
Anderen Wert setzen (gilt für area und identifier)
Sollen area und identifier einen anderen Namen erhalten, erreichen Sie dies mit dem Parameter --. Dazu tragen Sie den Parameter mit dem gewünschten Namen nach dem Ordnernamen und vor dem Doppelpunkt ein:
+ /agorum/roi/Files/Demo -- user:
Das Syste, setzt die Metadaten area und identifier jeweils mit dem Wert user auf den Ordner Demo.
Nichts setzen (weder area noch identifier)
Sollen area und identifier nicht gesetzt werden, tragen Sie hinter dem Parameter nichts ein, auch kein Leerzeichen:
+ /agorum/roi/Files/Demo --:
Sie können zusätzlich Metadaten auf einen neu angelegten Ordner setzen.
demo_), sofern es sich um „Ihre“ Metadaten handelt. _postfix enden. Metadaten, die mit dem Inhalt von _postfix enden, speichert das System nicht, da diese für den Automatismus mit der Option localIdentifiers: true reserviert sind (siehe Automatisch angelegte Metadaten).
Beispiel
+ /agorum/roi/Files/Demo: ~demo_kbNummer: "12345" ~~demo_kbZeichen: "z776-ab" flags: 39 systemFlags: 28
Das System setzt in diesem Beispiel folgende Metadaten:
~demo_kbNummer
nicht vererbt
~~demo_kbZeichen
vererbt
Wenn ein Metadatum in metadata.yml als Array (Multi-Metadatum) definiert ist (z. B. Tags, Mehrfachauswahl, mehrere Werte), müssen Sie in der structure-basis.yml eine YML-Liste setzen.
+ /agorum/roi/Files/Demo:
~~demo_tags:
- "Newsletter"
- "Wartungsvertrag"
- "A-Kunde"
+ /agorum/roi/Files/Demo:
~demo_jahre:
- 2024
- 2025
~demo_aktivFlags:
- true
- false
Achtung: YML wandelt einige Werte automatisch um (z. B. yes/no, on/off, null). Wenn diese Werte als String gespeichert werden sollen, müssen Sie sie in Anführungszeichen setzen (z. B. "yes").
+ /agorum/roi/Files/Demo: ~~demo_tags: ["Newsletter", "Wartungsvertrag", "A-Kunde"]
Wenn Ihr Metadatum als Array von Objekten verwendet wird (z. B. ein JSON/Objekt-Array), können Sie auch eine Liste von Objekten setzen:
+ /agorum/roi/Files/Demo:
~~demo_contacts:
- name: "Max Mustermann"
email: "max@example.com"
- name: "Erika Musterfrau"
email: "erika@example.com"
Hinweis: Welche Form (String-Liste vs. Objekt-Liste) korrekt ist, hängt von der Definition des Metadatums in metadata.yml ab. Im Zweifel prüfen Sie die Definition oder testen Sie das Ergebnis nach dem Deployment.
Typische Multi-Metadaten in agorum core sind Tags. Beispiel (globales Tagging):
+ /agorum/roi/Files/Demo:
~ag_tags:
- "Newsletter"
- "Wartungsvertrag"
Beispiel (persönliche Tags des aktuellen Benutzers):
+ /agorum/roi/Files/Demo:
~user_ag_tags:
- "Wichtig"
- "FollowUp"
Sie können Ordner verlinken, indem Sie hinter dem neu anzulegenden Ordner den vollständigen Zielpfad angeben. Der neue Ordner sollte dazu idealerweise gleich heißen wie der letzte Ordner des Pfades, auf den Sie verlinken.
Beispiel
+ /agorum/roi/Files/Ablage: acl: acl:Published + tmp_: /agorum/roi/Files/tmp_
Bei diesem Beispiel wird der neue Ordner tmp_ mit dem nach dem Doppelpunkt angegebenen, gleichnamigen Pfad verlinkt.
Wenn Sie im Nachgang Ihre Struktur (z. B. Systemflags) „nachziehen“ müssen, müssen Sie das Deploy-Skript zur structure-basis.yml anpassen.
Eigene Dateien/Administration/customers/<Konfigurationsprojekt>/deploy/pre/js/020 create-structure-basis.js
true ausgeführt wird: /* global sc */
global.sessionControllerAdmin = sc;
let objects = require('common/objects');
let sb = require('/agorum/roi/customers/Standard/js/structure-builder');
let yamlbasis = objects.find('/agorum/roi/customers/academy.workflow/yml/structure-basis.yml');
//sb(yamlbasis).create();
// ATTENTION: when using true, everything is set newly, should only be used for testing
sb(yamlbasis, true).create(); Hinweis: Alternativ setzen Sie Systemflags gezielt per eigenem JavaScript (z. B. in deploy/pre), statt die gesamte Struktur neu aufzubauen.