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

Exemplo: Consultando de relacionamento usando as visualizações do banco de dados

Este exemplo utiliza scripts SQL com um DB2 Universal Database para consultar um relacionamento de identidade com três conjuntos de dados de três aplicativos corporativos : Clarify, SAP e Siebel.

Os dados são correlacionados usando o serviço de relacionamento do IBM® Business Process Manager . Cada aplicativo contém informações do cliente semelhante, com um relacionamento de identidade para correlacionar as informações entre cada aplicativo.

As três tabelas a seguir mostram os dados como eles são armazenados em cada banco de dados:

Tabela 1. Clarify do cliente
Nome Fornecido Sobrenome Telefone Residencial ID
Jessica Reed 111111 11111 clarify_1
Tara McLean 333 333 33333 clarify_2
Tabela 2. cliente do SAP
Nome Fornecido Sobrenome Telefone Residencial ID
Jessica Reed 111111 11111 sap_10
Tara McLean 333 333 33333 sap_8
Tabela 3. Siebel do cliente
Nome Completo Telefone Residencial ID
Jessica Reed 111111 11111 siebel_6
Tara McLean 333 333 33333 siebel_8

Os nomes de definição de objeto de negócios do cliente e elementos (criados no Integration Designer para cada banco de dados) são mostrados na tabela a seguir :

Tabela 4. Definições de Objetos de Negócios para Cliente em cada banco de dados
ClarifyCustomer SapCustomer SiebelCustomer
Elemento Tipo Elemento Tipo Elemento Tipo
givenName Sequência nome Sequência fullName Sequência
lastName Sequência lastName Sequência    
homePhone Sequência homePhone Sequência homePhone Sequência
clarifyId Sequência sapId Sequência siebelId Sequência
Um relacionamento de identidades é definido para correlacionar as informações do cliente entre cada banco de dados. Este relacionamento, chamado ID neste exemplo, usa os elementos de objeto de negócios clarifyId, sapIde siebelId. Esses elementos são usados porque eles contêm os dados de ID para cada banco de dados e esses dados são exclusivos para cada cliente. A tabela a seguir descreve as funções que são usadas para correlacionar diferentes bancos de dados no relacionamento para um ID comum usado pelo IBM Business Process Manager:
Tabela 5. definição de relacionamento do ID
Nome do Relacionamento Nome da Função Nome do objeto de negócios Tecla
ID GenCustomer GenCustomer genId
ClarifyCustomer ClarifyCustomer clarifyId
SapCustomer SapCustomer sapId
SiebelCustomer SiebelCustomer siebelId
O nome do relacionamento completo é http://CustomerModule/ID. Os nomes de função completos são
  • http://CustomerModule/ClarifyCustomer
  • http://CustomerModule/SapCustomer
  • http://CustomerModule/SiebelCustomer
É possível correlacionar os dados dentro dos objetos de negócios contidos em todos os três bancos de dados usando o relacionamento definido. Os dados de ID do cliente a partir de cada banco de dados são correlacionados com os dados do cliente dos outros bancos de dados compartilhando IDs de instância. Por exemplo, Tara McLean é identificado por clarify_3 ID no Clarify, sap_8 no SAP e siebel_8 no Siebel. Um ID exclusivo é gerado pelo serviço de relacionamento do IBM Business Process Manager .
Dica: Você pode utilizar as visualizações para procurar o conteúdo da tabela de relacionamentos.
é possível definir várias instâncias de relacionamento usando as visualizações criadas no banco de dados Comum. O mapeamento do nome da visualização (usando a convenção de nomenclatura conforme descrito anteriormente) para sua função de relacionamento correspondente é capturado na tabela RELN_VIEW_META_T no banco de dados Comum. A tabela a seguir mostra um exemplo dos nomes de visualização para o ClarifyCustomer, SapCustomere funções SiebelCustomer :
Tabela 6. tabela 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/Abreviatura
V_USASTATE_CODE_B32 http://CustomerModule/USASTATE http://CustomerModule/Código
V_USASTATE_NAME_933 http://CustomerModule/USASTATE http://CustomerModule/FullName
A definição de coluna de visualização conforme descrito na tabela 1 terá uma ROLE_ATTRIBUTE_COLUMN com as seguintes propriedades:
Tabela 7. Definição da Coluna de Visualização
Nome da Coluna Tipo de Dados Valor Descrição
KEY_ATTRIBUTE_NAME depende do tipo de atributo de chave Não é nulo Este é o local em que os dados da instância da função são armazenados. Para relacionamentos de identidade, a coluna será nomeada pelo nome do atributo-chave. Por exemplo, SAPCUSTOMER_SAPID usará sapid como nome do atributo-chave e sapcustomer como nome do objeto de negócios. Uma coluna é definida para cada atributo-chave. Para relacionamentos estáticos, a coluna é denominada DATA
A tabela a seguir mostra os mostram as visualizações no banco de dados Comum para os relacionamentos de ID.
Tabela 8. Definição da Coluna de Visualização
Visualização da função Clarify Visualização da Função SAP Visualização da Função 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: Todos os nomes de colunas na visualização correspondem, exceto os nomes de coluna de atributo de chave.
Você deve primeiro saber o nome da visualização de tabela de execução da função antes de você poder executar o SQL na visualização para manipular dados da instância da função. O script SQL a seguir mostra um exemplo usando o DB2 Universal Database. O exemplo assume que todos os dados de cada banco de dados tenha sido copiado para o banco de dados de relacionamento. É possível copiar os dados usando a instrução SELECT INTO SQL :
//Criar uma tabela para armazenar valores de ID de todos os três aplicativos para cada cliente, 
//e associar um ID de instância exclusivo a cada cliente. Use esta tabela como uma base 
//tabela de origem básica para preencher tabelas de relacionamentos.
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 o nome e o número de telefone nas três tabelas de aplicativos. 
//Se uma correspondência for localizada, insira o ID da pessoa de cada tabela de aplicativos 
//na tabela joint_t. Associe os três valores de ID a um ID exclusivo 
//O ID será utilizado posteriormente como o ID da instância de relacionamento. 
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

//Crie uma seqüência para cada aplicativo; essa seqüência será 
//usada posteriormente como um ID de função em cada tabela de função.
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

//Preencha a tabela da instância de função para a função CLARYFY.
INSERT INTO V_ID_CLARIFYCUSTOMER_098 (instanceid, roleid,
  clarifycustomer_clarifyid, status, logical_state, logical_state_timestamp,
  create_timestamp, update_timestamp)
FROM joint_t

//Preencha a tabela da instância de função para a função 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

//Preencha a tabela da instância de função para a função 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
A tabela joint_t é criada para armazenar temporariamente os valores da chave. é possível excluir a tabela quando você tiver concluído o salvamento dos recursos, se necessário. alternativa, é possível criar uma tabela de visualização ou uma tabela temporária.