Integrando Aplicações Maximo e Web Services em Nove Passos

Usando Maximo Interactions ou Interações

Utilizando Maximo Interactions ou Interações para integrar Web Services e aplicações Maximo de uma maneira simples e rápida.

Rodrigo Braga Fernandes, Software Engineer, IBM Brasil

author's image. Rodrigo Braga Fernandes é Engenheiro de Software no Centro de Excelência em Gerenciamento de Serviços (SMEC) do Laboratório de Software da IBM Brasil, onde atua no desenvolvimento de soluções utilizando a plataforma Maximo. Ver perfil My developerWorks



30/Mai/2014

Introdução

A versão 7.1.1.6 do TPAE (Tivoli Plataform Automation Engine) utilizada nos produtos da linha Maximo, TAMMIT, SRM e TPM, entre outros, introduziu uma nova funcionalidade que permite a usuários avançados integrar suas aplicações com Web Services síncronos de forma simples e intuitiva, através da utilização de um assistente (wizard) e assim disponibilizar novos serviços para os usuários finais.

Interactions ou Interações (na versão em Português) é o novo módulo disponível dentro do contexto do módulo de Integrações da plataforma Maximo e que torna possível esse tipo de integração. Na versão 7.1.1. 6 foram disponibilizadas duas novas aplicações:

  1. Create Interaction/ Criar Interações – Permite a configuração de novas integrações com Web Services compatíveis com o padrão WSDL 1.1, através da utilização de um assistente (Wizard) que guia o usuário através de nove passos até a conclusão da criação do novo serviço.
  2. Interactions/Interações – Permite visualizar todas as Integrações criadas pelo Wizard e alterá-las (ainda que de forma restrita), bem como exclusão das mesmas.

Este artigo tem como objetivo demonstrar através de um caso de uso simples, como podemos implementar um novo serviço (ou ação) em aplicações existentes, de forma rápida e simples e que poderá ser utilizado por todos os usuários finais.

Caso de uso

Uma empresa que utiliza um dos produtos da família Maximo, necessita validar e padronizar os endereços do seu cadastro de fornecedores no momento em que novas empresas são cadastradas ou quando há alteração no endereço das empresas existentes. Para essa finalidade, optou-se pela contratação de um serviço de busca disponível via Internet (seguindo o padrão de Web Services) que disponibiliza os endereços atualizados de todas a regiões do país baseado no Código de Endereçamento Postal (CEP).

Objetivo

Para implementar essa nova funcionalidade, será necessário a criação de uma integração entre a aplicação de Empresas (ou Companies) e o serviço de CEP (que a partir de agora chamaremos de CEPService).

Modificações Necessárias
Com base nos requerimento definidos será necessária a seguinte modificação:

  • Alterar a seção de Informações Gerais da aba de Endereços dentro da aplicação Empresas (ou Companies), no módulo de Compras do Maximo, identificando os campos que serão utilizados na busca e os campos onde serão armazenadas as informações retornadas pelo serviço de CEP.

Após uma análise básica das informações envolvidas na operação, chegamos a seguinte definição:

Tabela 1. Informações Necessárias para a Busca

Campo da TelaMaximo Business Objeto (MBO)Atributo
Zip Code ou Cep/Codigo PostalCOMPANIESADDRESS4

Tabela 2. Informações de Retorno

Campo da TelaMaximo Business Objeto (MBO)Atributo
Address ou EndereçoCOMPANIESADDRESS1
City ou CidadeCOMPANIESADDRESS2
State ou EstadoCOMPANIESADDRESS3

Definição dos Campos


Para visualizar a definição dos campos da tela, posicione o cursor no campo desejado e tecle <ALT> + I (segure a tecla Alt e tecla I ao mesmo tempo) e uma janela de help será mostrada com a informação da tabela de origem e atributo e uma breve descrição do campo

Dados do Web Service: CEPService

Para ilustrar este artigo, desenvolvi um web service “Fake“ utilizando como ferramentas de desenvolvimento o Eclipse Helios e o Tomcat 6.029. O trecho de código a seguir (código 1) ilustra o as classes que foram utilizada na geração do web service.

