Ir para o conteúdo principal

Integração cadastro de servidor Governa x e-Estado: aba Concurso

Em andamento - Estudo Técnico sobre a integração do e-Estado com o Sistema Governa Recurso Humanos - Cadastro de Servidor, aba Concurso

Data de elaboração 26/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 para que seja possível realizar a inserção de informações recebidas pelo e-Estado e integre com o Governa, reduzindo retrabalho e informações desiguais nos 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 propósito analisar e apresentar propostas para a integração da tela "Novo Servidor" do e-Estado com a tela "Servidor -> Cadastro de Servidor -> Novo -> aba Concurso" do sistema Governa

vínculo de concurso no e-estado

cadasto de concurso (e-estado)

Tela novo servidor (Governa)
No momento, ambas as telas operam independente uma da outra, requerendo a inserção repetida de informações, resultando em inconsistência de dados. O objetivo é realizar uma integração eficiente entre os dados dos sistemas, eliminando redundância e aprimorando a qualidade de dados de ambos os sistemas, sobretudo o Governa.

O estudo aborta 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

Diferentemente do Governa, que cadastra o concurso individualmente para cada servidor, no estado o servidor possui um campo que referencia concursos (figura 1) cadastrados dentro do próprio e-estado e salva como concurso_id, e, a partir desse id é possível capturar os dados e inseri-los no Governa. Portanto será necessário verificar quem faz esse cadastro de concurso (figura 2) para que os RHs sejam orientados futuramente no preenchimento dos campos de concurso.

Após análises feitas no objeto de criação de servidor e no banco de dados do Governa e e-Estado, foram observados que os campos podem ou não 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 --
-- Oficio de Apresentação apresentacao oficio_apresentacao --
-- Nº do Decreto numero_decreto numero_decreto --
-- Data do Decreto data_decreto data_decreto --
-- Data da posse data_posse data_posse --
-- Classificação concurso classificacacao_concurso classificacacao_concurso Este campo precisa ser tratado pois o e-estado salva este dado como texto enquanto o Governa salva como número
-- 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 Posse 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
-- Data da Resolução data_resolucao -- Não foi encontrado referência a este dado no e-estado
-- Nº Resolucao numero_resolucao -- Não foi encontrado referência a este dado no e-estado
-- Contratada contratada banca_concurso_id Este campo está nulo no e-estado
-- Processo Administrativo Posse proc_adm_posse -- Não foi encontrado referência a este dado no e-estado

Tabelas entre sistemas que devem conter na integração:

Governa e-Estado
rh.servidor

recursos_humanos.servidor

recursos_humanos.concurso

recursos_humanos.banca_concurso

3. Conclusão

A integração dos sistemas é possível utilizando o protocolo AMQP via RabbitMQ, porém alguns dados de Concurso podem não ser possíveis de integrar no Governa devido à falta de informação do mesmo no e-Estado. 

A seguir, alguns exemplos de histórias que podem auxiliar no desenvolvimento da integração:

História

O quê: Eu, dev, preciso criar um serviço de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Processo Administrativo na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Data do Concurso na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Data do Edital na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Contrato na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Data de Validade na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Ofício de Apresentação na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Nº do Decreto na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Data do Decreto na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Data da Posse na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Classificação Concurso na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações O dado vindo do e-Estado deve ser tratado como numérico no Governa
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Edital de Homologacao do Concurso Publico na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma REGEX de validação para a propriedade Edital de Homologacao do Concurso Publico

Por quê: para trazer do e-estado apenas o número e o ano do edital

Regras e Validações

--

Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Edital de Convocacao Pericia Medica e Posso na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma REGEX de validação para a propriedade Edital de Convocação Pericia Medica e Posso na entidade de Servidor

Por quê: para trazer do e-estado apenas o número e o ano do edital

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Edital Concurso na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma REGEX de validação para a propriedade Edital Concurso na entidade de Servidor

Por quê: para trazer do e-estado apenas o número e o ano do edital

Regras e Validações --
Pontuação 2
História

O quê: Eu, dev, preciso criar uma propriedade Contratada na entidade de Servidor

Por quê: para realizar a integração de dados de concurso cadastrados no sistema e-estado

Regras e Validações --
Pontuação 2