OQL-Anweisungen

1                     Themenübersicht

Für die Kommunikation mit Datenbanken verwenden verschiedene Hersteller unterschiedliche Schnittstellen, beziehungsweise diverse SQL-Dialekte. Um diese Kommunikation zu vereinheitlichen, wurde eine Object-Query-Language (OQL) implementiert, die auf objektorientierten und relationalen Konzepten basiert. Die OQL ist angelehnt an den SQL-Standard. Bei einem ähnlichen Funktionsumfang wie in SQL, wird die OQL für alle aufgeführten Datenbank-Managementsysteme unterstützt.

Die Abfragesprache OQL ist in Comarch ERP Enterprise implementiert. Bei ihrer Übersetzung werden u. a. entsprechend den Namensraumkonventionen, die spezifischen Comarch-ERP-Enterprise-Namen in technische Datenbanknamen umgewandelt. Damit werden eindeutige Bezüge zu den Objekten hergestellt und Namenskollisionen in einem System ausgeschlossen.

Mit der Anwendung „OQL-Anweisungen“ können OQL-Anweisungen auf allen mit dem aktuellen Application-Server verbunden Datenbanken des Systems ausgeführt werden. Die Anwendung ist für mehrere Anwendungsbereiche geeignet. Anwendungsentwickler können z. B. OQL-Anweisungen, die in Java-Quellcode verwendet werden sollen, in dieser Anwendung testen.

Abfragen über SELECT-Anweisungen sind möglich sowie Veränderungen am Datenbestand mittels UPDATE-, DELETE- und INSERT-Anweisungen. Das Ausführen von UPDATE-, DELETE- und INSERT-Anweisungen wird im Systemprotokoll protokolliert.

Hinweis:
Aufgrund der Komplexität des Datenmodells sollte das Ausführen von OQL-Anweisungen, die den Datenbestand ändern, weitest gehend vermieden werden. Semantisch fehlerhafte OQL-Anweisungen können inkonsistente Daten zur Folge haben. Comarch leistet keinen Support für Systeme, welche durch fehlerhafte OQL-Anweisungen Fehler aufweisen.

Die ausgeführten OQL-Anweisungen werden im Verlauf aufgezeichnet[1] und können auch als Abfragemuster gespeichert werden. In dem Abfragemuster werden sowohl die Datenbank, als auch die OQL-Anweisung gespeichert.

2                     Zielgruppe

  • Systemadministratoren
  • Anwendungsentwickler

3                     Begriffsbestimmung

Business Object

Das Datenmodell zu Comarch ERP Enterprise basiert auf Business Objects. Sie enthalten ausschließlich Daten und werden deshalb auch als Datencontainer bezeichnet. Die Bearbeitung dieser Daten wird mithilfe der Anwendungslogik realisiert, die Zustandstransformationen auf den Daten durchführt. Mit den Business Objects wurden unter weitestgehender Berücksichtigung der dritten Normalform die relevanten Ausschnitte der Realität modelliert, das heißt die Einheiten wurden möglichst redundanzfrei erstellt, woraus eine Vielzahl an Business Objects resultiert. Die Beschreibung des Aufbaus eines Business Objects ist ein Entwicklungsobjekt. Eine Business-Object-Instanz ist eine Ausprägung der als Entwicklungsobjekt abgelegten Beschreibung. Der Persistenzdienst kann Business-Object-Instanzen lesen, speichern und löschen. Oftmals liegt eine Business-Object-Beschreibung in normalisierter Form vor. Dabei kann die eigentliche betriebswirtschaftliche Größe durch mehr als ein Business Object beschrieben werden. Jedoch besteht immer nur ein Haupt-Business-Object. Daher werden Business Objects zu einem Business Entity gruppiert, bei denen ein besonderes gekennzeichnetes Business Object als Repräsentant der Gruppe auftritt. Dieser Repräsentant wird mit seiner Gruppe zum Business Entity.

Object-Query-Language (OQL)

Die Object-Query-Language (OQL) dient zum Formulieren von Anfragen an eine Datenbank-Instanz. OQL ist eine Erweiterung zu SQL, die anstatt mit einer Tabelle mit einem Business Object oder jeweils mehreren arbeitet.

4                     Voraussetzungen

