Especificar un archivo de propiedades con ID Resolver

ID Resolver le permite utilizar un archivo de propiedades Java alternativo para describir qué columnas de una entrada primaria deben utilizarse como búsquedas para tablas que requieren el identificador de una fila primaria.

El archivo de propiedades por omisión es IdResolveKeys.properties pero, si lo desea, puede modificarlo o especificar su propio archivo cuando invoque el mandato ID Resolve.

Windows NT Windows 2000 AIX Solaris Linux IdResolveKeys.properties está en el directorio desde el que se invoca ID Resolver.

iSeries Para cambiar IdResolveKeys.properties, cópielo desde el directorio /QIBM/ProdData/WebCommerce/properties, guárdelo en el directorio /raízinst/xml y luego efectúe los cambios que sean necesarios en el archivo nuevo.
Nota:  El directorio anterior está en la vía de acceso de clases utilizada por el mandato RESWCSID.

Utilización de un archivo de propiedades para generar identificadores

En el ejemplo siguiente, tiene que resolver los identificadores ADDRBOOK_ID y ADDRESS_ID para los registros ADDRBOOK y ADDRESS, respectivamente. Los identificadores para los registros MEMBER ya se conocen. Cada registro requiere un identificador válido para la base de datos WebSphere Commerce. Además, el ADDRBOOK_ID del registro ADDRESS requiere que el identificador de la tabla primaria cumpla su restricción de clave externa.

  <MEMBER
    MEMBER_ID="100"
    TYPE="U"
    STATE="1"
  />
  <MEMBER
    MEMBER_ID="101"
    TYPE="U"
    STATE="1"
  />
  <ADDRBOOK
    MEMBER_ID="100"
    DISPLAYNAME="Amigos"            Valor real de la columna DISPLAYNAME
    DESCRIPTION="Todos mis amigos"
    TYPE="P"
  />
  <ADDRESS
    ADDRBOOK_ID="@Amigos"           Hace referencia a ADDRBOOK utilizando el valor de DISPLAYNAME
                                     como búsqueda
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canadá"
    STATUS="P"
  />

Necesita un archivo de propiedades para identificar qué columnas de la fila primaria serán utilizadas por las filas de relación para determinar el identificador de la columna de claves externas. El procedimiento siguiente asegura que el análisis del archivo anterior se realiza correctamente.

En IdResolveKeys.properties, especifique lo siguiente:

  NAMEDELIMITER=@
SELECTDELIMITER=:

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

NAMEDELIMITER y SELECTDELIMITER establecen los delimitadores utilizados en el archivo de propiedades y deben utilizarse de manera coherente.

ADDRBOOK=@DISPLAYNAME:DISPLAYNAME indica que cuando se recibe un registro de listín, se crea el identificador de la fila de listín. El campo DISPLAYNAME se extrae del registro de entrada y se utiliza para formar una asociación con el nuevo identificador. La serie DISPLAYNAME se utiliza para compararla con la fila de listín DISPLAYNAME y resolver el identificador que la clave externa necesita.

Utilizando el ejemplo de entrada anterior, en el que DISPLAYNAME es Amigos, suponga que el identificador creado para este registro es 12951. DISPLAYNAME se utiliza como una consulta anexa de clave para 12951. El proceso continúa con el registro siguiente, ADDRESS, donde ADDRBOOK_ID tiene el formato "@..." (que indica que lo que va a continuación del delimitador se ha de utilizar para buscar el identificador de listín). Como la serie coincide con DISPLAYNAME, se devuelve 12951 y se coloca en el atributo ADDRBOOK_ID.

  <MEMBER
    MEMBER_ID="100"
    TYPE="U"
    STATE="1"
  />
  <MEMBER
    MEMBER_ID="101"
    TYPE="U"
    STATE="1"
  />
  <ADDRBOOK
    ADDRBOOK_ID="12951"                  Clave primaria generada
    MEMBER_ID="100"
    DISPLAYNAME="Amigos"                Valor no modificado de ADDRBOOK DISPLAYNAME
    DESCRIPTION="Todos mis amigos"
    TYPE="P"
  />
  <ADDRESS
    ADDRESS_ID="13051"                   Clave primaria generada
    ADDRBOOK_ID="12951"                  ADDRESS hace referencia al ADDRBOOK correcto
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canadá"
    STATUS="P"
  />

Utilización de un archivo de propiedades con claves compuestas

Una clave integrada por más de dos columnas es una clave compuesta. Puede definir una búsqueda de claves compuestas en el archivo de propiedades especificando NAMEDELIMITER y SELECTDELIMITER seguidos de los nombres de campo. Por ejemplo, para que los criterios de búsqueda de los registros de ADDRBOOK se compongan del nombre de visualización (DISPLAYNAME) y el ID de miembro (MEMBERID), si especificase lo siguiente en el archivo de propiedades:

  ADDRBOOK=@DISPLAYNAME@MEMBER_ID:DISPLAYNAME MEMBER_ID

