Specifica di un file properties con ID Resolver

ID Resolver consente di utilizzare un file properties Java alternativo per descrivere le colonne di una voce primaria da utilizzare come ricerca delle tabelle che richiedono l'identificativo della riga principale.

Il file properties predefinito è IdResolveKeys.properties, ma è possibile modificarlo o specificare il proprio file quando si richiama il comando Resolve ID.

Windows NT Windows 2000 AIX Solaris Linux IdResolveKeys.properties si trova nella directory dalla quale viene richiamato l'ID Resolver.

iSeries Per modificare IdResolveKeys.properties, copiarlo dalla directory /QIBM/ProdData/WebCommerce/properties, salvarlo nella directory /instroot/xml, quindi apportare tutte le modifiche necessarie al nuovo file.
Nota:  La directory precedente si trova nel classpath utilizzato dal comando RESWCSID.

Utilizzo di un file properties per generare identificativi

Nel seguente esempio, è necessario risolvere gli identificativi ADDRBOOK_ID e ADDRESS_ID rispettivamente per i record ADDRBOOK e ADDRESS. Gli identificativi per i record MEMBER sono già conosciuti. Ogni record richiede un identificativo valido per il database di WebSphere Commerce. In aggiunta, ADDRBOOK_ID nel record ADDRESS richiede l'identificativo dalla tabella principale per soddisfare il limite della relativa chiave esterna.

  <MEMBER
    MEMBER_ID="100"
    TYPE="U"
    STATE="1"
  />
  <MEMBER
    MEMBER_ID="101"
    TYPE="U"
    STATE="1"
  />
  <ADDRBOOK
    MEMBER_ID="100"
    DISPLAYNAME="Friends"              Valore corrente della colonna DISPLAYNAME
    DESCRIPTION="All my friends"
    TYPE="P"
  />
  <ADDRESS
    ADDRBOOK_ID="@Friends"             Si riferisce a ADDRBOOK utilizzando il valore DISPLAYNAME 
                                     come ricerca
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canada"
    STATUS="P"
  />

Un file properties è necessario per identificare le colonne nella riga primaria che verranno utilizzate dalle righe di relazione per risolvere il numero di riferimento per la colonna delle chiavi esterne. Di seguito vengono riportate le istruzioni necessarie per accertarsi che l'analisi del file precedente proceda in modo corretto.

In IdResolveKeys.properties specificare quanto segue:

  NAMEDELIMITER=@
  SELECTDELIMITER=:

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

NAMEDELIMITER e SELECTDELIMITER impostano i delimitatori utilizzati per tutto il file properties ed è necessario che vengano utilizzati costantemente.

ADDRBOOK=@DISPLAYNAME:DISPLAYNAME indica che quando viene ricevuto un record della rubrica, viene creato anche l'identificativo per la rubrica stessa. Il campo DISPLAYNAME viene estratto dal record di immissione e viene utilizzato per formare un'associazione al nuovo identificativo. La stringa DISPLAYNAME viene utilizzata per adattare la riga della rubrica DISPLAYNAME e per risolvere l'identificativo necessario per la chiave esterna.

Utilizzando l'esempio di immissione precedente, in cui DISPLAYNAME è Friends, supporre che l'identificativo creato per questo record è 12951. DISPLAYNAME viene utilizzato come risoluzione chiave per 12951. L'elaborazione continua con il record successivo, ADDRESS, dove ADDRBOOK_ID ha la forma di "@..." (indicante che ciò che segue il delimitatore deve essere utilizzato per effettuare la ricerca dell'identificativo della rubrica). La stringa che corrisponde a DISPLAYNAME e 12951 viene restituita e posizionata nell'attributo ADDRBOOK_ID.

  <MEMBER
    MEMBER_ID="100"
    TYPE="U"
    STATE="1"
  />
  <MEMBER
    MEMBER_ID="101"
    TYPE="U"
    STATE="1"
  />
  <ADDRBOOK
    ADDRBOOK_ID="12951"                  Chiave principale generata
    MEMBER_ID="100"
    DISPLAYNAME="Friends"                Valore di ADDRBOOK DISPLAYNAME non modificato
    DESCRIPTION="All my friends"
    TYPE="P"
  />
  <ADDRESS
    ADDRESS_ID="13051"                   Chiave principale generata
    ADDRBOOK_ID="12951"                  ADDRESS si riferisce al corretto ADDRBOOK
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canada"
    STATUS="P"
  />

