| Data de elaboração | 16/01/2024 |
| 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 do estudo | CAOS |
| Alvo | Sistema Governa |
| Origem | Objetivo estratégico: Atrelar Função ao Cargo e Secretaria. |
| Objetivo | Pois atualmente a FUNÇÃO esta constando para todas as secretarias e querem que a função somente apareça para aquele tipo de cargo e determinada secretaria. |
UML - Linguagem de Modelagem Unificada
DER - Diagrama de Entidade e Relacionamento
O conceito de Cargo é fundamental em qualquer sistema de gestão de recursos humanos. Um Cargo é mais do que apenas um título. Ele encapsula um conjunto de habilidades, deveres e responsabilidades que são essenciais para o funcionamento eficaz de uma organização.
Já Função, pode-se compreender como um elemento que define a operação diária dentro de uma organização. Ela detalha as atividades específicas e suas responsabilidades.
No sistema Governa, o Cargo assume um papel central na estruturação organizacional e na definição de responsabilidades e competências dos colaboradores.
O objetivo deste estudo é promover propostas de desenvolvimento para efetuar a associação entre Secretaria, Cargo e Função de modo que o sistema possa controlar quais funções aparecerão disponíveis de acordo com o Cargo e/ou Secretaria selecionado(a).
Os Cargos podem ser gerenciados através do seguinte menu no sistema Governa, módulo de Recursos Humanos:
Cadastro > Cargo e Salário > Cargo

Figura 1: Menu de gestão de Cargo
Na figura 2, na tela de gestão de Cargos, o usuário pode listar todos os cargos cadastrados e filtrá-los por código e descrição. Esta tela também permite que o usuário cadastre, edite, exclua ou visualize um cargo.

Figura 2: Tela de gestão de Cargo
Para cadastrar um cargo, após clicar no botão Novo, o usuário precisará preencher, ao menos, todos os campos obrigatórios nas 5 abas demonstradas na janela de modal aberta. Conforme podemos observar na figura 3:

Figura 3: Tela de Cadastro de novo Cargo
As Funções podem ser gerenciadas através do seguinte menu no sistema Governa, módulo de Recursos Humanos:
Cadastro > Cargo e Salário > Função

Figura 4: Menu de gestão de Função
Na figura 5, na tela de gestão de Funções, o usuário pode listar todos as funções cadastradas e filtrá-las por código e descrição. Esta tela também permite que o usuário cadastre, edite, exclua ou visualize uma função.

Figura 5: Tela de gestão de Função
Para cadastrar uma função, após clicar no botão Novo, o usuário precisará preencher a descrição na janela de modal aberta. Conforme podemos observar na figura 6:

Figura 6: Tela de Cadastro de nova Função
As Secretarias podem ser gerenciadas através do seguinte menu no sistema Governa, módulo de Gestão Geral:
Empresa > Administração

Figura 7: Menu de gestão de Administração
Na figura 8, na tela de gestão de Administração, o usuário pode listar todas as Secretarias cadastradas e filtrá-las por CNPJ ou Nome. Esta tela também permite que o usuário cadastre, edite, exclua ou visualize uma secretaria.

Figura 8: Tela de gestão de Administração
Para cadastrar uma Secretaria, após clicar no botão Novo, o usuário precisará preencher todos os campos obrigatórios demonstrados na janela de modal aberta. Conforme podemos observar na figura 9:

Figura 9: Tela de Cadastro de nova Secretaria

Figura 10: Diagrama relacional da entidade Cargo

Figura 11: Diagrama relacional da entidade Funcao

Figura 12: Diagrama relacional da entidade Administracao
Para atingir o objetivo do estudo, será necessário efetuar diversas modificações, tanto no sistema Governa quanto no sistema de Gestão. Estas modificações permitirão implementar a funcionalidade que possibilitará ao usuário filtrar as Funções com base no Cargo selecionado na tela de cadastro de informações mensais do servidor.