y luego el siguiente fragmento de archivo XML de entrada:

  <ADDRBOOK
    MEMBER_ID="100"
    DISPLAYNAME="Amigos"                ADDRBOOK "Amigos" de MEMBER 100
    DESCRIPTION="Todos mis amigos"
    TYPE="P"
  />
  <ADDRBOOK
    MEMBER_ID="101"
    DISPLAYNAME="Amigos"                ADDRBOOK "Amigos" de MEMBER 101
    DESCRIPTION="Todos mis amigos"
    TYPE="P"
  />
  <ADDRESS
    ADDRBOOK_ID="@Amigos@100"           Buscar la clave primaria para ADDRBOOK
                                         "Amigos" de MEMBER 100
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canadá"
    STATUS="P"
  />

daría como resultado lo siguiente después de la resolución:

  <MEMBER
    MEMBER_ID="100"
    TYPE="U"
    STATE="1"
  />
  <MEMBER
    MEMBER_ID="101"
    TYPE="U"
    STATE="1"
  />
  <ADDRBOOK
    ADDRBOOK_ID="12951"                  ADDRBOOK de interés
    MEMBER_ID="100"
    DISPLAYNAME="Amigos"
    DESCRIPTION="Todos mis amigos"
    TYPE="P"
  />
  <ADDRBOOK
    ADDRBOOK_ID="12952"
    MEMBER_ID="101"
    DISPLAYNAME="Amigos"
    DESCRIPTION="Todos mis amigos"
    TYPE="P"
  />
  <ADDRESS
    ADDRESS_ID="13051"
    ADDRBOOK_ID="12951"                  ADDRESS hace referencia al ADDRBOOK correcto
    MEMBER_ID="101"
    NICKNAME="Bob"
    ADDRESS1="15 Brave Developers St."
    CITY="Toronto"
    ZIPCODE="A0A0A0"
    COUNTRY="Canadá"
    STATUS="P"
  />

Utilización de un archivo de propiedades con claves primarias en cascada

La tabla primaria STOREENT define una clave primaria STOREENT_ID. STORE, una tabla externa que hace referencia a STOREENT, define una clave primaria STORE_ID, que es una clave externa para la tabla primaria STOREENT. Esto significa que el valor de STORE_ID debe ser uno de los valores de STOREENT_ID. Por lo tanto, STORE_ID, la clave primaria de la tabla externa STORE, tiene un doble rol: clave primaria y clave externa.

Supongamos que otra tabla, CONTRACT, es una tabla externa en STORE y que la clave externa para CONTRACT, STORE_ID, hace referencia a la clave primaria STORE_ID de STORE. Por lo tanto, la tabla STORE es una tabla primaria para la tabla CONTRACT.

Dado que en STOREENT_ID se hace referencia al STORE_ID de la tabla STORE y no desde donde se ha creado, ID Resolver no crea una asociación de alias interno y valor de ID para la tabla STORE. Cuando la tabla CONTRACT intenta resolver el STORE_ID de la tabla STORE, recibe un valor vacío.

Debido a esta condición especial, deberá especificar explícitamente la creación del alias interno creando una entrada en el archivo de propiedades. En IdResolveKeys.properties, especifique lo siguiente:

  "STORE=@STORE_ID:STORE_ID" 

Esto obliga a ID Resolver a realizar lo siguiente:

Utilizando la entrada STORE=@STORE_ID:STORE_ID en el archivo de propiedades y el fragmento de archivo de entrada XML siguiente:

  <STOREENT
    IDENTIFIER="Última moda"
    MEMBER_ID="-2000"
    STOREENT_ID="@id_storeent_1"
    TYPE="G"
  />
  <STORE
    STORE_ID="@id_storeent_1"
    STOREGRP_ID="1"
    STORELEVEL="nivel_tienda"
  />
  <CONTRACT
    CONTRACT_ID="@id_contrato_1"
    STATE="0"
    STORE_ID="@id_storeent_1"
  />

daría como resultado lo siguiente después de la resolución:

  <STOREENT
    IDENTIFIER="Última moda"
    MEMBER_ID="-2000"
    STOREENT_ID="10501"
    TYPE="G"
  />
  <STORE
    STORE_ID="10501"
    STOREGRP_ID="1"
    STORELEVEL="nivel_tienda"
  />
  <CONTRACT
    CONTRACT_ID="@id_contrato_1"
    STATE="0"
    STORE_ID="10501"
  />

Conceptos relacionados

Tareas relacionadas

Referencias relacionadas

Copyright de IBM