Navegação

    Fórum Técnico Insoft4

    • Login
    • Pesquisar

    OS10278 - Solicitação 21124 - Procedimentos de replicação de marcações de ponto para bloqueio de VPN na Previ

    Customizações
    pontosoft-enterprise previ
    1
    1
    21
    Carregando Mais Posts
    • Mais Antigo para Mais Recente
    • Mais Recente para Mais Antigo
    • Mais Votados
    Responder
    • Responder como tópico
    Entre para responder
    Este tópico foi deletado. Apenas usuários com privilégios de moderação de tópico podem vê-lo.
    • jonathan
      jonathan Desenvolvimento última edição por

      A solicitação consiste na replicação das marcações de ponto do dia atual (somente dia corrente) utilizando uma procedure de banco disponibilizada pela Previ que irá fazer o bloqueio da VPN de acordo com as marcações de ponto do funcionário.

      Devem ser enviadas apenas as marcações mais recentes.

      Exemplo: se já foi enviada uma marcação de saída as 17:00 e houve uma alteração em uma marcação de entrada anterior, das 13:00 para as 13:05 por exemplo, essa alteração não é enviada, pois o que "importa" é saber que o funcionário saiu as 17 horas e depois desse horário o acesso a VPN deve ser bloqueado.

      Foram criadas as seguintes tabelas customizadas:

      CREATE TABLE CONTROLE_REPL_MARC_PONTO_PREVI
      (
        COD_FUNCIONARIO              NUMBER(6) NOT NULL,
        DATA_MARCACAO                DATE NOT NULL,
        ULTIMA_HORA_ENTRADA          DATE,
        ULTIMA_HORA_SAIDA            DATE,
        SEQUENCIA_COMANDO_REPLICACAO NUMBER(3) NOT NULL
      )
      
      CREATE TABLE COMANDO_REPL_MARC_PONTO_PREVI
      (
        COD_FUNCIONARIO               NUMBER(6) NOT NULL,
        DATA_MARCACAO                 DATE NOT NULL,
        SEQUENCIA_COMANDO_REPLICACAO  NUMBER(3) NOT NULL,
        DATA_HORA_MARCACAO            DATE,
        TIPO_MARCACAO                 VARCHAR2(1) NOT NULL,
        DATA_HORA_MOVIMENTACAO        DATE NOT NULL,
        STATUS_INTEGRACAO             VARCHAR2(1) NOT NULL,
        DESCRICAO_ERRO                VARCHAR2(2000),
        DATA_HORA_INTEGRACAO          DATE,
        NRO_TENTATIVAS_INTEGRACAO     NUMBER(3) NOT NULL
      )
      

      A tabela CONTROLE_REPL_MARC_PONTO_PREVI é atualizada através de três triggers e uma package (para controle de mutating table) na tabela MARCACOES_PONTOS, recebendo sempre a informação da maior entrada e a maior saída do dia para o funcionário, independente de quantos registros de marcações ou turnos distintos tenha no dia.

      Segue lista das triggers customizadas criadas:

      • PS34520 - TRIG_BF_ST_PREVI_REPL_MP: trigger de before statement na tabela MARCACOES_PONTOS que limpa a pl table com a lista de registros a processar
      • PS34510 - TRIG_AF_RW_PREVI_REPL_MP: trigger after each row na tabela MARCACOES_PONTOS que adiciona os registro para processamento na pl table
      • PS34525 - TRIG_AF_ST_PREVI_REPL_MP: trigger after statement na tabela MARCACOES_PONTOS que processa as informações da pl table e atualiza os registros necessários na tabela CONTROLE_REPL_MARC_PONTO_PREVI
      • PS34530 - TRIG_BF_RW_PREVI_REPL_CNT_REPL: trigger before each row na tabela CONTROLE_REPL_MARC_PONTO_PREVI que processa as regras de negócio necessárias e chama o procedimento PACK_REPLICA_MARCACOES_PREVI.PROCESSA_REPLICACAO que irá fazer a atualização da tabela COMANDO_REPL_MARC_PONTO_PREVI e chamar o procedimento de banco disponibilizado pelo cliente SGRSP170 quando necessário.

      PACK_REPLICA_MARCACOES_PREVI

      Esta package foi criada para reunir os procedimentos necessários para a realização da replicação das informações chamando a procedure de banco do cliente. A seguir a descrição de cada procedimento dentro da package:

      • INICIALIZA: procedimento que limpa a pl/table de controle
      • ADD_REGISTRO: procedimento que adiciona os registros de controle de replicação de marcação de pontos que sofreram alteração para replicação
      • GERA_CONTROLE_REPLICACAO: procedimento que aplica a regra de negócio processando os registros adicionados para replicação, fazendo a chamada do procedimento de banco SGRSP170 do cliente e realizando o controle da atualização dos retornos do processamento para as tabelas de controle.
      • REPROCESSA_REPLICACAO_ERRO: procedimento criado para que possa ser chamado via JOB pelo sistema do cliente para que seja realizada a tentativa de reprocessamento dos comandos que geraram erro anteriormente na tentativa de replicação. Não existe nenhum parâmetro de entrada ou saída para execução do procedimento, e ao ser chamado irá processar todos os registros de comando com ERRO no dia corrente (sempre é processado apenas o dia corrente, pois a atualização de horários deve ser em tempo real, não tem necessidade de atualizações retroativas). Existe um número limite de tentativas de reprocessamento que é definido pelo valor do parâmetro customizado MAX_TRIES_REPL_MARC_PNT_PREVI, existente na tabela PARAMETROS_CUSTOMIZADOS_PONTOS.

      Observação: para que seja possível realizar os testes no ambiente de desenvolvimento (PONTO6@DESENV01) foi criado um "mock" do procedimento chamado SGRSP170 que aceita somente receber dados do dia corrente. Dessa forma para testar cenários de replicação com sucesso deve ser chamada com dados do dia corrente, e para testar cenários de falha deve ser passado informação de outras datas.

      Relação de scripts para implantação:

      • OS10278.sql (irá executar os scripts OS10278.tab, OS10278.con e OS10278.atz)
      • PS34515.pks
      • PS34515.pkb
      • PS34510.trg
      • PS34520.trg
      • PS34525.trg
      • PS34530.trg

      Script do "mock" da procedure SGRSP170 (não implantar, apenas para simular em banco de desenvolvimento)

      • SGRSP170.prc

      ATENÇÃO: ao implantar no cliente verificar quais os sinônimos e grants necessários e adicionar aos scripts existentes.

      1 Resposta Última resposta Responder Citar 1
      • Primeiro post
        Último post
      Powered by NodeBB | Contributors