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 ConcursoGraduaçã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 |
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 propósitoobjetivo analisar e apresentar propostas para a integração dado telacadastro 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" dosomos e-Estado comredirecionados a tela de cadastro de servidor tal como exemplificado na imagem a seguir:
Nesta tela o usuário pode preencher diversas informações do servidor navegando entre as abas, especialmente a mais a aba Graduação"o doque sistemaserá Governaobjeto deste estudo.
No momento, ambas asestas telas operam independente uma da outra,outra requerendosendo anecessário inserção repetidacadastro de informações,servidor resultandopor ambas, e consequentemente podendo resultar em inconsistência de dados.dados Opor objetivomuitas vezes. Logo, a integração almejada é indispensável para realizar uma integraçãotroca eficiente destes dados entre os dadossistemas dosde sistemas,forma eliminandoautomatizada, reduzindo redundânciancia, retrabalhos e aprimorando a qualidade de dados dedestes ambos os sistemas, sobretudo o Governa.sistemas.
O estudo abortaaborda 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 |