Visão Geral

Esse documento tem como objetivo descrever as alterações necessárias no modelo atual de mensagem única, procurando atender a definição de que “o vertical deve ser o dono da integração”.

Serão criados mecanismos que de acordo com o padrão de cada aplicativo, disponibilize seus “objetos de negócios” como BusinessContent.

Essas alterações não têm como objetivo substituir o modelo anterior de mensageria única e sim agregar novas funcionalidades e recursos.

Para fins de adequação, mudaremos o nome de “Mensagem Única” para “Mensageria TOTVS”.

 

Definições

1) Expor os objetos de negócio para recuperação de seus Schemas

As equipes responsáveis pelos produtos Totvs deverão desenvolver serviços (webServices) para expor as estruturas (schemas) de seus objetos de negócios, afim de que possam ser chamados externamente. Esses schemas deverão estar no formato de xsd;

Isso permitirá que os produtos possam enviar dados, no formato de xml (BusinessContent), contendo informações já no formato nativo dos objetos de negócio (sem necessidade de transformação).

Objetos de negócio que serão chamados via mensagem de “Request” deverão expor serviços a fim de que possam retornar schemas contendo a definição dos seus parâmetros de entrada. Esses schemas, também, deverão estar no formato de xsd.

 

2) Outras definições

                       Exemplo: <transaction>RM/FinCFODataBR<transaction>

                            Nesse exemplo o nome do objeto de negócio foi enviado.

                       Exemplo: <transaction>CUSTOMERVENDOR<transaction>

                            Nesse exemplo o nome da mensagem única foi enviado

<MessageInformation version="12.1.9">

  <UUID>578458748541574578548487</UUID>

  <Type>BusinessMessage</Type>

  <Transaction>Protheus/ObjetoDeNegocioProtheus</Transaction>

  <StandardVersion>1.0</StandardVersion>

  <SourceApplication>SourceApplication</SourceApplication>

  <CompanyId>CompanyId</CompanyId>

  <Product name="Any" version="Any"/>

  <GeneratedOn>2016-02-04T11:00:00</GeneratedOn>

  <DeliveryType>Assync/Sync</DeliveryType>

</MessageInformation>

 

<BusinessMessage>

  <BusinessEvent>

    <Entity>Protheus/ObjetoDeNegocioProtheus</Entity>

    <Event>upsert|delete</Event>

    <Identification>

    </Identification>

  </BusinessEvent>

  <BusinessContent>

    ...

  </BusinessContent>

</BusinessMessage>

 

<ResponseMessage>

  <ReceivedMessage>

        <SentBy>client</SentBy>

        <UUID>94551485144878487457857454</UUID>

        <MessageContent><![CDATA[

               <TOTVSMessage>...</TOTVSMessage>

        ]]>

        </MessageContent>

  </ReceivedMessage>

  <ProcessingInformation>

        <ProcessedOn>2001-12-31T12:00:03</ProcessedOn>

        <Status>OK</Status>

        <ListOfMessages>

          <Message type="WARNING" code="c1">msg1</Message>

          <Message type="ERROR" code="c2">msg2.</Message>

        </ListOfMessages>

  </ProcessingInformation>

  <ReturnContent>

  </ReturnContent>

</ResponseMessage>

 

 


<ResponseMessage>

  <ReceivedMessage>

        <SentBy>client</SentBy>

        <UUID>94551485144878487457857454</UUID>

        <MessageContent><![CDATA[

               <TOTVSMessage>...</TOTVSMessage>

        ]]>

        </MessageContent>

  </ReceivedMessage>

  <ProcessingInformation>

        <ProcessedOn>2001-12-31T12:00:03</ProcessedOn>

        <Status>OK</Status>

        <ListOfMessages>

          <Message type="WARNING" code="c1">msg1</Message>

          <Message type="ERROR" code="c2">msg2.</Message>

        </ListOfMessages>

  </ProcessingInformation>

  <ReturnContent>

    <XMLContent>

        ...

    </XMLContent>

  </ReturnContent>

</ResponseMessage>

 

Em mensagens de exclusão, as informações excluídas também deverão ser retornadas nessa tag para recuperação correta do De/Para nos aplicativos verticais.

Objetos de negócio nos aplicativos verticais deverão “emparelhar” com seus respectivos objetos de negócios no ERP.

Exemplo: Atualmente no RM existem 4 objetos de negócios diferentes responsáveis pela inclusão dos dados bancários (banco, agencia, conta e conta caixa). No Protheus existe apenas um único objeto de negócio para inclusão dessas informações.

