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.
![]()
![]()
![]()
![]()
IdResolveKeys.properties si trova nella directory dalla quale viene richiamato l'ID Resolver.
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" />
![]() |