Entwicklungsobjekt: Suche

1              Themenübersicht

Die Anwendung „Entwicklungsobjekte“ dient der Erfassung und Ansicht von Entwicklungsobjekten verschiedenster Typen. In dieser Dokumentation wird der Typ „Suche“ beschrieben.

Allgemeine Informationen zur Anwendung „Entwicklungsobjekte“, beispielsweise die Beschreibung der anwendungsbezogenen Aktionen oder des Identifikationsbereichs, finden Sie in der Dokumentation „Entwicklungsobjekte“.

Die Verwendung von Suchen erfolgt in den Cockpits. Weiteren Informationen dazu finden Sie in der Dokumentation „Referenzhandbuch: Anpassbare Cockpits“.

2              Beschreibung

Suchen dienen dem Auffinden von Objekten in der Datenbank. Die Suche ist eine mehrteilige OQL-Anweisung der Form „SELECT“ (siehe Dokumentation „OQL-Syntax“). Die Ergebnismenge des Selects ist das Suchergebnis. Das „SELECT“ basiert auf Business Objects und OQL-Views, die durch Joins beliebig verknüpft werden können.

Hinweis:
Für das Entwicklungsobjekt „Suche“ wurden Erweiterungen an der OQL-Syntax vorgenommen, z. B. Join-Optimierungen. Näheres kann der Dokumentation OQL-Syntax entnommen werden.

2.1        Karteireiter „Editor“: Unterer Karteireiter „From und Where“

Unter diesem Karteireiter werden die an der Suche beteiligten Business Objects bzw. OQL-Views und deren Beziehungen untereinander definiert. Jedes beteiligte Objekt kann über einen eindeutigen Alias referenziert werden. Des Weiteren kann das Ergebnis durch eine Where-Klausel statisch eingeschränkt werden.

Folgende Felder stehen zur Verfügung:

Feld Erläuterung
FROM Definition der From-Klausel des OQL-Ausdrucks.

Die From-Klausel enthält die beteiligen Business Objects und OQL-Views und deren Beziehungen untereinander. Diese Beziehungen werden als Join ausgedrückt.

Im Verwendungsnachweis, der verwendeten Business Objects und OQL-Views, wird die Suche aufgenommen. Die FROM-Klausel wird ohne das Schlüsselwort „from“ erfasst.

WHERE Definition der WHERE-Klausel der OQL-Anweisung.

Durch diese Angabe kann die Ergebnismenge der Suche statisch eingeschränkt werden. Die WHERE-Klausel wird ohne das Schlüsselwort „where“ erfasst.

2.2        Karteireiter „Editor“: Unterer Karteireiter „Attribute“

Unter dem Karteireiter „Attribute“ können aus den beteiligten Business Objects und OQL-Views, die Attribute ausgewählt werden, die in einem Anpassbaren Cockpit zur Verfügung stehen. Jedes Attribut kann über einen eindeutigen Namen referenziert werden.

Der Karteireiter enthält eine Liste, die eine Symbolleiste mit folgenden Buttons umfasst:

Aktion Beschreibung
Neues Attribut Fügt ein neues Attribut in die Liste der Attribute ein.
Attribute auswählen Öffnet ein Dialog-Fenster zur Auswahl von Attributen. Die angezeigten Attribute basieren auf den Attributen der in der From-Klausel referenzierten Business Objects oder OQL-Views.
Löschen Löscht die ausgewählten Attribute.
Filterfeld „Attribute“ und Button „Filter anwenden/entfernen“ Mit dem Attribut-Filterfeld können Sie die Menge der angezeigten Attribute einschränken. Geben Sie dafür den Namen eines Attributs in das Feld ein, dabei können Sie Platzhalter verwenden.

Der Filter wird angewendet, wenn Sie den Button „Filter anwenden/entfernen“ aktivieren. Dafür können Sie auch die Eingabetaste drücken. Wenn der Filter angewendet wird, dann werden in der Liste nur solche Attribute angezeigt, die dem eingegebenen Filtermerkmal entsprechen. Sie entfernen den Filter, indem Sie den Button „Filter anwenden/entfernen“ deaktivieren.

Sucherweiterungsattribute Auf einem System, auf dem Suchen durch Sucherweiterungen angepasst werden können, z. B. einem Kundenentwicklungssystem, können Sie mithilfe des Buttons „Sucherweiterungs­attri­bute“ diejenigen Attribute einblenden, die für die Erweiterung der Suche verwendet werden.

