Eine Eigenschaftsdatei mit dem ID Resolver angeben

Mit dem ID Resolver können Sie eine alternative Java-Eigenschaftsdatei verwenden, um zu beschreiben, welche Spalten eines Primäreintrags als Suchfunktionen für Tabellen verwendet werden sollen, die die Kennung einer Primärzeile erfordern.

Die Standard-Eigenschaftsdatei ist IdResolveKeys.properties; Sie können jedoch diese Datei modifizieren oder auch eine eigene Datei angeben, wenn Sie den Befehl ID Resolve aufrufen.

Windows NT Windows 2000 AIX Solaris Linux IdResolveKeys.properties befindet sich in dem Verzeichnis, von dem aus der ID Resolver aufgerufen wird.

iSeries Um IdResolveKeys.properties zu ändern, kopieren Sie die Datei aus dem Verzeichnis /QIBM/ProdData/WebCommerce/properties in das Verzeichnis the /exemplarstammverzeichnis/xml; nehmen Sie dann die gewünschten Änderungen an der Datei vor.
Hinweis: Das oben angegebene Verzeichnis befindet sich im vom Befehl RESWCSID verwendeten Klassenpfad.

Eine Eigenschaftsdatei zum Generieren von Kennungen verwenden

Im folgenden Beispiel müssen die Kennungen ADDRBOOK_ID und ADDRESS_ID für den Datensatz ADDRBOOK bzw. ADDRESS aufgelöst werden. Die Kennungen für die MEMBER-Datensätze sind bereits bekannt. Jeder Datensatz benötigt eine gültige Kennung für die WebSphere Commerce-Datenbank. Zusätzlich wird für ADDRBOOK_ID im Datensatz ADDRESS die Kennung aus der Primärtabelle benötigt, um die Fremdschlüsselvorgabe zu erfüllen.

  <MEMBER
    MEMBER_ID="100"
    TYPE="U"
    STATE="1"
  />
  <MEMBER
    MEMBER_ID="101"
    TYPE="U"
    STATE="1"
  />
  <ADDRBOOK
    MEMBER_ID="100"
    DISPLAYNAME="Freunde"              tatsächlicher Wert der Spalte DISPLAYNAME 
    DESCRIPTION="Alle meine Freunde"
    TYPE="P"
  />
  <ADDRESS
    ADDRBOOK_ID="@Freunde"             Bezieht sich auf ADDRBOOK und verwendet den Wert für DISPLAYNAME 
                                     zum Nachschauen
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canada"
    STATUS="P"
  />

Sie benötigen eine Eigenschaftsdatei, um zu identifizieren, welche Spalten in der Primärzeile durch die Beziehungszeilen verwendet werden, wenn die Kennung für die Fremdschlüsselspalte aufgelöst wird. Folgendes wird verwendet, um sicherzustellen, dass das Parsing der oben genannten Datei korrekt abläuft:

Geben Sie in IdResolveKeys.properties Folgendes an:

  NAMEDELIMITER=@
  SELECTDELIMITER=:

  ADDRBOOK=@DISPLAYNAME:DISPLAYNAME
  ADDRESS=@NICKNAME:NICKNAME

NAMEDELIMITER und SELECTDELIMITER legen die Begrenzer fest, die in der gesamten Eigenschaftsdatei verwendet werden; NAMEDELIMITER und SELECTDELIMITER müssen konsistent verwendet werden.

ADDRBOOK=@DISPLAYNAME:DISPLAYNAME legt fest, dass beim Empfang eines Adressbuchdatensatzes die Kennung für die Adressbuchzeile erstellt wird. Das Feld DISPLAYNAME wird aus dem Eingabedatensatz extrahiert und dazu verwendet, eine Assoziation zur neuen Kennung zu bilden. Die Zeichenfolge DISPLAYNAME wird verwendet, um die Adressbuchzeile DISPLAYNAME zuzuordnen, um die für den Fremdschlüssel erforderliche Kennung aufzulösen.

Unter Verwendung des vorhergehenden Eingabebeispiels (in dem der DISPLAYNAME "Freunde" lautet) wird davon ausgegangen, dass die für diesen Datensatz erstellte Kennung 12951 ist. Der DISPLAYNAME wird als Schlüsselsuchfunktion für 12951 verwendet. Die Verarbeitung wird mit dem nächsten Datensatz, d. h. ADDRESS, fortgesetzt, wobei ADDRBOOK_ID das Format "@..." aufweist. Hierdurch wird angegeben, dass alle auf den Begrenzer folgenden Zeichen zur Suche und zum Abrufen der Adressbuchkennung verwendet werden. Die Zeichenfolge stimmt mit dem DISPLAYNAME überein. 12951 wird zurückgegeben und in das Attribut ADDRBOOK_ID gestellt.

  <MEMBER
    MEMBER_ID="100"
    TYPE="U"
    STATE="1"
  />
  <MEMBER
    MEMBER_ID="101"
    TYPE="U"
    STATE="1"
  />
  <ADDRBOOK
    ADDRBOOK_ID="12951"                  Generierter Primärschlüssel
    MEMBER_ID="100"
    DISPLAYNAME="Friends"                Tatsächlicher Wert von ADDRBOOK DISPLAYNAME, unverändert
    DESCRIPTION="Alle meine Freunde"
    TYPE="P"
  />
  <ADDRESS
    ADDRESS_ID="13051"                   Generierter Primärschlüssel
    ADDRBOOK_ID="12951"                  ADDRESS bezieht sich auf ADDRBOOK
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canada"
    STATUS="P"
  />

