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

Atenção

Disponível a partir da lib label 08062015.

 

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.

Atenção

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

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.

Atençã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.

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.

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.

Importante

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.

 

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.

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.

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

  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.

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.

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.

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

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
  • Sem rótulos