Sendo assim, deve ser criado pela equipe de segmentos do RM um único objeto de negócio capaz de receber todas as informações bancárias de uma única vez.

Esse novo objeto de negócio a ser criado pelo RM “orquestrará” as chamadas aos objetos de negócio nativos do segmento;

O originador da mensagem deve observar o conteúdo da tag "ReceivedMessage\MessageContent" para a montagem do "DE-PARA" no retorno da mensagem. Não consideramos prudente buscar o valor diretamente da fila pelo fato de ser impossível garantir a existência da mensagem em entregas do tipo assíncronas. 

 

 

3) Direção das mensagens 


3.1 -    Origem –> ERP  /   Destino -> Vertical

Mensagem de negócio - BusinessMessage/Event

<TOTVSMessage>

 <MessageInformation version="1.000">

      <UUID>40c65ac2-7ed2-4394-b778-964534b12450</UUID>

      <Type>BusinessMessage</Type>

      <Transaction>NomeERP/objetoNegocioERP</Transaction>

      <StandardVersion>1.000</StandardVersion>

      <SourceApplication>Origem</SourceApplication>

      <CompanyId>1</CompanyId>

      <BranchId>1</BranchId>

      <Product name="Destino" version="12.1.9" />

      <GeneratedOn>2016-02-02T16:20:00</GeneratedOn>

      <DeliveryType>Sync</DeliveryType>

   </MessageInformation>

   <BusinessMessage>

      <BusinessEvent>

         <Entity> NomeERP/ObjetoNegocioERP</Entity>

         <Event>upsert</Event>

         <Identification>

         </Identification>

      </BusinessEvent>

      <BusinessContent>

        <DADOSERP>

           <IDERP>-1</IDERP>

           <CODDIGOERP>001</CODDIGOERP>

           <NOMEERP>TESTE2</NOMEERP>

           <TIPOERP>6</TIPOERP>

           <CAMPO9ERP></CAMPO9ERP>

           <CAMPO10ERP></CAMPO10>

         </DADOSERP>

      </BusinessContent>

  </BusinessMessage>

</TOTVSMessage>


Mensagem de negócio - BusinessMessage/Request

<TOTVSMessage>

 <MessageInformation version="1.000">

      <UUID>40c65ac2-7ed2-4394-b778-964534b12451</UUID>

      <Type>BusinessMessage</Type>

      <Transaction>NomeERP/ProcessoObjetoNegocioERP</Transaction>

      <StandardVersion>1.000</StandardVersion>

      <SourceApplication>Origem</SourceApplication>

      <CompanyId>1</CompanyId>

      <BranchId>1</BranchId>

      <Product name="Destino" version="12.1.9" />

      <GeneratedOn>2016-02-02T16:20:00</GeneratedOn>

      <DeliveryType>Sync</DeliveryType>

   </MessageInformation>

   <BusinessMessage>

     <BusinessRequest>

        <Operation>NomeERP/ProcessoObjetoNegocioERP</Operation>

     </BusinessRequest>

      <BusinessContent>

        <PARAMETROS>

         <PAR1>1</PAR1>

          <PAR2>2</PAR2>

          <PAR3>3</PAR3>

        </PARAMETROS>

      </BusinessContent>

  </BusinessMessage>

</TOTVSMessage>

 

Mensagem de resposta / ResponseMessage

<ResponseMessage>

   <ReceiveMessage>

      <SentBy>Destino</SentBy>

      <UUID>0fdf65b2-9f1e-4913-96c8-d4236628ff7d</UUID>

      <Event>upsert</Event>

      <MessageContent> </MessageContent>

   </ReceiveMessage>

   <ProcessingInformation>

       <ProcessedOn>2016-01/01</ProcessedOn>

       <Status>OK</Status>

       <ListOfMessages> </ListOfMessages>

   </ProcessingInformation>

   <ReturnContent>

     <XMLContent>

        <DADOSERP>

           <IDERP>1094</IDERP>

           <CODDIGOERP>001</CODDIGOERP>

           <NOMEERP>TESTE2</NOMEERP>

           <TIPOERP>6</TIPOERP>

           <CAMPO9ERP>184</CAMPO9ERP>

           <CAMPO10ERP>18587</CAMPO10>

         </DADOSERP>

     </XMLContent>

   </ReturnContext>

</ReturnContext>

