Skip to Content

Inbound B2B – Cenário utilizando Java Mapping para Multi-Mapping com ccBPM / Interface Collection

Introdução

Este documento demonstra uma solução utilizada no processo Inbound B2B do GRC NF-e 10.0, que contempla o desenvolvimento de um cenário “MailTOProxy” no PI 7.31 utilizando Java Mapping para o Multi-Mapping com ccBPM. Leitura do Mailbox e validação apenas dos anexos(1..N) com extensão *.XML relacionados à documentos de NF-e ou CT-e e seus respectivos eventos, incluindo a nova versão 3.10.


Enterprise Services Repository

Process Integration Scenario

SCN.jpg

Abaixo estão detalhados os Service Interface utilizados em cada Action do Scenario:

SCN01.jpg

SI: INB2B_Mail_OB – Category: Outbound – Type(ED): Mail (http://sap.com/xi/XI/Mail/30)

SI: INB2B_Mail – Category: Abstract – Type(ED): Mail (http://sap.com/xi/XI/Mail/30)

SCN02.jpg

SI: INB2B_NFeResponse – Category: Abstract – Type(ED): nfeProc (http://sap.com/xi/NFE/006)

SI: NFB2B_procNFe_IB – NS: http://sap.com/xi/NFE/006 – SWCV: SAPBO SLL-NFE 10.0

SCN03.jpg

SI: INB2B_NFeResponse310 – Category: Abstract – Type(ED): nfeProc (http://sap.com/xi/NFE/008)

SI: NFB2B_procNFe_IB – NS: http://sap.com/xi/NFE/008 – SWCV: SAPBO SLL-NFE 10.0


SI: INB2B_EventoNFeResponse – Category: Abstract – Type(ED): procEventoNFe (http://sap.com/xi/NFE/006)

SI: EFB2B_procEventoNFe_IB – NS: http://sap.com/xi/NFE/006 – SWCV: SAPBO SLL-NFE 10.0


SI: INB2B_CTeResponse104 – Category: Abstract – Type(ED): cteProc (http://sap.com/xi/CTE/104)

SI: CFB2B_procCTe_IB – NS: http://sap.com/xi/CTE/104 – SWCV: SAPBO SLL-NFE 10.0


SI: INB2B_CTeResponse – Category: Abstract – Type(ED): cteProc (http://sap.com/xi/CTE/200)

SI: INB2B_EventoCTeResponse – NS: http://sap.com/xi/CTE/200 – SWCV: SAPBO SLL-NFE 10.0

748024 – XI Mail Adapter XML Schema

Integration Process

BPM.jpg

O Integration Process(ccBPM) se encarrega de realizar o Multi-Mapping e iniciar o processamento paralelo entre 6 nós, onde dentro de cada nó um ParForEach percorre uma Lista(Multiline) realizando o split de forma simultânea para o seu interface inbound correspondente. O exception handle(MappingException) é utilizado no Transformation step, quando acionado dispara um alert e encerra o processo.


Abaixo estão detalhadas as configurações dos steps para um melhor entendimento:

BPM01.jpg

BPM02_01.jpg 

O recurso Read Attachments do OM garante que os anexos estarão disponíveis no Mapping Runtime.

BPM02.jpg

O Java Mapping(anexo) utilizado no OM tem a função de criar o payload <Messages> do Multi-Mapping.


BPM03.jpg

BPM04.jpg

Os demais Block’s seguem o mesmo raciocínio de percorrer o Multiline e “entregar” para o interface inbound correspondente.

BPM06.jpg

Os Container steps From e Date, recebem os valores do Emissor e DataHora do e-mail(Mail).

BPM05.jpg

O Alert INB2B_ALRT deve ser criado através da transação ALRTCATDEF:

BPM07.jpg

O Texto dinâmico deve ser utilizado para a interação com parâmetros no Alert Message(&From& e &Date&).


Interface Collection


Para quem está em um ambiente Single Stack (Java Only) ou não quiser utilizar BPM, pode optar por deixar o trabalho por conta do InterfaceCollection (http://sap.com/xi/XI/System).

IFC01.jpg

Apenas configure o Operation Mapping utilizando o Java Mapping conforme imagem acima. Em Runtime o InterfaceCollection  realiza o Split do <Messages> para seus devidos Interfaces(Target).

Integration Directory

Antes de transferir o Scenario do ESR importe o Integration Process(ccBPM). No ID basta apenas realizar a configuração do Scenario (Tools->Apply Model from ES Repository…) utilizando o ccBPM e os Communications Channel do tipo Mail Sender e XI Receiver.


Mail Sender:

ID01.jpg

ID02.jpg

Testes

Envio e-mail com anexos para Inbox:

T01.jpg


Monitor de Mensagens (SXI_MONITOR)

T02.jpg

Log do Workflow (SWI2_FREQ)

T03.jpg

T04.jpg

 

Alert (MappingException) – XML corrompido

T02_01.jpg

T05.jpg

T06.jpg

Alert Inbox (ALRTINBOX)

T07.jpg

E-mail do alert (SOST)

T08.jpg

Abraços,

André Canalles

23 Comments
You must be Logged on to comment or reply to a post.
  • André boa noite,

    Beleza ?

    Cara blog muito maneiro, acho que acabou se perdendo no tempo aqui, primeira vez que estou vendo.

    Acredito que seja possível eliminar esse ccBPM para ficar melhor ainda o processamento, vou pensar sobre.

    Muito bem explicado para quem conhece de PI.

    Parabéns.

    Atenciosamente.

    Ricardo Viana.

    • Mauricio,

      Essa solução (ccBPM / Interface Collection) é possível de ser implementada somente na versão 7.1 ou superior do PI. Devido ao recurso Read Attachments do Operation Mapping.

      Att.,

      André Canalles

  • Demorei para ver este artigo. Excelente material, André, muito bem escrito e de muita utilidade. Inclusive, pretendo utilizá-lo como referência em trabalhos daqui em diante. Muitas empresas acabam fazendo desenvolvimentos homéricos em tecnologias complementares para extrair anexos e categorizá-los, por isso esse guia para encapsular esse requisito numa solução de plataforma única e 100% aderente é um enorme ganho para governança. Parabéns pelo trabalho e obrigado por compartilhar seu conhecimento.

    • Eduardo, Obrigado !


      Foi exatamente este o pensamento, ter uma solução aderente para este tipo de cenário.

      Após já ter visto e implementado outras formas que me geraram alguns incômodos, resolvi compartilhar e espero ajudar.

      Grande Abraço,

      André Canalles

  • André parabéns pelo post !!! Está sendo de muita valia.

    Estou desenvolvendo a solução no PO 7.5 single stack, utilizando o java mapping que você deixou em anexo e sem o BPM, porém não obtive sucesso. O que poderia não funcionar na versão single stack?

    Operation Mapping

    ScreenHunter_001.jpg

    Configuration scenario

    ScreenHunter_002.jpg

    Communication Channel

    ScreenHunter_003.jpg

    ScreenHunter_004.jpg

    Log do erro:

    ScreenHunter_007.jpg

    ScreenHunter_009.jpg

    ScreenHunter_010.jpg

    • Andercley,

      Verifique a cardinalidade (Occurrence) do Target no seu OM (OM_B2B_MailToInbound), a mesma deve ser *0..unbounded:

      screen.JPG

      Abs,

      André Canalles

      /
      screen.JPG
      • Olá André,

        Obrigado pelo retorno. Cara que mancada, acabei nem reparando nisso, como o meu tempo está curto, estou fazendo na correria e tendo pouco tempo para analisar os erros.

        Corrigi essa parte do OM, mas ainda não tive sucesso. Um e-mail com 2 anexos, virou 4 mensagens, até ai tudo bem, porém ocorre outro erro.

        Como pode ver, inclui uns logs a mais para ver se eu conseguia identificar onde estaria o erro.

        Quando tem apenas 1 anexo, funciona perfeitamente !! O problema é com mais anexos.

        ScreenHunter_005.jpg

        ScreenHunter_001.jpg

        ScreenHunter_002.jpg

        ScreenHunter_003.jpg

        ScreenHunter_004.jpg

        • Andercley,

          Verifique a lista e ordem dos Target no seu OM, a mesma deve conter todos gerados pelo JM:

          /wp-content/uploads/2016/10/screen_1049269.jpg

          No documento você encontra detalhes de cada Message.

          Abs,

          André Canalles

          /
          /wp-content/uploads/2016/10/screen_1049269.jpg
          • /
            ScreenHunter_001.jpg
          • Andercley,

            Verifique os seguintes pontos abaixo:

            1.  No Directory o ICO está atualizado corretamente, execute um Cache Refresh Full.

            2. O XML do CT-e é realmente valido, faça o teste somente com um XML de NF-e.

            3. No ultimo caso, abra um chamado reportando para o componente BC-XI-IBC-MAP.

            Abs,

            André Canalles

  • Olá André, Boa Tarde.

     

    Parabéns por escrever este post com informações muito bem detalhadas.

    Infelizmente eu não estou conseguindo localizar o seu Java Mapping anexo neste post.

    Por favor, você poderia disponibiliza-lo novamente?

     

    Muito Obrigado

  • André, Boa tarde.

    nfelizmente eu não estou conseguindo localizar o seu Java Mapping anexo neste post.

    Por favor, você poderia disponibiliza-lo novamente?

  • André, bom dia!

     

    Também pretendo realizar essa implementação aqui no projeto, fazendo algumas adaptações para receber NF-e 3.10/4.00 assim como eventos 1.0 e 4.0.

     

    Você poderia disponibilizar os fontes do java mapping?

     

    Muito obrigado desde já!

     

    Att,

     

    Bruno