Figura 13: Cadastro de Informações mensais do servidor.
Modificar a tela de listagem de Cargo, de modo que permita filtrar os cargos por Secretaria e também que na tabela, apareça a secretaria referente ao cargo
Modificar a tela de cadastro de Cargo, de modo que o usuário possa escolher a secretaria referente ao cargo que está sendo cadastrado
Modificar a tela de edição de Cargo, de modo que o usuário possa alterar a secretaria referente ao cargo que está sendo editado
Modificar a tela de listagem de Função, de modo que permita filtrar as funções por Cargo e também que na tabela, apareça o Cargo secretaria referente à função
Modificar a tela de cadastro de Função, de modo que o usuário possa escolher o cargo referente à função que está sendo cadastrada
Modificar a tela de edição de Função, de modo que o usuário possa alterar a secretaria referente ao cargo que está sendo editado
Modificar a tela de Cadastro de servidor > Informações Mensais, de modo que quando o usuário selecionar o cargo, o sistema atualize a lista de Função de acordo com o cargo selecionado.
Como podemos observar nos diagramas DER das entidades Administração e Cargo nas figuras 10 e 12 , ambas possuem uma quantidade considerável de relações com outras tabelas, de modo que a alteração de seus respectivos modelos de dados podem gerar um efeito em cascata e impactar significavelmente no funcionamento de ambos os sistemas, sendo eles o módulo de Gestão e o módulo de RH.
Na implementação da associação dinâmica entre Secretaria, Cargo e Função, a execução de uma série de testes é fundamental para garantir que a nova funcionalidade seja integrada ao sistema de forma eficaz e segura e que novos registros persistidos não afetem os registros que já existem.
Recomendamos a execução de testes unitários para verificar cada método criado ou editado e validar cada alteração de componente do modelo de dados de modo a garantir que cada parte desenvolvida funcione corretamente de forma isolada.
Recomendamos também, a execução de testes de integração, pois podem avaliar como os novos componentes interagem com o sistema e garantir que a associação entre Secretaria, Cargo e Função não introduza incompatibilidades ou erros nos fluxos de trabalho dos sistemas.
| História | O quê: Eu, dev, preciso adicionar um campo em Administração Por quê: para manter uma lista de Cargos. |
| Regras e Validações | |
| Pontuação | 2 |
| História | O quê: Eu, dev, preciso adicionar um campo em Cargo Por quê: para referenciar Administração. |
| Regras e Validações | |
| Pontuação | 2 |
| História | O quê: Eu, dev, preciso adicionar um campo em Cargo Por quê: para manter uma lista de Função. |
| Regras e Validações | |
| Pontuação | 2 |
| História | O quê: Eu, dev, preciso adicionar um campo em Funcao Por quê: para referenciar Cargo. |
| Regras e Validações | |
| Pontuação | 2 |
| História | O quê: Eu, dev, preciso modificar todas as camadas do CRUD de Cargo Por quê: para considerar a Secretaria (Administração) daquele cargo. |
| Regras e Validações | Modificar as camadas de persistência, DAO e Beans |
| Pontuação | 4 |
| História | O quê: Eu, dev, preciso modificar todas as camadas do CRUD de Funcao Por quê: para considerar o Cargo daquela função. |
| Regras e Validações | Modificar as camadas de persistência, DAO e Beans |
| Pontuação | 4 |
| História | O quê: Eu, dev, preciso Modificar a tela de listagem de Cargo Por quê: para permitir filtrar os cargos por Secretaria e também que na tabela, apareça a secretaria referente ao cargo. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso Modificar a tela de cadastro de Cargo Por quê: para permitir que o usuário possa escolher a secretaria referente ao cargo que está sendo cadastrado. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso Modificar a tela de edição de Cargo Por quê: para permitir que o usuário possa alterar a secretaria referente ao cargo que está sendo editado. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso Modificar a tela de listagem de Funcao Por quê: para permitir filtrar as funções por Cargo e também que na tabela, apareça o Cargo secretaria referente à função. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso Modificar a tela de cadastro de Funcao Por quê: para permitir que o usuário possa escolher o cargo referente à função que está sendo cadastrada. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso Modificar a tela de edição de Funcao Por quê: para permitir que o usuário possa alterar a secretaria referente ao cargo que está sendo editado. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso Modificar a tela de Cadastro de servidor > Informações Mensais Por quê: para permitir que quando o usuário selecionar o cargo, o sistema atualize a lista de Função de acordo com o cargo. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso Criar/Editar método para carregar os Cargos associados à secretaria selecionada Por quê: para permitir que o sistema retorne lista de Cargos de acordo com a secretaria selecionada. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso Criar/Editar método para carregar as Funções associadas ao cargo selecionado Por quê: permitir que o sistema retorne lista de Funções de acordo com o cargo selecionado. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso executar testes unitários Por quê: para verificar cada método criado ou editado e validar cada alteração de componente do modelo de dados de modo a garantir que cada parte desenvolvida funcione corretamente de forma isolada. |
| Regras e Validações | |
| Pontuação | 3 |
| História | O quê: Eu, dev, preciso executar testes de integração Por quê: para avaliar como os novos componentes interagem com o sistema e garantir que a associação entre Secretaria, Cargo e Função não introduza incompatibilidades ou erros nos fluxos de trabalho dos sistemas. |
| Regras e Validações | |
| Pontuação | 8 |
Com base nessa análise, é possível concluir que é necessário fazer modificações substanciais no código fonte dos sistemas supracitados, para implementar funcionalidade que permita filtrar funções com base no cargo selecionado.