Durchsuchbare Dokumentation aufrufen

Zurück zur Dokumentationsübersicht

Selektoren

Ein Selektor stellt eine Bedingung dar, die ein Objekt entweder erfüllt (wahr) oder nicht erfüllt (nicht wahr). Er kann aus beliebigen Abfragen (Prädikaten) bestehen, die das System dann mit UND verknüpft.

Selektoren verbreiten sich, da Sie diese aus immer mehr Funktionen heraus aufrufen können. Sie entscheiden dadurch, ob das System einen Prozess startet oder nicht. Etwa werden die Selektoren verstärkt im agorum core smart assistant konfigurator und im workflow 3.0 eingesetzt.


Leere Selektoren

Ein leerer Selektor ist immer wahr, trifft also auf alle Objekte zu. Diesen tragen Sie im agorum core smart assistant konfigurator so ein, dass der Name des Selektors etwa Default heißt. Den Selektor selbst lassen Sie leer.


Mehrere Selektoren

Treffen zwei Selektoren für ein Objekt zu, priorisiert das System denjenigen Selektor, der mehr Abfragen enthält, da dieser das Objekt genauer beschreibt. Wenn mehrere Selektoren true zurückgeben, gilt:

Selektor 1: [....][....][....] gewinnt gegen Selektor 2:[....][....] gewinnt gegen Selektor 3: [....]

Geben alle Selektoren true zurück, führt das System die Aktion aus, bei der es Selektor 1 abfragt.

Beispiel im agorum core smart assistant konfigurator


Ein Doppelklick führt im Standard immer das entsprechende Clientprogramm aus und öffnet dieses über den agorum core client. Sie können dieses Verhalten per Selektor überschreiben, sodass sich bei bestimmten Objekten der interne Editor öffnet.

 Beispiel des Selektors

[nameExtension=/csv|js|json|txt|xml|yml/i][!isFolder][className!=WorkflowInstance]

Bei den abgefragten Dateiendungen öffnet sich der interne Editor.

[!isFolder] bewirkt, dass das System Ordner abfragt, weil auch diese eine solche Dateiendung haben können.

Aufbau eines Selektors


[<Attribut><Vergleich><Wert>]
Wert Beschreibung
[ Definiert den Start der Selektordefinition.
Attribut Definiert das Attribut / Metadatum, das das System prüft.
Vergleich Definiert einen Vergleich, etwa = oder !=.
Wert Vergleicht den Inhalt des Attributs (kann auch eine RegEx darstellen).
] Definiert das Ende einer Selektordefinition.

Hilfe zu Selektoren

