Páginas filhas
  • O Sincronizador de Carga Inicial do EAI Protheus

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Disponibilização da melhoria.
Avisonote
titleMelhoria ainda não disponívelAtenção

Disponível Esta melhoria só estará disponível a partir da lib label 08062015.

 

Âncora
_titulo
_titulo
O sincronizador de carga inicial

          O EAI Protheus possui um sincronizador de carga inicial para os cadastros  que podem ser trafegados via EAI. É possível, dentre os adapters cadastrados, escolher qual destes se deseja iniciar a sincronização, enviando todos os registros impactados por aquele adapter via EAI para o outro sistema.

          Este sincronizador é somente para a  sincronização de carga inicial entre uma base Protheus populada e uma outra base. Não há controle se o registro já existe ou não no outro sistema. No cenário ideal do sincronizador os dados existem no Protheus e não existem no outro sistema integrado. Uma vez iniciado o sincronizador ele irá enviar, respeitando as regras do adapter selecionado, todos os registros via EAI para o outro sistema escolhido.

          O sincronizador é um facilitador de implantação para enviar, a partir do Protheus, os registros de um determinado cadastro através do EAI. O sincronizador não é responsável por realizar as gravações de de-para, internalid (quando tratar-se de Mensagem Única TOTVS)ou processar a regra de negócio envolvida nas integrações.

Nota
titleAtenção

Este sincronizador deve ser utilizado somente no momento da implantação das integrações, e nunca durante a operação do sistema.

Âncora
_selecionandoadapter
_selecionandoadapter
Selecionando o adapter para a sincronização inicial

          Para selecionar os adapters para sincronização é necessário que este já esteja cadastrado no grupo no qual a rotina foi iniciada. Para verificar como cadastrar um adapter, verifique o tópico do cadastro de adapter do EAI Protheus.

          Vamos selecionar a opção Sinc. Carga (APCFG020A) no menu do configurador Protheus:

Opção do menu do sigacfg, onde é possível verificar o sincronizador EAI.

Opção do menu do sigacfg, onde é possível verificar o sincronizador EAI


          Selecionando a opção do sincronizador é apresentado o browse com todos os adapters já cadastrados no Protheus

Tela do sincronizador EAI

          Tela do sincronizador EAI


          O sincronizador compartilha os dados com os outros grupos de empresa do Protheus, e respeita as configurações do adapter EAI. Desta maneira, para iniciar o sincronizador para um outro grupo é necessário acessar o módulo configurador deste grupo. A rotina de sincronização não pode ser acessada por mais de um usuário ao mesmo tempo.

          Podemos selecionar então os adpaters os quais iremos realizar a sincronização. Basta selecionar um adapter e clicar em Sincronização inicial. O sincronizador irá tentar identificar o alias principal relacionado à aquele adapter. Para isto ele busca se existe modelo de dados Protheus (modeldef) dentro do adapter e em caso positivo, assume como alias principal a tabela master deste modelo. Caso não exista modelo de dados e somente para as Mensagens Única TOTVS o sincronizador irá buscar o conteúdo do campo Alias(XX4_ALIASP) do cadastro do referido adapter. Caso exista valor neste campo, este será assumido como alias a ser utilizado. Caso as duas alternativas acima não sejam capazes de identificar o alias da tabela o sincronizador buscará as informações do campo SYS_OBJ do SX2 e verificará através das tabelas relacionadas ao adapter o alias principal. Caso isto não seja possível, uma mensagem adverte o usuário que aquele adapter não está pronto para sincronização:

Mensagem indicando ao usuário que o adapter não está preparado para a sincronização

Mensagem indicando ao usuário que o adapter não está preparado para a sincronização

          Para um adapter de Mensagem Única TOTVS existe a opção para o usuário de preencher o campo Alias, do cadastro de adapter. Este campo é responsável por enviar uma série de informações para o outro sistema. Para entender o conceito deste campo, verifique o tópico do cadastro de adapter do EAI. Se nenhuma das opções acima puder ser verificada a equipe responsável pelo adapter deverá ser acionada.

          Caso o adpater esteja em condições de sincronização o sistema calcula e apresenta um range de threads disponíveis para realizar o processamento (no mínimo 1 e no máximo 9 threads). Um número maior de threads torna o processo mais rápido, pois são realizados envios de mensagens de forma paralela. Porém isto consome mais recursos do sistema e pode até mesmo sobrecarregar o sistema que irá receber as mensagens.

Nota
titleAtenção

Outro ponto a se considerar é que, em um processo multi-thread, em um erro onde o servidor pare de responder (queda de energia, erro em alguma rotina relacionada) o sistema pode posteriormente não conseguir iniciar o processamento no ponto exato de parada, podendo iniciar alguns registros antes ou depois, pois o processo ocorreu em paralelo.

           Já o processo com uma única thread tende a ser mais demorado porém em caso de erro fatal o processo recomeçará do ponto exato onde foi interrompido. Estes pontos devem ser levados em consideração no momento de escolher o número de threads a utilizar.

