Object Data Manager

Der Object Data Manager (ODM) ist ein Datenmanager zum Speichern von Systeminformationen. Informationen werden als Objekte mit zugehörigen Merkmalen gespeichert und verwaltet.

Sie können auch ODM verwenden, um Daten für Anwendungsprogramme zu verwalten.

Zu den von ODM verwalteten Systemdaten gehören:

  • Informationen zur Einheitenkonfiguration
  • Informationen für SMIT anzeigen (Menüs, Selektoren und Dialoge)
  • Elementare Produktdaten für Installations-und Aktualisierungsprozeduren
  • Informationen zur DFV-Konfiguration
  • Systemressourceninformationen

Mit ODMkönnen Objekte und Objektklassen erstellt, hinzugefügt, gesperrt, gespeichert, geändert, abgerufen, angezeigt, gelöscht und gelöscht werden. ODM -Befehle stellen eine Befehlszeilenschnittstelle für diese Funktionen bereit. ODM -Subroutinen greifen innerhalb eines Anwendungsprogramms auf diese Funktionen zu.

Einige Objektklassen werden mit dem System bereitgestellt. Diese Objektklassen werden in der Dokumentation für die jeweiligen Systemprodukte erläutert, die sie bereitstellen.

ODM -Objektklassen und -Objektspeicher

Die Basiskomponenten von ODM sind Objektklassen und Objekte. Zum Verwalten von Objektklassen und Objekten verwenden Sie die ODM -Befehle und -Subroutinen. Insbesondere verwenden Sie die Funktionen zum Erstellen und Hinzufügen dieser Schnittstellen, um Objektklassen und Objekte für die Speicherung und Verwaltung Ihrer eigenen Daten zu erstellen.

Laufzeit Beschreibung
Objektklasse Eine Gruppe von Objekten mit derselben Definition. Eine Objektklasse besteht aus einem oder mehreren Deskriptoren. Sie ähnelt einer Tabelle. Jede Objektklasse, die Sie mit einem Befehl odmcreate oder einer Subroutine odm_create_class erstellen, wird in einer Datei als C-Sprachdefinition eines Arrays von Strukturen gespeichert.
Objekt Ein Element einer Objektklasse Es handelt sich um eine Entität, die die Speicherung und Verwaltung von Daten erfordert. Sie ähnelt einem logischen Datensatz in einer Datenbank.

Jedes Objekt, das Sie mit einem Befehl odmadd oder einer Subroutine odm_add_obj zur Objektklasse hinzufügen, wird als C-Sprachstruktur in derselben Datei gespeichert. Sie bestimmen das Verzeichnis, in dem diese Datei gespeichert werden soll, wenn Sie die Objektklasse erstellen.

Eine Objektklasse ähnelt konzeptionell einem Array von Strukturen, wobei jedes Objekt eine Struktur ist, die ein Element des Arrays ist. Werte werden den Deskriptoren eines Objekts zugeordnet, wenn das Objekt einer Objektklasse hinzugefügt wird. Die Deskriptoren eines Objekts und die zugehörigen Werte können mit ODM -Funktionen lokalisiert und geändert werden.

