Integrando a Consulta de Paginação do WebSphere Adapter para JDBC no IBM Business Process Manager V7.5

WebSphere® Adapter para JDBC, executado no IBM® Business Process Manager V7.5, permite comunicação bidirecional entre bancos de dados e aplicativos. A partir do IBM BPM V7.5, o WebSphere Adapter para JDBC incluiu um recurso integrado de consulta de paginação. Saiba como configurar e usar a consulta de paginação e conheça várias maneiras de integrar esse recurso no IBM BPM.

Jin Shang, Staff Software Engineer and Technical Support Specialist, IBM BPM Support team, IBM

Photo of Jin ShangJin Shang é especialista em suporte técnico nas equipes de suporte técnico de WebSphere Adapters e Business Process Manager no China Software Development Lab. Ele tem oito anos de experiência com o conjunto de produtos IBM WebSphere Business Integration.



Xiaocheng Wang, Staff Software Engineer, IBM China

Photo of Xiaocheng Wang Xiaocheng Wang é engenheiro de software e passou a fazer parte da IBM em 2008. Ele tem experiência com desenvolvimento de software, teste e suporte. Tem interesse em engenharia de software, J2EE e tecnologia de middleware. Xiaocheng dedica-se atualmente ao desenvolvimento de solução de integração de produtos WebSphere.



Da Zhang, Software Engineer, IBM China

Photo of Da ZhangDa Zhang é engenheiro de software no IBM China Development lab. Ele trabalha com WebSphere Integration Developer, IBM Integration Designer e IBM Business Process Manager há mais de três anos.



15/Out/2012

Introdução

O WebSphere Adapter para JDBC (chamado aqui de JDBC Adapter) é um eficiente adaptador de recursos de banco de dados fornecido pelo IBM Business Process Manager V7.5 (IBM BPM). Um aplicativo executado no IBM BPM pode realizar comunicação bidirecional com qualquer banco de dados através do JDBC Adapter. Mais especificamente, ele permite que projetos J2EE e projetos de arquitetura orientada a serviços (SOA) troquem dados com o IBM BPM na forma de um objeto de negócios.

A consulta a banco de dados é uma das funções básicas do JDBC Adapter. Na prática, o desempenho pode ser ruim ao lidar com grandes conjuntos de resultados. Com base em diferentes produções de bancos de dados, algumas técnicas de consulta de paginação foram desenvolvidas para melhorar a eficiência das operações de consulta. É uma prática comum paginar pelo conjunto de resultados para retornar os resultados da consulta em um tamanho adequado. A partir da Versão 7.5, o JDBC Adapter oferece um recurso integrado para consulta de paginação que permite lidar com grandes conjuntos de resultados de uma maneira mais eficiente. Este artigo explora uma solução de processo de negócios que ajuda a usar a consulta de paginação no IBM BPM.

Os produtos a seguir são necessários para acompanhar este artigo:

  • IBM WebSphere Adapter para JDBC V7.5
  • IBM Business Process Manager V7.5
  • IBM Integration Designer V7.5

Consulta de paginação do WebSphere Adapter para JDBC

Nesta seção, apresentaremos o uso prático da consulta de paginação através de um cenário de negócios de amostra que usa o JDBC Adapter.

Cenário de negócios de amostra

Para manter informações de faturamento, um desenvolvedor criou uma tabela em um banco de dados DB2®. Como mostra a Listagem 1, há quatro colunas criadas para armazenar os detalhes de faturamento.

Listagem 1. Tabela de informações de faturamento
CREATE TABLE Bill
(
	ID         INTEGER NOT NULL PRIMARY KEY,
	PERSONID   VARCHAR(50),
	BILLDATE   TIMESTAMP,
	AMOUNT     DOUBLE
);

