Histórico da Página
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
Informações Gerais
Especificação | |||
Produto | Logix | Módulo | Foundation |
Segmento Executor | Tecnologia | ||
Projeto | FRWJOI01 | ||
Requisito | FRWJOI01-131 | Sub tarefa | FRWJOI01-132 |
País | (X) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro ______________. |
Objetivo
Permitir a execução dos objetos de negócio públicos do Logix, através de mensagens baseadas no padrão de Mensagem Única preparadas para portar os parâmetros de entrada necessários e os dados de retorno gerados após a execução do referido objeto.
Definição da Regra de Negócio
Para que seja possível que aplicativos externos consumam os objetos de negócio através da Mensageria TOTVS é necessário que as mensagens sejam informadas com o modelo de dados do aplicativo que, naquela integração, possuir o papel de ERP. A definição dos papéis na integração ficará a cargo do segmento que estiver demandando a mesma.
Considerando um cenário onde o Logix atue como ERP na integração, teremos todas as mensagens trafegadas com o formato de dados do Logix. Tomando por exemplo uma integração de cadastro de empresa entre Protheus e Logix, o fluxo será o seguinte:
- Protheus efetua o cadastro de uma empresa;
- O objeto de negócio aciona o adapter de integração;
- O adapter de integração converte o modelo de dados Protheus para o modelo de dados Logix, baseando-se no XML Schema obtido através do serviço GetSchema;
- O adapter de integração envia a mensagem para o engine de EAI do Protheus;
- O engine de EAI envia a mensagem para o WebService de recebimento do Logix;
- O WebService de recebimento encaminha a mensagem para o engine de EAI do Logix;
- O engine de EAI identifica o objeto de negócio solicitado na mensagem;
- O engine extrai os dados de entrada da mensagem e aciona o objeto de negócio, passando os dados extraídos como parâmetro;
- O engine recebe os dados de retorno do objeto de negócio;
- A mensagem de retorno é gerada pelo engine de EAI com os dados de saída do objeto de negócio;
- A mensagem de retorno é enviada ao WebService de recebimento do Protheus;
- O WebService de recebimento encaminha a mensagem de retorno para o engine de EAI Protheus;
- O engine de EAI extrai os dados e encaminha para o objeto de negócio Protheus;
- O objeto de negócio recebe os dados, converte para do modelo Logix para o modelo Protheus e processa o retorno.
Assumindo o fluxo acima, a responsabilidade pela conversão dos dados e pela montagem da mensagem de um modelo para outro fica sob responsabilidade do papel da vertical, ou seja, o Protheus.
Seguindo as especificações da Mensageria TOTVS, o conteúdo do elemento <BusinessContent>
de uma mensagem terá o formato descrito no XML Schema do objeto de negócio presente em <Transaction>
. Neste elemento, o objeto será sempre precedido pelo nome do ERP e, para o caso do Logix, com o nome do objeto seguindo do nome da API, ex.: Logix/logr2.logr2_pub_create_companies
.
Abaixo segue uma mensagem, do tipo BusinessMessage
, de exemplo de execução da API fictícia logr2_pub_create_companies
para a criação de empresas no Logix que receberá a estrutura com as informações da empresa e irá retornar apenas a situação da execução e uma mensagem:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?> <TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xmlschema/general/totvsmsg.xsd"> <MessageInformation version="12.1.X"> <UUID>${=java.util.UUID.randomUUID()}</UUID> <Type>BusinessMessage</Type> <Transaction>Logix/logr2.logr2_pub_create_companies</Transaction> <StandardVersion>12.1.X</StandardVersion> <SourceApplication>SoapUI</SourceApplication> <Product name="SoapUI" version="5.1.2"/> <GeneratedOn>${=javax.xml.datatype.DatatypeFactory.newInstance().newXMLGregorianCalendar(GregorianCalendar.getInstance())}</GeneratedOn> <DeliveryType>sync</DeliveryType> </MessageInformation> <BusinessMessage> <BusinessRequest> <Operation>Logix/logr2.logr2_pub_create_companies</Operation> </BusinessRequest> <BusinessContent> <logr2_pub_create_companies api="logr2"> <input> <lr_empresa> <cod_empresa>01</cod_empresa> <den_empresa>Empresa de Testes 01</den_empresa> <den_reduz>EMP 01</den_reduz> <end_empresa>Rua Dos Bobos, 01</end_empresa> <den_bairro>Los Angeles</den_bairro> <den_munic>Joinville</den_munic> <uni_feder>SC</uni_feder> <ins_estadual>000000000</ins_estadual> <num_cgc>00.000.000/0000-00</num_cgc> <num_caixa_postal/> <cod_cep>00000-00</cod_cep> <num_telefone>0000000000</num_telefone> <num_telex/> <num_fax/> <end_telegraf/> <num_reg_junta/> <dat_inclu_junta>${=new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date())}</dat_inclu_junta> <ies_filial/> <dat_fundacao>${=new java.text.SimpleDateFormat("yyyy-MM-dd").format(new Date())}</dat_fundacao> <cod_cliente/> </lr_empresa> </input> </logr2_pub_create_companies> </BusinessContent> </BusinessMessage> </TOTVSMessage> |
A mensagem de retorno da execução acima conterá, conforme mencionado, apenas um elemento com o status da execução e uma mensagem, conforme demonstra o XML do tipo ResponseMessage
:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
<TOTVSMessage> <MessageInformation version="12.1.X"> <UUID>ca857731-ee0e-a60a-293d-2a7e84449dd0</UUID> <Type>Response</Type> <Transaction>logr2.logr2_pub_create_companies</Transaction> <StandardVersion>1.0</StandardVersion> <SourceApplication>SoapUI</SourceApplication> <Product name="SoapUI" version="5.1.2"/> <GeneratedOn>2016-04-28T18:52:08</GeneratedOn> <DeliveryType>sync</DeliveryType> </MessageInformation> <ResponseMessage> <ReceivedMessage> <SentBy>SoapUI</SentBy> <UUID>0f88a786-0cbe-4cbd-b475-ffc54115d5a7</UUID> <MessageContent> <![CDATA[<?xml version="1.0" encoding="UTF-8"?> <TOTVSMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xmlschema/general/totvsmsg.xsd"> <MessageInformation version="12.1.X"> <UUID>0f88a786-0cbe-4cbd-b475-ffc54115d5a7</UUID> <Type>BusinessMessage</Type> <Transaction>Logix/logr2.logr2_pub_create_companies</Transaction> <StandardVersion>12.1.X</StandardVersion> <SourceApplication>EAI-LOGIX</SourceApplication> <Product name="EAI-LOGIX" version="12.1.X"/> <GeneratedOn>2016-04-28T18:52:07.915-03:00</GeneratedOn> <DeliveryType>sync</DeliveryType> </MessageInformation> <BusinessMessage> <BusinessRequest> <Operation>Logix/logr2.logr2_pub_create_companies</Operation> </BusinessRequest> <BusinessContent> <logr2_pub_create_companies> <input> <lr_empresa> <cod_empresa>01</cod_empresa> <den_empresa>Empresa de Testes 01</den_empresa> <den_reduz>EMP 01</den_reduz> <end_empresa>Rua Dos Bobos, 01</end_empresa> <den_bairro>Los Angeles</den_bairro> <den_munic>Joinville</den_munic> <uni_feder>SC</uni_feder> <ins_estadual>000000000</ins_estadual> <num_cgc>00.000.000/0000-00</num_cgc> <num_caixa_postal/> <cod_cep>00000-00</cod_cep> <num_telefone>0000000000</num_telefone> <num_telex/> <num_fax/> <end_telegraf/> <num_reg_junta/> <dat_inclu_junta>2016-04-28</dat_inclu_junta> <ies_filial/> <dat_fundacao>2016-04-28</dat_fundacao> <cod_cliente/> </lr_empresa> </input> </logr2_pub_create_companies> </BusinessContent> </BusinessMessage> </TOTVSMessage>]]> </MessageContent> </ReceivedMessage> <ProcessingInformation> <ProcessedOn>2016-04-28T18:52:08</ProcessedOn> <Status>ok</Status> </ProcessingInformation> <ReturnContent> <XMLContent> <![CDATA[<logr2_pub_create_companies> <output> <retmsg>Inclusão efetuada com sucesso.</retmsg> <status>1</status> </output> </logr2_pub_create_companies>]]> </XMLContent> </ReturnContent> </ResponseMessage> </TOTVSMessage> |
A identificação se a mensagem é mensagem única ou da mensageria TOTVS é realizada através do elemento <Transaction>
. Se o mesmo possuir o formato Logix/api.nome_metodo é identificado que se trata de uma execução da mensageria TOTVS e, portanto, ao invés do engine EAI do Logix executar o adapter via função EAI_invokeAdapterReceiveReturn
deverá ser criada uma outra especificamente para a execução das APIs, por exemplo EAI_invokeAPI.
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|