Código 1. Classes CEPService e CEPBean (código parcial)

|--------10--------20--------30--------40--------50--------60--------70--------80--------|
   Public class CEPService {
   
   Public CEPBean getEnderecoByCEP(String cep){
   
   CEPBean cepBean = new CEPBean();
   
   String[] busca = buscaCep(cep);
   
   CepBean.setZipcode(cep);
   CepBean.setAddress(busca[0]);
   CepBean.setCity(busca[1]);
   CepBean.setState(busca[2]);
   
   Return cepBean;
   }
   …
   }
   Public class CEPBean {
   Private String address;
   Private String zipcode;
   Private String state;
   Private String city;
   …
   }

Para iniciar a configuração da Interação é necessário ter em mãos o endereço WSDL do serviço que será utilizado. Para o nosso exemplo, utilizaremos a seguinte url: http://localhost:8081/WSTest/services/CEPService?wsdl

O código abaixo (código 2), mostra um trecho da definição do serviço CEPService que será utilizado como base na configuração da troca de informações entre as aplicações.

Código 2. WSDL do CEPService (parcial)

|--------10--------20--------30--------40--------50--------60--------70--------80--------|
<wsdl:types>
<schema elementFormDefault="qualified" targetNamespace="http://cep.sample" 
xmlns="http://www.w3.org/2001/XMLSchema">
 <element name="getEnderecoByCEP">
     <complexType>
         <sequence>
             <element name="cep" type="xsd:string"/>
         </sequence>
     </complexType>
 </element>
 <element name="getEnderecoByCEPResponse">
     <complexType>
         <sequence>
             <element name="getEnderecoByCEPReturn" type="impl:CEPBean"/>
         </sequence>
     </complexType>
 </element>
 <complexType name="CEPBean">
     <sequence>
         <element name="zipcode" nillable="true" type="xsd:string"/>
         <element name="address" nillable="true" type="xsd:string"/>
         <element name="city" nillable="true" type="xsd:string"/>
         <element name="state" nillable="true" type="xsd:string"/>
     </sequence>
 </complexType>
</schema>
</wsdl:types>

Com essas informações em mãos, podemos iniciar a construção da nova Interação.


Primeiro Passo

Selecione o Web Service, porta e operação para a Interação

No Centro de Início selecionar a opção do menu Go To/Integration/Create Interaction (Ir Para/Interações/Criar Interação).

Figura 1. Menu Interactions

Na aplicação Create Interaction , informe o ID da Interação (apenas um nome interno que você utilizará para identificar essa Interação) e uma descrição sobre o objetivo da Interação. Em seguida informe a url do WSDL (Web Services Description Language) que contem informações que descrevem os serviços, portas e operações contidas nesse Web Service.

Tabela 3. Campos Configurados no Passo 1

Campo da TelaValor
InteractionENDBYCEP
DescriçãoBusca Endereco por CEP
WSDL URLhttp://localhost:8081/WSTest/services/CEPService?wsdl
Process ResponseMarcado.

Automaticamente o Maximo recupera as informações do WSDL e as disponibiliza nas sub-tabelas abaixo (Service, Ports, Operation). No nosso caso, este Web Service disponibiliza apenas um serviço (CEPService), uma porta (CEPService) e uma operação (getEnderecoByCEP) que é a operação que desejamos implementar para busca de endereços através do CEP.

Figura 2. Configurações do primeiro do Passo

Selecione as opções correspondentes a operação que você deseja implementar (apenas uma operação pode ser utilizada) e clique no botão Next/Próximo.


Segundo Passo

Configure o Request que será enviado pela sua aplicação

Nesse passo é disponibilizada a hierarquia de Request utilizada para a operação selecionada. Assim é possível configurar quais os elementos farão parte do Request da sua aplicação para o CEPService.

No nosso exemplo, o único elemento necessário a ser pesquisado é o CEP. Utilize os botões Remove Node, Restore Node, Reset e Configure para montar a hierarquia necessário para o request. (conforme figura 3).

Object Structure ou Estrutura de Objeto

É um dos compomentes básicos do framework de integração da plataforma Maximo e representa a estrutura de dados que é utilizada na troca de informações entre o Maximo e Sistemas Externos.