Das folgende Beispiel zeigt die Bearbeitung von Objektklassen und Objekten.

  1. So erstellen Sie eine Objektklasse mit dem NamenFictional_Characters, geben Sie Folgendes ein:
    class Fictional_Characters {
            char    Story_Star[20];
            char    Birthday[20];
            short   Age;
            char    Friend[20];
    };

    In diesem Beispiel Fictional_CharactersObjektklasse enthält vier Deskriptoren:Story_Star,BirthdayundFriend, die einen Deskriptortyp von Zeichen und eine maximale Länge von 20 Zeichen haben; undAge, mit dem Deskriptortyp "short". Um die für ODMerforderlichen Objektklassendateien zu erstellen, verarbeiten Sie diese Datei mit dem Befehl odmcreate oder mit der Subroutine odm_create_class .

  2. Nach der Erstellung einer Objektklasse können Sie der Klasse mit dem Befehl odmadd oder mit der Subroutine odm_add_obj Objekte hinzufügen. Geben Sie beispielsweise den folgenden Code mit dem Befehl odmadd ein, um die Objekte hinzuzufügen.CinderellaundSnow Whitean dieFictional_CharactersObjektklasse zusammen mit Werten für die Deskriptoren, die sie übernehmen:
    Fictional_Characters:
            Story_Star      = "Cinderella"
            Birthday        = "Once upon a time"
            Age             = 19
            Friend          = "mice"
    
    Fictional_Characters:
            Story_Star = "Snow White"
            Birthday = "Once upon a time"
            Age = 18
            Friend = "Fairy Godmother"

    Die Tabelle Fictional_Characters zeigt ein konzeptionelles Bild derFictional_CharactersObjektklasse mit den beiden hinzugefügten ObjektenCinderellaundSnow White.

    Tabelle 1 Fiktive Zeichen
    Story Stern (char) Geburtstag (char) Alter (kurz) Freund (char)
    Cinderella Einmal nach einer Zeit 19 Mäuse
    Schneeweiß Einmal nach einer Zeit 18 Fairy Godmother
    Retrieved data for 'Story_Star = "Cinderella"'
         Cinderella:
              Birthday = Once upon a time
              Age = 19
              Friend = Mice
  3. Nach demFictional_CharactersObjektklasse wird erstellt und die ObjekteCinderellaundSnow Whitewerden hinzugefügt, die abgerufenen Daten für'Story_Star = "Cinderella"'ist:
    Cinderella:
            Birthday        = Once upon a time
            Age             = 19
            Friend          = mice

ODM verwenden

Wenn Sie den Befehl odmcreate oder odmdrop verwenden, um eine Objektklasse zu erstellen oder zu löschen, geben Sie das Verzeichnis an, von dem aus auf die Klassendefinitionsdatei zugegriffen wird. Verwenden Sie eine der folgenden Optionen:

  1. Speichern Sie die Datei im Standardverzeichnis, das durch $ODMDIRangegeben wird. Dies ist das Verzeichnis /etc/objrepos .
  2. Mit dem Befehl export können Sie die Umgebungsvariable ODMDIR festlegen, um ein Verzeichnis für den Speicher anzugeben.
  3. Verwenden Sie den Befehl unset , um die Festlegung der Umgebungsvariable ODMDIR aufzuheben, und den Befehl cd , um das aktuelle Verzeichnis in das Verzeichnis zu ändern, in dem die Objektklassen gespeichert werden sollen. Führen Sie anschließend die ODM in dem Verzeichnis aus. Die Datei, die die Objektklassen definiert, wird im aktuellen Verzeichnis gespeichert.

Bei Verwendung von odmdelete, odmadd, odmchange, Geben Sie für odmshowoder den Befehl odmget zum Arbeiten mit Klassen und Objekten das Verzeichnis an, das die Objektklassen enthält. Verwenden Sie eine der folgenden Optionen:

  1. Arbeiten Sie mit Objektklassen im Standardverzeichnis, das durch $ODMDIRangegeben wird. Dies ist das Verzeichnis /etc/objrepos .
  2. Mit dem Befehl export können Sie die Umgebungsvariable ODMDIR festlegen, um das Verzeichnis anzugeben.
  3. Verwenden Sie in der Befehlszeile den Befehl export , um die Umgebungsvariable ODMPATH auf eine Zeichenfolge zu setzen, die eine durch Doppelpunkte getrennte Liste von Verzeichnissen enthält, die nach Objektklassen durchsucht werden. Beispiel:
    $ export ODMPATH = /usr/lib/objrepos:/tmp/myrepos
    Die Verzeichnisse in $ODMPATH werden nur durchsucht, wenn das durch $ODMDIR angegebene Verzeichnis die Objektklasse nicht enthält.

Objektklasse erstellen

Achtung: Änderungen an Dateien, die Systemobjektklassen und -objekte definieren, können zu Systemproblemen führen. Fragen Sie Ihren Systemadministrator, bevor Sie das Verzeichnis /usr/lib/objrepos als Speicherverzeichnis für Objektklassen und Objekte verwenden.

  1. Erstellen Sie die Definition für mindestens eine Objektklasse in einer ASCII-Datei. ODM -Beispielcode und -Ausgabe zeigt eine ASCII-Datei mit mehreren Objektklassendefinitionen.
  2. Geben Sie das Verzeichnis an, in dem das generierte Objekt gespeichert werden soll.