Grundlagen des Persistenzdienstes von Comarch ERP Enterprise, OQL- und SQL-Kenntnisse.

5                     Anwendungsbeschreibung

Die Anwendung „OQL-Anweisungen“ enthält das Textfeld „OQL-Anweisung“ und eine Tabelle zur Visualisierung der Ergebnisse einer SELECT-Anweisung. Beide Elemente befinden sich im Arbeitsbereich der Anwendung. Die Elemente befinden sich in einem Splitpane, so dass der Benutzer dynamisch festlegen kann, ob er viel Platz für eine umfangreiche OQL-Anweisung benötigt oder der Ergebnistabelle mehr Platz zuweisen möchte. Unter der Standard-Symbolleiste befindet sich das Datenbank-Feld, in dem ausgewählt wird, auf welcher Datenbank die OQL-Anweisung ausgeführt werden soll. OQL-Anweisungen dürfen nur auf den OLTP-Datenbanken ausgeführt werden, auf die sich der aktuelle Benutzer auf Grund seiner Berechtigungen auch anmelden dürfte.

5.1               Arbeitsbereich

Der Arbeitsbereich besteht aus dem Feld „OQL-Anweisung“ und einer Tabelle für die Ergebnisse von SELECT-Anweisungen.

Feld Erläuterung
OQL-Anweisung Dieses Steuerelement enthält Metadaten und darf nicht gelöscht werden.In diesem Feld wird die OQL-Anweisung erfasst.  Bei UPDATE-, INSERT- und DELETE-Anweisungen sind mehrere Anweisungen erlaubt, die innerhalb einer Transaktion ausgeführt werden. Die Anweisungen werden durch „;“ getrennt.

Bei erfolgreicher Ausführung einer SELECT-Anweisung wird im unteren Teil des Anwendungsbereichs eine Tabelle mit den ermittelten Werten angezeigt. Die Beschriftung der Tabellenspalten wird aus der Data-Description der jeweiligen Attribute der Business Objects ermittelt. Im Kopfbereich der Tabelle steht ein Button zur Verfügung, mit dem die Tabelle maximiert werden kann.

5.2               Navigationsbereich

Die Anwendung „OQL-Anweisungen“ enthält im Navigationsbereich neben den üblichen Karteireitern einen zusätzlichen Karteireiter „Ermitteln des OQLs“. Der Karteireiter besteht aus Identifikations-Feldern und der Liste, in der die Attribute eines ausgewählten Business Objects aufgezählt werden. Mit Hilfe verschiedener Aktionen können aus den Attributen die OQL-Anweisungen zusammengesetzt werden.

Die Elemente im Einzelnen:

Aktion Erläuterung
Ermitteln des OQLs Falls ein Business Object im Feld „Name“ angegeben wurde, führt das Ausführen dieser Aktion dazu, dass in der Liste die Attribute des Business Objects aufgezählt werden.

 

Feld Erläuterung
Name Der vollqualifizierte Name des Business Objects, das für das OQL-Ermitteln verwendet wird.
Alias Das Alias des Business Objects, das in der OQL-Anweisung verwendet wird.

Folgende Buttons unterstützen Sie beim Ermitteln eines OQLs. Alle Funktionen fügen Texte an der markierten Position ein oder ersetzen den Text, der im Feld „OQL-Anweisung“ markiert ist. Ist keine Cursorposition und kein Text markiert, dann wird der Text am Anfang des Feldes eingefügt.

Aktion Erläuterung
Attribute in die OQL-Anweisung einfügen Die ausgewählten Attribute werden in das Feld „OQL-Anweisung“ eingefügt. Dabei wird auch das angegebene Alias verwendet.
Select-Anweisung in die OQL-Anweisung einfügen Fügt eine SELECT-Anweisung aus den ausgewählten Attributen und dem Business Object in das Feld „OQL-Anweisung“ ein.
Join in die OQL-Anweisung einfügen Fügt die JOIN-Klausel in die OQL-Anweisung mit dem vollqualifizierten Namen des Business Objects und des Alias ein. Wenn Attribute in der Liste ausgewählt sind, werden diese in die JOIN-Bedingung übernommen und durch den AND-Operator verknüpft.
Where-Bedingung in die OQL-Anweisung einfügen Fügt die WHERE-Klausel in die OQL-Anweisung ein. Wenn Attribute des Business Objects in der Liste ausgewählt sind, werden diese mit kopiert und durch den AND-Operator verknüpft.
OrderBy in die OQL-Anweisung einfügen Fügt die ORDER BY-Klausel in die OQL-Anweisung mit ASC-Operator ein. Wenn Attribute des Business Objects in der Liste ausgewählt sind, werden diese, durch Komma getrennt, eingefügt. Ihre Reihenfolge entspricht der Reihenfolge in der Liste der Attribute.

