Esta sección describe, a nivel de objeto, el formato de la información específica de la aplicación referente a los atributos y verbos para los objetos comerciales compatibles con el conector.
La información específica de la aplicación contenida en las definiciones de objetos comerciales proporciona al conector instrucciones dependientes de la aplicación sobre cómo procesar objetos comerciales. El conector analiza la información específica de la aplicación a partir de los atributos o verbo de un objeto comercial o a partir del propio objeto comercial para generar consultas para operaciones de creación, actualización, recuperación y supresión.
El conector guarda en la antememoria parte de la información específica de la aplicación del objeto comercial y utiliza esta información para crear consultas para todos los verbos.
Si amplía o modifica un objeto comercial específico de la aplicación, asegúrese de que la información específica de la aplicación contenida en la definición del objeto comercial se ajusta a la sintaxis que el conector espera.
La Tabla 10 proporciona una visión general de la funcionalidad disponible en la información específica de la aplicación del objeto comercial.
Ámbito de la información específica de la aplicación | Funcionalidad |
---|---|
Objeto comercial completo | Especifica:
|
Atributos simples | Especifica:
|
Atributos que contienen un hijo o una matriz de objetos comerciales hijo | Especifica si un hijo de cardinalidad simple es propiedad del padre. Especifica si el conector suprime datos del hijo durante una operación de actualización si los datos no están representados en el objeto comercial de origen. |
Verbo de objeto comercial | Se utiliza solamente para el verbo Retrieve. Este texto especifica los atributos que se deben incluir en la cláusula WHERE para una recuperación. El usuario puede también especificar operadores y valores de atributos. |
Las secciones siguientes describen esta funcionalidad con más detalle.
La información específica de la aplicación a nivel de objeto comercial le permite:
A nivel de objeto comercial, la información específica de la aplicación consta de parámetros separados por un signo de dos puntos (:) o un signo de punto y coma (;) que actúan como delimitadores:
TN=nombreTabla; SCN=nombreColumnaEstado:valorEstado; WRAPPER=true|false
donde nombreTabla identifica la tabla de base de datos, nombreColumnaEstado es el nombre de la columna de base de datos utilizada para realizar supresiones lógicas y valorEstado es el valor que denota que un objeto comercial está inactivo o suprimido.
Por ejemplo, suponga que el objeto comercial "Customer" (Cliente) tiene el valor siguiente especificado para su información específica de la aplicación a nivel de objeto comercial:
TN=CUSTOMER; SCN=CUSTSTATUS:DELETED
Suponga también que el conector recibe una petición para suprimir el cliente. Tal valor hace que el conector emita la siguiente sentencia de SQL:
UPDATE CUSTOMER SET CUSTSTATUS = 'DELETED' WHERE CUSTOMER_ID = 2345
Si no se incluye el parámetro SCN o no se especifica ningún valor para él, el conector suprime físicamente el objeto comercial de la base de datos. O de otro modo, si el objeto comercial con el verbo Delete incluye el parámetro SCN en su información específica de la aplicación, el conector realiza una supresión lógica. Si el objeto comercial con el verbo Delete no incluye el parámetro SCN en su información específica de la aplicación, el conector realiza una supresión física.
Tanto la operación de actualización como la de supresión pueden utilizar el valor de la propiedad SCN:
A nivel de objeto comercial, la información específica de la aplicación se puede utilizar para especificar un objeto envoltorio:
WRAPPER=true|false
si el parámetro WRAPPER tiene el valor "true", el objeto comercial de nivel superior es un objeto envoltorio. El objeto envoltorio no está representado por una tabla ni una vista de base de datos. Un objeto envoltorio se utiliza como contenedor para objetos comerciales que no guardan relación entre sí. El conector pasa por alto el objeto de nivel superior y procesa solamente los hijos. El objeto envoltorio puede contener entidades de cardinalidad N o de cardinalidad N-1 o ambas cosas.
La información específica de la aplicación para atributos difiere según si el atributo es un atributo simple o un atributo que representa n hijo o una matriz de objetos comerciales hijo. La información específica de la aplicación para un atributo que representa un hijo también difiere según si la relación padre/hijo se guarda en el hijo o en el padre. Para obtener información sobre la información específica de la aplicación para atributos que representan un hijo o una matriz de objetos comerciales hijo, consulte Especificación de la clave foránea de un atributo.
Para los atributos simples, el formato de la información específica de la aplicación consta de once parámetros en forma de pares nombre-valor, cada uno de los cuales incluye el nombre del parámetro y su valor. Cada parámetro definido está separado del siguiente por un signo de dos puntos (:) que actúa de delimitador.
El formato de la información específica de la aplicación para atributos se muestra a continuación. Los corchetes rectos ([ ]) delimitan parámetros opcionales. Una barra vertical (|) separa los miembros de un conjunto de opciones. El signo de dos puntos (:) está reservado para utilizarlo como delimitador.
CN=n_col:[FK=[n_objeto_cf.]n_atributo_cf]: [UID=[AUTO|n_idu| n_esquema.n_idu
[=UseIfMissing]|CW.n_columna_idu [=UseIfMissing]]]:
[PH=true|false]:[CA=n_atributo_definido| ..n_atributo_definido]:
[OB=[ASC|DESC]]:[UNVL= valor]:
[ESC=true|false]:
[FIXEDCHAR=true|false]:
[BYTEARRAY=true|false]:[USE_LIKE=true|false:
[WILDCARD_POSITION=número no negativo|NONE|BEGIN|END|BOTH]:
[CLOB=true]:
{TS=true|false]]
El único parámetro necesario para un atributo simple que desee que procese el conector es el nombre de columna. Por ejemplo, para especificar solamente el nombre de columna, utilice este formato:
CN=id_cliente
La Tabla 11 describe cada parámetro formado por un par nombre-valor.
Parámetro | Descripción |
---|---|
CN=nombre_col |
El nombre de la columna de base de datos para este atributo. |
FK=[nombre_objeto_cf.]nombre_atributo_cf |
El valor de esta propiedad depende de si la relación padre/hijo se guarda en el objeto comercial padre o en el hijo. Si un atributo no es una clave foránea, no incluya este parámetro en la información específica de la aplicación. Para obtener más información, consulte Especificación de la clave foránea de un atributo. |
UID=AUTO UID=nombre_idu|nombre_esquema.nombre_idu
[=UseIfMissing]
UID=CW.nombre_columna_idu[=UseIfMissing] |
El conector utiliza este parámetro para
generar el ID exclusivo del objeto comercial.
Si un atributo no necesita que se cree un ID exclusivo, no
incluya este parámetro en la información específica de la
aplicación.
Consulte la descripción de la propiedad PreserveUIDSeq para conocer detalles sobre cómo preservar el ID
exclusivo durante el proceso de objetos comerciales.
Para obtener más información, consulte Generación de un identificador exclusivo de un objeto
comercial.
Nota:
CW es una palabra clave utilizada
para representar el tipo de ID de usuario y no representa el
nombre de tabla. |
PH=true|false |
Si PH=true , el atributo simple correspondiente es un atributo marcador de posición. Un atributo simple es también un marcador de posición si su información específica de la aplicación está en blanco o es nula. |
CA=n_atributo_def|..n_atributo_def |
Si el valor de nombre_atributo_definido es el nombre de otro atributo contenido dentro del objeto comercial individual actual, el conector utiliza el valor del atributo especificado para establecer el valor de este atributo antes de que añada el objeto comercial a la base de datos durante la operación Create. El valor de set_attr_name no puede hacer referencia a un atributo de un objeto comercial hijo, pero puede hacer referencia a un atributo del objeto comercial padre si set_attr_name está precedido por dos puntos (..). Si no incluye este parámetro en la información específica de la aplicación, el conector utiliza el valor del atributo actual sin copiar el valor del atributo (CA) desde otro atributo. |
OB=[ASC|DESC] |
Si se especifica un valor para este parámetro y el atributo reside en un objeto comercial hijo, el conector utiliza el valor del atributo en la cláusula ORDER BY de las consultas de recuperación. El conector puede recuperar objetos comerciales hijo en orden ascendente o descendente. Utilice ASC para especificar un orden ascendente de recuperación. Utilice DESC para especificar un orden descendente de recuperación. Si no incluye este parámetro en la información específica de la aplicación, el conector no utiliza este atributo al especificar un orden de recuperación. |
UNVL=valor |
Especifica el valor que el conector utiliza para representar un valor nulo cuando recupera un objeto comercial que tiene atributos cuyos valores son nulos. Si no incluye este parámetro en la información específica de la aplicación, el conector inserta CxIgnore como valor del atributo. |
ESC=[true|false] |
Determina si el conector sustituye todas las
apariciones de cada carácter identificado en la propiedad ReplaceAllStr por
las series de caracteres de sustitución también especificadas en
la propiedad ReplaceStrList. Si este parámetro no contiene un
valor, el conector utiliza el valor de la propiedad ReplaceStrList para
realizar esa determinación.
Nota:
El parámetro ESC y las propiedades ReplaceAllStr
y ReplaceStrList son compatibles con la utilización de
caracteres de escape para una base de datos (por ejemplo,
comillas simples utilizadas como carácter de escape).
Debido a que esta misma funcionalidad está también disponible
utilizando las sentencias preparadas proporcionadas por el
controlador JDBC, estas propiedades se eliminarán en versiones
futuras del conector.
El conector es actualmente compatible con el uso de las
sentencias preparadas de JDBC. |
FIXEDCHAR=true|false |
Especifica si el atributo es de longitud fija cuando las columnas de la tabla son de tipo CHAR, no VARCHAR. Por ejemplo, si un atributo determinado está asociado a una columna de tipo CHAR, el conector espera FIXEDCHAR para la longitud; para la información específica de la aplicación correspondiente a ese atributo, especifique FIXEDCHAR=true. Asegúrese de que la propiedad MaxLength del atributo tiene longitud CHAR, que se especifica en la base de datos. Por omisión, FIXEDCHAR=false. |
BYTEARRAY=true|false |
Si BYTEARRAY=true, el conector lee y escribe datos binarios en la base de datos y envía esos datos en forma de serie de caracteres al intermediario InterChange Server o WebSphere MQ Integrator. BYTEARRAY=false es el valor por omisión. Para obtener más información, consulte Utilización de datos binarios. |
USE_LIKE=true|false |
Especifica si el conector compara series de caracteres utilizando el operador = o el operador LIKE. Si USE_LIKE tiene el valor "true", se pueden ejecutar consultas de comodín definiendo WILDCARD_POSITION. Si USE_LIKE tiene el valor "false", se utilizará el operador =. |
WILDCARD_POSITION=número no negativo|NONE|BEGIN|END|BOTH |
Si USE_LIKE tiene el valor "true", se utiliza WILDCARD_POSITION para especificar la posición del carácter comodín. Este valor puede un número no negativo cualquiera, NONE, BEGIN , END o BOTH. Por ejemplo, si se utiliza BEGIN, el carácter comodín se colocará en la primera posición de la serie de caracteres (%serie). Si se utiliza END, el carácter comodín se colocará en la última posición de la serie de caracteres (serie%). Si se utiliza BOTH, se colocarán caracteres comodines en la primera y última posición de la serie de caracteres (%serie%). |
CLOB=true |
sólo es aplicable al tipo de atributo String.
Especifica que el tipo de datos de la columna de base de datos
correspondiente a este atributo es CLOB.
Nota:
El tipo de datos CLOB se define de la
manera siguiente:
Un tipo String regular sería el mismo y sin ninguna referencia a CLOB en la información específica de la aplicación. Los tipos de datos CLOB de 4k y mayores se pueden insertar o actualizar. Pero sólo se pueden utilizar con Oracle y necesitan la última versión del controlador "thin" que tenga la capacidad de trabajar con los CLOB. La utilización de cualquier otro controlador puede causar errores. |
TS=true|false |
Para los atributos de tipo DATE, cuando se especifica TS=false en la información específica de la aplicación correspondiente al atributo, el atributo se trata como si fuera de tipo DATE. Cuando TS=true, el atributo se trata como si fuera de tipo TIMESTAMP. El valor por omisión de TS es "true". |
El valor de esta propiedad depende de si la relación padre/hijo se guarda en el objeto comercial padre o en el hijo:
Si el valor de nombre_objeto_cf no coincide con el tipo del objeto comercial hijo, y el valor de nombre_atributo_cf no coincide con el nombre del atributo contenido en el padre o en el hijo (según corresponda), el conector no puede procesar este atributo como clave foránea. El uso de mayúsculas o minúsculas en el nombre del objeto comercial y en el nombre del atributo tiene implicaciones importantes.
Por ejemplo, suponga que el objeto comercial Cliente contiene el atributo Direc[1], que representa el objeto comercial hijo Dirección, y el atributo AID, que contiene la clave primaria del objeto comercial hijo en forma de clave foránea. En este caso, la información específica de la aplicación correspondiente al atributo de clave foránea del padre debe contener el tipo del objeto comercial hijo (Dirección) así como el nombre de su atributo de clave primaria (ID). En este ejemplo, la información específica de la aplicación correspondiente al atributo AID incluiría FK=Dirección.ID.
Varios objetos comerciales padre pueden contener el mismo objeto comercial hijo, con independencia de si el hijo está contenido con cardinalidad simple o múltiple y de si la relación padre/hijo se guarda en el padre o en el hijo. Sin embargo, todos los objetos comerciales padre que guardan la relación padre/hijo deben utilizar atributos de igual nombre para contener la clave primaria del hijo. Además, todos los objetos comerciales hijo que guardan la relación padre/hijo deben utilizar atributos del mismo nombre para contener la clave primaria del padre. La Figura 5 muestra estas relaciones.
La Figura 5 muestra las relaciones siguientes:
La información específica de la aplicación para el atributo ORGS podría ser:
KEEP_RELATIONSHIP=true
Para obtener más información sobre el parámetro KEEP_RELATIONSHIP, consulte Información específica de la aplicación para atributos que representan hijos.
La información específica de la aplicación para el atributo IPpadre de cada hijo de la matriz de Organizaciones contiene el nombre de la columna de base de datos que corresponde al atributo actual, y especifica la clave foránea del atributo actual incluyendo el nombre del atributo de clave primaria del padre; por ejemplo:
CN=ORG_ID:FK=ID
La información específica de la aplicación para el atributo Direc es:
CONTAINMENT=OWNERSHIP
La información específica de la aplicación para el atributo AID contiene el nombre de la columna de base de datos que corresponde al atributo actual, y especifica la clave foránea del atributo actual incluyendo el tipo del objeto comercial hijo y el nombre de su atributo de clave primaria; por ejemplo:
CN=FK_AD:FK=Dirección.ID
La información específica de la aplicación para el atributo del clave primaria del hijo es:
CN=pk
La información específica de la aplicación para el atributo SPID es:
CONTAINMENT=NO_OWNERSHIP
Para obtener más información sobre el parámetro CONTAINMENT, consulte Información específica de la aplicación para atributos que representan hijos.
La información específica de la aplicación para el atributo SPID de Dirección contiene el nombre de la columna de base de datos que corresponde al atributo actual, y especifica la clave foránea del atributo actual incluyendo el tipo del objeto comercial hijo y el nombre de su atributo de clave primaria; por ejemplo:
CN=FK_SP:FK=EstadoProvincia.ID
La información específica de la aplicación para el atributo del clave primaria del hijo es:
CN=SP_ID
La información específica de la aplicación para el atributo IPpadre del hijo contiene el nombre de la columna de base de datos que corresponde al atributo actual, y especifica la clave foránea del atributo actual incluyendo el nombre del atributo de clave primaria del padre; por ejemplo:
CN=SD_ID:FK=ID
El conector utiliza el parámetro UID para generar el ID exclusivo del objeto comercial. El conector genera los ID exclusivos utilizando secuencias (tal como hace Oracle), o contadores (que tienen estructura de tabla), y luego emite la sentencia INSERT.
El conector utiliza una secuencia o contador para generar el valor de ID y luego emite la sentencia INSERT:
Para obtener información sobre la configuración del nombre de la tabla, consulte UniqueIDTableName. El script para instalar esta tabla es:
\connectors\Manugistics\dependencies\BIA_uid_table_oracle.sql
Consulte la propiedad PreserveUIDSeq para obtener información sobre la preservación de la secuencia del ID exclusivo durante el proceso.
Los atributos que representan un objeto comercial hijo de cardinalidad simple pueden especificar si el hijo es propiedad del padre o si es compartido por varios padres.
Los atributos que representan un hijo de cardinalidad simple o una matriz de objetos comerciales hijo pueden especificar la forma en que el conector actualiza el objeto padre y un subconjunto de los hijos.
El formato de la información específica de la aplicación para atributos que representan un objeto comercial hijo de cardinalidad simple es el siguiente:
CONTAINMENT= [OWNERSHIP|NO_OWNERSHIP]
Establezca CONTAINMENT en OWNERSHIP para representar una relación de cardinalidad simple en la que el objeto comercial hijo es propiedad del padre. Establezca CONTAINMENT en NO_OWNERSHIP para representar una relación de cardinalidad simple en la que el objeto comercial hijo es compartido por el padre. No incluya el parámetro CONTAINMENT cuando desee representar una relación de cardinalidad simple en la que la relación padre/hijo se guarda en el hijo, y no en el padre.
Para obtener más información, consulte Relaciones de cardinalidad simple y datos sin propietario y Relaciones de cardinalidad simple que almacenan la relación en el hijo.
Para las operaciones de actualización sobre una matriz de objetos comerciales que guardan la relación padre/hijo en el hijo, existe un valor especial para el atributo que representa al hijo: puede establecer KEEP_RELATIONSHIP en true para impedir que el conector suprima los datos existentes del hijo que no están representados en el objeto comercial de origen.
Por ejemplo, suponga que un contrato está asociado a una ubicación, tal como Nueva York. Suponga también que el conector recibe una petición para actualizar el objeto comercial Contrato, el cual contiene un objeto comercial hijo simple que establece una asociación con San Francisco como ubicación. Si la evaluación de KEEP_RELATIONSHIP da como resultado true para el atributo que representa los datos de ubicación, el conector actualiza el contrato para añadir su asociación con San Francisco y no suprime su asociación con Nueva York.
Sin embargo, si la evaluación de KEEP_RELATIONSHIP da como resultado false, el conector suprime todos los datos existentes del hijo que no estén contenidos en el objeto comercial de origen. En este caso, el contrato se asocia con San Francisco solamente.
El formato de esta información específica de la aplicación es:
KEEP_RELATIONSHIP=[true|false]
No se distingue entre letras mayúsculas y minúsculas al examinar esta información específica de la aplicación.
Si BYTEARRAY=true, el conector lee y escribe datos binarios en la base de datos. Debido a que la versión actual del sistema WebSphere Business Integration no permite trabajar con datos binarios, éstos se convierten en una serie de caracteres (String) y luego se envían al intermediario de integración. El formato de esta serie de caracteres es un número hexadecimal con 2 caracteres por byte. Por ejemplo, si los datos binarios de la base de datos son 3 bytes que tienen los valores decimales (1, 65, 255), la serie de caracteres será "0141ff".
El conector utiliza información específica de la aplicación para los verbos Retrieve y RetrieveByContent. Este texto le permite especificar los atributos que se deben incluir en la cláusula WHERE para una recuperación. Puede también especificar operadores y valores de atributos.
La sintaxis de la información específica de la aplicación para los verbos Retrieve y RetrieveByContent es:
[variable_condición operador_condicional @ [...]:[..]nombre_atributo [, ...]]
donde:
variable_condición |
Es el nombre de la columna de base de datos. |
operador_condicional |
Es el operador compatible con la base de datos, por ejemplo =, >, OR, AND e IN (valor1, valor2). |
@ |
Es una variable que se sustituye por el valor recuperado por getAttrValue(nombre_atributo). La sustitución es posicional; es decir, el conector sustituye el primer signo @ por el valor de la primera variable nombre_atributo especificada a continuación del carácter delimitador :. |
.. |
El atributo especificado en la variable nombre_atributo pertenece al objeto comercial padre inmediato; si falta este valor, el atributo pertenece al objeto comercial actual. |
nombre_atributo |
Es el nombre del atributo cuyo valor el conector utiliza como sustituto de @. |
Para comprender la sintaxis de esta propiedad, suponga que el objeto comercial Artículo tiene un atributo id_artículo cuyo valor es XY45 y un atributo Color cuyo valor es ROJO. Suponga también que especifica la propiedad AppSpecificInfo del verbo Retrieve de la manera siguiente:
Color='ROJO'
El valor anterior perteneciente a la información específica de la aplicación hace que el conector genere la siguiente cláusula WHERE para una operación de recuperación:
where id_artículo=XY45 and Color = 'ROJO'
Veamos un ejemplo más complejo. Suponga que el objeto comercial Cliente tiene un atributo id_cliente cuyo valor es 1234 y un atributo fecha_creación cuyo valor es 01/01/90. Suponga también que el padre de este objeto comercial tiene un atributo cantidad cuyo valor es 20.
Suponga también que especifica la propiedad AppSpecificInfo del verbo Retrieve de la manera siguiente:
fecha_creación > @ OR cantidad = @ AND estado_cliente IN ('GOLD', 'PLATINUM') : fecha_creación, ..cantidad
El valor anterior perteneciente a la información específica de la aplicación hace que el conector genere la siguiente cláusula WHERE para una operación de recuperación:
where id_cliente=1234 and fecha_creación > '01/01/90' OR cantidad = 20 AND estado_cliente IN ('GOLD', 'PLATINUM')
El conector obtiene el valor de fecha ('01/01/90') a partir del atributo fecha_creación del objeto comercial actual. El conector obtiene el valor de cantidad (20) a partir del atributo de cantidad del objeto comercial padre (tal como está especificado por cantidad en la información específica de la aplicación).
Después de analizar la información específica de la aplicación para el verbo Retrieve, el conector añade el texto a la cláusula WHERE de la sentencia RETRIEVE que genera a partir de las claves primarias o foráneas del objeto comercial. El conector añade el operador inicial AND a la cláusula WHERE. El valor de la información específica de la aplicación debe ser una sintaxis válida de SQL. En el caso de RetrieveByContent, la información específica de la aplicación se añade a la cláusula WHERE de la sentencia RETRIEVE que el conector genera a partir de los atributos del objeto comercial cuyos valores están cumplimentados.
La cláusula WHERE puede también especificar atributos marcadores de posición en lugar de los atributos propiamente dichos en el objeto comercial padre. Estos marcadores de posición no contienen ninguna información específica de la aplicación. Un atributo puede ser un marcador de posición si cumple una de las condiciones siguientes con respecto a su información específica de la aplicación:
Por ejemplo: el objeto comercial Pedido contiene el objeto comercial Línea de detalle, de cardinalidad múltiple, y es necesario recuperar solamente determinadas líneas de detalle. Esta recuperación se puede realizar mediante un atributo marcador de posición en el objeto comercial Pedido. Este marcador de posición es necesario en el objeto comercial padre porque todos los objetos hijo son eliminados. Durante la ejecución, el atributo marcador de posición puede ser cumplimentado por el intermediario de integración con una lista de líneas de detalle determinadas, separadas por una coma (,).
Para los fines de este ejemplo, añadiría la información siguiente a la cláusula WHERE del verbo Retrieve para el objeto comercial hijo Línea de detalle:
id_línea_detalle in(@,@,@):..marcador_posición1,..marcador_posición2,..marcador_ posición3
Donde id_línea_detalle in es el ID contenido en el objeto comercial hijo, marcador_posición es el atributo contenido en el padre. Si marcador_posición contiene los valores 12,13,14, la consulta seleccionaría lo siguiente de la cláusula WHERE:
id_línea_detalle in(12,13,14)
Donde SELECT:..FROM:..WHERE x in (1,2,3) es la sintaxis estándar de SQL para bases de datos.
En el verbo RetrieveByContent, si la longitud de la cláusula WHERE es 0, el conector utiliza la información específica de la aplicación en la cláusula WHERE de la sentencia RETRIEVE. Mediante esta característica, el usuario puede enviar un objeto comercial sin ningún valor de atributo cumplimentado y especificar información específica de la aplicación para el verbo RetrieveByContent, y el conector creará la cláusula WHERE basándose solamente en la información específica de la aplicación especificada para el verbo.