Skip to Content
Author's profile photo André Canalles

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

Assigned Tags

      24 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Ricardo Viana
      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.

      Author's profile photo André Canalles
      André Canalles
      Blog 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

      Author's profile photo Ricardo Viana
      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.

      Author's profile photo Ricardo Viana
      Ricardo Viana

      Vale ressaltar.

      InterfaceColletion só funfa para PI 7.1+ !!!

      7.0 teria que usar a sua solução com ccBPM e tals.

      Abras

      Author's profile photo André Canalles
      André Canalles
      Blog Post Author

      Viana, bom dia. Show de bola ! 😎

      Bem lembrado, segue help com maiores detalhes para complementar:

      https://help.sap.com/saphelp_nw04/helpdata/en/42/ed364cf8593eebe10000000a1553f7/content.htm

      Abraços,

      André Canalles

      Author's profile photo Former Member
      Former Member

      Parabéns André e obrigado por compartilhar!

      Author's profile photo André Canalles
      André Canalles
      Blog Post Author

      Ricardo e Eduardo, boa noite.

      Obrigado por sempre comentar e incentivar ! 🙂

      Grande Abraço,

      André Canalles

      Author's profile photo Maria de Lourdes Andrade dos Santos
      Maria de Lourdes Andrade dos Santos

      Muito útil e bem explicado. Parabéns.

      Author's profile photo Former Member
      Former Member

      Bom dia Pessoal.

      Essa solução é aplicável no PI 7.0 ?

      Abraço a todos

      Maurício de Almeida

      Author's profile photo Ricardo Viana
      Ricardo Viana

      Maurício,

      Apenas instalações dualstack.

      Single stack utilize o interface colletion.

      Abs,

      Viana

      Author's profile photo André Canalles
      André Canalles
      Blog 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

      Author's profile photo Eduardo Rubia
      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.

      Author's profile photo André Canalles
      André Canalles
      Blog 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

      Author's profile photo Former Member
      Former Member

      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

      Author's profile photo André Canalles
      André Canalles
      Blog 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

      Author's profile photo Former Member
      Former Member

      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

      Author's profile photo André Canalles
      André Canalles
      Blog 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

      Author's profile photo Former Member
      Former Member

      Olá André,

      Já havia verificado isso e a ordem está correta, conforme o JM e seu documento. ScreenHunter_001.jpg

      Author's profile photo André Canalles
      André Canalles
      Blog 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

      Author's profile photo Former Member
      Former Member

      O Basis está fazendo uma atualização de Path com relação ao JDK Transformer, vamos ver se resolve o problema.

      Obrigado pela atenção.

      Author's profile photo Wesley Oliveira
      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

      Author's profile photo Former Member
      Former Member

      André, Boa tarde.

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

      Por favor, você poderia disponibiliza-lo novamente?

      Author's profile photo Bruno Coelho Ceolin
      Bruno Coelho Ceolin

      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

      Author's profile photo Bruno Barros
      Bruno Barros

      Boa noite Bruno, tudo bem?

       

      Conseguiu configurar o cenário B2B Inbound para a NFe 4.00?

       

      Att,

       

      Bruno Barros.