Hinweise:
Die Voraussetzung für das OQL-Ermitteln ist, dass ein Business Object ausgewählt wurde und die Aktion „Ermitteln des OQLs“ ausgeführt ist.
Wenn Sie statt der SELECT-Klausel die UPDATE- bzw. DELETE-Klausel benötigen, können Sie diese nur manuell im Editor angeben.
Falls ein Attribut eine GUID ist und eine JOIN- oder WHERE-Klausel ausgewählt ist, dann wird beim Einfügen in die OQL-Anweisung die Funktion TOGUID zu dem Attribut hinzugefügt.

5.3               Anwendungsspezifische Aktionen

In der Standard-Symbolleiste befinden sich zwei zusätzliche Buttons:

Funktion Erläuterung
Ausführen mit Rollback Anweisungen im OQL-Anweisungsfeld werden ausgeführt, die Änderungen werden jedoch wegen des anschließendem „Rollback“ der Transaktion nicht persistent. „Ausführen mit Rollback“ verändert somit keine Daten in der Datenbank.

Hinweis:
SELECT-Anweisungen dürfen Sie bei dieser Funktion nicht verwenden.

Anschließend wird für jede OQL-Anweisung eine Meldung ausgegeben, wie viele Datensätze durch die Anweisung verändert würden. Damit können Sie prüfen, ob die OQL-Anweisungen die von Ihnen erwartete Datenmenge modifizieren.

Hinweis:
Beachten Sie bei umfangreichen Änderungen, dass die Laufzeit zum Ausführen mit Rollback ähnlich der Laufzeit zum Ausführen mit Commit ist.

Ausführen mit Commit Anweisungen im OQL-Anweisungsfeld werden in einer Transaktion mit anschließendem „Commit“ ausgeführt.

Hinweis:
SELECT-Anweisungen dürfen Sie bei dieser Funktion nicht verwenden.

Die Änderungen an dem Datenbestand sind endgültig und können nicht rückgängig gemacht werden. Die Ausführung von OQL-Anweisungen zum Ändern des Datenbestandes wird im Meldungsprotokoll protokolliert. Damit können Sie nachvollziehen, welcher Benutzer wann OQL-Anweisungen ausgeführt hat.

6                     Berechtigungen

Die folgende anwendungsbezogene Fähigkeit benötigt ein Benutzer, damit er OQL-Anweisungen mit „Commit“ bzw. „Rollback“ ausführen kann:

com.cisag.sys.repository.ui.ExecuteOQLUpdateStatements

Ein Benutzer kann nur dann OQL-Anweisungen oder OQL-Anweisungen auf einer Datenbank ausführen, wenn er für diese Datenbank berechtigt ist. Für den Zugriff auf eine OLAP-Datenbank muss der Benutzer für die zugehörige OLTP-Datenbank berechtigt sein.

Damit ein Benutzer die Konfigurations-Datenbank verwenden kann, muss er folgende anwendungsbezogene Fähigkeit haben:

com.cisag.sys.repository.ui.OQLConsoleDisplayConfigurationDatabase

Für die Repository-Datenbank muss der Benutzer folgende anwendungsbezogene Fähigkeit haben:

com.cisag.sys.repository.ui.OQLConsoleDisplayRepositoryDatabase

7                     Vorgehensweisen

Lesen Sie nachfolgend, wie Sie mit der Anwendung „OQL-Anweisungen“ arbeiten:

7.1               Datensatz mit einer OQL-Anweisung abfragen

  1. Öffnen Sie die Anwendung „OQL-Anweisungen“.
  2. Wählen Sie in der Standard-Symbolleiste im Feld „Datenbank“ die gewünschte Datenbank aus, auf der Sie die SELECT-Anweisung durchführen möchten.
  3. Geben Sie die gewünschte OQL-Anweisung im Feld „OQL-Anweisung“ ein.