Tela para a escolha de threads de execução

Tela de escolha de threads de execução

        O sistema calcula o número máximo de threads de acordo com a quantidade de registros existentes para envio. Após selecionar a quantidade de threads e clicar em Finalizar a mensagem é apresentada, e os registros começam a ser enviados.

Mensagem que indica que o processo de sincronização começou

Mensagem que indica que o processo de sincronização começou

          Enquanto a sincronização deste adapter não terminar com sucesso ou não for bloqueada não é possível iniciar uma sincronização do mesmo adapter.

Mensagem indicando que já existe sincronização em execução para o adapter em questão

Mensagem indicando que já existe sincronização para o adapter

        A partir deste momento para cada linha do alias associado ao adapter a integração será chamada.

Âncora
_teladelogs
_teladelogs
A tela dos Logs de Sincronização

          Existe uma interface própria para acompanhamento dos eventos enviados para sincronização. Esta tela permite através de gráficos e outras formas de visualização controlar o progresso da sincronização. Para acessar esta rotina, na tela de sincronização do EAI selecione em ações relacionadas/log de sincronização.

Tela de logs de sincronização

A tela de logs de sincronização

          Vamos explicar cada componente desta tela e o seu comportamento.

Âncora
_logsuperior
_logsuperior
Interface superior da tela

          A interface superior da tela de logs de sincronização controla o tempo de atualização da tela e é responsável pela maioria dos comandos que podem ser executados aqui.

Parte superior da tela de logs de sincronização

Parte superior da tela de logs de sincronização

          São recursos desta interface:

  • Atualizar a cada - A partir deste combo é possível selecionar o intervalo de atualização da tela. A tela de Logs de sincronização é atualizada automaticamente, respeitando o intervalo definido pelo usuário através do combo atualizar a cada. A tela é automaticamente atualizada, mas de maneira assíncrona. É enviado um sinal para que sejam recalculados todos os valores e as tabelas são atualizadas, e a tela é atualizada com base nos valores já existentes. Estes valores são recalculados por outra thread, que atualiza a tabela de sincronização. Na próxima atualização de tela, estes valores são lidos e um novo pulso é enviado para iniciar o recálculo;
  • Texto com informações - Este texto (no nosso exemplo "Não há dados sendo sincronizados no momento") indica o status geral do sincronizador EAI. Ele é responsável por indicar se os registros estão sendo processados, se não existe mais processamento ou se o sincronizador está em tentativa de parar (em processos de multiplas threads a parada do sincronizador pode demorar, pois é necessário parar todas as Threads antes);
  • Botão Iniciar - Caso o sincronizador esteja parado, é possível reiniciar o sincronizador;
  • Botão Parar - Responsável por parar o sincronizador (em processos de multiplas threads a parada do sincronizador pode demorar, pois é necessário parar todas as Threads antes);
  • Botão reprocessar - Envia um sinal para que ocorra o reprocessamento de sincronização com erro (erro causado no sistema) ou por retorno negativo de outro EAI (possível somente após o término do processo). Para um reprocessamento com mensagens de retorno negativo de outro EAI o sincronizador não irá chamar o adapter novamente. Ele irá carregar as mensagens já enviadas e irá realizar o reenvio das mesmas e o adapter será chamado no retorno das mensagens enviadas.;
  • Botão Bloquear/Excluir - Botão responsável por bloquear um processo de sincronização. Processos bloqueados não podem ser reinicializados. Caso um registro já esteja bloqueado é possível excluir este registro. Assim sendo, só é possível excluir um registro que já esteja bloqueado. Para bloquear registros que estejam com o status de executando é necessário parar o sincronizador.
Nota
titleImportante

Visando uma economia de recursos toda vez que um processo é reiniciado (reprocessado, iniciado novamente após uma falha, etc) o número de threads máximas a utilizar é reavaliado, partindo do valor escolhido do usuário. Este valor pode ser reduzido, chegando até o valor de 1 thread.

 

Âncora
_gridmaior
_gridmaior
Os grids de processamento

          Na interface de logs existem dois browses, um contendo os processos a enviar e outro com as mensagens que retornaram com status de erro do outro EAI.

Âncora
_gridfila
_gridfila
Grid dos processos em fila

          Neste grid é possível visualizar todos os adapters selecionados para sincronização e o seu status de processamento.

Grid dos processos na fila

Grid dos processos na fila

          Nesta grid são apresentadas as sincronizações que estão na fila para envio. Cada adapter é concatenado com um identificador (seu Recno na tabela de sincronização) para que seja possível quando existirem mais de um adapter na fila a sua identificação. Com um duplo clique na coluna de informações é possível expandir esta informação (na parada do sincronizador por erro fatal em alguma aplicação, parte do error.log é gerado aqui e é possível visualizá-lo com o duplo clique). Cada registro possui também o seu status:

