Árvore de páginas


01. DADOS GERAIS

Produto:

TOTVS Saúde Planos

Linha de Produto:

Linha Protheus

Segmento:

Saúde

Módulo:Plano de Saúde
Função:
País:Brasil
Story:DSAUREV-6566


02. SITUAÇÃO/REQUISITO

Necessidade de realizar melhorias no processo de integração de cadastros PLS com o HAT.


03. SOLUÇÃO

Implementada melhoria com a disponibilização da possibilidade de realizar a comunicação de cadastro do PLS com o HAT através Jobs inicializados pelo appserver.ini.

Este ajuste é uma alternativa a utilização do Schedule de comunicação PLENVHAT, assim o cliente pode decidir por qual processo ele deseja enviar os dados cadastrais do PLS para o HAT. Caso o método adotado seja a utilização de Jobs, recomendamos desabilitar o Schedule PLENVHAT.


Funcionamento dos jobs:

Com a utilização de jobs, diferentemente do Schedule que processava os registros por Alias, os jobs sempre vão buscar os registros sem processamento mais antigos independentes da API. Cada thread processa um registro por vez, tentando realizar a comunicação com a API da HAT.

Caso a comunicação não possa ser realizada por algum motivo, o sistema incrementará o campo Qtde Tentat. (BNV_QTDTRY). O sistema reinicializa os registros que não teve sucesso ao comunicar a cada 2 minutos para solicitações Post, 5 minutos para Get e realiza 5 tentativas para cada registro. Após as 5 tentativas, o sistema ignora esse registro para não gerar problemas de controle de fila tentando enviar a todo tempo, um registro que já apresentou problemas no envio 5 vezes. É possível posteriormente, realizar o envio manualmente deste registro na rotina Pedidos PLS x HAT (PLSA274).

O job continua realizando o controle de enviar primeiramente um registro para sua API correspondente com o verbo POST para incluir o mesmo na fila de processamento do HAT, e posteriormente, uma comunicação GET para verificar se o registro já foi processado pelo HAT com sucesso.

IMPORTANTE!

O tempo para reconexão das solicitações Post e Get, e a quantidade máxima de tentativas podem ser parametrizados em novos campos na tabela de Operadoras de Saúde (BA0).


Para habilitar os jobs automáticos, é necessário adiciona-los ao arquivo appserver.ini:


Crie uma instância PLSHAT:

Bloco PLSHAT
[PLSHAT]
ENVIRONMENT=PLS27
INSTANCES=1,1
main=PJobPlsHat

ENVIRONMENT - Indique o ambiente que será processado.
INSTANCES - Quantidade de threads que será alocada/iniciada ao iniciar o server.
main - Nome do programa, manter PJobPlsHat fixo.


Agora precisamos adicionar a instância PLSHAT no ONSTART para a mesma ser iniciada junto com o ambiente:

Bloco ONSTART
[OnStart]
jobs=HTTP,HTTPJOB,PLSHAT
RefreshRate=120

Jobs - Nome dos jobs (instâncias) que serão iniciados ao inicializar o serviço.

Refreshrate - Determina um intervalo de tempo, em segundos, para que os jobs especificados, na chave [OnStart], sejam executados novamente e automaticamente, caso os mesmos não estejam em execução. 

Esta chave, uma vez especificada, é válida para todos os jobs da seção [OnStart]. Deste modo, todos os jobs especificados serão executados novamente, caso já tenham sido terminados.


Na chave correspondente ao seu ambiente, é necessário adicionar as atributos: EMPROBOXML, FILROBOXML e OPEPLSTOHAT. Perceba que em nossa chave [PLSHAT] criada anteriormente, utilizamos o ambiente PLS27. Segue um exemplo de preenchimento:

Configuração do Ambiente
[PLS27]
SourcePath=C:\PLS27\rpo
RootPath=C:\PLS27\ProtheusData                 
StartPath=\System
RpoLanguage=Portuguese
RpoVersion=120
RpoDb=TOP
LocalFiles=CTREE
localdbextension=.DTC
SpecialKey=PLS27
dbDataBase=MSSQL
dbServer=localhost
dbALIAS=P12127MNTDBEXP
dbPort=7890
TOPMemoMega=1
JEMP=T1
JFIL=M SP 01 
EMPROBOXML=T1
FILROBOXML=M SP 01 
OPEPLSTOHAT=0001

EMPROBOXML - Empresa que o Job PJobPlsHat executará.

FILROBOXML - Filial que o Job PJobPlsHat executará.

OPEPLSTOHAT - Código da Operadora (BA0) que o Job PJobPlsHat executará.