In "ODM Object Class and Object Storage" werden die Kriterien erläutert, die bei der Objektklassenerstellung verwendet werden, um das Verzeichnis zu bestimmen, in dem generierte Objektklassen und Objekte gespeichert werden sollen. Die meisten Systemobjektklassen und Objekte werden im Verzeichnis /usr/lib/objrepos gespeichert.

Erzeugen Sie eine leere Objektklasse, indem Sie den Befehl odmcreate mit der als Eingabedatei ClassDescriptionFile angegebenen ASCII-Datei mit Objektklassendefinitionen ausführen.

Objekte einer Objektklasse hinzufügen

Achtung: Änderungen an Dateien, die Systemobjektklassen und -objekte definieren, können zu Systemproblemen führen. Fragen Sie Ihren Systemadministrator, bevor Sie das Verzeichnis /usr/lib/objrepos als Speicherverzeichnis für Objektklassen und Objekte verwenden.

  1. Erstellen Sie die Objektklasse, der die Objekte hinzugefügt werden. Anweisungen zum Erstellen einer Objektklasse finden Sie unter Objektklasse erstellen .
  2. Erstellen Sie die Definitionen für ein oder mehrere Objekte. ODM -Beispielcode und -Ausgabe zeigt eine ASCII-Datei mit mehreren Objektdefinitionen.
  3. Geben Sie das Verzeichnis an, das die Objektklasse enthält, in der die generierten Objekte gespeichert werden.

    "ODM Object Class and Object Storage" beschreibt die Kriterien, die bei der Erstellung der Objektklasse verwendet werden, um das Verzeichnis zu ermitteln, in dem generierte Objektklassen und Objekte gespeichert werden sollen. Die meisten Systemobjektklassen und Objekte werden im Verzeichnis /usr/lib/objrepos gespeichert.

  4. Fügen Sie Objekte zu einer Objektklasse hinzu, indem Sie den Befehl odmadd mit der ASCII-Datei mit Objektdefinitionen ausführen, die als Eingabedatei InputFile angegeben ist.

Objektklassen sperren

ODM sperrt Objektklassen oder Objekte nicht implizit. Die Koordination von Sperren und Entsperren liegt in der Zuständigkeit der Anwendungen, die auf die Objektklassen zugreifen. Allerdings stellt ODM die Subroutinen odm_lock und odm_unlock bereit, um das Sperren und Entsperren von Objektklassen durch Anwendungsprogramme zu steuern.

Subroutine Beschreibung
odm-sperre Verarbeitet eine Zeichenfolge, die ein Pfadname ist und in einer Objektklassendatei oder einem Verzeichnis von Objektklassen aufgelöst werden kann. Sie gibt eine Sperrkennung zurück und setzt ein Flag, um anzuzeigen, dass die angegebene (n) durch den Pfadnamen definierte (n) Objektklasse (n) im Gebrauch sind.

Wenn die Subroutine odm_lock das Sperrflag setzt, wird die Verwendung der Objektklasse durch andere Prozesse nicht inaktiviert. Wenn die Verwendungskollision ein potenzielles Problem darstellt, sollte ein Anwendungsprogramm explizit warten, bis ihm eine Sperre für eine Klasse erteilt wird, bevor es die Klasse verwendet.

Eine andere Anwendung kann keine Sperre für denselben Pfadnamen anfordern, solange eine Sperre aktiv ist. Eine Sperre für einen Verzeichnisnamen hindert eine andere Anwendung jedoch nicht daran, eine Sperre für ein Unterverzeichnis oder die Dateien in diesem Verzeichnis anzufordern.

Verwenden Sie zum Entsperren einer gesperrten Objektklasse eine Subroutine odm_unlock , die mit der von der Subroutine odm_lock zurückgegebenen Sperrkennung aufgerufen wird.

Objektklassen und Objekte speichern

Jede Objektklasse, die Sie mit einem Befehl odmcreate oder einer Subroutine odm_create_class erstellen, wird in einer Datei als C-Sprachdefinition eines Arrays von Strukturen gespeichert. Jedes Objekt, das Sie mit einem Befehl odmadd oder einer Subroutine odm_add_obj zur Objektklasse hinzufügen, wird als C-Sprachstruktur in derselben Datei gespeichert.

