Olá, pessoal! Tudo certo?
Por característica, o Oracle APEX não gera nenhum arquivo compilado para suas aplicações. Com isso, nos vem a pergunta: onde e como o APEX guarda os códigos das aplicações?
Simples, metadados! Sim, nada mais simples que cada atributo de cada processo, página, fluxo, validações etc. serem guardados em tabelas dentro do próprio banco de dados. Imagine o tamanho desse modelo relacional. É como se fosse um grande cadastro de informações de todos os objetos do ambiente – desde o mais simples, como um texto de ajuda, até o mais complexo, como uma ação dinâmica.
Durante a renderização e ao submeter cada página, o APEX lê os atributos de cada um dos objetos envolvidos e gera a página dinamicamente em tempo real ou efetua o devido processamento cadastrado. Com isso, cada alteração efetuada pelo desenvolvedor pode ser publicada imediatamente sem a necessidade de compilar ou fazer alguma parada na aplicação.
Hoje vou falar um pouco sobre como utilizar metadados, e vou demonstrar alguns exemplos de como fazer a diferença utilizando metadados.
View
O APEX disponibiliza views com informações sobre Workspace, Aplicações, Debug, Estatísticas de Acesso, Gestão de Bugs, dentre outros tipos de informação.
As principais, por exemplo:
APEX_WORKSPACES = Lista todas as workspaces da atual instalação do APEX.
APEX_APPLICATIONS = Lista todas as aplicações, independentemente da Workspace.
APEX_APPLICATION_ITEMS = Lista todos os itens globais das aplicações da atual instalação do APEX. Você pode verificar se já existe algum item global que contenha uma determinada informação antes de criar um item em alguma página.
APEX_APPLICATION_LOVS = Lista todas as LOVs de uma aplicação. Você pode verificar se alguma LOV com aquela query complexa já existe em outra aplicação.
APEX_APPLICATION_PAGES = Lista todos os itens globais das aplicações. Você pode verificar onde um determinado arquivo JavaScript está sendo importado.
APEX_APPLICATION_PAGE_ITEMS = Lista todos os itens das páginas. Aqui você pode, por exemplo, verificar quais itens da sua aplicação estão sem o atributo de ajuda preenchido.
APEX_APPLICATION_PAGE_BUTTONS = Lista todos os botões das páginas. Aqui você pode fazer uma validação de quais botões de UPDATE e INSERT estão com o atributo “HOT”.
APEX_APPLICATION_PAGE_PROC = Lista todos os processos e validações das páginas. Você pode verificar quais são as mensagens que estão cadastradas para os processos das páginas.
APEX_APPLICATION_PAGE_DA_ACTS = Lista todos os códigos das ações dinâmicas por página. Você pode criar um monitoramento para verificar se algum desenvolvedor colocou código malicioso em um ação dinâmica.
APEX_APPLICATION_PAGE_IR = Lista todos os relatórios interativos das páginas. Aqui você pode ver a query de cada relatório interativo; isso pode te ajudar a mapear determinados campos e tabelas que estão sendo utilizados em sua aplicação.
APEX_DEBUG_MESSAGE = Lista todas as mensagens do debug quando ele está ativado. Veja neste link o artigo sobre como utilizar o debug no Oracle APEX.
APEX_MAIL_LOG = Lista o log de envios de e-mail que foram enviados pelo Oracle APEX.
APEX_WORKSPACE_APEX_USERS = Lista todos os desenvolvedores e usuários cadastrados no ambiente. Aqui você pode verificar se o seu usuário tem acesso a uma determinada workspace.
Existem inúmeras views que listam os mais diversos tipos de informações do ambiente, categorizados por workspace e aplicação.
Se você quer saber mais sobre o significado de outras views, selecione uma aplicação e vá em: Utilities > Application Express Views.
Conclusão
É muito importante conhecer metadados do Oracle APEX. Esse conhecimento pode facilitar, e muito, o desenvolvimento, além de possibilitar a geração de diversos tipos de relatórios para verificação de padrões. Você também pode monitorar o desenvolvimento de suas aplicações.
Para acessar a aplicação demo da nossa série de artigos, utilize este link.
- Usuário: demo
- Senha: imasters