No sistema, as etapas necessárias para recuperar informações incluem classificar as informações de faturamento por BILLDATE e consultar todos os registros até que o registro específico seja encontrado. O processo inteiro pode tornar-se mais caro e lento à medida que os negócios crescem. No entanto, dado que o faturamento ocorre em um período específico, por exemplo, em um dia específico, em vez de lidar com tabelas inteiras, a maneira mais eficiente é usar consulta de paginação para consultar uma parte específica dos registros.

Limitação da função de consulta existente

RetrieveAll é uma das operações básicas de banco de dados fornecidas pelo processamento de saída do JDBC Adapter. Ela permite especificar os critérios de procura para recuperar registros específicos. Antes da Versão 7.5, RetrieveAll não tinha suporte para consulta de paginação. Era necessário implementar a função no código ou otimizar o comportamento de recuperação do banco de dados. No entanto, ambas as abordagens são muito tediosas e inflexíveis para atender a vários requisitos de negócios.

Mecanismo de consulta de paginação

A partir da Versão 7.5, o JDBC Adapter passou a fornecer um recurso integrado de consulta de paginação, incluindo três atributos InteractionSpec para a operação RetrieveAll:

  • enablePaging: RetrieveAll realiza uma consulta de paginação quando enablePaging estiver definido como true. Por padrão, é definido como false, e o JDBC Adapter realiza a consulta por todos os registros.
  • pageSize: Especifica o tamanho dos conjuntos de resultados retornados.
  • startIndex: Especifica a posição inicial de uma consulta de paginação. Por exemplo, startIndex=100 e pageSize=50 significa que uma consulta de paginação retornará 50 registros, a partir do 101º registro.

No assistente de pré-configuração, esses atributos também podem ser configurados dinamicamente quando o JDBC Adapter está sendo executado no IBM BPM, que tem suporte para alteração dinâmica dos atributos InteractionSpec. Portanto, é possível alterar os valores de pageSize e startIndex para realizar a consulta em relação a um destino específico.


Configurando o WebSphere Adapter para JDBC

É possível concluir a configuração do JDBC Adapter no IBM Integration Designer (chamado aqui de Integration Designer).

Gerar componentes para o processamento de saída

A amostra requer que seja criado primeiro um componente de saída do JDBC Adapter. Para criá-lo, siga as instruções abaixo:

  1. Primeiro, é necessário importar o JDBC Adapter. No IBM Integration Designer, na perspectiva Business Integration, selecione File > New > External Service. Na visualização "Select the Service Type or Registry", expanda Adapter e selecione JDBC. Em seguida, selecione IBM WebSphere Adapter for JDBC (IBM: 7.5.0.0) na visualização "Select an Adapter".
  2. Em seguida, use o assistente JDBC Adapter Outbound para criar um serviço para acessar o sistema do banco de dados. Para importar os drivers JDBC necessários, selecione acrescentar JDBC drivers na visualização "Locate the Required Files and Libraries". Neste exemplo, usamos o DB2, que requer db2jcc.jar e db2jcc_license_cu.jar. Em seguida, na visualização "Select the Processing Direction", selecione Outbound.
  3. Na visualização "Specify the Discovery Properties", insira o nome do banco de dados, endereço IP, nome do usuário e senha.
  4. Na visualização "Specify the Enterprise Properties", clique no botão Run Query. Todo o esquema do banco de dados é listado na tabela "Discovered Objects". Em seguida, selecione a tabela de destino e inclua na lista Selected objects.
  5. Agora especifique a operação do banco de dados e suas propriedades. Na visualização Specify Composite Properties, como mostra a Figura 1, certifique-se de que a lista "Operations for selected business objects" inclui a operação RetrieveAll. Para especificar os atributos da operação, clique no botão Advanced, expanda RetrieveAll Configuration properties e especifique os valores padrão para as propriedades de paginação e fila.
    Figura 1. Visualização Composite Properties
    Visualização Composite Properties

    Aqui, selecione Return specified number of records per page beginning with the starting index (enablePaging=true). Em seguida, coloque 0 no campo "Starting index to return records" e 10 no campo "Number of records per page" (startIndex=0, pageSize=10). Observe que Generate a business graph for each business object deve estar marcado. No ambiente de tempo de execução, as propriedades do gráfico de negócios são necessárias para alterar o valor de startIndex e pageSize.

  6. Aqui, use as configurações padrão para a conexão com o banco de dados. Na visualização "Specify the Service Generation and Deployment Properties", selecione Using security properties from the managed connection factory e cancele a seleção de Join the global transaction. Em seguida, no menu suspenso de Database connection information, selecione Specify local database connection information.
  7. Clique em Finish. O componente Outbound do JDBC Adapter é mostrado em Assembly Diagram, como mostra a Figura 2.
    Figura 2. Assembly Diagram
    Assembly Diagram