Sie bestimmen das Verzeichnis, in dem diese Datei gespeichert werden soll, wenn Sie die Objektklasse erstellen.

Speichermethoden variieren je nachdem, ob Befehle oder Subroutinen zum Erstellen von Objektklassen und Objekten verwendet werden.

Achtung: Änderungen an Dateien, die Systemobjektklassen und -objekte definieren, können zu Systemproblemen führen. Fragen Sie Ihren Systemadministrator, bevor Sie das Verzeichnis /usr/lib/objrepos als Speicherverzeichnis für Objektklassen und Objekte verwenden.

Subroutinen odm_create_class oder odm_add_obj verwenden

Die Subroutine odm_create_class oder odm_add_obj wird verwendet, um Objektklassen und Objekte zu erstellen:

  • Wenn es eine spezielle Anforderung für Ihre Anwendung gibt, Objektklassen zu speichern, die nicht durch die Umgebungsvariable ODMDIR angegeben sind, verwenden Sie die Subroutine odm_set_path zum Zurücksetzen des Pfads. Es wird dringend empfohlen, diese Subroutine zu verwenden, um den Speicherpfad explizit festzulegen, wenn Objektklassen oder Objekte aus einer Anwendung erstellt werden.

    ODER

  • Verwenden Sie vor der Ausführung Ihrer Anwendung den Befehl set in der Befehlszeile, um die Umgebungsvariable ODMDIR festzulegen, um ein Verzeichnis für den Speicher anzugeben.

    ODER

  • Speichern Sie die Datei im Objektrepository /usr/lib/objrepos , das zum Speichern vieler Systemobjektklassen verwendet wird.

ODM Deskriptoren

Ein Object Data Manager-Deskriptor (ODM) ähnelt konzeptionell einer Variablen mit einem Namen und einem Typ. Wenn eine Objektklasse erstellt wird, werden ihre Deskriptoren wie Variablennamen mit zugeordneten ODM -Deskriptortypen definiert. Wenn ein Objekt einer Objektklasse hinzugefügt wird, erhält es eine Kopie aller Deskriptoren der Objektklasse. Werte werden auch Objektdeskriptoren zugeordnet, die bereits angegeben sind.

ODM unterstützt mehrere Deskriptortypen:

Beschreibung Definition
Terminaldeskriptor Definiert einen Zeichendatentyp oder numerischen Datentyp.
Linkdeskriptor Definiert eine Beziehung zwischen Objektklassen
Methodendeskriptor Definiert eine Operation oder Methode für ein Objekt

Verwenden Sie die Deskriptoren eines Objekts und die zugehörigen Werte, um Kriterien zum Abrufen einzelner Objekte aus einer Objektklasse zu definieren. Formatieren Sie die Auswahlkriterien, die Sie an ODM übergeben, wie in ODM Object Searchesdefiniert. Verwenden Sie den binären Terminaldeskriptor aufgrund seiner beliebigen Länge nicht in Suchkriterien.

ODM -Terminaldeskriptoren

Terminaldeskriptoren definieren die primitivsten Datentypen, die von ODMverwendet werden. Ein Terminaldeskriptor ist im Wesentlichen eine Variable, die mit einem ODM -Terminaldeskriptortyp definiert ist. Von ODM werden folgende Terminaldeskriptortypen bereitgestellt:

Beschreibung Definition
kurz Gibt eine 2-Byte-Zahl mit Vorzeichen an
lang Gibt eine 4-Byte-Zahl mit Vorzeichen an
Ulong Gibt eine 4-Byte-Zahl ohne Vorzeichen an
binär Gibt eine Bitfolge fester Länge an. Der binäre Terminaldeskriptortyp wird vom Benutzer bei der ODM -Erstellungszeit definiert. Der binäre Terminaldeskriptortyp kann nicht in Auswahlkriterien verwendet werden.
char Gibt eine auf null endende Zeichenfolge fester Länge an.
vchar Gibt eine auf null endende Zeichenfolge variabler Länge an. Der Terminaldeskriptortyp vchar kann in Auswahlkriterien verwendet werden.
long64/ODM_LONG_LONG/int64 Gibt eine 8-Byte-Zahl mit Vorzeichen an
ulong64/ODM_ULONG_LONG/uint64 Gibt eine 8-Byte-Zahl ohne Vorzeichen an

