O sistema foi desenvolvido em duas partes: código na forma de stored procedures 6.1.5 e scripts PHP.
Não foi utilizada orientação a objetos. Ao invés disso, foi criada uma estrutura de diretórios e um conjunto de scripts que realizavam ações bem simples.
Estrutura de diretórios:
- ajuda:
- Contém as páginas de ajuda.
- alterar:
- Contém scripts que executam ações como: salvar, alterar, remover dados, além de ações que alteram o estado de uma solicitação: aceitar, rejeitar, etc.
- documentação:
- Documentação do sistema, incluindo o código que está no banco de dados.
- buscas:
- As telas personalizadas de busca. Cada listagem possui uma tela de busca.
- detalhes
- Telas com informações detalhadas sobre pessoas, solicitações e projetos.
- imagens
- Figuras do sistema.
- listagens
- Telas de listagens de pessoas, solicitações e projetos.
- misc
- Tela de login, controle de acessos, além do javascript de ordenação.
- novos
- Telas de cadastro de novas pessoas e solicitações.
- relatórios
- Telas com os relatórios.
- utils
- Alguns scripts com funções de apoio.
É possível notar que esta divisão hierárquica facilitava bastante a localização dos scripts que compunham o sistema. Por exemplo: o script que apaga uma solicitação está localizado no diretório alterar, o que exibe uma lista com as solicitações, por sua vez, deve estar no diretório listagens, e assim por diante.
Além dos scripts php temos uma série de stored procedures, triggers e views que estão no Sybase.
As justificativas para o uso de stored procedures foram:
- Transações
- Permitem a criação de transações. Assim, ações que envolvem vários passos podem ser desfeitas caso um erro ocorra em algum deles.
- Concorrência
- Utilizando um esquema de ``locks''3 corretos, chamadas concorrentes às stored procedures são gerenciadas pelo Sybase.
- Isolamento
- O cliente não executa ações diretamente sobre as tabelas, ao invés disso, executa stored procedures que fazem este serviço.
Desta maneira, as tabelas podem ser alteradas sem que o cliente altere seu código. Além disso, como o cliente não pode alterar as
tabelas diretamente, podemos garantir maior consistência dos dados bastando, para isso, codificar corretamente as stored procedures.
A validação dos dados foi feita totalmente no Sybase utilizando constraints e triggers.
Esta abordagem foi utilizada por exigir menos codificação no cliente4 e para permitir que mesmo outros sistemas usem as stored procedures do MetaNaeg, sem que os dados sejam corrompidos.
- ... ``locks''3
- Os ``locks'' são feitos nas tabelas que as stored procedures manipulam.
- ... cliente4
- Aplicação que interage com as stored procedures.
Fabio Pisaruk
2004-12-07