Integração cadastro de servidor Governa x e-Estado: aba Concurso
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
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 | -- |
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 | -- |
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 | -- |
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 | -- |
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 | -- |
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 | -- |
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 | -- |
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 | -- |
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 | -- |
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 | -- |
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 |
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 | -- |
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 |
-- |
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 | -- |
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 | -- |
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 | -- |
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 | -- |
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 | -- |