ODM -Linkdeskriptor

Der ODM Linkdeskriptor stellt eine Beziehung zwischen einem Objekt in einer Objektklasse und einem Objekt in einer anderen Objektklasse her. Ein Linkdeskriptor ist eine Variable, die mit dem Linkdeskriptortyp ODM definiert wird.

Der folgende Code kann beispielsweise von den ODM -Erstellungsfunktionen verarbeitet werden, um die Objektklassen Friend_Table und Fictional_Characters zu generieren:

class Friend_Table {
        char    Friend_of[20];
        char    Friend[20];
};

  class Fictional_Characters {
        char    Story_Star[20];
        char    Birthday[20];
        short   Age;
        link    Friend_Table Friend_Table Friend_of Friends_of;
};

Die Objektklasse Fictional_Characters verwendet einen Linkdeskriptor, um die Friends_of -Deskriptoren mit derFriend_TableObjektklasse. Zum Auflösen des Links ruft der Deskriptor Friends_of Objekte in der Objektklasse Friend_Table mit übereinstimmenden Daten in den Friend_of -Deskriptoren ab. Der Linkdeskriptor in der Objektklasse Fictional_Characters definiert die Klasse, mit der verlinkt wird (Friend_Table), der Deskriptor, mit dem verlinkt wird (Friend_of), und den Namen des Linkdeskriptors (Friends_of) in der Objektklasse Fictional_Characters .

Der folgende Code könnte verwendet werden, um Objekte den Objektklassen Fictional_Characters und Friend_Table hinzuzufügen:

Fictional_Characters:
        Story_Star      = "Cinderella"
        Birthday        = "Once upon a time"
        Age             = 19
        Friends_of      = "Cinderella"
Fictional_Characters:
        Story_Star      = "Snow White"
        Birthday        = "Once upon a time"
        Age             = 18
        Friends_of      = "Snow White"
Friend_Table:
        Friend_of       = "Cinderella"
        Friend          = "Fairy Godmother"
Friend_Table:
        Friend_of       = "Cinderella"
        Friend          = "mice"
Friend_Table:
        Friend_of       = "Snow White"
        Friend          = "Sneezy"
Friend_Table:
        Friend_of       = "Snow White"
        Friend          = "Sleepy"
Friend_Table:
        Friend_of       = "Cinderella"
        Friend          = "Prince"
Friend_Table:
        Friend_of       = "Snow White"
        Friend          = "Happy"

Die folgende Tabelle zeigt ein konzeptionelles Bild der Objektklassen Fictional_Characters und Friend_Table , der den Klassen hinzugefügten Objekte und der Verknüpfungsbeziehung zwischen ihnen.

Story_Star (Zeichen) Geburtstag (char) Alter (kurz) Friends_of (Link)
Cinderella Einmal nach einer Zeit 19 Cinderella
Schneeweiß Einmal nach einer Zeit 18 Schneeweiß
Retrieved data for 'Story_Star = "Cinderella"
     Cinderella:
          Birthday = Once upon a time
          Age = 19
          Friends_of = Cinderella
          Friend_of = Cinderella  

Es gibt einen direkten Link zwischen den Spalten "Friends_of" und "Friend_of" der beiden Tabellen. Die folgende Tabelle zeigt ein konzeptionelles Bild einer Verknüpfungsbeziehung zwischen zwei Objektklassen.

Friend_of (Zeichen) Freund (char)
Cinderella Fairy Godmother
Cinderella Mäuse
Schneeweiß Niesen
Schneeweiß Schläfrig
Cinderella Prinz
Schneeweiß Glücklich

Nachdem die Objektklassen Fictional_Characters und Friend_Table erstellt und die Objekte hinzugefügt wurden, werden die abgerufenen Daten fürStory_Star = 'Cinderella'wäre:

Cinderella:
        Birthday         = Once upon a time
        Age              = 19
        Friends_of       = Cinderella
        Friend_of        = Cinderella