Figura 3. Hierarquia do Request

O Maximo automaticamente criará um Object Sctructure (Estrutura do Objeto) representando a estrutura de dados que irá compor o Request.

Figura 4. Estrutura do Objeto para o Request.

Clique no botão Next/Próximo


Terceiro Passo

Configure a resposta que será recebida pela sua a aplicação

Nesse passo configuramos o conteúdo da resposta que será devolvida pelo Web Service (CEPService) para a aplicação solicitante.

Selecionamos os campos que serão utilizados na visualização do resultado da pesquisa de CEP que foi feita ao Web Service. No nosso exemplo selecionamos todos os elementos Zip Code /CEP (o mesmo que foi enviado no request), Address/Endereço, City/Cidade e State/Estado (ou apenas clique no botão Configure>> para selecionar todos os elementos).

Figura 5. Hierarquia da Resposta

Novamente um Object Structure (Estrutura do Objeto) será automaticamente criado representado a estrutura de dados utilizada na resposta.

Figura 6. Estrutura do Objeto para a Resposta

Note que é possível alterar o texto do título de cada atributo definido na estrutura do objeto, caso a informação obtida por padrão não esteja clara ou não expresse corretamente o conteúdo que será armazenado naquele atributo.

Clique no botão Next/Próximo.


Quarto Passo

Selecione a Aplicação que será vinculada a Interação

Nesse passo, informamos qual a aplicação que utilizará essa Interação. A relação aqui é 1:1, ou seja, uma Interação só poderá ser utilizada por uma aplicação específica.

Tabela 4. Campos preenchidos no quarto passo.

CamposConteúdoComentário
Application /AplicaçãoCOMPANY (Empresas)Aplicação que está sendo vinculada a Interação.
Application Signature Option /Opção de Assinatura da AplicaçãoENDBYCEPDefine a opção de menu que estará disponível no menu de Ações da Aplicação de Empresas (Company). O valor entrado no campo de descrição corresponde ao texto da opção do menu que será visualizada pelo usuário.
Interaction Mode/Modo de InteraçãoSHOWREQRSP (Request e Response)Nesse caso a janela de diálogo mostrará tanto as informações de request quanto os dados de reposta.
Apply Responde/Aplicar RespostaCheckbox selecionadoSelecionando essa opção, forçamos o usuário a clicar no botão “Aplicar“ (Apply), garantindo que ele aceite que as informações de retorno sejam transferidas para o registro selecionado (Empresa).
Figura 7. Campos preenchidos no quarto passo.

Nesse passo também é possível configurar opções de segurança, definindo quais os grupos de usuários que terão direito de acesso a ação (Action) criada dentro da aplicação. No nosso exemplo, daremos acesso a todos os grupos já vinculados a aplicação existente (Figura 8).

Figura 8. Permissões de acesso a Interação

Clique no botão Next/Próximo.


Quinto Passo

Selecione e defina os campos de Request

Agora definimos os campos que serão mostrados na janela de diálogo de Request quando o usuário invocar a ação de busca na aplicação Company/Empresas. Selecione os campos que estarão visíveis na seção Atributos do Request.

Figura 9. Campos da janela de diálogo de Request

Também é possível definir se o campo estará ou não disponível para edição. No nosso exemplo, desejamos permitir que o usuário informe ou altere o CEP , caso ele já venha preenchido por default do registro da Empresa. (a opção Read Only/Somente Leitura fica desmarcada para esse atributo)

Note (Figura 9) que na seção Atributos do Request é possível modificar os títulos dos atributos. Altere cada título conforme necessário e de maneira que reflita corretamente a informação que é esperada (O titulo corresponde ao texto/label que será visualizado pelo usuário final na aplicação) e que será utilizada na invocação do serviço.

Clique no botão Next/Próximo


Sexto Passo

Selecione e defina os campos de Resposta

Semelhante ao quinto passo, aqui definiremos o conteúdo da janela de diálogo de resposta (Dados de retorno do CEPService). Selecione os campos que estarão visíveis através seção Atributos da Resposta.