Status de sincronização

Status de sincronização

          São status de sincronização:

  • Erro - Ocorreu um erro (error.log, etc) em alguma rotina relacionada (adapter, próprio sincronizador, etc) que inviabiliza o envio das mensagens. O sincronizador é parado, e nenhum outro adapter escolhido para sincronização será integrado até a verificação deste erro. Desta maneira, enquanto existir um adapter com status de erro na sincronização nenhuma outra sincronização será realizada. Para este adapter existirão duas alternativas:
    • Reiniciar o processamento do adapter (ele irá tentar recomeçar do ponto onde houve o erro);
    • Bloquear o processamento daquele adapter (ele não poderá mais ser reprocessado).
  • Executando - O processo já iniciou, e já existem mensagens enviadas;
  • Aguardando execução - O processo ainda não iniciou, e nenhuma mensagem foi enviada;
  • Finalizado com sucesso. Todos os registros passíveis de envio foram enviados e todos obtiveram retorno positivo do outro EAI;
  • Processo bloqueado - O processo foi bloqueado pelo usuário, não sendo mais processado;
  • Processo finalizado com mensagens não processadas - Todos os registros passíveis de envio foram enviados, mas alguns obtiveram retorno negativo do outro EAI;
  • Reprocessamento - Esta mensagem foi sinalizada para reprocessamento;
  • Reprocessamento com erros - Este registro foi reprocessado, mas houve retorno negativo do outro EAI para uma ou mais mensagens.

Âncora
_grideai
_grideai
Grid de mensagens na fila do EAI com erro

          Neste grid são apresentadas todas as mensagens com erro no EAI. É possível visualizar o xml enviado (primeira lupa) ou o xml recebido (segunda lupa).

Grid de mensagens com erro no EAI

Grid de mensagens com erro no EAI

 
Âncora
_grafmaior
_grafmaior
Gráficos da tela de log

          Os gráficos da tela de Logs de sincronização são utilizados para auxiliar o usuário no acompanhamento da quantidade de registros enviados e a enviar. Todos os gráficos são atualizados de maneira assíncrona, como já informado.

Âncora
_processadosadp
_processadosadp
Gráfico de processados por adapter

          Este gráfico de barras mostra a quantidade de registros enviados e a quantidade que resta para envio do adapter selecionado no grid de processos em fila (este gráfico é referente ao primeiro envio das mensagens, desta forma para mensagens reprocessadas ele não é alterado).

Gráfico de processados por adapter

Gráfico de processados por adapter

           Este gráfico sempre reflete os dados do registro do grid dos processos em fila. Uma coluna mostra a quantidade de registros enviados e outra coluna a quantidade que faltam a enviar. Em processos multi-threads onde o sincronizador seja parado por algum erro crítico o valor a enviar pode ser maior que a quantidade de registros da tabela, pois o sincronizador pode recomeçar o processo um pouco antes do erro. Este gráfico é referente ao primeiro envio das mensagens, desta forma para mensagens reprocessadas ele não é alterado.

Âncora
_Sucessxerr
_Sucessxerr
Gráfico de sucesso x erros

          Este gráfico apresenta a quantidade de envios com retorno positivo e a quantidade de registros que retornaram com erro do outro EAI.

Gráfico de sucessos x erros

Gráfico de sucessos x erros

           Este gráfico mostra os dados do adapter selecionado no grid de processos em fila.

Âncora
_total
_total
Gráfico de porcentagem de processamento total

             Este gráfico mostra a porcentagem de envio de todos os adapters sincronizados/a sincronizar.Este gráfico é referente ao primeiro envio das mensagens, desta forma para mensagens reprocessadas ele não é alterado.

Gráfico de porcentagem de processamento total

Gráfico de porcentagem de processamento total

Âncora
_eaisinclog
_eaisinclog
A chave EAISINCLOG

          É possível identificar os recnos enviados e outras informações internas do sistema habilitando a chave EAISINCLOG=1 no arquivo appserver.ini, na seção do ambiente em uso. Esta chave é muito útil para saber quais recnos estão sendo enviados e identificar outras informações, sendo uma alternativa útil para o degub do sistema.

          Com esta chave habilitada uma série de informações são geradas no console do Protheus, permitindo identificar em qual passo interno o sincronizador encontra-se, qual o recno da tabela está sendo enviada e informações sobre o início e finalização do processo.

Exemplo de geração no console

Exemplo de geração no console

Status do documentoConcluído
Data19/05/2015
Versão1.0
Versão anterior1.0
Autores

Jandir Deodato De Souza Silva

Índice resumido
Índice
maxLevel1
indent10px
Índice
Índice
outlinetrue
indent10px