Eine Eigenschaftsdatei mit Verbundschlüsseln verwenden

Ein Schlüssel, der aus mehr als zwei Spalten besteht, ist ein Verbundschlüssel. Sie können eine Suchfunktion für Verbundschlüssel in der Eigenschaftsdatei definieren, indem Sie sowohl NAMEDELIMITER als auch SELECTDELIMITER gefolgt von den Feldnamen angeben. Beispiel: Damit die Suchfunktionskriterien für die ADDRBOOK-Datensätze den Verbund des Anzeigenamens und der Member-ID darstellen, geben Sie Folgendes in der Eigenschaftsdatei an:

  ADDRBOOK=@DISPLAYNAME@MEMBER_ID:DISPLAYNAME MEMBER_ID

Geben Sie anschließend das folgende XML-Eingabedateifragment an:

  <ADDRBOOK
    MEMBER_ID="100"
    DISPLAYNAME="Freunde"                ADDRBOOK "Freunde" von MEMBER 100
    DESCRIPTION="Alle meine Freunde"
    TYPE="P"
  />
  <ADDRBOOK
    MEMBER_ID="101"
    DISPLAYNAME="Freunde"                ADDRBOOK "Freunde" von MEMBER 101
    DESCRIPTION="Alle meine Freunde"
    TYPE="P"
  />
  <ADDRESS
    ADDRBOOK_ID="@Freunde"           Suche des Primärschlüssels für ADDRBOOK 
                                         "Freunde" von MEMBER 100
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canada"
    STATUS="P"
  />

Folgendes erscheint nach der Auflösung:

  <MEMBER
    MEMBER_ID="100"
    TYPE="U"
    STATE="1"
  />
  <MEMBER
    MEMBER_ID="101"
    TYPE="U"
    STATE="1"
  />
  <ADDRBOOK
    ADDRBOOK_ID="12951"                  ADDRBOOK von Interessen
    MEMBER_ID="100"
    DISPLAYNAME="Freunde"
    DESCRIPTION="Alle meine Freunde"
    TYPE="P"
  />
  <ADDRBOOK
    ADDRBOOK_ID="12952"
    MEMBER_ID="101"
    DISPLAYNAME="Freunde"
    DESCRIPTION="Alle meine Freunde"
    TYPE="P"
  />
  <ADDRESS
    ADDRESS_ID="13051"
    ADDRBOOK_ID="12951"                  ADDRESS bezieht sich auf ADDRBOOK
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canada"
    STATUS="P"
  />

Eine Eigenschaftsdatei mit überlappenden Primärschlüsseln verwenden

Die Primärtabelle STOREENT definiert einen Primärschlüssel STOREENT_ID. STORE, eine auf STOREENT verweisende Fremdtabelle, definiert einen Primärschlüssel STORE_ID, der ein Fremdschlüssel zur Primärtabelle STOREENT ist. Der Wert von STORE_ID muss von daher einer der STOREENT_ID-Werte sein. STORE_ID, der Primärschlüssel der Fremdtabelle STORE, hat deshalb eine Doppelrolle: 'Primär' und 'Fremd'.

Nehmen Sie an, dass eine andere Tabelle (CONTRACT) ein Fremdschlüssel auf STORE ist und das der Fremdschlüssel für CONTRACT (STORE_ID) auf den Primärschlüssel STORE_ID in STORE verweist. Die Tabelle STORE ist deshalb die Primärtabelle für die Tabelle CONTRACT.

Da die STORE_ID der Tabelle STORE nicht erstellt, sondern über die STOREENT_ID auf sie verwiesen wird, erstellt der ID Resolver keinen internen Aliasnamen und keine ID-Wert-Zuordnung für die Tabelle STORE. Wenn die Tabelle CONTRACT versucht, die STORE_ID über die Tabelle STORE aufzulösen, erhält sie den leeren Wert.

Aufgrund dieser besonderen Bedingung müssen Sie die Erstellung des internen Aliasnamen während der Erstellung eines Eintrags in der Eigenschaftsdatei explizit angeben. Geben Sie in IdResolveKeys.properties Folgendes an:

  "STORE=@STORE_ID:STORE_ID" 

Dies zwingt den ID Resolver, folgendermaßen vorzugehen:

Unter Verwendung des Eintrags STORE=@STORE_ID:STORE_ID in der Eigenschaftsdatei und des folgenden XML-Eingabedateifragments:

  <STOREENT
    IDENTIFIER="Out Fashions"
       MEMBER_ID="-2000"
    STOREENT_ID="@storeent_id_1"
    TYPE="G"
  />
  <STORE
    STORE_ID="@storeent_id_1"
    STOREGRP_ID="1"
    STORELEVEL="store_level"
  />
  <CONTRACT
    CONTRACT_ID="@contract_id_1"
    STATE="0"
    STORE_ID="@storeent_id_1"
  />

Folgendes erscheint nach der Auflösung:

  <STOREENT
    IDENTIFIER="Out Fashions"
       MEMBER_ID="-2000"
    STOREENT_ID="10501"
    TYPE="G"
  />
  <STORE
    STORE_ID="10501"
    STOREGRP_ID="1"
    STORELEVEL="store_level"
  />
  <CONTRACT
    CONTRACT_ID="@contract_id_1"
    STATE="0"
    STORE_ID="10501"
  />

Verwandte Konzepte

Verwandte Aufgaben

Verwandte Referenzen

IBM Copyright