Label-Helper Konfiguration
An einigen Stellen im System wird einem Konfigurator die Möglichkeit geboten die Datenquelle einer wie auch immer gearteten Liste zu konfigurieren. Als Basis für die Einstellmöglichkeiten dient immer ein Suchobjekt für die Suche nach einem Bestimmten Entitätstyp (z.B.: Benutzer).
Um diese Suche entsprechend erweitern oder einschränken zu können, wird ein separater Konfigurationsdialog angeboten, welcher zusätzlich auch die Beschriftung eines Suchergebniseintrags als Berechnungsausdruck definieren lässt.
Hintergrundwissen
Beschriftungen stellen oftmals kein triviales Problem im Umgang mit Datenbank-Paging dar, da auch Beschriftungen von Einträgen angezeigt werden müssen, welche eigentlich noch garnicht in einer Datenseite aus der Datenbank geladen wurden. Hierzu muss eine separate Suchanfrage im Hintergrund gestellt werden, welche auch solche Beschriftungen problemlos darstellen kann. Der Konfigurator muss sich hierum nicht explizit kümmern, da dies aufgrund der Label-Helper Technologie Automatisch geschieht. Daher hat diese Konfigurationsmöglichkeit auch ihren Namen.
Der Dialog zum Konfigurieren eines Label-Helper gestützten Services sieht in den meisten Fällen wie folgt aus:
Im Beispiel oben handelt es sich um den Datenservice einer Auswahlfeld/Combobox, welche Benutzer zur Auswahl anbieten soll.
Reiter Projektionen (A)
(1) Der Label Ausdruck legt die Beschriftung eines Suchergebniseintrages fest. Hier können alle zum Kontext passenden Berechnungsausdrücke verwendet werden. Als lesbare Datenfelder dienen die rechts (5) konfigurierten Projektionen, welche über deren Namen (wenn angegeben, z.B. name2) oder deren Datenfeldpfad (z.B. address.name1) zugreifbar sind (geschweifte Klammern). Das "id" Feld steht dabei immer zur Verfügung und muss nicht extra selektiert werden.
(2) Aktiviert die Verwendung von "Endet mit" Sucheinschränkungen (z.B.: der Suchbegriff "dmin" würde dann unter anderem als username ilike "%dmin%" zu den Sucheinschränkungen hinzugefügt). Dies hat zur Folge, dass der Benutzer auch nach Wortinhalten suchen kann und nicht nur "Beginnt mit" und exakte Treffer Suchen ausführen kann.
Achtung: "Endet mit" Sucheinschränkungen führen in der Datenbank zu der Überprüfung sämtlicher Einträge in einer Tabelle ohne dass ein Index der involvierten Spalten hinzugezogen werden kann. Daher werden solche Abfragen mit zunehmender Datenmenge immer langsamer. Die Option sollte daher nur aktiviert werden, wenn die Anzahl an durchsuchbaren Datensätzen sich auf wenige Tausend beschränkt.
Beispiel mit dem oben gezeigten Beschriftungsausdruck:
Option (2) deaktiviert:
|
|
Option (2) aktiviert:
|
|
(3) Ist die Suchoptimierung aktiviert (empfohlen), werden zunächst nur die IDs der Ergebnismenge (mit Einschränkung und Sortierung) geholt. In einer zweiten Abfrage werden dann sämtliche Projektion ausgewertet.
Ist eine Projektion auf wiederholte Einträge vorhanden, sollte die Suchoptimierung deaktiviert werden, da die Ergebnismenge ansonsten nicht mit der Einschränkung übereinstimmen könnte.
Beispiel: Join auf plurales typisiertes Attribut mit Projektion und Einschränkung auf Joinergebnis. Sucheinschränkungen und Paging funktionieren nicht auf so einer Projektion. Durch deaktivieren der Suchoptimierung kann dieses repariert werden.
Hinweis: Nur sinnvoll in Verbindung mit Ergebnistyp "Tupel"
(4) Die Einstellung für Max. Ergebnisse definiert die Anzahl der Elemente die gleichzeitig (nach-)geladen werden. Ein Wert von 0 wird als "unbegrenzte Anzahl" interpretiert. Die Einstellung kann entscheidend sein für den sinnvollen Einsatz der Komfortfunktionen "Alle" und "Umkehren" (s. a. Multi-Combobox), beim Definieren von Filterkriterien für eine Spalte, für die die Service-Konfiguration die Basis liefert. Andererseits kann der Verzicht auf eine Obergrenze für die Anzahl der Ergebnisse unerwünschtes Laufzeitverhalten zur Folge haben, wenn der Service umfangreiche Datenmengen liefert.
(5) Der Ergebnistyp gibt an, in welcher Form die Einträge der Suche zurückgeliefert werden sollen (z.B. Entity, um das gesamte Benutzerobjekt zu laden oder Tupel, um nur die definierten Felder (5) zu laden)
(6) Gibt die für die Durchsuchung verwendbaren Projektionen/Felder an. Diese Projektionen werden auch zur Erstellung von Tupeln (siehe Ergebnistyp) herangezogen
(7) Projektionen, welche in das Tupel übernommen werden, aber nicht durchsuchbar (6) sind. I.d.R. werden hier Felder hinzugefügt, welche nicht im Label (1) eines Eintrags verwendet werden.
Join (B)
Hier können zusätzliche Daten (z.B. Attribute oder Felder von anderen Objekten) beschafft werden (analog zum Abfragekonfigurator).
Sucheinschränkung (C)
Hier kann die Ergebnismenge zusätzlich anhand von frei definierbaren Bedingungen eingeschränkt werden (analog zum Abfragekonfigurator).
Suchreihenfolge (D)
Definiert Felder, nach denen das Suchergebnis absteigend oder aufsteigend sortiert wird