Open Source Dokumentenmanagement
Dokumentation

Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core JavaScript-API


DataHandler user-group

Mit diesem flexiblen DataHandler können Sie:

Der DataHandler unterstützt ausschließlich die Funktion read und den Lookup eines einzelnen Werts.

Parameter und Standardwerte


Sie können die Parameter (lookup ausgenommen) sowohl programmatisch als auch über die MetaDB konfigurieren.

Reihenfolge der Parameter und Standardwerte

Die Parameter können Sie auf verschiedene Weisen übergeben oder angeben und kombinieren, um flexibel zu sein.

Folgende Reihenfolge gilt:

  1. Zuerst gilt der als Parameter übergebene Wert. Die Werte können Sie in einer CSV-Datei angeben (siehe csv: Benutzer und Gruppen mit vielen Einstellmöglichkeiten).
  2. Wenn der Parameter leer ist (undefined), sucht das System in der MetaDB nach dem gleichnamigen Key und verwendet den dortigen Wert (Beschreibung der Parameter und deren Werte in der MetaDB siehe Beispiele).
  3. Wenn in der MetaDB kein Parameter definiert ist, gilt der interne Standardwert, wie im Folgenden beschrieben.
let parameters = {
  lookup: false, // Aktiviert den Lookup-Modus. Der Parameter query muss eine agorum-ID des gesuchten Objekts enthalten.

  searchUsers: false,  // Aktiviert die Suche nach Benutzern.
  searchGroups: false, // Aktiviert die Suche nach Benutzergruppen.
  excludeWorld: false, // Entfernt die World-Gruppe aus den Ergebnissen.

  matchStart: true, // Erweitert die Suche, sodass die Ergebnisse mit den Wörtern der <query> beginnen müssen (Fuzzy Matching).
  matchEnd: false,  // Erweitert die Suche, sodass die Ergebnisse mit den Wörtern der <query> enden müssen (Fuzzy Matching).
                    // Für eine exakte Suche müssen beide Parameter aktiviert werden: Beginnt und endet mit dem Wort.
                    // Wenn unklar ist, ob das Wort am Anfang, in der Mitte oder am Ende steht, müssen beide Parameter auf false stehen.

  limit: 100, // Steuert, wie viele Ergebnisse zurückgegeben werden.

  additionalQuery: null, // Erweitert die baseQuery um weitere Sucheigenschaften (Suche wird mit und ausgeführt).
  groupId: null, // Schränkt die Suche auf die angegebene Benutzergruppe ein. Der Parameter muss eine agorum-ID des gesuchten Objekts enthalten, etwa group:GRP_Demo.

  userTextFormat: '${typeDisplayName}: ${fullName} (${name})', // Definiert das Format, mit dem die text-Eigenschaft von Benutzern formatiert wird.
  groupTextFormat: '${typeDisplayName}: ${name}', // Definiert das Format, mit dem die text-Eigenschaft von Benutzergruppen formatiert wird.
  userValueFormat: '${uuid}', // Definiert das Format, mit dem die value-Eigenschaft von Benutzern formatiert wird.
  groupValueFormat: '${uuid}' // Definiert das Format, mit dem die value-Eigenschaft von Benutzergruppen formatiert wird.
}

Aufruf mit „query“

Wenn der DataHandler mit einer query aufgerufen wird (siehe Funktion read), werden Benutzer und / oder Benutzergruppen entsprechend der query gefiltert.


Beispiel

let query = 'de'

Das Beispiel liefert unter anderem den Benutzer demo zurück.


Den Suchmodus (Fuzzy Matching) steuern

Sie steuern das Fuzzy Matching mit den Parametern matchStart und matchEnd. Standardmäßig ist der Parameter matchStart aktiviert. Das System sucht entsprechend alle Treffer, die mit de beginnen und gibt daher demo zurück.

Hinweise

  • Die Suche nach Endungen (Parameter matchEnd) ist um ein Vielfaches langsamer.
  • Sowohl der Parameter query im Lookup-Modus als auch die Eigenschaft groupId erwarten eine agorum-ID eines entsprechenden Objekts oder das Objekt selbst.