Classificar os resultados da consulta

Você agora concluiu a configuração do JDBC Adapter da seção anterior. Em um cenário de negócios real, para melhorar a eficiência da consulta, um desenvolvedor sempre classifica os resultados da consulta por certos campos em ordem crescente ou decrescente. Nesta amostra, o cenário de negócios requer que os resultados sejam ordenados por BILLDATE. Isso pode ser feito seguindo as instruções a seguir:

  1. Na perspectiva Business Integration, expanda Data e você verá um objeto de negócios, que foi gerado automaticamente para a tabela de faturamento. Selecione o objeto de negócios e abra na visualização Business Object Edit. Clique com o botão direito no elemento billdate e selecione Show In-Properties View.
  2. Na visualização Properties, abra a guia Application info, selecione JDBCAttributeTypeMetadata, selecione New-OrderBy e depois defina DESC (ou ASC) no campo de texto. Os resultados da consulta serão classificados pelo campo billdate em ordem decrescente (ou crescente).

Integrando a consulta de paginação em diferentes maneiras

Como o IBM BPM V7.5 suporta alterações dinâmicas nos atributos InteractionSpec, há várias maneiras de integrar consultas de paginação com projetos existentes no ambiente de tempo de execução. Neste artigo, apresentaremos três abordagens:

Integrar com o código Java

  1. No Integration Designer, crie um componente Java no Assembly Diagram, como mostra a Figura 3. Em seguida, crie uma interface e importe para o componente Java.
    Figura 3. Incluir um componente Java em Assembly Diagram
    Incluir um componente Java em Assembly Diagram
  2. Na visualização de edição de interface, inclua Request Response Operation e defina quatro parâmetros de entrada para especificar os valores dos atributos InteractionSpec e do critério de consulta. Em seguida, defina um parâmetro de saída para os resultados de consulta que retornam, como mostra a Figura 4.
    Figura 4. Editar interface
    Editar interface
  3. No Assembly Diagram, crie uma ligação entre o componente Java e o componente Outbound do JDBC Adapter, como mostra a Figura 5.
    Figura 5. Ligar o componente Java e o componente do JDBC Adapter no Assembly Diagram
    Ligar o componente Java e o componente do JDBC Adapter no Assembly Diagram
  4. Clique duas vezes no componente Java para implementar. Em seguida, substitua o método operation1 com o código da Listagem 2.
    Listagem 2. Código de implementação para o componente Java
    public DataObject operation1(Boolean enablePaging, Integer pageSize,
            Integer startIndex, DataObject inputBusinessObject) {
            DataObject response = null;
    		try
    		{
               DataObject props = inputBusinessObject.createDataObject
                ("properties");
                props.setBoolean("ISenablePaging", enablePaging);
                props.setInt("ISpageSize", pageSize);
                props.setInt("ISstartIndex", startIndex);
                response = (DataObject) this.locateService_
                 JDBCOutboundInterfacePartner().invoke
                 ("retrieveallDb2adminBillBG", inputBusinessObject);
            }
             catch (Exception ex)
            {
             ex.printStackTrace();
            }
            return response;
       }

    Você concluiu o desenvolvimento e configuração do projeto. Para testar no Integration Designer, implemente primeiro o projeto no IBM BPM. Em seguida, na visualização "Universal Test Client", insira os valores no campo startIndex e no campo pageSize. Como mostra a Figura 6, o componente Outbound do JDBC Adapter retornou os registros necessários na resposta.

    Figura 6. Resultado do teste
    Resultado do teste