Figura 10. Campos da janela de diálogo de Resposta

Note que diferentemente do Request, na resposta devemos marcar todos os campos como Read Only/Somente Leitura, de modo a impedir que o usuário modifique as informações fornecidas pelo serviço de CEP.

Clique no botão Next/Próximo.


Sétimo Passo

Mapear os campos da Aplicação com os campos que compõem os elementos do request do Web Service

Aqui definimos quais campos da aplicação Company/Empresas corresponderão aos campos do Objeto de Request (ENDBUCEP1). Para isso, é necessário definir inicialmente qual objeto de negócio do Maximo fornecerá as informações para o request. Na tabela de Objeto de Request, selecionamos a opção Use Application Parent Object/ Objeto Pai da Aplicação. Com isso queremos dizer que as informações necessárias para a busca serão recuperadas do registro corrente da empresa que está selecionada na aplicação de Empresas.

Figura 11. Mapeando o Objeto base para o Request.

O passo seguintes consiste em selecionar e mapear todos os atributos do objeto selecionado com os atributos do Objeto de Request.

Figura 12. Selecionado os atributos para mapeamento

Mapeamento definido:

  • ENDBYCEP1.CEP << COMPANIES.ADDRESS4
Figura 13. Mapeando atributos do Objeto de Request X Aplicação

Clique no botão Next/Próximo.


Oitavo Passo

Mapear os elementos de retorno do Web Service com os campos da Aplicação

Nesse passo indicaremos qual o objeto do Maximo (nesse caso , usamos o objeto Empresa) que receberá as informações devolvidas pelo Web Service.

Novamente selecionamos a opção Use Application Parent Object/ Objeto Principal da Aplicação e em seguida estabelecemos o mapeamento dos atributos através do botão Select Application Attribute/ Selecione Atributo da Aplicação ou adicionando uma nova linha e preenchendo os campos necessários.

Note que nesse caso estamos utilizando o objeto principal da aplicação Empresa devido a nossa regra de negócio, mas poderíamos utilizar qualquer outro objeto relacionado ao objeto principal da aplicação (através do campo Aplication Relation) que fizesse sentido no contexto da operação.

Figura 14. Mapeando atributos da Aplicação X Objeto de Resposta

Mapeamento definido: (estabelecido conforme a Tabela 2 descrita no início deste artigo)

  • COMPANIES.ADDRESS1 << ENDBYCEP2.ADDRESS
  • COMPANIES.ADDRESS2 << ENDBYCEP2.CITY
  • COMPANIES.ADDRESS3 << ENDBYCEP2.STATE
  • COMPANIES.ADDRESS4 << ENDBYCEP2.ZIPCODE

Clique no botão Next/Próximo.


Nono Passo

Confirmar a criação da Interação

Até aqui, estávamos apenas configurando nossa Interação. Nesse ponto podemos revisar todos as configurações principais que serão aplicadas durante a criação da nossa Interação, como por exemplo, qual aplicação será modificada, qual será ação disponibilizada para o usuário, quais objetos que estão envolvidos, qual o modo de integração e quais as configurações de integração que serão criadas (Canais de chamadas, Estruturas de Objetos de Request/Response e Pontos Finais )

Figura 15. Configurações da Aplicação
Figura16. Configurações de Web Service

Para finalizar o processo, basta apenas clicar no botão Criar e a Integração será criada automaticamente.

Figura 17. Interação criada

Visualizando o Resultado

Agora que já criamos a Interação, podemos navegar para a aplicação que a utilizará o serviço (no nosso caso, Companies/Empresas) e visualizar o resultado.

Nota: Nas figuras a seguir, foram feitas algumas modificações no layout da aplicação de Companies/Empresas (através da aplicação Designer de Aplicativos) de forma a melhor organizar visualmente as informações de endereço e tornar os campos, que armazenarão os dados retornados pelos serviço de CEP, em somente para leitura (Endereço, Cidade, Estado) , mas que não estão relacionadas as alterações geradas automaticamente pela criação da Interação.

