-
Notifications
You must be signed in to change notification settings - Fork 94
Configuracao Regras Negocio
Esta página explica como o Siga armazena e consultar configurações de regras de negócio. Esclarece também como a consulta é feita internamente, incluindo a estratégia usada para analisar configurações sobrepostas e gerar conclusões.
As tabelas e métodos serão descritos da forma mais simples possível, sem menção inicial de todas as colunas e parâmetros. Gradualmente, essas informações serão apresentadas de modo incrementado, cada vez mais próximo da realidade, na sua plena complexidade.
Considere as seguintes sentenças:
- O Brasil é uma república democrática
- O Brasil é um país laico
- A Arábia Saudita é uma monarquia absoluta
- A Arábia Saudita é um país islâmico
Como essas configurações políticas poderiam ser expressas num banco de dados relacional? Talvez com 4 tabelas:
País
ID_PAIS | NOME_PAIS |
---|---|
1 | Brasil |
2 | Arábia Saudita |
Tipo de Configuração
ID_TP_CONFIGURACAO | DSC_TP_CONFIGURACAO |
---|---|
10 | Forma de governo |
20 | Religião oficial |
Situação
ID_SIT_CONFIGURACAO | DSC_SIT_CONFIGURACAO |
---|---|
100 | República democrática |
200 | Monarquia absoluta |
300 | Laicidade |
400 | Islamismo |
Configuração
ID_CONFIGURACAO | ID_PAIS | ID_TP_CONFIGURACAO | ID_SIT_CONFIGURACAO |
---|---|---|---|
9988 | 1 (Brasil) | 10 (Forma Governo) | 100 (Rep. Dem.) |
9999 | 1 | 20 (Religião) | |
9123 | 2 (Arábia) | 10 | 200 (Mon. abs.) |
9124 | 2 | 20 | 400 (Islã) |
Seguindo esse raciocínio, observe as seguintes declarações referentes a regras de negócio tratadas pelo Siga:
- A SETEST não pode movimentar Memorandos
- Edson Sales não tem a obrigação de criar ofícios como eletrônicos, ou seja, pode produzi-los como físicos.
Como seriam elas implementadas?
DP_PESSOA
ID_PESSOA | NOME_PESSOA |
---|---|
123 | Edson Sales |
... | ... |
DP_LOTACAO
ID_LOTACAO | NOME_LOTACAO |
---|---|
987 | SETEST |
... | ... |
EX_MODELO
ID_MOD | NM_MOD |
---|---|
26 | Memorando |
1 | Ofício |
... | ... |
CP_TIPO_CONFIGURACAO
ID_TP_CONFIGURACAO | DSC_TP_CONFIGURACAO |
---|---|
10 | Eletrônico |
20 | Movimentar |
CP_SITUACAO_CONFIGURACAO
ID_SIT_CONFIGURACAO | DSC_SIT_CONFIGURACAO |
---|---|
100 | Pode |
200 | Não Pode |
300 | Obrigatório |
400 | Opcional |
CP_CONFIGURACAO
ID_CONFIGURACAO | ID_LOTACAO | ID_PESSOA | ID_MOD | ID_TP_CONFIGURACAO | ID_SIT_CONFIGURACAO |
---|---|---|---|---|---|
3333 | 123 | 1 (Ofício) | 10 (Eletr.) | 400 (Opcional) | |
4444 | 987 | 26 (Memo) | 20 (Movimentar) | 200 (Não pode) |
Porém, ID_MOD não é adequado constar em uma tabela do Corporativo, visto que se refere a dado específico de um dos módulos do Siga (o módulo Doc, nesse caso). Várias outras colunas além dessa são específicas, como ID_TP_MOV, ID_FORMA_DOC, etc.
Por isso, a Configuração em si (não o tipo nem a situação) é dividida em duas tabelas: CP_CONFIGURACAO e XX_CONFIGURACAO, onde XX é a sigla do módulo. A configuração do exemplo acima ficaria, então, do modo abaixo:
CP_CONFIGURACAO
ID_CONFIGURACAO | ID_LOTACAO | ID_PESSOA | ID_TP_CONFIGURACAO | ID_SIT_CONFIGURACAO |
---|---|---|---|---|
3333 | 123 | 10 (Eletr.) | 400 (Opcional) | |
4444 | 987 | 20 (Movimentar) | 200 (Não pode) |
EX_CONFIGURACAO
ID_CONFIGURACAO_EX | ID_MOD |
---|---|
3333 | 1 (Ofício) |
4444 | 26 (Memo) |
Simples, não? :-)
A consulta às configurações se traduz em uma pergunta, à qual a estrutura de configurações do Siga terá de fornecer uma resposta. Por exemplo, uma rotina que precisasse decidir entre permitir escolher Físico ou Eletrônico e proibir Físico para Edson Sales com relação a ofício, perguntaria Para Edson Sales criando ofício, qual a situação referente ao suporte Eletrônico? e receberia, da estrutura, com base nos registros vistos acima, a resposta Opcional.
Essa tal estrutura consiste, principalmente, na classe CpConfiguracaoBL, estendida por XxConfiguracaoBL, onde Xx é a sigla do módulo. O método buscaSituacao()...
Para fazer uma pergunta setaria o filtro... A resposta é uma situação...
podePorConfiguracao, etc...
Exemplo: Diretor do Foro, campos desconsiderados
Ex.: designação.preAtendente
Desempate... Comparator...