No ambiente de tempo de execução, também é possível alterar dinamicamente os valores de startIndex e pageSize no código em cada chamada do componente Java acima. Por exemplo, defina startIndex=0 e pageSize=10 para retornar os primeiros dez conjuntos de resultados (0-9) na primeira chamada, e configure startIndex=20 e PageSize=10 para retornar os próximos dez itens correspondentes (10-19) na segunda chamada. Dessa forma, conseguimos um recurso completo de consulta de paginação.

Integrar com um serviço da web

  1. No Integration Designer, abra o Assembly Diagram, crie um componente Export e ligue-o a um componente Outbound do JDBC Adapter, como mostra a Figura 7.
    Figura 7. Incluir um componente Export no Assembly Diagram
    Incluir um componente Export no Assembly Diagram
  2. Clique com o botão direito do mouse em Export component e selecione Generate Binding > Web Service Binding, como mostra a Figura 8.
    Figura 8. Gerar ligação de serviço da web
    Gerar ligação de serviço da web
  3. No assistente Web Service Export Configuration, use as configurações padrão e clique em Finish, como mostra a Figura 9.
    Figura 9. c
    c
  4. Agora o projeto pode ser implementado no IBM BPM. Através do endereço de ligação de serviço da web, como mostra a Figura 10, é possível realizar todas as operações oferecidas pelo componente Outbound do JDBC Adapter.
    Figura 10. Endereço de ligação do serviço da web
    Endereço de ligação do serviço da web
  5. Neste exemplo, você usará o REST Client, um plug-in do Firefox®, para testar o projeto, como mostra a Figura 11.
    Figura 11. REST Client para Firefox
    REST Client para Firefox
  6. Como mostra a Listagem 3, há valores predefinidos para os atributos startIndex, pageSize e enablePaging.
    Listagem 3. Mensagem SOAP
    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/
     oasis-200401-wss-wssecurity-secext-1.0.xsd" 
     xmlns:ns3="http://DB2_RetrieveAll_Paging_Test/JDBCOutboundInterface" 
     xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soap:Header>
        <ns1:Security xsi:type="ns1:SecurityHeaderType">
          <ns1:UsernameToken xsi:type="ns1:UsernameTokenType">
            <ns1:Username/>
            <ns1:Password xsi:type="ns1:PasswordString"/>
          </ns1:UsernameToken>
        </ns1:Security>
      </soap:Header>
      <soap:Body>
        <ns3:retrieveallDb2adminBillBG>
          <ns3:retrieveallDb2adminBillBGInput>
            <properties xmlns="http://www.ibm.com/xmlns/prod/websphere/bo/6.0.0">
                <ISstartIndex xmlns:ns0="http://www.w3.org/2001/XMLSchema" 
                 xmlns="##ONTHEFLY" xsi:type="ns0:int">50</ISstartIndex>
                <ISpageSize xmlns:ns0="http://www.w3.org/2001/XMLSchema" 
                 xmlns="##ONTHEFLY" xsi:type="ns0:int">10</ISpageSize>
                <ISenablePaging xmlns:ns0="http://www.w3.org/2001/XMLSchema" 
                 xmlns="##ONTHEFLY" xsi:type="ns0:boolean">true</ISenablePaging>
            </properties>
            <verb>Create</verb>
            <Db2adminBill>
              <personid>Beckham</personid>
            </Db2adminBill>
          </ns3:retrieveallDb2adminBillBGInput>
        </ns3:retrieveallDb2adminBillBG>
      </soap:Body>
    </soap:Envelope>
  7. Como mostra a Figura 12, a carga útil da mensagem incluiu os registros da consulta que foram classificados pelo BILLDATE em ordem descendente.