Rückgabewerte des DataHandlers

Der DataHandler liefert ein Array passender Objekte zurück. Wenn das System kein passendes Objekt findet, ist die Rückgabe ein leeres Array.

Die zurückgegebenen Objekte enthalten die folgenden Eigenschaften und Werte:

{
  id, // agorum-ID des Objekts
  uuid, // UUID des Objekts

  name, // Technischer Name des Benutzers / der Benutzergruppe
  fullName, // Anzeigename des Benutzers; bei Benutzergruppen: null
  queryableName, // Name in einem Format, das von objects.find gefunden wird: user:Demo

  className, // Name der Objektklasse: [ 'directoryuserobject', 'directorygroupobject' ]
  type, // Typ des Objekts: [ 'user', 'group' ]
  typeDisplayName, // Übersetzter Typ-Name des Typs: [ 'Benutzer', 'Gruppe' ]

  text, // Formatierter Text, der in einer ComboBox als Anzeigename dient.
  value // Formatierter Wert, der von einer ComboBox als Rückgabewert verwendet wird.
}

Hinweis: Die Benutzergruppe World verhält sich anders als andere (normale) Benutzergruppen. Sie enthält keine Benutzer, wird aber technisch so behandelt, als ob alle Benutzer in der Benutzergruppe vorhanden sind. Deshalb kann der hier beschriebene DataHandler user-group keine Benutzer- oder Benutzergruppen-Objekte in der World-Gruppe finden. Die World-Gruppe kann darüber hinaus auch nicht in andere Benutzergruppen eingefügt und verschachtelt werden.

Beispiele


Die folgenden Abschnitte enthalten jeweils Beispiele zu bestimmten Themen und erläutern, wie Sie die gleichen Parameter über die MetaDB pflegen. Grundsätzlich legen Sie in diesem Fall in der MetaDB zu jedem Parameter einen Property-Entry an.

Lookup

let data = require('common/data');
let handler = data.handler('MAIN_MODULE_MANAGEMENT/customers/Standard/Data/user-group');

let query = 'user:demo';
let parameters = {
  lookup: true
};

handler.read(query, parameters);

Alle Benutzer und Benutzergruppen des Systems, ausgenommen die World-Gruppe

let data = require('common/data');
let handler = data.handler('MAIN_MODULE_MANAGEMENT/customers/Standard/Data/user-group');

let parameters = {
  searchUsers: true,
  searchGroups: true,
  excludeWorld: true
};

handler.read(parameters);


Parameter in der MetaDB

Parameter Wert (String)
SearchUsers true
SearchGroups true
ExcludeWorld true


Alternativ mit dem Parameter „additionalQuery“

let data = require('common/data');
let handler = data.handler('MAIN_MODULE_MANAGEMENT/customers/Standard/Data/user-group');

let parameters = {
  searchUsers: true,
  searchGroups: true,
  additionalQuery: 'classname:directoryuserobject OR (allfields:classname NOT id:999)'
};

handler.read(parameters);


Parameter in der MetaDB

Parameter Wert (String)
SearchUsers true
SearchGroups true
AdditionalQuery 'classname:directoryuserobject OR (allfields:classname NOT id:999)'