Verwenden Sie den Befehl odmget für die Objektklasse Friend_Table , um die erweiterte Beziehung zwischen den verknüpften Objektklassen anzuzeigen. Die abgerufenen Daten für dieFriend_of = 'Cinderella'Objektklasse wäre:

Friend_Table:
        Friend_Of = "Cinderella"
        Friend = "Fairy Godmother"

Friend_Table:
        Friend_of = "Cinderella"
        Friend= "mice"

Friend_Table:
        Friend_of = "Cinderella"
        Friend = "Prince"

MethodendeskriptorODM

Der ODM Methodendeskriptor gibt die Definition einer Objektklasse mit Objekten an, denen Methoden oder Operationen zugeordnet sein können. Ein Methodendeskriptor ist eine Variable, die mit dem Methodendeskriptortyp ODM definiert wird.

Der Operations-oder Methodendeskriptorwert für ein Objekt ist eine Zeichenfolge, bei der es sich um einen beliebigen Befehl, ein Programm oder ein Shell-Script handeln kann, der bzw. das vom Methodenaufruf ausgeführt wird. Für jedes Objekt in einer Objektklasse kann eine andere Methode oder Operation definiert werden. Die Operationen selbst sind nicht Teil von ODM; sie werden vom Anwendungsprogrammierer definiert und codiert.

Die Methode für ein Objekt wird durch einen Aufruf der Subroutine odm_run_method aufgerufen. Der Aufruf einer Methode ist ein synchrones Ereignis, das dazu führt, dass die ODM -Operation angehalten wird, bis die Operation abgeschlossen ist.

Der folgende Code kann beispielsweise in die ODM -Erstellungsfunktionen eingegeben werden, um die Objektklasse Supporting_Cast_Ratings zu generieren:

class Supporting_Cast_Ratings {
        char    Others[20];
        short   Dexterity;
        short   Speed;
        short   Strength;
        method  Do_This;
};

In dem BeispielDo_Thisdescriptor ist ein Methodendeskriptor, der für die Objektklasse Supporting_Cast_Ratings definiert ist. Der Wert des Methodendeskriptors kann eine Zeichenfolge sein, die einen Befehl, ein Programm oder ein Shell-Script für zukünftige Aufrufe durch eine Subroutine odm_run_method angibt.

Der folgende Code ist ein Beispiel für das Hinzufügen von Objekten zur Objektklasse Supporting_Cast_Ratings :

Supporting_Cast_Ratings:
        Others          = "Sleepy"
        Dexterity       = 1
        Speed           = 1
        Strength        = 3
        Do_This   = "echo Sleepy has speed of 1"
Supporting_Cast_Ratings:
        Others          = "Fairy Godmother"
        Dexterity       = 10
        Speed           = 10
        Strength        = 10
        Do_This   = "odmget -q "Others='Fairy Godmother'" Supporting_Cast_Ratings"

Die folgende Tabelle zeigt ein konzeptionelles Bild derSupporting_Cast_RatingsObjektklasse mit demDo_ThisMethodendeskriptor und Operationen, die einzelnen Objekten in der Klasse zugeordnet sind.

Andere (char) Geschicklichkeit (kurz) Geschwindigkeit (kurz) Länge (kurz) Do_This (Methode)
Schläfrig 1 1 3 echo Sleepy has speed of 1
Fairy Godmother 10 10 10 odmget —q "Others='Fairy Godmother'"Supporting_Cast_Ratings"
odm_run_method  run of Sleepy's method displays
(using echo):
"Sleepy has speed of 1"

Nach demSupporting_Cast_RatingsObjektklasse wird erstellt und die Objekte werden hinzugefügt, ein Aufruf (durch die Subroutine odm_run_method ) der Methode, die fürSleepyDer Befehl echo würde Folgendes anzeigen:

Sleepy has speed of 1

ODM -Objektsuchen

Viele ODM -Routinen erfordern, dass mindestens ein Objekt in einer angegebenen Objektklasse für die Verarbeitung ausgewählt wird. Sie können Suchkriterien in Form von Qualifikationsmerkmalen einschließen, wenn Sie Objekte mit bestimmten Routinen auswählen.