Figura 12. Resultado de teste
Resultado de teste

Integrar com BPEL

  1. No Integration Designer, abra o Assembly Diagram, crie um componente Process (BPEL). Em seguida, crie uma interface e importe para o componente Process, como mostra a Figura 13.
    Figura 13. Incluir um componente BPEL no Assembly Diagram
    Incluir um componente BPEL no Assembly Diagram
  2. Na visualização de edição de interface, inclua Request Response Operation e defina dois parâmetros de entrada para especificar os valores de pageSize e pageIndex. Em seguida, defina um parâmetro de saída para os resultados de consulta retornados, como mostra a Figura 14.
    Figura 14. Edição de interface do componente BPEL
    Edição de interface do componente BPEL
  3. No Assembly Diagram, crie uma ligação entre o componente Java e o componente Outbound do JDBC Adapter, como mostra a Figura 15.
    Figura 15. Ligue o componente BPEL e o componente do JDBC Adapter no Assembly Diagram
    Ligue o componente BPEL e o componente do JDBC Adapter no Assembly Diagram
  4. Clique duas vezes no componente Process para implementar a lógica de negócios nele, como mostra a Figura 16.
    Figura 16. Lógica de negócios no BPEL
    Lógica de negócios no BPEL
  5. Na visualização de edição do BPEL, crie uma atividade Snippet, na qual serão implementados os códigos Java para definir os valores dos atributos pageSize e pageIndex, como mostra a Listagem 4.
    Listagem 4. Códigos na atividade Snippet
    commonj.sdo.DataObject __result__1;
    {// create Db2adminBillBG
    	com.ibm.websphere.bo.BOFactory factory =
    	   (com.ibm.websphere.bo.BOFactory) new com.ibm.websphere.sca.
             ServiceManager().locateService("com/ibm/websphere/bo/BOFactory");
    	 __result__1 = factory.create("http://www.ibm.com/xmlns/prod/websphere/j2ca/jdbc/
            db2adminbillbg","Db2adminBillBG");
    }
    retrieveallDb2adminBillBGInput = __result__1;
    commonj.sdo.DataObject props = retrieveallDb2adminBillBGInput.createDataObjectj
     ("properties");
    props.setBoolean("ISenablePaging", true);
    props.setInt("ISpageSize", pageSize);
    props.setInt("ISstartIndex", pageIndex);
  6. Em seguida, crie uma atividade Invoke para chamar retrieveAllDb2adminBillBG de JDBCOutBound. Agora você concluiu o desenvolvimento do projeto. Após implementar no IBM BPM, teste a interface definida na Etapa 5 acima no Integration Designer. Como mostra a Figura 17, é possível ver os conjuntos de resultados de consulta na mensagem de resposta. Para mais detalhes, consulte o código de amostra incluído com este artigo.
Figura 17. Resultado de teste
Resultado de teste

Conclusão

A consulta de paginação é um recurso importante do WebSphere Adapter para JDBC V7.5. Não apenas melhora o desempenho da consulta ao banco de dados, mas também permite alterar o tamanho dos conjuntos de resultados retornados dinamicamente no tempo de execução. Para ajudá-lo a entender e usar esse produto, este artigo apresentou três maneiras diferentes de integrar a consulta de paginação no IBM BPM V7.5.

Na prática, os cenários de negócios podem ser um pouco mais complicados. A consulta de paginação do JDBC Adapter também oferece vários recursos avançados, por exemplo, a realização de uma consulta de paginação em relação a visualizações de banco de dados e realização de consultas mais complicadas usando a função QueryBO integrada. Para ver mais detalhes, consulte o Centro de Informações do WebSphere Adapter.


Download

DescriçãoNomeTamanho
Project interchange fileProjectInterchange.zip39KB

Recursos

Aprender

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=WebSphere
ArticleID=840499
ArticleTitle=Integrando a Consulta de Paginação do WebSphere Adapter para JDBC no IBM Business Process Manager V7.5
publish-date=10152012