Páginas filhas
  • ER_FRWJOI01_131_exposicao_servicos_logix_execucao

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:

Logix/logr2.logr2_pub_create_companies
<?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:

Response logr2.logr2_pub_create_companies
 <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.