Ir para o conteúdo principal

Integração Entre os Sistemas e-Estado e Governa Para Cadastro de Servidor: Aba Graduação

Estudo Técnico para integração entre e-Estado e Governa Recurso Humanos - Cadastro de Servidor, aba Graduação

Data de elaboração 27/06/2023
Responsável pelo estudo

Ádrian Rabelo Mendes (Assessor)

Diego Gonçalves de Almeida (Assessor)

Jônatas Legal (Técnico em Tecnologia da Informação e Comunicação) (Assessor)

Rodrigo Stefano Sales Nascimento (Assessor)

Equipe de estudo

CAOS
Alvo Sistema Governa
Origem Realizar levantamento para integração assíncrona do cadastro de servidor nos sistemas e-Estado e Governa - Recursos Humanos
Objetivo Possibilitar a inserção automática de informações recebidas pelo sistema e-Estado no banco de dados do sistema Governa, reduzindo retrabalho e mantendo a integridade dos dados entre os sistemas.

Glossário

  • AMQP - Advanced Message Queueing Protocol
  • RabbitMQ - servidor de mensageria de código aberto
  • Acknowledgement - confirmação de entrega de mensagem
  • QoS - Quality of Service

1. Introdução

O presente estudo técnico tem como objetivo analisar e apresentar propostas para a integração do cadastro de servidores a fim de replicar os dados oriundos do e-Estado no banco de dados do sistema Governa. Atualmente, esse processo é realizado manualmente pelos usuários destes sistemas realizando o cadastro de servidores em ambos sistemas, no entanto após análise prévia das informações presentes nestes, percebeu-se que o Governa não contempla diversas informações dos servidores que estão presentes no e-Estado. Desta maneira, a proposta de integração entre estes sistemas visa sanar tanto o retrabalho que o usuário possui atualmente para realizar o mesmo cadastro em sistemas distintos como manter a integridade dos dados nos dois sistemas. 

No e-Estado, através do menu "Servidor" temos acesso às funcionalidades relacionadas a essa entidade. Utilizando o botão "Novo Servidor" somos redirecionados a tela de cadastro de servidor tal como exemplificado na imagem a seguir:

Tela novo servidor (e-estado)

Já no Governa, navegando pelo menu conseguimos acessar a tela de cadastro de servidor seguindo: "Servidor -> Cadastro de Servidor -> Novo" conforme a imagem a seguir.

Tela novo servidor (Governa)

Nesta tela o usuário pode preencher diversas informações do servidor navegando entre as abas, especialmente a  mais a aba Graduação que será objeto deste estudo.

Atualmente  estas telas operam independente uma da outra sendo necessário o cadastro de servidor por ambas, e consequentemente podendo resultar em inconsistência de dados por muitas vezes. Logo, a integração almejada é indispensável para realizar uma troca eficiente destes dados entre os sistemas de forma automatizada, reduzindo redundância, retrabalhos e aprimorando a qualidade de dados destes sistemas.

O estudo aborda a utilização do protocolo AMQP em conjunto com RabbitMQ, um sistema de mensageria de código aberto responsável pela implementação do protocolo, permitindo troca eficiente de mensagens entre diferentes sistemas e componentes.

2. Desenvolvimento

2.1 AMQP

Advanced Message Queueing Protocol (AMQP) é um protocolo de mensagens assíncronas utilizado para comunicação entre sistemas distribuídos desenvolvido para facilitar a troca de mensagens entre aplicativos de forma eficiente e confiável.

O protocolo foi projetado para ser independente de plataforma, permitindo comunicação entre diferentes sistemas e linguagens de programação. Ele define um conjunto de regras e formatos para enviar, rotear e receber mensagens e garante sua entrega ordenada e confiável.

Uma das principais características do AMQP é a utilização de filas de mensagens. Elas são publicadas em filas e podem ser consumidas por um ou mais consumidores, de acordo com um modelo de publicação e assinatura. Isso permite que os aplicativos enviem e recebam mensagens de forma assíncrona, desacoplando o produtor da mensagem do consumidor.

Além das filas, o AMQP define trocas (exchanges) e vinculações (bindings) para rotear as mensagens para filas corretas. As trocas recebem mensagens dos produtores e encaminham-nas para as filas com base em regras de roteamento específicas. As vinculações definem a relação entre as trocas e as filas.

Suportando diferentes modelos de entrega de mensagens como confirmação (acknowledgment) que garante a entrega bem sucedida das mensagens e a qualidade de serviço (QoS) que define níveis de prioridade para as mensagens.


2.2 RabbitMQ

RabbitMQ é um software de mensagem assíncrona que implementa o protocolo AMQP. Ele é amplamente utilizado como um intermediário de mensagens entre diferentes sistemas e serviços distribuídos, fornecendo uma plataforma robusta para troca de mensagens e permitindo que aplicativos e serviços se comuniquem de maneira eficiente e confiável. Ele utiliza filas de mensagens para armazenar e entregar as mensagens entre os produtores e consumidores.

A principal vantagem do RabbitMQ é a flexibilidade e escalabilidade. Ele suporta uma variedade de padrões de troca de mensagens, como publicação e assinatura, roteamento direto e tópicos. Permite que os dados sejam encaminhados de maneira adequada às necessidades específicas de cada aplicativo.

2.3 Integração - Aba Concurso

Os seguintes campos podem refletir-se em ambos os sistemas:

Tabela Governa Campo Governa e-Estado Obs
rh.servidor Processo administrativo proc_adm processo
--

Data do Concurso

Data do Edital

data_concurso

data_edital_concurso

data_abertura
-- Contrato contrato contrato
-- Data de Validade data_validade data_validade
-- Edital de Homologacao do Concurso Publico homologacao_conc_pub edital_homologacao Neste campo, será necessário construir um REGEX para capturar apenas o número e o ano do edital
-- Edital de Convocacao Pericia Medica e Posso convocacao_pericia_posse edital_convocacao_pericia_posse Neste campo, será necessário construir um REGEX para capturar apenas o número e o ano do edital
-- Edital Concurso edital_concurso edital_abertura Neste campo, será necessário construir um REGEX para capturar apenas o número e o ano do edital


3. Conclusão