Benutzerdefinierte Formatierung der Eigenschaft „value“

  1. Verwenden Sie etwa folgendes Skript, das nach allen Benutzern und Benutzergruppen im System sucht:
    /* global sc */
    
    let data = require('common/data');
    let handler = data.handler('MAIN_MODULE_MANAGEMENT/customers/Standard/Data/user-group');
    
    let parameters = {
      searchUsers: true,
      searchGroups: true,
    };
    
    handler.read(parameters);
  2. Sie erhalten etwa folgendes Array (stark vereinfacht, enthalten sind 1 Benutzergruppe und 1 Benutzer):
    [ {
      "name" : "GRP_wf_allgemein_beobachter",
      "fullName" : null,
      "className" : "directorygroupobject",
      "id" : "1801719",
      "text" : "Gruppe: GRP_wf_allgemein_beobachter",
      "type" : "group",
      "typeDisplayName" : "Gruppe",
      "uuid" : "2f2f9b70-d40b-11eb-b6a2-02420a0a0008",
      "value" : "2f2f9b70-d40b-11eb-b6a2-02420a0a0008",
      "queryableName" : "group:GRP_wf_allgemein_beobachter"
    }, {
      "name" : "guest",
      "fullName" : "Guest User",
      "className" : "directoryuserobject",
      "id" : "1002302",
      "text" : "Benutzer: Guest User (guest)",
      "type" : "user",
      "typeDisplayName" : "Benutzer",
      "uuid" : "71497030-ce62-11e0-b47a-0800276e2399",
      "value" : "71497030-ce62-11e0-b47a-0800276e2399",
      "queryableName" : "user:guest"
    } ]
  3. Sie können die oben fett markierten Werte in den beiden Eigenschaften value anpassen. Als Werte können Sie alle Eigenschaften außer text und value verwenden, die Sie oben sehen. Beispielweise könnten Sie value aus folgenden Eigenschaften zusammensetzen:
    name - id
    Im obigen Beispiel soll die Eigenschaft value bei der Benutzergruppe und dem Benutzer folgendermaßen lauten:

    Benutzergruppe
    GRP_wf_allgemein_beobachter - 1801719

    Benutzer
    guest - 1002302
  4. Ergänzen Sie Ihr Skript um folgende fett markierte Zeilen:
    /* global sc */
    
    let data = require('common/data');
    let handler = data.handler('MAIN_MODULE_MANAGEMENT/customers/Standard/Data/user-group');
    
    let parameters = {
      searchUsers: true,
      searchGroups: true,
      
      userValueFormat: '${name} - ${id}',
      groupValueFormat: '${name} - ${id}'
    };
    
    handler.read(parameters);
  5. Sie erhalten folgendes Array:
    [ {
      "name" : "GRP_wf_allgemein_beobachter",
      "fullName" : null,
      "className" : "directorygroupobject",
      "id" : "1801719",
      "text" : "Gruppe: GRP_wf_allgemein_beobachter",
      "type" : "group",
      "typeDisplayName" : "Gruppe",
      "uuid" : "2f2f9b70-d40b-11eb-b6a2-02420a0a0008",
      "value" : "GRP_wf_allgemein_beobachter - 1801719",
      "queryableName" : "group:GRP_wf_allgemein_beobachter"
    } {
      "name" : "guest",
      "fullName" : "Guest User",
      "className" : "directoryuserobject",
      "id" : "1002302",
      "text" : "Benutzer: Guest User (guest)",
      "type" : "user",
      "typeDisplayName" : "Benutzer",
      "uuid" : "71497030-ce62-11e0-b47a-0800276e2399",
      "value" : "guest - 1002302",
      "queryableName" : "user:guest"
    } ]
    Ergebnis: Die beiden Werte der Eigenschaft value (fett markiert) wurden gemäß den Variablen ${name} - ${id} geändert.


Parameter in der MetaDB

Parameter Wert (String)
SearchUsers true
SearchGroups true
UserValueFormat '${name} - ${id}'
GroupValueFormat '${name} - ${id}'