Die folgenden Spalten stehen zur Verfügung:

Spalte Erläuterung
Name Frei wählbarer Name für den Parameter. Der Name muss innerhalb der Suche eindeutig sein und dient als Identifikation für den programmierten Zugriff auf die Attribute einer Suche.

Wird ein neuer Parameter zu einer Suche hinzugefügt, die nicht im eigenen Entwicklungsnamensraum liegt, muss der Name mit dem Entwicklungspräfix des aktuellen Systems beginnen. In diesem Fall wird das Präfix bei der Neuanlage automatisch vorgeblendet.

Soll ein Attribut zu einem virtuellen Attribut gehören, muss das Attribut mit dem Namen des virtuellen Attributes gefolgt von einem Punkt beginnen.

Ausdruck Angabe eines Attributs eines Business Objects oder einer OQL-View aus der From-Klausel oder eines von der Datenbank zu berechnenden Ausdrucks, der ein oder mehrere solcher Attribute verwendet. Der Name eines Attributs muss über den angegebenen Alias referenziert werden. Syntax: „Alias:Attributname“.

Der zu berechnende Ausdruck darf nur die OQL-Aggregatfunktionen UPPER, AVG, MAX, MIN, SUM, COUNT, die Operatoren „*“, „/“, „+“, „-“ und Attribute enthalten. Alle Operanden müssen denselben Typ haben, d. h. entweder sind alle Operanden Funktionen oder Attribute. Das Argument einer Funktion darf nur aus einem Attribut bestehen.

Beispiele für berechnete Ausdrücke:

boAlias1:attr1 + boAlias1:attr2

Sum(boAlias1:attr1) – SUM(boAlias2:attr1)

Wenn das Attribut als „Business Object“ gekennzeichnet ist, kann der Attributname ggf. weggelassen werden.

Wenn das Attribut als „Virtuell“ gekennzeichnet ist, dann darf kein Ausdruck angegeben werden.

Verwendete Attribute werden im Verwendungsnachweis des Business Objects oder der OQL-View aufgenommen.

Virtuell Attribute können gruppiert werden, d. h. mehrere Attribute können unter einem Attribut zusammengefasst werden. Dieses Attribut muss als „Virtuell“ gekennzeichnet werden. Ein virtuelles Attribut besitzt keinen Bezug zu einem Attribut eines Business Objects oder einer OQL-View auf der Datenbank und hat deshalb auch keinen Ausdruck eingetragen. Die Attribute, die zu einem virtuellen Attribut gehören, müssen mit dem Namen des virtuellen Attributes gefolgt von einem Punkt beginnen.

Wird ein virtuelles Attribut als sortierbar gekennzeichnet, so muss genau ein Attribut der Gruppe als sortierbar gekennzeichnet sein. Nach diesem Attribut wird stellvertretend für das virtuelle Attribut sortiert.

Wenn ein virtuelles Attribut als filterbar gekennzeichnet ist, so muss mindestens ein Attribut der Gruppe ebenfalls als filterbar gekennzeichnet werden. Nur die Attribute, die in der Gruppe als filterbar gekennzeichnet sind, werden für die Einschränkung der Datenbankabfrage verwendet. Weitere Attribute der Gruppe werden nicht verwendet.

Gleiches gilt für die Kennzeichnung eines Attributes als anzeigbar. Mindestens ein Attribut in der Gruppe muss bestehen, welches als anzeigbar gekennzeichnet ist. Nur die entsprechend gekennzeichneten Attribute werden, bei Verwendung des virtuellen Attributes in der Anzeige, in die Rückgabemenge der Datenbankabfrage aufgenommen.

Ein virtuelles Attribut muss einen logischen Datentyp eingetragen haben, über den eine Data-Description ermittelt werden kann, die einen Editor/Renderer für die Visualisierung bereitstellt. Siehe auch „Referenzhandbuch: Anpassbare Cockpits“, Kapitel „Virtuelle Spalten“.

Eine Schachtelung von virtuellen Attributen ist nicht möglich.

Ein virtuelles Attribut kann nicht gleichzeitig als Business Object oder als programmierter Filter gekennzeichnet werden.

