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.
![]()
![]()
![]()
![]()
IdResolveKeys.properties befindet sich in dem Verzeichnis, von dem aus der ID Resolver aufgerufen wird.
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" />
![]() |