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.
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).IMPORTANTE!
Para habilitar os jobs automáticos, é necessário adiciona-los ao arquivo appserver.ini:
Crie uma instância 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:
[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:
[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:
- Identificador Único
- Número do Pedido (BNV_CODIGO)
- Número da Thread que processou o registro
- Horário do processamento
- Mensagem do Processamento
Com essa organização, é possível ler o log com facilidade separando cada processamento.
A geração dos logs do processo é habilitada através do parâmetro MV_PHATLOG com o conteúdo 1.IMPORTANTE!
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_PROCES | Caracter | 1 | 0 | Processado | Processado | @! | Sim | Vazio() .Or. Pertence('01') | 0=Não;1=Sim | Não | Visual | Real | Não | |
BNV_ROBOID | Caracter | 15 | 0 | ID Robo | ID Robo Processamento | @! | Sim | Não | Visual | Real | Não | |||
BNV_ROBOHR | Caracter | 17 | 0 | Hr Inic Proc | Hora inicio proces robo | @! | Sim | Não | Visual | Real | Não | |||
BNV_QTDTRY | Numérico | 2 | 0 | Qtde Tentat | Qtde. Tentativas Rôbo | 99 | Sim | Não | Visual | Real | Nã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_HATMIP | Numérico | 2 | 0 | Qtd Min Post | Qtde Minutos Post | 99 | Sim | 5 | Não | Alterar | Real | Não | ||
BA0_HATMIG | Numérico | 2 | 0 | Qtd Min Get | Quantidade Minutos Get | 99 | Sim | 5 | Não | Alterar | Real | Não | ||
BA0_HATTRY | Numérico | 2 | 0 | Qtd Tent Rec | Qtde Tentativas Reconexão | 99 | Sim | 5 | Não | Alterar | Real | Não |
Pastas (folders) SXA:
XA_ALIAS | XA_ORDEM | XA_DESCRI |
---|---|---|
BA0 | 5 | Integração HAT |
Parâmetros SX6:
Parâmetro | MV_PSVCLOG |
---|---|
Descrição | Habilita log para servicos do PLS (0=Desativado / 1=Ativado) |
Tipo | Caracter |
Conteúdo | 1 |
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.