Business Object Wenn ein Attribut als Business Object gekennzeichnet ist, dann wird im Cockpit auf diesem Attribut die Link-Funktion sichtbar. Das Kontextmenü wird bezogen auf das referenzierte Business Object erstellt. Dadurch kann ein Kontextmenü auf einem beliebigen Attribut des Business Objects erstellt werden.

Das Attribut kann in der Abfrage „objektwertig“ behandelt werden. Neben der Möglichkeit den Wert des Attributes abzufragen, kann auch das ganze Business Object abgefragt werden.

Der verwendete Ausdruck kann auch auf den Alias reduziert werden. In diesem Fall kann nur das Objekt abgefragt werden. Dies hat allerdings auch Einfluss auf die anderen Eigenschaften des Attributes. So kann das Attribut nicht als filterbar oder sortierbar gekennzeichnet werden. Weiterhin muss, wenn das Attribut als anzeigbar gekennzeichnet ist, ein logischer Datentyp angegeben werden. Dieser sollte dann auf eine Data-Description verweisen, die einen Renderer eingetragen hat. Innerhalb eines virtuellen Attributes ist nicht notwendig, einen logischen Datentyp einzutragen, da das virtuelle Attribut für die Visualisierung verantwortlich ist.

Ein Attribut, welches als Business Object gekennzeichnet ist, kann nicht gleichzeitig als virtuell oder als programmierter Filter gekennzeichnet werden

Programmierter Filter Ein als programmierter Filter gekennzeichnetes Attribut dient dazu, die Datenbankabfrage durch Programmierung eines Filters einzuschränken. Derart gekennzeichnete Attribute werden nicht als Suchmerkmal im Cockpit zur Verfügung gestellt.

Ein Attribut, welches als programmierter Filter gekennzeichnet ist, kann nicht gleichzeitig als virtuell oder als Business Object gekennzeichnet werden

Datentyp In der Spalte Datentyp wird angezeigt, welcher Datentyp für das Attribut ermittelt wurde. Dieser Datentyp wird für das generische Erstellen von Abfragefeldern, Anzeigespalten etc. verwendet
Filterbar Um nach einem Attribut filtern zu können, muss dieses als filterbar gekennzeichnet werden. Für diese Attribute wird ein Abfragefeld in den Abfragebereich des Cockpits erstellt.

Dabei gelten allerdings folgende Ausnahmen: Für Attribute, die als programmierter Filter gekennzeichnet sind, wird kein Feld erstellt.

Für Attribute, die in einer Gruppe eines virtuellen Feldes sind, wird ebenfalls kein Feld erstellt. Für diese Attribute wird am zugehörigen virtuellen Attribut der Filterausdruck abgefragt.

Sortierbar Um ein Attribut in der Sortierung nutzen zu können, muss es als sortierbar gekennzeichnet werden.

Wenn ein virtuelles Attribut als sortierbar gekennzeichnet ist, dann muss genau ein Attribut der zugehörigen Gruppe ebenfalls als sortierbar gekennzeichnet werden. Nach diesem Attribut wird sortiert, stellvertretend für das virtuelle Attribut.

Anzeigbar Um ein Attribut in der Anzeige verwenden zu können, muss es als anzeigbar gekennzeichnet werden.

Wird ein virtuelles Attribut als anzeigbar gekennzeichnet, dann muss mindestens ein Attribut der zugehörigen Gruppe ebenfalls als anzeigbar gekennzeichnet werden. Diese gekennzeichneten Attribute werden von der Datenbank gelesen, wenn das virtuelle Attribut in die Anzeige aufgenommen wird.

Rückgabeschlüssel Die Menge aller Attribute, die als Rückgabeschlüssel gekennzeichnet sind, müssen einen eindeutigen Schlüssel beschreiben, anhand dessen eine Zeile im Ergebnis identifiziert werden kann. Weiterhin sind diese Attribute die einzigen Attribute, die garantiert in der Ergebnismenge enthalten sind. Programmierungen, z. B. für die Folgeverarbeitung, dürfen sich nur auf diese Attribute beziehen. Alle anderen anzeigbaren Attribute sind optional und können vom Benutzer beliebig zur Anzeige hinzugenommen oder entfernt werden.

Mindestens ein Attribut muss bestehen, welches als Rückgabeschlüssel gekennzeichnet ist.