Importante: Antes de visualizar as alterações criadas na aplicação de Companies/Empresas é necessário fazer um log-off/login no Maximo para garantir que o acesso ao novo serviço seja refletido nas configurações de segurança do usuário que irá utilizar o serviço, isto é, caso seja o mesmo usuário que tenha criado a Interação.

Modificações Geradas

Verifique que no menu Select Action/ Selecionar Ação, foi automaticamente adicionada uma nova opção External Services/Busca Endereco por CEP. Através dessa ação podemos invocar a interação com o Serviço de CEP.

Figura 18. Utilizando a Busca de CEP na aplicação de Empresas

Note também que uma nova janela de diálogo (gerada automaticamente pelo processo) foi adicionada a aplicação. Esta janela possui duas abas - Request e Response Data (porque esse foi o modo de Interação configurado na Interação).

Figura 19. Busca de Endereço por CEP

Observe também, que o conteúdo do campo CEP da aplicação principal é trazido (caso esteja preenchido) como default para o campo CEP da janela de diálogo. (como resultado do mapeamento estabelecido durante a configuração da Interação)

Nesse momento o usuário pode escolher alterar ou não o CEP original (ou digitá-lo pela primeira vez) e em seguida invocar o Serviço de CEP (botão Invoke Service/Invocar Serviço)

Figura 20. Retorno da Busca por CEP

O Serviço de CEP é chamado automaticamente e o resultado é disponibilizado na aba de Dados de Resposta. Note que, conforme configuração, todos os campos de resposta estão disponíveis apenas para leitura.

Se desejar o usuário pode clicar na aba Dados de Request e solicitar uma nova pesquisa de CEP ou pode aceitar os dados de retorno e clicar no botão Apply/Aplicar. Esse botão também é resultado de nossa configuração. Existem outras opções entre elas, como por exemplo, aceitar automaticamente o retorno do serviço e aplicar automaticamente as alterações (inclusive com a opção de não visualizar os dados de resposta).

Aplicando o resultado, as informações são automaticamente transferidas para o registro atual (conforme mapeamento definido na Interação) e o usuário pode complementar as informações necessárias como número, andar, etc. referente aos dados de complemento do endereço que normalmente são variáveis. (O campo de informação adicional foi customizado através Configuração de Banco de Dados e Designer de Aplicativos e não faz parte da configuração de Interações)

Figura 21. Aplicando o resultado da Busca a Empresa

Com isso, concluímos a implementação do nosso novo serviço de busca de endereços.


Conclusão

Interactions ou Interações é uma nova funcionalidade que estende o Maximo I-F (Integration Framework) e possibilita o consumo de serviços externos baseados no padrão WSDL, HTTP e SOAP de uma forma simples e rápida, permitindo que usuários, com um conhecimento mais avançado do produto, como por exemplo designers ou analistas de negócios, construam integrações sem a necessidade de programação ou conhecimento profundo dos componentes de integração do framework.

As aplicações de Interações basicamente se aplicam a duas categorias de usuários:

  1. Gerente de Interações – Compostos por Analistas de Negócios, Designers, Consultores e programadores que tem como responsabilidade a criação, gerenciamento, permissões para usuários, aparência (look and feel) e exclusão de interações
  2. Usuários Finais – Usuários das aplicações de negócios que utilizam as interações para invocar serviços e atualizar dados em aplicações Maximo ou sistemas externos.

Considerações de uso e limitações:

  • Interações/Interactions deve ser utilizada para integrações pontuais e não deve ser utilizada para carga de dados massivas.
  • Os componentes (menus, janelas de diálogo,etc) gerados automaticamente por uma Interação não são “Localizados” automaticamente, ou seja, em instalações onde existam línguas adicionais a língua base (exemplo: Português e Inglês) é necessário seguir o processo de tradução desses componentes para as demais línguas instaladas.
  • A criação de Interações é permitida apenas na língua base.
  • Interações suporta apenas o padrão WSDL 1.1
  • Alguns XML Schemas não são suportados: ANY elements, elementos recursivos, substituition groups e sequencing

Recursos

Mais informações:

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=Tivoli
ArticleID=604898
ArticleTitle=Integrando Aplicações Maximo e Web Services em Nove Passos
publish-date=05302014