Qualifikationsmerkmal
Ein auf null endende Zeichenfolgeparameter in Aufrufen der Subroutine ODM , der die Qualifikationskriterien für die abzurufenden Objekte angibt.

Die von diesem Parameter angegebenen Deskriptornamen und Qualifikationskriterien bestimmen, welche Objekte in der Objektklasse für die spätere Verarbeitung ausgewählt werden. Jedes Qualifikationsmerkmal enthält mindestens ein Prädikat , das mit logischen Operatoren verbunden ist. Jedes Prädikat besteht aus einem Deskriptornamen, einem Vergleichsoperator und einer Konstanten.

Es folgt ein Qualifikationsmerkmal mit drei Vergleichselementen, die durch zwei logische Operatoren verknüpft sind:

SUPPNO=30 AND (PARTNO>0 AND PARTNO<101)

In diesem Beispiel wird die gesamte Zeichenfolge als Qualifikationsmerkmal betrachtet. Die drei Vergleichselemente sindSUPPNO=30,PARTNO>0undPARTNO<101und der logische Operator AND wird verwendet, um die Vergleichselemente zu verknüpfen. Im ersten PrädikatSUPPNOist der Name des Deskriptors in einem Objekt,=(Gleichheitszeichen) ist ein Vergleichsoperator und30ist die Konstante, mit der der Wert des Deskriptors verglichen wird.

Jedes Vergleichselement gibt einen Test an, der auf einen Deskriptor angewendet wird, der für jedes Objekt in der Objektklasse definiert ist. Der Test ist ein Vergleich zwischen dem Wert des Deskriptors eines Objekts und der angegebenen Konstante. Das erste Vergleichselement im Beispiel zeigt einen Vergleich mit = (gleich) zwischen dem Wert eines Deskriptors.(SUPPNO)und eine Konstante(30).

Der Teil des Qualifikationsmerkmals in runden Klammern

PARTNO>0 AND PARTNO<101

enthält zwei Vergleichselemente, die durch den logischen Operator AND verknüpft sind. DerPARTNODeskriptor wird im ersten Vergleichselement auf einen Wert größer als 0 getestet, anschließend auf einen Wert kleiner als101im zweiten Vergleichselement. Anschließend werden die beiden Vergleichselemente logisch verknüpft, um einen Wert für diesen Teil des Qualifikationsmerkmals zu ermitteln. Angenommen, es wird Folgendes angegeben:PARTNOist der Deskriptorname für eine Teilenummer in einem Firmeninventar, dann definiert dieser Teil des Qualifikationsmerkmals eine Auswahl für alle Produkte mit Teilenummern größer als 0 und kleiner als 101.

In einem anderen Beispiel ist das Qualifikationsmerkmal:

lname='Smith' AND Company.Dept='099' AND Salary<2500

kann verwendet werden, um alle Benutzer (in ODMjedes Objekt) mit dem Nachnamen Smith auszuwählen, der sich in Abteilung 099 befindet und ein Gehalt von weniger als 2500 Dollar hat. Beachten Sie bitte, dass dieDeptDeskriptorname wird mit zugehörigerCompanyObjektklasse zum Erstellen eines eindeutigen Deskriptors.

Deskriptornamen in ODM -Prädikaten

In ODMist ein Deskriptorname nicht unbedingt eindeutig. Sie können einen Deskriptornamen in mehreren Objektklassen verwenden. In diesem Fall geben Sie den Objektklassennamen zusammen mit dem Deskriptornamen in einem Vergleichselement an, um eine eindeutige Referenz auf den Deskriptor zu erstellen.

Vergleichsoperatoren in ODM -Vergleichselementen

Folgende Vergleichsoperatoren sind gültig:

Operator Definition
= Gleich
!= Ungleich
> Größer als
>= Größer-gleich
< Kleiner als
<= Kleiner-gleich
LIKE Ähnlich wie; findet Muster in Zeichenfolgedaten

Vergleiche sind nur zwischen kompatiblen Datentypen möglich.

Vergleichsoperator LIKE

Der Operator LIKE ermöglicht die Suche nach einem Muster innerhalb eines Deskriptortyps char. Zum Beispiel das Prädikat:

NAME LIKE 'ANNE'