Logischer Datentyp Durch Angabe eines logischen Datentypen lassen sich die Eigenschaften eines Attributes verändern. Unter Eigenschaften sind dabei Dinge wie das Label, die Wertehilfe, spezielle Renderer oder Editoren zu verstehen.

In den meisten Fällen ist die Angabe eines logischen Datentypen optional. Lediglich bei einem virtuellen Attribut oder einem als Buisness Object gekennzeichneten Attribut, welches als Ausdruck nur den Alias besitzt, ist die Angabe verpflichtend.

Wenn ein logischer Datentyp angegeben ist, muss dieser auf dem gleichen Datentyp wie das Attribut basieren. Bei einem virtuellen Attribut besteht die freie Wahl des logischen Datentyps, da kein Bezug zu einem Attribut auf der Datenbank besteht.

Dialog-Fenster zur Auswahl der Attribute

Wenn unter dem Karteireiter „Attribute“ die Aktion „Attribute auswählen…“ gewählt wurde, dann wird ein Dialog-Fenster angezeigt. Das Dialog-Fenster dient dazu, gezielt Attribute in die Attributliste einzufügen. Der Benutzer kann hierfür aus den in der From-Klausel definierten Business Objects bzw. OQL-Views anhand der vergebenen Alias auswählen. In der Auswahlliste werden die zugehörigen Attribute des Objektes angezeigt. Optional kann ein Präfix angegeben werden, das den Attributnamen vorangestellt wird. Dies ist nützlich, wenn das gleiche Business Object mit unterschiedlichen Alias vorliegt. In diesem Fall muss man, um die Attributnamen in der Suche eindeutig zu halten, ein Präfix verwenden. Des Weiteren ist ein Präfix vor allem für Entwicklungen von Entwicklungspartnern und für virtuelle Attribute hilfreich.

Das Dialog-Fenster teilt sich in drei Bereiche auf. Im oberen Bereich befinden sich zwei Felder. Im mittleren Bereich befindet sich eine Attributliste. Im unteren Bereich befindet sich eine Buttonleiste.

Die folgenden Felder stehen im oberen Bereich zur Verfügung:

Feld Erläuterung
Alias Eine Auswahlliste aller in der Suche definierten Alias. Zu jedem Alias ist der Objektname angegeben.
Präfix Das eingegebene Präfix wird dem Namen in der Auswahlliste vorangestellt.

Im Kopfbereich der Liste befindet sich eine Symbolleiste mit folgendem Button:

Button Beschreibung
Aktualisieren der Liste Aktualisiert den Inhalt der Liste. Zum gewählten Alias werden alle Attribute des referenzierten Business Objects bzw. der OQL-View ermittelt. Zu jedem Attribut werden der Attributpfad, der Name und der Ausdruck ermittelt und in der Attributliste angezeigt.

Die folgenden Spalten stehen zur Verfügung:

Spalte Erläuterung
Attributpfad Beschreibt den Pfad zu einem Attribut im gewählten Business Object bzw. in der gewählten OQL-View. Handelt es sich bei einem Attribut um ein Attribut innerhalb eines Parts, dann werden der Name des Parts und des Attributes mit einem Punkt getrennt.
Name Der Name setzt sich aus dem Präfix und dem Attributpfad zusammen. Alle Punkte im Attributpfad werden entfernt und der nachfolgende Buchstabe wird durch einen Großbuchstaben ersetzt.

Wenn ein Präfix angegeben wurde, dann wird dieses vorangestellt. Endet das Präfix auf einen Punkt, dann bleibt der restliche Name unverändert. Endet das Präfix nicht auf einen Punkt, dann wird der erste Buchstabe des restlichen Namens durch den zugehörigen Großbuchstaben ersetzt.

Ausdruck Der Ausdruck setzt sich aus dem Alias des gewählten Objektes gefolgt von einem Doppelpunkt und dem Attributpfad zusammen.

Nach Auswahl der gewünschten Attribute können diese in die Suche mit „OK“ übernommen werden.

2.3        Karteireiter „Editor“: Unterer Karteireiter „Layouts“

Unter dem Karteireiter „Layouts“ werden die Layouts einer Suche angezeigt. Ihnen wird ausschließlich angeboten, Layouts zu löschen. Das Erstellen und Bearbeiten der Layouts geschieht im Cockpit zur Suche. Dafür muss die Suche einer Entwicklungsaufgabe zugeordnet sein und der Benutzer muss Bearbeiter der Entwicklungsaufgabe und der Suche sein.

