Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht
Navigation: Dokumentationen agorum core > agorum core JavaScript-API
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.
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.
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.
[<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. |
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.
Klicken Sie auf die Lupe, können Sie ein Objekt wählen. Dessen Metadaten analysiert das System, sodass sie zur Auswahl erscheinen:
Nach Bestätigung der Auswahl sind die passenden Selektoren eingetragen:
Hierbei können keine Verneinungen erstellt werden.
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.
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.
Das folgende Beispiel verdeutlicht die Anwendung, wenn ein Ordner vorliegt und der angemeldete Benutzer diesem Ordner Objekte hinzufügen darf:
[isFolder][mayInsert]
Das folgende Beispiel verdeutlicht die Anwendung, wenn kein Ordner vorliegt und area mit dem Wert Kundenakte oder Lieferantenakte belegt ist:
[!isFolder][~~area=/(Kundenakte|Lieferantenakte)/]
Dieser Selektor ist wahr, wenn das vererbbare Metadatum area den Wert Lieferantenakten enthält.
Dieser Selektor ist wahr, wenn das vererbbare Metadatum area NICHT den Wert Lieferantenakten enthält.
Format
Die RegEx schließen Sie in zwei // ein. Nach dem 2. / kann noch <x> (ein Zeichen) kommen.
<x> kann etwa sein:
Beispiel
Dieses Beispiel zeigt, dass Sie den Namen beliebig in Groß- und Kleinbuchstaben schreiben können.
Dieser Selektor prüft nach, ob das nicht vererbbare Metadatum demoBereich existiert oder = true ist. Wenn ja, ist der Selektor wahr.
Dieser Selektor ist wahr, wenn das Metadatum isFolder entweder nicht gibt oder der Wahrheitswert von isFolder = false ist.
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.
[~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.
[~field<12]
[~field<=12]
Es gilt dasselbe wie bei Größer und größer gleich.
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.
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.
Mit convertible(<format>) prüfen Sie, ob Sie eine Datei in ein bestimmtes <format> konvertieren können.
[convertible(txt)] oder [convertible(pdf)]
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');
let objects = require('common/objects'); let beans = require('common/beans'); // // // beans.selected(object, selektor); // beans.selected(objects.find('11494937'), '[!isFolder][historyCount!=0]');
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.
Selektor | Beschreibung |
---|---|
'' |
|
[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. |