Aplique o pacote de dicionário de dados que acompanha este pacote ou crie os campos da tabela BNV e BA0 descritos na sessão 05 deste documento.


No SIGAPLS, acesse Atualizações/Operadora/Operadora de Saúde (PLSA010). Selecione sua Operadora, clique em Alterar. Na nova aba Integração HAT, preencha os novos campos

Qtd Min Post (BA0_HATMIP) - Indica a quantidade de minutos para o job de integração PLS x HAT realizar novamente o envio de registros POST que tiveram falha na comunicação (se o campo estiver vazio, o padrão do sistema é 2).

Qtd Min Get (BA0_HATMIG) - Indica a quantidade de minutos para o job de integração PLS x HAT realizar novamente o envio de registros GET que tiveram falha na comunicação (se o campo estiver vazio, o padrão do sistema é 5).

Qtd Tent Rec (BA0_HATTRY) - Indica a quantidade reenvios que o job de comunicação PLS x HAT pode realizar para um registro que houve falha na comunicação (se o campo estiver vazio, o padrão do sistema é 5).



04. DEMAIS INFORMAÇÕES


MUDANÇA NOS LOGS

Foi implementado também, uma melhoria nos logs do processo. Como o processo pode utilizar várias threads, foi criado uma estrutura de separação dos dados no modelo .CSV com separação das colunas com o caracter ;

O log plshat.log pode ser encontrado em \ProtheusData\logpls\[Data de Processamento].

Exemplo:


Para ler o log com precisão, utilize uma ferramenta de leitura de CSVs. Abaixo, é apresentado o passo-a-passo no Microsoft Excel:

Acesse Dados/De Texto:


Selecione o arquivo plshat.log:


Selecione opção Delimitado:


Em Delimitadores selecione Ponto e vírgula:


Marque todas as colunas com a opção Texto, clique em Concluir.


Selecione todos os registros e clique em Classificar. Adicione as colunas em Ordem: A, B, C e D:


Os registros são apresentados com as colunas na ordem:

  1. Identificador Único
  2. Número do Pedido (BNV_CODIGO)
  3. Número da Thread que processou o registro
  4. Horário do processamento
  5. Mensagem do Processamento

Com essa organização, é possível ler o log com facilidade separando cada processamento.


IMPORTANTE!

A geração dos logs do processo é habilitada através do parâmetro MV_PHATLOG com o conteúdo 1.



05. ASSUNTOS RELACIONADOS

  • Dicionário de dados atualizado:


Novos Campos SX3:

Tabela BNV:

X3_CAMPO

X3_TIPO

X3_TAMANHO

X3_DECIMAL

X3_TITULO

X3_DESCRIC

X3_PICTURE

X3_USADO

X3_RELACAO

X3_VALID

X3_CBOX

X3_BROWSE

X3_VISUAL

X3_CONTEXT

X3_OBRIGAT

BNV_PROCESCaracter10ProcessadoProcessado@! Sim
Vazio() .Or. Pertence('01')0=Não;1=SimNãoVisualRealNão
BNV_ROBOIDCaracter150ID RoboID Robo Processamento@! Sim


NãoVisualRealNão
BNV_ROBOHRCaracter170Hr Inic ProcHora inicio proces robo@! Sim


NãoVisualRealNão
BNV_QTDTRYNumérico20Qtde TentatQtde. Tentativas Rôbo99Sim


NãoVisualRealNão


Tabela BA0:

X3_CAMPO

X3_TIPO

X3_TAMANHO

X3_DECIMAL

X3_TITULO

X3_DESCRIC

X3_PICTURE

X3_USADO

X3_RELACAO

X3_VALID

X3_FOLDER

X3_BROWSE

X3_VISUAL

X3_CONTEXT

X3_OBRIGAT

BA0_HATMIPNumérico20Qtd Min PostQtde Minutos Post99Sim

5NãoAlterarRealNão
BA0_HATMIGNumérico20Qtd Min GetQuantidade Minutos Get99Sim

5NãoAlterarRealNão
BA0_HATTRYNumérico20Qtd Tent RecQtde Tentativas Reconexão99Sim

5NãoAlterarRealNão


Pastas (folders) SXA:

XA_ALIASXA_ORDEMXA_DESCRI
BA05Integração HAT


Parâmetros SX6:

Parâmetro MV_PSVCLOG
DescriçãoHabilita log para servicos do PLS (0=Desativado / 1=Ativado)
TipoCaracter
Conteúdo1

Observação: esse parâmetro habilita a geração do log plshatservice.log na pasta \ProtheusData\logpls\[Data de Processamento]. Ele é gerado no modelo CSV descrito no na sessão 04 deste documento.