Geben Sie nur [ als Selektor ein, erscheinen mögliche Selektoren, die Sie bei der korrekten Schreibweise unterstützen. Sie können diese Selektoren nicht wählen.

Hilfe zu Selektoren

Klicken Sie auf die Lupe, können Sie ein Objekt wählen. Dessen Metadaten analysiert das System, sodass sie zur Auswahl erscheinen:

Suche nach Selektoren

Nach Bestätigung der Auswahl sind die passenden Selektoren eingetragen:

Eingetragene Selektoren

Hierbei können keine Verneinungen erstellt werden.

Attribute

Attribut Beschreibung/Beispiel
Internes Attribut [name
nicht vererbtes Attribut / Metadatum [~identifier

Es wird immer ~ vorangestellt.
vererbtes Attribut / Metadatum [~~area

Es werden immer zwei ~~ vorangestellt.

Prüfen Sie immer, um welches Metadatum es sich handelt.

Vergleiche

Vergleich Beschreibung
[attr] true/nicht leer
[!attr] false/leer
[attr=..] [attr!=..] Vergleich (case sensitive)
[attr=/../] [attr!=/../] RegEx
[..][..] UND-Verknüpfung zweier Prädikate

Für den Vergleich können Sie ein oder mehrere Worte schreiben. Sie können einen Vergleich auch mit einer RegEx durchführen. 

Beispiele zur Anwendung


Objekte einem Ordner hinzufügen

Das folgende Beispiel verdeutlicht die Anwendung, wenn ein Ordner vorliegt und der angemeldete Benutzer diesem Ordner Objekte hinzufügen darf:

[isFolder][mayInsert]

kein Ordner, area belegt

Das folgende Beispiel verdeutlicht die Anwendung, wenn kein Ordner vorliegt und area mit dem Wert Kundenakte oder Lieferantenakte belegt ist:

[!isFolder][~~area=/(Kundenakte|Lieferantenakte)/]

Vergleich mit einem Wort

[~~area=Lieferantenakten]

Dieser Selektor ist wahr, wenn das vererbbare Metadatum area den Wert Lieferantenakten enthält.

[~~area!=Lieferantenakten]

Dieser Selektor ist wahr, wenn das vererbbare Metadatum area NICHT den Wert Lieferantenakten enthält.

Vergleich mit RegEx


Format

[<name>=/<RegEx>/<x>]

Die RegEx schließen Sie in zwei // ein. Nach dem 2. / kann noch <x> (ein Zeichen) kommen.

<x> kann etwa sein:


Beispiel

name=/Test.HTmL /i]

Dieses Beispiel zeigt, dass Sie den Namen beliebig in Groß- und Kleinbuchstaben schreiben können.

Abfragen, ob ein Metadatum existiert

[~demoBereich]

Dieser Selektor prüft nach, ob das nicht vererbbare Metadatum demoBereich existiert oder = true ist. Wenn ja, ist der Selektor wahr.

[!isFolder]

Dieser Selektor ist wahr, wenn das Metadatum isFolder entweder nicht gibt oder der Wahrheitswert von isFolder = false ist.

[expirationDate.time>0]

Prüft, ob ein Ablaufdatum gesetzt ist.

Tipp: Die Ergänzung [isFolder] als zusätzliche Abfrage im Selektor ist immer dann sinnvoll, wenn auch ein Ordner auf die Hauptabfrage ein wahr zurückgeben kann. Wenn Sie etwa einen Dateinamen abfragen, kann ein Ordner natürlich auch denselben Namen besitzen.

Größer und größer gleich

[~field>12]
[~field>=12]

Prüft, ob das Metadatum größer oder größer gleich der rechten Seite ist. Die rechte Seite des Vergleichs ist nicht dynamisch und kann kein Metadatum oder eine andere Datenquelle sein. Es muss ein fester Wert sein.

Kleiner und kleiner gleich

[~field<12]
[~field<=12]

Es gilt dasselbe wie bei Größer und größer gleich.

Dauer seit der letzten Änderung mit „since()“ prüfen

Die Funktion since() gibt für ein Metadatum mit Datum und Anzahl an Millisekunden zurück, die seit diesem Zeitpunkt  (since) bis jetzt vergangen sind.


Beispiel
Sie wollen prüfen, ob das letzte Änderungsdatum (lastModifyDate) eines Objekts mehr als eine bestimmte Zeit (hier 10 Sekunden) zurückliegt. Als Rückgabewert möchten Sie false oder true erhalten.


Beispiel-Skript

let objects = require('common/objects');
let beans = require('common/beans');

let object = objects.find('392017b0-e641-11ec-9e48-02420a0a000c');

beans.selected(object, '[lastModifyDate.since()>10000]');

Ist das Objekt etwa am 19. August 2022 09:48:54 zuletzt geändert worden und Sie prüfen das Objekt am gleichen Tag um etwa 10:00 Uhr mit diesem Skript, erhalten Sie als Rückgabe den Wert true, da ungefähr 785000 Millisekunden seit der Änderung vergangen sind, also mehr als die angegebenen 10000 Millisekunden.

Erreichung des Zeitwerts eines Objekts mit „until()“ prüfen

Die Funktion until() gibt für ein Metadatum mit Datum und Anzahl an Millisekunden zurück, die von jetzt bis zu diesem Zeitpunkt (until) noch vergehen müssen.


Beispiel
Sie wollen prüfen, ob das Ablaufdatum (expirationDate) eines Objekts bereits erreicht ist, also ob das Objekt abgelaufen ist. Als Rückgabewert möchten Sie false oder true erhalten.


Beispiel-Skript

let objects = require('common/objects');
let beans = require('common/beans');

let object = objects.find('5f638be0-18b5-11ed-bf0b-02420a0a0008');

beans.selected(object, '[expirationDate.until()<=0]');

Läuft das Objekt etwa am 09. September 2022 16:05:40 aus und Sie prüfen das Objekt am 19.08.20220 um etwa 10:45 Uhr mit diesem Skript, erhalten Sie als Rückgabe den Wert false, da ungefähr noch 1833530000 Millisekunden bis zu diesem Ablaufdatum fehlen und dieser Wert größer als 0 ist.

Abfragen, ob konvertierbar

Mit convertible(<format>) prüfen Sie, ob Sie eine Datei in ein bestimmtes <format> konvertieren können.

[convertible(txt)]
oder
[convertible(pdf)]

Abfragen, ob änderbar mit „sharedLock“

Mit mutableSharedLock(<lockIdentifier>) oder writableSharedLock(<lockIdentifier>) prüfen Sie, ob ein Objekt änderbar oder schreibbar ist, wenn diese mit einem shared lock versehen ist.

Ein shared lock sperrt eine Datei mit einer definierten lock-Kennung (lockIdentifier). Dann ist diese gesperrt und darf nur noch im Kontext dieses lockIdentifiers bearbeitet werden.

[mutableSharedLock(onlyoffice)]
oder
[writableSharedLock(onlyoffice)]


sharedLock setzen

obj.lockShared('onlyoffice');

Einen Selektor per JavaScript prüfen


let objects = require('common/objects');
let beans = require('common/beans');

//
//
// beans.selected(object, selektor);
//
beans.selected(objects.find('11494937'), '[!isFolder][historyCount!=0]');

Einen Selektor über den agorum core template manager erstellen


Sie können einen Selektor über den agorum core template manager anhand eines Test-Objekts erstellen, um diese etwa für weitere Zwecke zu kopieren.

Wichtige Selektoren


Selektor Beschreibung
''
  • Ein leerer Selektor ist immer true.
  • Ein leerer Selektor ist ein String ohne Inhalt, also ''.
  • Verwenden Sie diesen Selektor, wenn kein Objekt notwendig ist, um eine Aktion auszuführen.
  • In einem JavaScript verwenden Sie die Gänsefüßchen, während Sie die Selektor-Eingabefelder diverser Konfigurationen leer lassen.
[mayInsert] Darf der aktuelle Benutzer in diesen Ordner etwas ablegen?
[mayCheckOut] Darf der aktuelle Benutzer dieses Dokument auschecken?
[mayDelete] Darf der aktuelle Benutzer dieses Objekt löschen?
[writable] Darf der aktuelle Benutzer den Inhalt dieses Objekts ändern? Berechtigung, den Inhalt des Objekts zu ändern.
[mayRemove] Darf der aktuelle Benutzer dieses Objekt hier abhängen?
[mutable]
oder
 [mayModify]
Darf der aktuelle Benutzer die Attribute dieses Objekts ändern? Berechtigung, Attribute (etwa Metadaten) des Objekts zu ändern.

Beide Funktionen wirken gleich und unterscheiden sich nicht.
[sessionController.adminEnabled] Ist der aktuelle Benutzer ein Administrator?

Verwenden Sie diesen Selektor, wenn es für eine Aktion notwendig ist, dass das System diese mit dem Administrator ausführt. Sie können diesen Selektor noch mit Selektoren eines Objekts ergänzen.
[!sessionController.readOnlyMode] Ist der aktuelle Benutzer kein Lese-Benutzer?

Verwenden Sie diesen Selektor, wenn es für eine Aktion notwendig ist, dass das System diese mit keinem Lese-Benutzer ausführt. Sie können diesen Selektor noch mit Selektoren eines Objekts ergänzen.
[isFolder] Ist das Objekt ein Ordner?
[!isFolder] Ist das Objekt kein Ordner?
[convertible(pdf)] Ist das Objekt in PDF konvertierbar?
[mailStatus=/.+/] Ist das Objekt eine E-Mail?

Unabhängig davon, ob diese direkt in agorum core erstellt oder empfangen wurde, oder ob die E-Mail per E-Mail-Adapter in agorum core geladen wurde.
[className=/FileObject/i] Ist das Objekt ein FileObject?

/i steht für canse-insensitiv für den regulären Ausdruck. FileObject kann somit auch als fileobject im System gefunden werden.
[~~area=agorum core basic archive] Ist das Objekt im agorum core basic archive?
[className=/AMailMail/i] Ist die E-Mail aus dem agorum core mailadapter?
[className=/MailObject/i] Ist die E-Mail direkt in agorum core gesendet oder empfangen worden?
[~identifier=archivsection] Ist das Objekt ein bestimmter Aktenbereich, in diesem Fall Archiv im agorum core basic archive?
[hasAttachments] Besitzt das Objekt Anhänge?
[previewable] Das Attribut previewable ist für ein Objekt true, wenn agorum core preview installiert ist und ein Konverter für diesen Typ existiert.