</ResponseMessage>

 

Detalhamento dos processos:

 

3.2 -   Origem –> Vertical   /   Destino -> ERP

3.2 -   Origem –> Vertical   /   Destino -> ERP e outro Vertical





Mensagem de negócio - BusinessMessage/Event

<TOTVSMessage>

 <MessageInformation version="1.000">

      <UUID>40c65ac2-7ed2-4394-b778-964534b12450</UUID>

      <Type>BusinessMessage</Type>

      <Transaction>NomeDoERP/objetoNegocioERP</Transaction>

      <StandardVersion>1.000</StandardVersion>

      <SourceApplication>Origem</SourceApplication>

      <CompanyId>1</CompanyId>

      <BranchId>1</BranchId>

      <Product name="Destino" version="12.1.9" />

      <GeneratedOn>2016-02-02T16:20:00</GeneratedOn>

      <DeliveryType>Sync</DeliveryType>

   </MessageInformation>

   <BusinessMessage>

      <BusinessEvent>

         <Entity>NomeDoERP/objetoNegocioERP</Entity>

         <Event>upsert</Event>

         <Identification>

         </Identification>

      </BusinessEvent>

      <BusinessContent>

        <DADOSDOERP>

         <IDERP>-1</IDERP>

           <CODIGOERP>01854</CODIGOERP>

           <NOMEERP>NOME</NOMEERP>

           <TIPOERP></TIPOERP>

           <CAMPO1ERP></CAMPO1ERP>

           <CAMPO2ERP></CAMPO2ERP>

           <DETALHEERP>

              <IDDETALHE>-1</IDDETALHE>

              <CODIGODETALHEERP>4561</CODIGODETALHEERP>

              <NOMEDETALHEERP></NOMEDTALHEERP>

           </DETALHERP>

         </DADOSDOERP>

      </BusinessContent>

  </BusinessMessage>

</TOTVSMessage>

 

 

Mensagem de negócio - BusinessMessage/Request

<TOTVSMessage>

 <MessageInformation version="1.000">

      <UUID>40c65ac2-7ed2-4394-b778-964534b12451</UUID>

      <Type>BusinessMessage</Type>

      <Transaction>NomeDoERP/processaObjetoNegocioERP</Transaction>

      <StandardVersion>1.000</StandardVersion>

      <SourceApplication>Origem</SourceApplication>

      <CompanyId>1</CompanyId>

      <BranchId>1</BranchId>

      <Product name="Destino" version="12.1.9" />

      <GeneratedOn>2016-02-02T16:20:00</GeneratedOn>

      <DeliveryType>Sync</DeliveryType>

   </MessageInformation>

   <BusinessMessage>

     <BusinessRequest>

        <Operation>NomeDoERP/processaObjetoNegocioERP</Operation>

     </BusinessRequest>

      <BusinessContent>

        <PARAMETROS>

         <PAR1>1</PAR1>

           <PAR2>2</PAR2>

           <PAR3>3</PAR3>

         </PARAMETROS>

      </BusinessContent>

  </BusinessMessage>

</TOTVSMessage>

 

Mensagem de resposta - ResponseMessage

<ResponseMessage>

   <ReceiveMessage>

      <SentBy>Destino</SentBy>

      <UUID>0fdf65b2-9f1e-4913-96c8-d4236628ff7d</UUID>

      <Event>upsert</Event>

      <MessageContent> Conteúdo original</MessageContent>

   </ReceiveMessage>

   <ProcessingInformation>

       <ProcessedOn>2016-01/01</ProcessedOn>

       <Status>OK</Status>

       <ListOfMessages> </ListOfMessages>

   </ProcessingInformation>

   <ReturnContent>

     <XMLContent>

       <DADOSDOERP>

         <IDERP>1857</IDERP>

           <CODIGOERP>01854</CODIGOERP>

           <NOMEERP>NOME</NOMEERP>

           <TIPOERP></TIPOERP>

           <CAMPO1ERP></CAMPO1ERP>

           <CAMPO2ERP></CAMPO2ERP>

           <DETALHEERP>

              <IDDETALHE>1</IDDETALHE>

              <CODIGODETALHEERP>4561</CODIGODETALHEERP>

              <NOMEDETALHEERP></NOMEDTALHEERP>

                  </DETALHERP>

         </DADOSDOERP>

      </XMLContext>

   </ReturnContext>

   </ReturnContext>

</ResponseMessage>

 

Detalhamento dos processos: