Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core für Administratoren > Werkzeuge für die Administration
Sie verwenden Systemflags, um Ordner, Dokumente oder andere Objekte mit zusätzlichen Einschränkungen abseits von ACLs zu versehen, etwa wenn:
Systemflags überschreiben vorhandene ACLs. Auch wenn ein Benutzer ein ALL-Recht in einem Ordner hat und somit Löschrechte besitzt, darf dieser mit Systemflags versehene Dokumente nicht verändern, löschen oder verschieben.
Die Systemflags stellen ein Bitfeld dar, über das Sie ein oder mehrere Systemflags abfragen oder setzen können.
Ein Systemflag darf nur auf einem Objekt sitzen. In der Regel sollen jedoch einem Objekt mehrere Einschränkungen übergeben werden. Sie können dies bei Systemflags anhand von Zahlen (Bits) umsetzen. Diese Bits können Sie aufsummieren.
Mit agorum core 10.0 haben die Systemflags neue Bezeichnungen erhalten. Geändert haben sich ausschließlich die Namen. Die Zahlenwerte (Bits) und die Wirkung der einzelnen Systemflags sind unverändert geblieben.
Daraus folgt für bestehende Systeme:
Damit Sie eine Ihnen bekannte Bezeichnung wiederfinden, nennen die folgenden Übersichtstabellen zu jedem Systemflag in der Spalte Frühere Bezeichnung den Namen, unter dem es bis agorum core 10.0 geführt wurde.
Das System erkennt Systemflags anhand eines long-Werts.
Achtung: Bestimmte Systemflags erlauben es selbst Administratoren nicht mehr, Korrekturen vorzunehmen.
| Systemflag | Frühere Bezeichnung | Long | Funktion |
|---|---|---|---|
| NO_FLAGS | NOFLAGS | 0 | Überschreibt bereits vorhandene Systemflags, die auf ein Objekt gesetzt sind, und setzt alle gesetzten Systemflags zurück. |
| Systemflag | Frühere Bezeichnung | Long | Funktion |
|---|---|---|---|
| DISALLOW_CONTENT_WRITE | CONTENTREADONLY | 524288 | Verhindert eine Änderung des Objektinhalts.
Hinweis: Sie können das Setzen dieses Systemflags nicht mehr rückgängig machen. |
| DISALLOW_DELETE | NOTDELETE | 1 | Verhindert das Löschen des Objekts für alle Benutzer und Administratoren. Das Objekt wird auch nicht aus dem Serverpapierkorb gelöscht.
Hinweis: Sie können durch zusätzliches Setzen des Systemflags DISALLOW_DELETE_LOCKED das Rückgängigmachen dieses Flags verhindern. (Es können beide Flags nicht mehr rückgängig gemacht werden.) |
| DISALLOW_DELETE_LOCKED | NOTDELETELOCK | 2048 | Verhindert das Ändern des Systemflags DISALLOW_DELETE. Damit setzen Sie ein Dokument revisionssicher.
Hinweis: Sie können das Setzen dieses Systemflags nicht mehr rückgängig machen. |
| DISALLOW_RENAME | NOTCHANGENAME | 32 | Verhindert das Umbenennen des Objekts, auch für den Super-Administrator roi. |
| DISALLOW_WRITE | NOTCHANGE | 2 | Verhindert das Ändern des Objekts für alle Benutzer und Administratoren. Das Objekt wird auch nicht aus dem Serverpapierkorb gelöscht.
Hinweis: Sie können das Setzen dieses Systemflags nicht mehr rückgängig machen. |
| RESTRICT_DELETE | ADMINDELETEONLY | 4 | Nur Administratoren können das Objekt löschen.
Tipp: Dieses Systemflag eignet sich als abgeschwächte Vorstufe zu DISALLOW_DELETE, etwa zum Testen. Ein Administrator kann jederzeit eingreifen und das Flag wieder entfernen. |
| RESTRICT_RENAME | ONLYOWNERCHANGENAME | 32768 | Nur der Besitzer (Owner) oder Administratoren können das Objekt umbenennen. |
| RESTRICT_WRITE | ADMINCHANGEONLY | 8 | Nur Administratoren können das Objekt ändern. |
| Systemflag | Frühere Bezeichnung | Long | Funktion |
|---|---|---|---|
| DISALLOW_ITEM_REMOVE | NOTREMOVEITEM | 64 | Verhindert das Entfernen von Objekten aus einem Ordner. Damit schützen Sie eine Ordnerstruktur davor, unabsichtlich geändert zu werden.
Hinweis: Das Systemflag muss sowohl für den Ordner als auch für die Objekte innerhalb dieses Ordners gesetzt sein, die nicht entfernt werden dürfen. |
| RESTRICT_ITEM_ADD | ADMINADDITEMONLY | 65536 | Nur Administratoren können Objekte in diesen Ordner ablegen. |
| RESTRICT_ITEM_REMOVE | ADMINREMOVEITEMONLY | 16 | Verhindert das Entfernen von Objekten aus einem Ordner für alle Benutzer außer Administratoren. Damit können Anwender Objekte auch nicht mehr aus dem Ordner heraus verschieben.
Hinweis: Das Systemflag muss sowohl für den Ordner als auch für die Objekte innerhalb dieses Ordners gesetzt sein, die nicht entfernt werden dürfen. |
| Systemflag | Frühere Bezeichnung | Long | Funktion |
|---|---|---|---|
| HISTORY_IN_PROGRESS | INHISTORYOBJECT | 512 | Verhindert mehrfache Historisierung derselben Version.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht und wird im Hintergrund von Automatismen verwendet, um Historien zu erstellen. |
| HISTORY_OBJECT_DISALLOW_REMOVE | HISTORYOBJECTRESTORE | 256 | Schützt die wiederherzustellende Version vor Löschung.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht und wird im Hintergrund von Automatismen verwendet, um Historien zu erstellen. |
| HISTORY_OBJECT_PROTECTED | PROTOHISTORYOBJECT | 4096 | Schützt die erzeugte Historie bei der Erstellung vor externen Änderungen.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht und wird im Hintergrund von Automatismen verwendet, um Historien zu erstellen. |
| IS_HISTORY_OBJECT | HISTORYOBJECT | 128 | Definiert das Objekt als Historie.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht und wird im Hintergrund von Automatismen verwendet, um Historien zu erstellen. |
| Systemflag | Frühere Bezeichnung | Long | Funktion |
|---|---|---|---|
| COMPRESSED | COMPRESSED | 131072 | Markiert Unterobjekte, deren Inhalt komprimiert wurde, um Speicherplatz freizugeben.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht. |
| EMPTY_PASSWORD_LOCKED | EMPTYPASSWORDLOCK | 1024 | Markiert Benutzer, für die noch kein Passwort festgelegt wurde.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht und wird im Hintergrund von Automatismen verwendet. |
| INCOMPRESSIBLE | INCOMPRESSIBLE | 262144 | Markiert Unterobjekte, die nicht komprimiert werden können.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht. |
| IS_HIDDEN_OBJECT | HIDDEN | 1048576 | Markiert ein verstecktes Objekt. Das System zeigt es in Ordnern nicht regulär an.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht. |
| IS_TEMPORARY_OBJECT | TEMPORARY | 16384 | Markiert ein temporäres Objekt.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht. |
| SPECIAL_BEHAVIOUR | SPECIALBEHAVIOUR | 8192 | Markiert Container von vererbbaren Metadaten und permanente Versionen.
Hinweis: Dieses Systemflag ist ausschließlich zur internen Verwendung gedacht. |
Die folgenden Systemflags besitzen keinen eigenen Bit. Sie fassen mehrere Einzelflags zu einem Summenwert zusammen und sind erst mit den neuen Bezeichnungen eingeführt worden. In älteren Konfigurationen finden Sie stattdessen die aufsummierte Zahl oder die Einzelflags.
| Systemflag | Berechneter Wert | Berechnungsgrundlage | Funktion |
|---|---|---|---|
| RESISTANT | 526337 | 1 + 2048 + 524288 | Setzt die Flags DISALLOW_DELETE, DISALLOW_DELETE_LOCKED und DISALLOW_CONTENT_WRITE gleichzeitig auf das Objekt und verhindert das Löschen oder Ändern des Inhalts für alle Benutzer und Administratoren. Dieses Systemflag entspricht also: systemflag:(1 2048 524288) |
| USER_RESISTANT | 28 | 4 + 8 + 16 | Setzt die Flags RESTRICT_ITEM_REMOVE, RESTRICT_WRITE und RESTRICT_DELETE gleichzeitig auf das Objekt und erlaubt nur Administratoren, das Objekt zu ändern, zu entfernen oder zu löschen. Dieses Systemflag entspricht also: systemflag:(16 8 4) |
Sie müssen nicht erst ein Skript ausführen, um zu sehen, ob ein Objekt geschützt ist. agorum core zeigt gesetzte Systemflags an zwei Stellen direkt an.
Voraussetzung
An der Karte des Objekts
Im Berechtigungsprüfer
Sie können über das Kontextmenü die long-Werte der gewählten Systemflags berechnen:
Voraussetzungen
Sie können Systemflags sowohl manuell als auch per JavaScript, Selektor oder Solr abfragen.
Hinweis:
Für die Suche stehen zwei verschiedene Felder zur Verfügung. Verwechseln Sie sie nicht:
Empfehlung: Suchen Sie in der Regel über systemflag nach Einzelflags. Eine Suche über systemflags findet nur Objekte mit exakt diesem Summenwert – ein zusätzlich gesetztes Flag lässt den Treffer entfallen.
Das Feld systemflag gibt es ausschließlich für die Suche. Setzen können Sie nur die Eigenschaft systemFlags des Objekts.
Voraussetzungen
Sie können per Kontextmenü Systemflags zu einem bestimmten Objekt abfragen.
Sie prüfen mit einer Bit-&-Abfrage, ob ein Systemflag vergeben ist. Zuerst lesen Sie das Systemflag aus dem Objekt aus, um es danach folgendermaßen per JavaScript-API abzufragen:
let objects = require('common/objects'));
let obj = objects.find(59115185);
let sf = obj.systemFlags; // auslesen
let ret = '2048 nicht gesetzt';
// abfragen
if (sf & 2048) {
ret = '2048 gesetzt';
}
ret;
Voraussetzungen
Sie können in einem Selektor einzelne oder ganze (berechnete) Systemflags abfragen.
Beispiel für ganze (berechnete) Systemflags
[systemFlags=2051]
Beispiel für einzelne Systemflags
[systemFlag=2048][systemFlag=2][systemFlag=1]
Beispiel für die Suche eines ganzen (berechneten) Systemflags
systemflags:2051
Beispiel einzelne Systemflags
Sie suchen nach einzelnen Systemflags im Systemflag 2051. Zuerst indizieren Sie ein weiteres Array in Solr, das folgendermaßen aussieht:
"systemflag":[1, 2, 2048]
Beispiel für die Suche eines einzelnen Flags (Bit)
systemflag:2048
Bei mehreren gesetzten Flags
systemflag:(<flag1> <flag2> ...)
Beispiele für häufige Suchen
| Gesucht | Abfrage |
|---|---|
| Alle Objekte, die nicht gelöscht werden dürfen | systemflag:1 |
| Alle Objekte, die nicht umbenannt werden dürfen | systemflag:32 |
| Alle revisionssicher abgelegten Dokumente (RESISTANT) | systemflag:(1 2048 524288) |
| Alle benutzergeschützten Objekte (USER_RESISTANT) | systemflag:(4 8 16) |
Sie können über das Kontextmenü Systemflags manuell auf Dokumente und Ordner setzen.
Der Dialog lässt nur die Systemflags zu, die für den fachlichen Einsatz vorgesehen sind:
| Systemflag | Bemerkung |
|---|---|
| DISALLOW_WRITE | Beim Aktivieren erscheint eine Warnung, weil sich dieses Systemflag nicht mehr entfernen lässt. |
| USER_RESISTANT | Sie können die enthaltenen Flags RESTRICT_DELETE, RESTRICT_WRITE und RESTRICT_ITEM_REMOVE auch einzeln setzen. |
| DISALLOW_RENAME | – |
| DISALLOW_ITEM_REMOVE | – |
| RESTRICT_RENAME | – |
| RESTRICT_ITEM_ADD | – |
| RESISTANT | Sie können die enthaltenen Flags DISALLOW_DELETE, DISALLOW_DELETE_LOCKED und DISALLOW_CONTENT_WRITE auch einzeln setzen. |
Hinweis: Die internen Systemflags IS_HISTORY_OBJECT, HISTORY_OBJECT_DISALLOW_REMOVE, HISTORY_IN_PROGRESS, EMPTY_PASSWORD_LOCKED, HISTORY_OBJECT_PROTECTED, SPECIAL_BEHAVIOUR, IS_TEMPORARY_OBJECT, COMPRESSED, INCOMPRESSIBLE und IS_HIDDEN_OBJECT zeigt der Dialog nur schreibgeschützt an. Sie sehen daran, ob das System diese Flags gesetzt hat, können sie aber nicht selbst verändern.
Mit der Funktion objects.SystemFlags erhalten Sie eine Aufzählung (Enumeration) aller verfügbaren Systemflags, die auf ein Objekt gesetzt werden können.
let sysFlags = objects.SystemFlags;
Tipp: Verwenden Sie in Skripten die Konstanten aus objects.SystemFlags statt der Zahlenwerte. Das Skript bleibt dadurch lesbar, und Sie vermeiden Tippfehler bei den long-Werten.
Beispiel
Dieses Beispiel zeigt, wie Sie bestimmte Systemflags mithilfe der Bitoperatoren prüfen, setzen und entfernen können.
let objects = require('common/objects');
let sysFlags = objects.SystemFlags;
/**
* Show all system flags in a readable JSON format
*/
console.log(JSON.stringify(sysFlags, null, 2));
/**
* Check if a system flag is set using bitwise AND operator &
*/
let objFolder = objects.find( '/agorum/roi/Files/Demo');
if (objFolder.systemFlags & sysFlags.DISALLOW_DELETE) {
console.log('Der Ordner ' + objFolder.name + ' darf von niemanden gelöscht werden');
} else if (objFolder.systemFlags & sysFlags.RESTRICT_DELETE) {
console.log('Der Ordner ' + objFolder.name + ' darf nur von Benutzern mit Administrationsrechten gelöscht werden');
} else {
console.log('Der Ordner ' + objFolder.name + ' darf gelöscht werden');
}
/**
* Set a system flag using bitwise OR assignment operator |=
*/
objFolder.systemFlags |= sysFlags.RESTRICT_DELETE;
/**
* Clear a system flag using bitwise AND assignment operator &= and NOT operator ~
*/
objFolder.systemFlags &= ~sysFlags.RESTRICT_DELETE;
Wichtig: Die folgenden Systemflags sind endgültig. Sie können den Inhalt des Objekts danach nicht mehr ändern, löschen oder die Systemflags entfernen, jedoch Metadaten setzen. Abhängig davon, ob Sie ein Ablaufdatum einsetzen oder nicht, sind diese Anpassungen endgültig (siehe folgende Szenarien).
Szenario 1
Ein Dokument besitzt keine Systemflags, aber ein Ablaufdatum.
Ergebnis
Ist das Ablaufdatum erreicht, löscht ein CronJob (Expiration Service) das Dokument.
Szenario 2
Ein Dokument besitzt die Systemflags DISALLOW_DELETE (1) und DISALLOW_DELETE_LOCKED (2048) (Dokument nicht änderbar oder löschbar) und KEIN Ablaufdatum.
Ergebnis
Das Dokument behält seine Systemflags dauerhaft, sie können nicht entfernt werden. Das Dokument kann außerdem nicht gelöscht oder geändert werden.
Szenario 3
Ein Dokument besitzt die Systemflags DISALLOW_DELETE (1) und DISALLOW_DELETE_LOCKED (2048) (Dokument nicht änderbar oder löschbar) und ein Ablaufdatum.
Ergebnis
Ist das Ablaufdatum erreicht, können die Systemflags DISALLOW_DELETE (1) und DISALLOW_DELETE_LOCKED (2048) geändert werden, um etwa das Dokument als solches zu ändern oder zu löschen.
Tipp: Das Ablaufdatum kann auch im „geschützten“ Zustand verändert werden, aber nur dann, wenn das Ablaufdatum vom aktuellen Tag aus gesehen in der Zukunft liegt. Sie können auch einen Worker erstellen, der alle Objekte sucht, deren Standard-ExpirationDate überschritten ist und die per Systemflag geschützt sind. Mit dem Worker können Sie das Systemflag und das Ablaufdatum entfernen, wenn Sie das Dokument nicht löschen möchten.
Die folgenden Systemflags schützen den Inhalt des Objekts. Sie können dank des Systemflags DISALLOW_CONTENT_WRITE (524288) weiterhin Metadaten auf das Objekt setzen.
| Systemflags | Long | Gesetzte Zahl als Systemflag |
|---|---|---|
| DISALLOW_DELETE + DISALLOW_DELETE_LOCKED + DISALLOW_CONTENT_WRITE | 1 + 2048 + 524288 | = 526337 |
Diese Kombination entspricht dem berechneten Systemflag RESISTANT.
Beispiel 1 – ohne Ablaufdatum
Dieses Beispiel setzt die Zahl 526337 per JavaScript-API ohne Ablaufdatum. Das Objekt ist dauerhaft revisionssicher.
/* global sc */
let objects = require('common/objects');
let sysFlags = objects.SystemFlags;
// agorum-Objekt mit ID holen
let obj = objects.find(59115185);
// Systemflags setzen
let sf = sysFlags.DISALLOW_DELETE + sysFlags.DISALLOW_DELETE_LOCKED + sysFlags.DISALLOW_CONTENT_WRITE;
// Entfernen Sie den Kommentar in folgender Zeile, um die Änderung endgültig wirksam werden zu lassen
// obj.systemFlags = sf;
Beispiel 2 – mit Ablaufdatum
Dieses Beispiel setzt die Zahl 526337 per JavaScript-API mit Ablaufdatum. Das Objekt ist elf Jahre revisionssicher.
/* global sc */
let objects = require('common/objects');
let sysFlags = objects.SystemFlags;
// agorum-Objekt mit ID holen
let object = objects.find(59115185);
// Ablaufdatum initiieren
let newExpirationDate = new Date();
// Systemflags setzen
// Das Objekt revisionssicher setzen // 1 = DISALLOW_DELETE - Schützt das Dokument vor einer Löschung // 2048 = DISALLOW_DELETE_LOCKED - Sorgt dafür, dass DISALLOW_DELETE nicht mehr entfernt werden kann // 524288 = DISALLOW_CONTENT_WRITE - Sorgt dafür, dass der Dateiinhalt nicht mehr bearbeitet werden kann
let sf = sysFlags.DISALLOW_DELETE + sysFlags.DISALLOW_DELETE_LOCKED + sysFlags.DISALLOW_CONTENT_WRITE;
// Ablaufdatum wählen (Aufbewahrung mindestens 10 Jahre,
// hier beträgt das Ablaufdatum 11 Jahre)
newExpirationDate.setFullYear(newExpirationDate.getFullYear() + 11);
// Ablaufdatum für das Objekt setzen
object.expirationDate = newExpirationDate;
// Entfernen Sie den Kommentar in folgender Zeile, um die Änderung endgültig wirksam werden zu lassen
//object.systemFlags = sf;
Sie können Ihre Systemflags über die Datei structure.yml definieren und setzen. Dies ist möglich bei einer festgelegten Ordnerstruktur und erlaubt das Exportieren dieser Einstellung von einer Testumgebung in das Produktivsystem.
Setzen Sie auf folgende Eigenschaft einen neuen Wert, um Systemflags per JavaScript zu entfernen:
obj.systemFlags
Beispiel, in dem ein geschützter Ordner mit folgenden Flags umbenannt wird (durch DISALLOW_RENAME hat auch der Super-Administrator roi kein Recht, den Namen anzupassen):
/* global sc, data */
let objects = require('common/objects');
let sysFlags = objects.SystemFlags;
let obj = objects.tryFind(<Objekt-ID/Objekt>);
// Systemflag wird nur gesetzt und DISALLOW_RENAME entfernt, indem die Summe ohne DISALLOW_RENAME angegeben wird
let systemflag = sysFlags.RESTRICT_DELETE + sysFlags.RESTRICT_WRITE + sysFlags.RESTRICT_ITEM_REMOVE;
obj.systemFlags = systemflag;
// Neue Metadaten werden gesetzt oder bestehende Werte überschrieben
// Dabei wird der Ordnername (name) angepasst
let new_metadata = {
identifier: '06 - Juli',
area: '06 - Juli',
name: '06 - Juli'
};
// einzelnes Objekt
metadata(new_metadata).save(obj);
//*/
// Systemflag wird wiederhergestellt
systemflag = sysFlags.RESTRICT_DELETE + sysFlags.RESTRICT_WRITE + sysFlags.RESTRICT_ITEM_REMOVE + sysFlags.DISALLOW_RENAME;
obj.systemFlags = systemflag;