Este ejemplo utiliza scripts SQL con una DB2 Universal Database para consultar una relación de identidad con tres conjuntos de datos desde tres aplicaciones empresariales: Clarify, SAP y Siebel.
Los datos se correlacionan utilizando el servicio de relaciones de
IBM® Business Process Manager. Cada aplicación contiene información similar de cliente,
con una relación de identidad para correlacionar la información entre cada aplicación.
En las tres tablas
siguientes se muestran los datos tal como se almacenan en cada base de datos:
Tabla 1. Cliente Clarify| Nombre |
Apellido |
Teléfono del domicilio |
ID |
| Jessica |
Reed |
111 111 11111 |
clarify_1 |
| Tara |
McLean |
333 333 33333 |
clarify_2 |
Tabla 2. Cliente SAP| Nombre |
Apellido |
Teléfono del domicilio |
ID |
| Jessica |
Reed |
111 111 11111 |
sap_10 |
| Tara |
McLean |
333 333 33333 |
sap_8 |
Tabla 3. Cliente Siebel| Nombre completo |
Teléfono del domicilio |
ID |
| Jessica Reed |
111 111 11111 |
siebel_6 |
| Tara McLean |
333 333 33333 |
siebel_8 |
Los nombres y elementos de definición de
objeto de empresa de cliente (creados en Integration Designer para
cada base de datos) se muestran en la tabla siguiente:
Tabla 4. Definiciones de objetos de negocio para cliente en cada base de datos| ClarifyCustomer |
SapCustomer |
SiebelCustomer |
| Elemento |
Tipo |
Elemento |
Tipo |
Elemento |
Tipo |
| givenName |
string |
firstName |
string |
fullName |
string |
| lastName |
string |
lastName |
string |
|
|
| homePhone |
string |
homePhone |
string |
homePhone |
string |
| clarifyId |
string |
sapId |
string |
siebelId |
string |
Se define una
relación de identidad para correlacionar la información de cliente entre cada base de datos. Esta
relación, denominada
ID en este ejemplo, utilice los elementos de objeto de empresa
clarifyId,
sapId y
siebelId. Estos elementos
se utilizan porque contienen los datos de ID para cada base de datos y estos datos son exclusivos de cada cliente. En la tabla siguiente se describen los roles que se utilizan para correlacionar distintas bases de datos de la
relación en un ID común utilizado por
IBM Business Process Manager:
Tabla 5. Definición de relación de ID| Nombre de relación |
Nombre del rol |
Nombre del objeto de negocio |
Clave |
| ID |
GenCustomer |
GenCustomer |
genId |
| ClarifyCustomer |
ClarifyCustomer |
clarifyId |
| SapCustomer |
SapCustomer |
sapId |
| SiebelCustomer |
SiebelCustomer |
siebelId |
El nombre completo
de relación es
http://CustomerModule/ID.
Los nombres completos de rol son
- http://CustomerModule/ClarifyCustomer
- http://CustomerModule/SapCustomer
- http://CustomerModule/SiebelCustomer
Puede correlacionar los datos de los objetos de negocio
contenidos en las tres bases de datos utilizando la relación definida. Los datos de ID de cliente de cada base de
datos se correlacionan con los datos de cliente de las demás bases de datos compartiendo los ID de instancia. Por ejemplo, Tara McLean se identifica mediante
clarify_3 ID en Clarify,
sap_8 en SAP y
siebel_8 en Siebel. El servicio de relaciones de
IBM Business Process Manager genera un ID exclusivo.
Consejo: Puede utilizar las vistas
para explorar el contenido de la tabla de relaciones.
Puede definir varias instancias de relaciones utilizando
las vistas creadas en la base de datos común. La correlación del nombre de vista (utilizando el convenio de denominación descrito
anteriormente) con su rol de relación correspondiente se captura en la tabla
RELN_VIEW_META_T de la base de datos común. En la tabla siguiente se muestra un ejemplo de los nombres de vistas de los roles
ClarifyCustomer,
SapCustomer y
SiebelCustomer:
Tabla 6. Tabla RELN_VIEW_META_T| VIEW_NAME |
RELATIONSHIP_NAME |
ROLE_NAME |
| V_ID_CLARIFYCUSTOMER_
098 |
http://CustomerModule/ID |
http://CustomerModule/ClarifyCustomer |
| V_ID_SAPCUSTOMER_515 |
http://CustomerModule/ID |
http://CustomerModule/SapCustomer |
| V_ID_SIEBELCUSTOMER_411 |
http://CustomerModule/ID |
http://CustomerModule/SiebelCustomer |
| V_USASTATE_
ABBREVIATION_DE8 |
http://CustomerModule/USASTATE |
http://CustomerModule/Abbreviation |
| V_USASTATE_CODE_B32 |
http://CustomerModule/USASTATE |
http://CustomerModule/Code |
| V_USASTATE_NAME_933 |
http://CustomerModule/USASTATE |
http://CustomerModule/FullName |
La definición
de columna de la vista que se describe en la
tabla 1
tendrá un
ROLE_ATTRIBUTE_COLUMN con las propiedades siguientes:
Tabla 7. Definición de columna de la vista | Nombre de la columna |
Tipo de datos |
Valor |
Descripción |
| KEY_ATTRIBUTE_NAME |
depende del tipo de atributo de clave |
No nulo |
Es dónde se almacenan los datos de instancia de rol.
Para las relaciones de identidades, la
columna recibe el nombre del atributo de clave. Por ejemplo, SAPCUSTOMER_SAPID utilizará
sapid como nombre de atributo de clave y sapcustomer como nombre de objeto de empresa. Se define una columna para cada atributo de clave.
Para las relaciones estáticas, la columna se denomina DATA |
En la tabla siguiente se muestran las
vistas de la base de datos común para las relaciones de ID.
Tabla 8. Definición de columna de la vista| Vista del rol en Clarify |
Vista del rol en SAP |
Vista del rol en Siebel |
| INSTANCEID |
INSTANCEID |
INSTANCEID |
| CLARIFYCUSTOMER_CLARIFYID |
SAPCUSTOMER_SAPID |
SIEBELCUSTOMER_SIEBELID |
| STATUS |
STATUS |
STATUS |
| LOGICAL_STATE |
LOGICAL_STATE |
LOGICAL_STATE |
| LOGICAL_STATE_TIMESTAMP |
LOGICAL_STATE_TIMESTAMP |
LOGICAL_STATE_TIMESTAMP |
| CREATE_TIMESTAMP |
CREATE_TIMESTAMP |
CREATE_TIMESTAMP |
| UPDATE_TIMESTAMP |
UPDATE_TIMESTAMP |
UPDATE_TIMESTAMP |
| ROLEID |
ROLEID |
ROLEID |
Nota: Coinciden todos los nombres
de columna de las vistas, a excepción de los nombres de columna de atributo de clave.
Primero
debe conocer el nombre de la vista de la tabla de ejecución de rol para poder ejecutar SQL contra la vista a fin de
manipular los datos de instancia de rol.
El siguiente script SQL muestra un ejemplo que utiliza DB2 Universal Database. El ejemplo asume
que todos los datos de cada una de las bases de datos se han copiado en la base de datos de relaciones. Puede copiar los datos utilizando
la sentencia
SELECT INTO SQL:
//Cree una tabla para almacenar los valores de ID de las tres aplicaciones para cada cliente
//y asocie un ID de instancia exclusivo con cada cliente. Utilice esta tabla como tabla
//fuente base para llenar las tablas de relaciones.
CREATE TABLE joint_t (instanceid INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
clarify_id VARCHAR(10) NOT NULL,
sap_id VARCHAR(10) NOT NULL,
siebel_id VARCHAR(10) NOT NULL)
//Compare el nombre y número de teléfono del domicilio en las tablas de las tres
//aplicaciones.
//Si se encuentra una coincidencia, inserte el valor de ID de esa persona de cada tabla de aplicación
//en la tabla joint_t. Asocie los tres valores de ID con un ID exclusivo; este
//ID se utilizará posteriormente como el ID de instancia de relación.
INSERT INTO joint_t (clarify_id,sap_id,siebel_id)
SELECT A.ID, B.ID, C.ID
FROM clarifycustomer A,sapcustomer B, siebelcustomer C
WHERE A.homephone=B.homephone AND
B.homephone=C.homephone, AND
B.givenname=C.firstname AND
B.lastname=C.lastname AND
A.fullname=C.firstname CONCAT ' ' CONCAT C.lastname
//Cree una secuencia para cada aplicación; esta secuencia se utilizará
//posteriormente como un ID de rol en cada tabla de rol.
CREATE SEQUENCE clarify_roleid MINVALUE 1 ORDER CACHE 100
CREATE SEQUENCE sap_roleid MINVALUE 1 ORDER CACHE 100
CREATE SEQUENCE siebel_roleid MINVALUE 1 ORDER CACHE 100
//Llene la tabla de instancias de rol para el rol de CLARIFY.
INSERT INTO V_ID_CLARIFYCUSTOMER_098 (instanceid, roleid,
clarifycustomer_clarifyid, status, logical_state, logical_state_timestamp,
create_timestamp, update_timestamp)
FROM joint_t
//Llene la tabla de instancias de rol para el rol de SAP.
INSERT INTO V_ID_SAPCUSTOMER_515 (instanceid, roleid, sapcustomer_sapid,
status, logical_state, logical_state_timestamp, create_timestamp,
update_timestamp)
SELECT instanceid NEXTVAL FOR sap_roleid, sap_id, 0, 0, current
timestamp, current timestamp, current timestamp
FROM joint_t
//Llene la tabla de instancias de rol para el rol de SIEBEL.
INSERT INTO V_ID_SIEBELCUSTOMER_AFC (instanceid, roleid, siebelcustomer_siebelid,
status, logical_state, logical_state_timestamp, create_timestamp, update_timestamp)
SELECT instanceid, NEXTVAL FOR siebel_roleid, sap_id, 0, 0, current timestamp,
current timestamp, current timestamp
FROM joint_t
Se crea la tabla
joint_t para almacenar temporalmente valores de clave. Puede suprimir
la tabla cuando haya acabado de guardar los recursos, si es necesario. De forma alternativa, puede crear una tabla de vista
o una tabla temporal.