Skip to Content

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

To report this post you need to login first.

22 Comments

You must be Logged on to comment or reply to a post.

  1. Ricardo Viana

    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.

    (0) 
    1. André Canalles Post author

      Ricardo, boa noite.

      Em relação ao ccBPM se entendi sua afirmação, você pode configurar um cenário sem utilizar o mesmo, onde no OM tenha 1 source(Mail) e N target(*FB2B) com o mesmo JavaMapping. Neste caso o split do Messages será feito pelo InterfaceCollection em runtime no Adapter Engine.

      Abraços,

      André Canalles

      (0) 
      1. Ricardo Viana

        André,

        Fiz o teste e funciona sem ccBPM.

        InterfaceCollection faz todo esquema 😀 .

        De qualquer forma, seu blog está elite d+, parabens.

        Abras

        Ricardo Viana.

        (0) 
    1. André Canalles Post author

      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

      (0) 
  2. Eduardo Rubia

    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.

    (0) 
    1. André Canalles Post author

      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

      (0) 
  3. Andercley Carlos

    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

    (0) 
    1. André Canalles Post author

      Andercley,

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

      screen.JPG

      Abs,

      André Canalles

      (0) 
      1. Andercley Carlos

        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

        (0) 
        1. André Canalles Post author

          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

          (0) 
            1. André Canalles Post author

              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

              (0) 
  4. Wesley Oliveira

    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

    (0) 

Leave a Reply