Hinweis:
Sie dürfen nur eine SELECT-Anweisung eingeben.

  1. Drücken Sie in der Standard-Symbolleiste auf den Button „Aktualisieren“.
    1. Wenn die OQL-Anweisung syntaktisch korrekt ist und Werte in der Datenbank gefunden wurden, erscheint im Anzeigebereich eine Tabelle mit den Werten.

Hinweis:
Bei Bedarf können Sie die Ergebnistabelle als Datei erhalten. Wählen Sie hierzu in der Kopfzeile der Tabelle die Aktion „Bereits angezeigte Seiten in Datei ausgeben“. Das System erzeugt eine Datei im CSV-Format, die Sie mit einem Tabellenkalkulationsprogramm bearbeiten oder drucken können.

7.2               Datensätze mit OQL-Anweisungen ändern

  1. Öffnen Sie die Anwendung „OQL-Anweisungen“.
  2. Wählen Sie in der Standardsymbolleiste im Feld „Datenbank“ die gewünschte Datenbank aus, auf der die OQL-Anweisung ausgeführt werden soll.
  3. Geben Sie die gewünschten OQL-Anweisungen im Feld „OQL-Anweisung“ ein.

Hinweis:
Sie können beliebig viele durch Semikolon getrennte INSERT-, UPDATE- oder DELETE-Anweisungen eingeben.

  1. Drücken Sie in der Standard-Symbolleiste auf den Button „Ausführen mit Commit“.
  • Wenn die OQL-Anweisungen syntaktisch korrekt sind, werden die Datensätze dauerhaft gemäß der OQL-Anweisung geändert.

Hinweis:
Bei INSERT-Anweisungen besteht ein besonders hohes Risiko, dass Sie Spalten mit fehlerhaften Werten belegen. Das kann die Konsistenz des gesamten Systems beeinträchtigen.

Aufgrund der Komplexität des Datenmodells sollte das Ausführen von OQL-Anweisungen, die den Datenbestand ändern, weitest gehend vermieden werden. Bei Änderungen wird weder die referenzielle Integrität noch die semantische Korrektheit geprüft, daher können fehlerhafte OQL-Anweisungen inkonsistente Daten zur Folge haben. Comarch leistet keinen Support für Systeme, welche durch fehlerhafte OQL-Anweisungen Fehler aufweisen.

7.3               OQL-Anweisung zusammenstellen

  1. Öffnen Sie die Anwendung „OQL-Anweisungen“.
  2. Wechseln Sie im Navigationsbereich zu dem Karteireiter „Ermitteln des OQLs“.
  3. Geben Sie im Feld „Name“ den vollqualifizierte Namen des Business Objects ein.
  4. Geben Sie bei Bedarf einen Alias im gleichnamigen Feld ein.

Wenn Sie keinen Alias eingeben, wird dieser im folgenden Schritt aus dem Namen des Business Objects abgeleitet.

  1. Führen Sie die Aktion „Ermitteln des OQLs“ aus.
  • Wenn der Business-Object-Name korrekt eigegeben wurde, werden in der Liste die Attribute des Business Objects angezeigt.
  1. Wählen Sie die Attribute aus, die für die gewünschte OQL-Anweisung relevant sind.
  2. Positionieren Sie den Cursor im Arbeitsbereich im Feld „OQL-Anweisungen“ an der Stelle, an der die OQL-Anweisung eingefügt werden soll. Sie können in dem Feld auch Text markieren, der ersetzt werden soll.
  3. Klicken Sie im Navigationsbereich in der Symbolleiste der Attributliste auf die Aktion, die für den Aufbau der OQL-Anweisung notwendig ist, z. B. „Attribute in die OQL-Anweisung einfügen“.
  • Der Text wird eingefügt an der markierten Position im Feld „OQL-Anweisung“ und ersetzt den ggf. markierten Text. Ist in dem Feld keine Cursor-Position ausgewählt und kein Text markiert, dann wird der Text am Anfang des Feldes eingefügt.

 

 

[1] Hierbei wird automatisch eine Bezeichnung für den Verlaufseintrag berechnet.

Czy ten artykuł był pomocny?