Um evento de entrada pode conter um IDoc simples ou IDocs múltiplos, com cada IDoc correspondendo a um único objeto de negócios.
Os IDocs múltiplos são enviados pelo Servidor SAP ao adaptador na forma de um pacote IDoc. Você pode especificar, durante a configuração do adaptador, se o pacote pode ser dividido em IDocs individuais ou se ele deve ser enviado como um objeto (sem divisão).
O processamento de eventos começa quando o
Servidor SAP envia um ID
de transação ao adaptador. A seguinte seqüência ocorre.
- O adaptador verifica o status do evento e toma uma das seguintes ações:
- Se este for um novo evento, o adaptador armazena um EVNTID (que corresponde ao ID da transação) juntamente com um status 0 (Created) na tabela de recuperação de eventos.
- Se o status do evento for -1 (Rollback), o adaptador atualiza o status para 0 (Created).
- Se o status do evento for 1 (Executed), o adaptador retorna uma indicação de sucesso para o sistema SAP.
- O sistema SAP envia o IDoc para o adaptador.
- O adaptador converte o IDoc em um objeto de negócios e o envia
para o terminal.
Para IDocs simples e pacotes IDoc não-divididos, o adaptador pode entregas objetos a terminais que suportam transações assim como terminais que não suportam transações.
- Somente para pacotes divididos, o adaptador desempenha as seguintes tarefas:
- O adaptador atualiza a coluna BQTOTAL (ou o campo da tabela) na tabela de recuperação de eventos para o número de IDocs no pacote. Este número é utilizado para fins de auditoria e
recuperação.
- O adaptador envia os objetos de negócios ao terminal de mensagens, uns após os outros, e atualiza a propriedade BQPROC para o número de seqüência do IDoc no qual ele está trabalhando. O adaptador entrega os objetos ao terminal adequado como parte de uma transação XA exclusiva (uma transação two-phase commit) controlada pelo servidor de aplicativos.
- Quando o terminal recebe o evento e a transação é consolidada, o adaptador incrementa o número na propriedade BQPROC.
O terminal de mensagens deve ser configurado para suportar transações XA.
Se o adaptador encontrar um erro durante o processamento de um pacote IDoc dividido, ele pode se comportar de uma de duas maneiras, dependendo da propriedade de configuração IgnoreIDocPacketErrors: - Se a propriedade IgnoreIDocPacketErrors for configurada como false, o adaptador pára o processamento de todos os IDocs adicionais no pacote e relata erros ao sistema SAP.
- Se a propriedade IgnoreIDocPacketErrors for configurada como true,
o adaptador registra um erro e continua o processamento do restante dos IDocs no pacote. O status da transação é marcado como 3 (InProgress).
Neste caso, o log do adaptador mostra os números de IDoc que falharam, e você deve reenviar tais IDocs individuais separadamente. Você também deve manter manualmente estes registros na tabela de recuperação de eventos.
Esta propriedade não
é utilizada para IDocs únicos e para pacote de IDocs não-divididos.
- O sistema SAP envia uma chamada COMMIT ao adaptador.
- Depois do adaptador entregar todos os objetos de negócios no pacote IDoc ao terminal de mensagens, ele atualiza o status do evento como 1 (Executed).
- No caso de interrupções abruptas durante o processamento do pacote IDoc, o adaptador retoma o processamento de IDocs a partir do número de seqüência atual. O adaptador continua atualizando a propriedade BQPROC, mesmo se IgnoreIDocPacketErrors estiver configurada como true. O adaptador continua o processamento no caso de você encerrar o adaptador manualmente enquanto o adaptador estava processamento um pacote IDoc.
- Se ocorrer uma exceção durante o processamento do evento pelo adaptador ou se o terminal gerar uma exceção, o status do evento será atualizado para -1 (Rollback).
- Se não ocorrer nenhuma exceção, o Servidor SAP envia uma chamada CONFIRM ao adaptador.
- O adaptador exclui os registros com um status 1 (Executed) e registra um evento CEI (Common Event Infrastructure) que pode ser utilizado para fins de rastreamento e auditoria.