Der Karteireiter enthält eine Liste, die eine Symbolleiste mit folgendem Button umfasst:

Button Beschreibung
Layout löschen Löscht die ausgewählten Layouts der Suche.

Die folgenden Spalten stehen zur Verfügung:

Spalte Erläuterung
Name Übersetzbarer Name eines Layouts. Nur Layouts vom Typ „Standard“ haben einen Namen.
Typ Entweder „Standard“ oder „Filter“. Maximal ein Layout kann vom Typ „Filter“ angegeben werden. Dieses enthält die Auswahl und Anordnung der Abfragefelder.

Die Layouts vom Typ „Standard“ enthalten Layouts der Ergebnistabelle.

Hinweis:

Beachten Sie bitte, dass für Cockpits die Layouts über eine Anwendungserweiterung erfasst werden. Die Layouts einer Suche werden nur dann genutzt, wenn keines in der Anwendungserweiterung besteht.

Sichtbarkeit Ein Layout kann sichtbar oder „sichtbar und bevorzugt“ sein. Von den Layouts mit „sichtbar und bevorzugt“ besteht pro Typ maximal ein Layout. Die Layouts werden beim „Leer öffnen“ der Anwendung angezeigt.

2.4        Karteireiter „Editor“: Unterer Karteireiter „Einstellungen“

Unter diesem Karteireiter wird festgelegt, auf welchen Datenbank-Typen die Suche ausgeführt werden kann. Wenn mehr als eine Datenbank ausgewählt wird, dann müssen die verwendeten Business Objects und OQL-Views auch auf diesen Datenbanken bestehen.

Weiterhin kann festgelegt werden, ob das Schlüsselwort „distinct“ in der Suche verwendet werden soll.

Die folgenden Felder stehen zur Verfügung:

Feld Erläuterung
Hook In das Feld „Hook“ können Sie optional eine Java-Klasse eintragen, die als Hook verwendet wird. Mit einer Hook-Java-Klasse können Sie die Ausführung der Suche beeinflussen. Voraussetzung ist, dass sie von der Klasse „com.cisag.pgm.search.SearchHook“ abgeleitet ist, die Sie in der System-Engine finden.

Hinweis:

Erfassen Sie zusätzlich im Feld „Basisobjekt“ das primäre Business Oject der Suche, dann dient dieses als Eingangsparameter und Sie können so Hook-Java-Klassen mehrmals verwenden.

Basisobjekt In das Feld „Basisobjekt“ können Sie optional das primäre Business Object der Suche eintragen. Ist eines eingetragen, dann dient es als Eingangsparameter für einen Hook, den Sie im Feld „Hook“ angeben. Mithilfe des Basisobjektes können Hook-Java-Klassen auch mehrfach verwendet werden.
Rubrik „Datenbank“
OLTP-Datenbank Die verwendeten Business Objects und OQL-Views befinden sich auf der OLTP-Datenbank.

Die in der OQL-Anweisung verwendeten Objekte müssen alle auf derselben Datenbank erfasst sein.

OLAP-Datenbank Die verwendeten Business Objects und OQL-Views befinden sich auf der OLAP-Datenbank.

Die in der OQL-Anweisung verwendeten Objekte müssen alle auf derselben Datenbank erfasst sein.

Repository-Datenbank Die verwendeten Business Objects und OQL-Views befinden sich auf der Repository-Datenbank.

Die in der OQL-Anweisung verwendeten Objekte müssen alle auf derselben Datenbank erfasst sein.

Konfigurations-Datenbank Die verwendeten Business Objects und OQL-Views befinden sich auf der Konfigurations-Datenbank.

Die in der OQL-Anweisung verwendeten Objekte müssen alle auf derselben Datenbank erfasst sein.

Distinct Doppelte Ergebnisse werden entfernt. Dabei ist zu beachten, dass die Sortierparameter, die der Suche implizit hinzugefügt werden, im „Select“ des Aufrufs aufgenommen werden.

Dadurch wird die Ergebnismenge verändert. Das gezeigte Suchergebnis muss nicht dem erwarteten Suchergebnis entsprechen.

 

Czy ten artykuł był pomocny?