Benutzerdefinierte Formatierung der Eigenschaft „text“

  1. Verwenden Sie etwa folgendes Skript, das nach allen Benutzern und Benutzergruppen im System sucht:
    /* global sc */
    
    let data = require('common/data');
    let handler = data.handler('MAIN_MODULE_MANAGEMENT/customers/Standard/Data/user-group');
    
    let parameters = {
      searchUsers: true,
      searchGroups: true,
    };
    
    handler.read(parameters);
  2. Sie erhalten etwa folgendes Array (stark vereinfacht, enthalten sind 1 Benutzergruppe und 1 Benutzer):
    [ {
      "name" : "GRP_wf_allgemein_beobachter",
      "fullName" : null,
      "className" : "directorygroupobject",
      "id" : "1801719",
      "text" : "Gruppe: GRP_wf_allgemein_beobachter",
      "type" : "group",
      "typeDisplayName" : "Gruppe",
      "uuid" : "2f2f9b70-d40b-11eb-b6a2-02420a0a0008",
      "value" : "2f2f9b70-d40b-11eb-b6a2-02420a0a0008",
      "queryableName" : "group:GRP_wf_allgemein_beobachter"
    }, {
      "name" : "guest",
      "fullName" : "Guest User",
      "className" : "directoryuserobject",
      "id" : "1002302",
      "text" : "Benutzer: Guest User (guest)",
      "type" : "user",
      "typeDisplayName" : "Benutzer",
      "uuid" : "71497030-ce62-11e0-b47a-0800276e2399",
      "value" : "71497030-ce62-11e0-b47a-0800276e2399",
      "queryableName" : "user:guest"
    } ]
  3. Sie können die oben fett markierten Werte in den beiden Eigenschaften value anpassen. Als Werte können Sie alle Eigenschaften außer text und value verwenden, die Sie oben sehen. Beispielweise könnten Sie value aus folgenden Eigenschaften zusammensetzen:
    name - id
    Im obigen Beispiel soll die Eigenschaft text bei der Benutzergruppe und dem Benutzer folgendermaßen lauten.

    Benutzergruppe
    GRP_wf_allgemein_beobachter - 1801719

    Benutzer
    guest - 1002302
  4. Ergänzen Sie Ihr Skript um folgende fett markierte Zeilen:
    /* global sc */
    
    let data = require('common/data');
    let handler = data.handler('MAIN_MODULE_MANAGEMENT/customers/Standard/Data/user-group');
    
    let parameters = {
      searchUsers: true,
      searchGroups: true,
      
      userTextFormat: '${name} - ${id}',
      groupTextFormat: '${name} - ${id}'
    };
    
    handler.read(parameters);
  5. Sie erhalten folgendes Array:
    [ {
      "name" : "GRP_wf_allgemein_beobachter",
      "fullName" : null,
      "className" : "directorygroupobject",
      "id" : "1801719",
      "text" : "GRP_wf_allgemein_beobachter - 1801719",
      "type" : "group",
      "typeDisplayName" : "Gruppe",
      "uuid" : "2f2f9b70-d40b-11eb-b6a2-02420a0a0008",
      "value" : "2f2f9b70-d40b-11eb-b6a2-02420a0a0008",
      "queryableName" : "group:GRP_wf_allgemein_beobachter"
    } {
      "name" : "guest",
      "fullName" : "Guest User",
      "className" : "directoryuserobject",
      "id" : "1002302",
      "text" : "guest - 1002302",
      "type" : "user",
      "typeDisplayName" : "Benutzer",
      "uuid" : "71497030-ce62-11e0-b47a-0800276e2399",
      "value" : "71497030-ce62-11e0-b47a-0800276e2399",
      "queryableName" : "user:guest"
    } ]
    Ergebnis: Die beiden Werte der Eigenschaft value (fett markiert) wurden gemäß den Variablen ${name} - ${id} geändert.


Parameter in der MetaDB

Parameter Wert (String)
SearchUsers true
SearchGroups true
UserTextFormat '${name} - ${id}'
GroupTextFormat '${name} - ${id}'

Alle Benutzer, die den Wert „emo“ enthalten

let data = require('common/data');
let handler = data.handler('MAIN_MODULE_MANAGEMENT/customers/Standard/Data/user-group');

let query = 'emo';
let parameters = {
  searchUsers: true,
  searchGroups: true,
  
  matchStart: false,
  matchEnd: false
};

handler.read(query, parameters);


Parameter in der MetaDB

Parameter Wert (String)
SearchUsers true
SearchGroups true
matchStart false
matchEnd false