definiert eine Suche nach dem WertANNEin derNAMEDeskriptor in jedem Objekt in der angegebenen Objektklasse. In diesem Fall ist das Beispiel äquivalent zu:

NAME = 'ANNE'

Sie können den Operator LIKE auch mit den folgenden Mustererkennungszeichen und Konventionen verwenden:

  • Verwenden Sie das? (Fragezeichen), um ein einzelnes Zeichen darzustellen. Das Vergleichselementbeispiel:
    NAME LIKE '?A?'
    Definiert eine Suche nach einer beliebigen Zeichenfolge mit drei Zeichen, bei der A als zweites Zeichen im Wert desNAMEDeskriptor eines Objekts. Die DeskriptorwertePAM,DANundPATalle erfüllen dieses Suchkriterium.
  • Verwenden Sie den Stern (*), um eine beliebige Zeichenfolge mit null oder mehr Zeichen darzustellen. Das Vergleichselementbeispiel:
    NAME LIKE '*ANNE*'
    Definiert eine Suche nach einer beliebigen Zeichenfolge, die den Wert enthältANNEin derNAMEDeskriptor eines Objekts. Die DeskriptorwerteLIZANNE,ANNETTEundANNEalle erfüllen dieses Suchkriterium.
  • Verwenden Sie [] (eckige Klammern), um alle in eckige Klammern eingeschlossenen Zeichen abzugleichen. Das Vergleichselementbeispiel:
    NAME LIKE '[ST]*'
    Definiert eine Suche nach einem Deskriptorwert, der mit S oder T in derNAMEDeskriptor eines Objekts.

    Verwenden Sie ein Minuszeichen (-), um einen Zeichenbereich anzugeben. Das Vergleichselementbeispiel:

    NAME LIKE '[AD-GST]*'
    Definiert eine Suche nach einem Deskriptorwert, der mit einem der Zeichen A, D, E, F, G, S oder Tbeginnt.
  • Verwenden Sie [!] (eckige Klammern, die ein Ausrufezeichen einschließen), um ein beliebiges einzelnes Zeichen bis auf eines der in den eckigen Klammern eingeschlossenen Zeichen abzugleichen. Das Vergleichselementbeispiel:
    NAME LIKE '[!ST]*'
    Definiert eine Suche nach einem beliebigen Deskriptorwert mit Ausnahme derjenigen, die mit S oder T in derNAMEDeskriptor eines Objekts.

    Sie können die Mustererkennungszeichen und Konventionen in beliebiger Kombination in der Zeichenfolge verwenden.

Konstanten in ODM -Vergleichselementen

Die angegebene Konstante kann entweder eine numerische Konstante oder eine Zeichenfolgekonstante sein:

  1. Numerische Konstanten in ODM -Prädikaten bestehen aus einem optionalen Vorzeichen, gefolgt von einer Zahl (mit oder ohne Dezimalzeichen), optional gefolgt von einem Exponenten, der durch den Buchstaben E oder emarkiert ist. Bei Verwendung muss auf den Buchstaben E oder e ein Exponent folgen, der signiert werden kann.

    Gültige numerische Konstanten sind:

    2            2.545   0.5   -2e5   2.11E0
    +4.555e-10   4E0     -10    999   +42

    Mit dem Exponenten E0 kann kein Exponent angegeben werden.

  2. Zeichenfolgekonstanten müssen in einfache Anführungszeichen eingeschlossen werden:

    'smith'   '91'

    Alle Zeichenfolgekonstanten haben eine variable Länge. Verwenden Sie zwei einfache Anführungszeichen, um ein einfaches Anführungszeichen innerhalb einer Zeichenfolgekonstante darzustellen. Beispiel:

    'DON''T GO'

    wird interpretiert als:

    DON'T GO

Logischer Operator AND für Vergleichselemente

Der logische Operator AND kann mit Vergleichselementen verwendet werden. Verwenden Sie AND oder and für den logischen Operator AND.

Der logische Operator AND verbindet mindestens zwei Vergleichselemente. Das Qualifikationsmerkmalbeispiel:

predicate1 AND predicate2 AND predicate3

gibt an,predicate1logisch verknüpft mitpredicate2gefolgt von dem Ergebnis, das logisch verknüpft ist mitpredicate3.