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
Abaixo estão detalhados os Service Interface utilizados em cada Action do Scenario:
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)
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
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
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:
O recurso Read Attachments do OM garante que os anexos estarão disponíveis no Mapping Runtime.
O Java Mapping(anexo) utilizado no OM tem a função de criar o payload <Messages> do Multi-Mapping.
Os demais Block’s seguem o mesmo raciocínio de percorrer o Multiline e “entregar” para o interface inbound correspondente.
Os Container steps From e Date, recebem os valores do Emissor e DataHora do e-mail(Mail).
O Alert INB2B_ALRT deve ser criado através da transação ALRTCATDEF:
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).
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:
Testes
Envio e-mail com anexos para Inbox:
Monitor de Mensagens (SXI_MONITOR)
Log do Workflow (SWI2_FREQ)
Alert (MappingException) – XML corrompido
Alert Inbox (ALRTINBOX)
E-mail do alert (SOST)
Abraços,
André Canalles
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.
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
André,
Fiz o teste e funciona sem ccBPM.
InterfaceCollection faz todo esquema 😀 .
De qualquer forma, seu blog está elite d+, parabens.
Abras
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
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
Parabéns André e obrigado por compartilhar!
Ricardo e Eduardo, boa noite.
Obrigado por sempre comentar e incentivar ! 🙂
Grande Abraço,
André Canalles
Muito útil e bem explicado. Parabéns.
Bom dia Pessoal.
Essa solução é aplicável no PI 7.0 ?
Abraço a todos
Maurício de Almeida
Maurício,
Apenas instalações dualstack.
Single stack utilize o interface colletion.
Abs,
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
Configuration scenario
Communication Channel
Log do erro:
Andercley,
Verifique a cardinalidade (Occurrence) do Target no seu OM (OM_B2B_MailToInbound), a mesma deve ser *0..unbounded:
Abs,
André Canalles
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.
Andercley,
Verifique a lista e ordem dos Target no seu OM, a mesma deve conter todos gerados pelo JM:
No documento você encontra detalhes de cada Message.
Abs,
André Canalles
Olá André,
Já havia verificado isso e a ordem está correta, conforme o JM e seu documento.
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
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.
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
Boa noite Bruno, tudo bem?
Conseguiu configurar o cenário B2B Inbound para a NFe 4.00?
Att,
Bruno Barros.