This topic applies only to the IBM Business Process Manager Advanced configuration.

Ejemplo: Consulta de datos de relaciones utilizando vistas de bases de datos

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 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.