Utilizzo di un file properties con le chiavi composte

Una chiave costituita da più di due colonne è una chiave composta. E' possibile definire una chiave composta effettuando la ricerca nel file properties specificando NAMEDELIMITER e SELECTDELIMITER seguiti dai nomi del campo. Per impostare i criteri di ricerca per i record ADDRBOOK come composti dall'ID membro e dal nome visualizzato, specificare quanto segue nel file properties:

  ADDRBOOK=@DISPLAYNAME@MEMBER_ID:DISPLAYNAME MEMBER_ID

then the following XML input-file fragment:

  <ADDRBOOK
    MEMBER_ID="100"
    DISPLAYNAME="Friends"                ADDRBOOK "Friends" of MEMBER 100
    DESCRIPTION="All my friends"
    TYPE="P"
  />
  <ADDRBOOK
    MEMBER_ID="101"
    DISPLAYNAME="Friends"                ADDRBOOK "Friends" of MEMBER 101
    DESCRIPTION="All my friends"
    TYPE="P"
  />
  <ADDRESS
    ADDRBOOK_ID="@Friends@100"           Ricerca della chiave principale per ADDRBOOK 
                                         "Friends" of MEMBER 100
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canada"
    STATUS="P"
  />

would yield the following after resolution:

  <MEMBER
    MEMBER_ID="100"
    TYPE="U"
    STATE="1"
  />
  <MEMBER
    MEMBER_ID="101"
    TYPE="U"
    STATE="1"
  />
  <ADDRBOOK
    ADDRBOOK_ID="12951"                  ADDRBOOK di interesse
    MEMBER_ID="100"
    DISPLAYNAME="Friends"
    DESCRIPTION="All my friends"
    TYPE="P"
  />
  <ADDRBOOK
    ADDRBOOK_ID="12952"
    MEMBER_ID="101"
    DISPLAYNAME="Friends"
    DESCRIPTION="All my friends"
    TYPE="P"
  />
  <ADDRESS
    ADDRESS_ID="13051"
    ADDRBOOK_ID="12951"                  ADDRESS si riferisce al corretto ADDRBOOK
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canada"
    STATUS="P"
  />

Utilizzo di un file properties con le chiavi principali a cascata

La tabella principale STOREENT definisce una chiave principale STOREENT_ID. STORE, una tabella esterna di riferimento STOREENT, definisce una chiave principale STORE_ID che è una chiave principale per la tabella principale STOREENT. Ciò significa che il valore STORE_ID deve essere uno dei valori di STOREENT_ID. STORE_ID, la chiave principale della tabella esterna STORE, ha un duplice ruolo: principale ed esterna.

Si assuma che un'altra tabella, CONTRACT, sia la tabella esterna su STORE e che la chiave esterna per CONTRACT, STORE_ID, faccia riferimento alla chiave principale STORE_ID in STORE. La tabella STORE è pertanto una tabella principale per la tabella CONTRACT.

Poiché STOREENT_ID fa riferimento a STORE_ID della tabella STORE invece di essere creato, l'ID Resolver non crea un'associazione alias interna e valore ID per la tabella STORE. Quando la tabella CONTRACT prova a risolvere STORE_ID dalla tabella STORE, viene rilevato un valore vuoto.

A causa di queste particolari condizioni, è necessario specificare esplicitamente la creazione di un alias interno creando una voce all'interno del file properties. In IdResolveKeys.properties, specificare quanto segue:

  "STORE=@STORE_ID:STORE_ID"

Ciò implica che ID Resolver effettui quanto riportato di seguito:

Utilizzo della voce STORE=@STORE_ID:STORE_ID nel file properties e nel seguente frammento del file di immissione XML:

  <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"
  />

would yield the following after resolution:

  <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"
  />

Argomenti correlati

Attività correlate

Riferimenti correlati

IBM copyright