Recentemente, fiquei surpreso ao descobrir que não há tutoriais sensatos sobre o Oracle Application Express (também conhecido como APEX, apex, mas que não devem ser confundidos com a linguagem do apex usada no Salesforce) na natureza.
Esta não é a tecnologia mais comum, é claro, mas, no entanto, bastante procurada. Existem dezenas de blogs sobre ápice (principalmente em inglês), algumas milhares de perguntas sobre Stackoveflow, uma seção especial sobre ápice em fóruns oficiais do oráculo, o próprio ápice existe há 15 anos e vem se desenvolvendo o tempo todo. Eu tinha certeza de que havia muitos bons tutoriais. Mas não!
Imediatamente, tive uma idéia brilhante para preencher essa lacuna.
Sumário
Por que os tutoriais existentes são ruins
Informações Introdutórias
Visão geral do IDE
Criador de aplicativos
Página de aplicação
Propriedades da aplicação
Componentes compartilhados
Designer de página
Workshop SQL
Navegador de objetos
Comandos SQL
Por que os tutoriais existentes são ruins
Vou explicar um pouco porque acho que os tutoriais existentes são ruins. O Apex não é uma linguagem de programação, é uma ferramenta de desenvolvimento de nível muito alto, o análogo ideológico mais próximo do qual eu chamaria de MS Access. Consequentemente, a maior parte do desenvolvimento no ápice consiste em trabalhar com a interface da web desse ambiente: clicar em botões, seguir links, preencher campos com os nomes dos componentes, escolher valores nas listas e assim por diante. O que faz um tutorial típico? Ele mostra capturas de tela dessas mesmas telas com legendas "clique aqui". Ao mesmo tempo, o próprio IDE é bastante conveniente e compreensível, quase todos os elementos são fornecidos com explicações de referência, além de ajuda interna. Como resultado, se você precisar explicar ao usuário como criar um aplicativo, haverá uma captura de tela grande no tutorial explicando como clicar no botão "Criar um novo aplicativo". Aqui, dê uma olhada no tutorial oficial do oracle:

Eles também explicariam com capturas de tela que um "clique" é um único clique no botão esquerdo de um manipulador do tipo mouse.
Obviamente, também há informações úteis nesses tutoriais, mas são minúsculas. 80% dos tutoriais consistem nessas capturas de tela e, por experiência própria, posso dizer que uma pessoa que ainda não leu nenhum tutorial, encontrará independentemente como criar um aplicativo, adicionar uma página, colocar um relatório nele e assim por diante. E então ele precisará organizar uma interação mais ou menos não trivial de vários elementos do ápice, e acontece que essa questão quase não é abordada pelo tutorial. Deixe-me fazer uma analogia: você está apenas aprendendo a programar, estudou variáveis, matrizes, loops, condições e conseguiu uma tarefa, na estrutura da qual você precisa classificar a matriz. Classificar uma matriz de alguma forma é bastante simples, mas assim que a tarefa se torna complicada “classificando uma matriz grande rapidamente ”, verifica-se que seu conhecimento não é suficiente. Pesquisando, pesquisando Stackoverflow e fóruns, você encontrará um algoritmo de classificação rápida. Obviamente, alguém reinventará esse algoritmo mais cedo ou mais tarde, mas uma maneira mais eficaz seria ler imediatamente um livro com uma análise de algoritmos típicos. E esse conjunto de "algoritmos típicos" para o ápice geralmente não é encontrado, e o mesmo método de cutucadas científicas, mecanismos de pesquisa, fóruns e Stackoverflow (e, espero, este tutorial) vem em socorro.
Supõe-se que o leitor esteja familiarizado com a versão do Oracle Database de pelo menos 11º, SQL, PL / SQL, e especialmente com o que EXECUTE IMMEDIATE
e como ele funciona.
O apex IDE mudou significativamente durante a transição da versão 4.2 para 5.0 (o lançamento ocorreu há apenas 4 anos, em março de 2015). Desde então, o IDE mudou pouco, mas às vezes novos recursos são adicionados. Vou fazer capturas de tela em apex.oracle.com, onde a versão 19.1 está instalada agora, mas se você tiver uma versão anterior em algum lugar (5.x, 18.x), poderá encontrar facilmente o elemento que precisa, a menos que ele apareça em uma versão posterior à sua.
Começarei analisando as seções mais usadas do IDE. Também mostrarei algumas capturas de tela. Onde sem eles, já que tudo aqui é feito de componentes visuais. Mas não haverá tantos deles quanto nos tutoriais ruins, e basicamente eles estarão nos capítulos iniciais, e então apenas indicarei o nome da seção IDE, que contém as coisas necessárias. Chamarei sua atenção imediatamente para o fato de que essa é apenas a primeira introdução ao IDE. Informações mais detalhadas sobre quando clicar em qual botão e onde examinar o que será fornecido mais tarde quando passar para tópicos específicos.
Vamos lá
Visão geral do IDE
A tela inicial, que você verá imediatamente após entrar no IDE:

Os principais elementos aqui são 4 grandes imagens clicáveis:
- "App Builder": este é, de fato, o local onde você pode criar aplicativos e gastar até 99% do tempo.
- "SQL Workshop": um substituto para o IDE comum para trabalhar com o Oracle DBMS. Lá você pode ver objetos de banco de dados (tabelas, índices, pacotes, etc.) e executar consultas SQL. Se você tiver a oportunidade de fazer tudo isso através do IDE "regular" (como Oracle SQL Developer ou PL / SQL Developer), faça-o através deles. No entanto, esta seção também pode ser útil, e também falarei sobre isso.
- "Desenvolvimento de equipe": ferramentas para desenvolvimento de equipe. Honestamente, nunca vi alguém usá-los na prática (inclusive eu). Por uma questão de curiosidade, eu também procurei lá e não chamaria essa seção de completamente inútil, embora realmente queira.
- "App Gallery": uma seção com aplicativos de demonstração. Quando ele apareceu, eu já conhecia o ápice muito bem e quase não olhei lá, mas para iniciantes, acho que será útil. Existem muitos aplicativos despretensiosos diferentes. Usando o exemplo deles, você pode aprender como usar determinados recursos.
No menu na parte superior da página, os mesmos 4 pontos são duplicados.
Além disso, existem várias outras coisas inúteis: abaixo, há uma certa quantidade de informações estatísticas (como os aplicativos editados com mais frequência ou os desenvolvedores mais ativos). E há uma coluna à direita, onde também existem algumas estatísticas e links adicionais.
Vamos dar uma olhada no App Builder e no SQL Workshop em mais detalhes.
Criador de aplicativos
Esta página é mais ou menos assim:

Os principais elementos desta página: quatro botões grandes, como na página anterior, uma lista de aplicativos existentes, a coluna da direita com uma lista de aplicativos recentemente modificados e ações adicionais. Quatro botões são:
- "Criar": crie um novo aplicativo. A mesma função é duplicada um pouco mais abaixo (o botão azul "Criar" acima do relatório com a lista de aplicativos). O botão inicia o assistente de criação de aplicativos.
- "Importar": importa o aplicativo. O Apex permite transferir aplicativos de um servidor para outro na forma de arquivos de texto (que, em essência, são longos scripts PL / SQL com chamadas para funções para criar todos os elementos do aplicativo).
- "Painel": uma pequena coleção útil de estatísticas de desenvolvimento de aplicativos. Quem, quando, onde, quantas mudanças foram feitas. Eu acho que nem seu chefe estará interessado em olhar para lá.
- "Utilitários da área de trabalho": um conjunto de ferramentas adicionais para gerenciar o aplicativo. Honestamente, eu quase nunca olho para lá também.
Também quero chamar sua atenção para um botão tão pequeno no painel de relatórios:

Ela alterna a visualização do relatório da imagem acima (com as "imagens" dos aplicativos) para o relatório na forma de uma tabela:

Relatórios semelhantes são encontrados em outras seções do IDE. Eu prefiro uma exibição tabular, para que mais todas as capturas de tela estejam com ela.
Página de aplicação
Depois de criar um aplicativo ou abrir um existente, você verá a seguinte página (muito semelhante à anterior na estrutura):

Você chegará a esta página com muita frequência e há muitas funções úteis aqui. Botões grandes com fotos:
- "Executar aplicativo": esse botão inicia seu aplicativo. Ele será aberto em uma janela separada. Por padrão, ele está na janela e não na guia do navegador, mas esse comportamento está configurado (mais sobre isso mais tarde).
- "Objetos de suporte": esta seção aborda problemas relacionados à instalação, atualização e desinstalação de aplicativos. Geralmente eles são pouco utilizados.
- "Componentes compartilhados": eu diria que esta é a primeira ou a segunda seção mais importante do IDE (outra é o editor de páginas). Se você se desenvolver muito no ápice, logo notará que aprendeu a estrutura desta seção como "Pai Nosso".
- "Utilitários": outro conjunto de (poucas) funções auxiliares úteis.
- "Exportar / Importar": permite exportar ou importar aplicativos ou partes do aplicativo.
E dois botões adicionais, cercados por uma moldura laranja na captura de tela:
- Botão "Editar propriedades do aplicativo". Ao clicar nele, você será direcionado para a página de configurações de propriedades do aplicativo. Você pode não visitar esta seção com frequência, mas é muito importante porque armazena as configurações do aplicativo, das quais muitas coisas dependem. Além disso, se eu mencionar em algum lugar "propriedades do aplicativo" - procure-as nesta seção.
- Pela primeira vez, um recurso útil no painel direito é "Excluir este aplicativo". Embora muitas funções no ápice sejam duplicadas em lugares diferentes, essa função está apenas aqui e é difícil encontrá-la pela primeira vez sem hábito.
Propriedades da aplicação
Primeiro de tudo, é interessante organizar o acesso a um grande número de configurações.

As configurações são agrupadas em 4 grupos (consulte o quadro superior) e cada grupo possui vários outros subgrupos (consulte o quadro inferior), cada grupo tem seu próprio nome. Da mesma forma, as configurações são organizadas em muitos lugares no ápice. No futuro, indicarei simplesmente o caminho para a configuração desejada da seguinte maneira: "Propriedades do aplicativo" → "Definição" → "Nome" → "Versão".
Além disso, se você observar as trilhas na parte superior da página, verá que ele diz "Editar definição de aplicativo", embora você pareça entrar em "Propriedades do aplicativo". Apenas ignore.
Componentes compartilhados
Componentes compartilhados é o nosso tudo. Esta seção é um ponto intermediário no caminho para componentes de aplicativos específicos. Vou mostrar aqui uma visão geral, apenas para que você possa imaginar onde está:

Não há quase nenhuma bobagem aqui. Você pode precisar de cada seção de uma maneira ou de outra. Os nomes das seções falam por si, não há quase nada a acrescentar:
- "Application Logic": controles lógicos da aplicação.
- "Segurança": problemas de segurança e controle de acesso para todo o aplicativo e componentes individuais, dependendo das funções do usuário.
- "Outros componentes": esses são "todos os outros componentes". De uma maneira boa, esta seção deve ser a última, mas por alguma razão está aqui. E eu transferiria o subitem "Lista de valores" em geral para a lógica de aplicativos.
- "Navegação": componentes de aplicativos para navegação.
- "Interface do usuário": personalize a aparência do aplicativo, estilos, etc.
- "Arquivos": seção para arquivos (por exemplo, css ou js). É indispensável se você não tiver acesso ao sistema operacional e ainda for conveniente, mesmo se houver acesso.
- "Fontes de dados": trabalhe com fontes de dados (para carregar e descarregar).
- "Relatórios": relatórios, obviamente.
- "Globalização": seção para traduzir aplicativos para outros idiomas.
Chorando Yaroslavna sobre a tradução de aplicações no ápiceA tradução dos aplicativos no ápice foi péssima (honestamente, tentei descobrir como piorá-lo - e não consegui) e não há evidências de que ele se tornará melhor no futuro.
Terrível em termos de arquitetura e facilidade de trabalho na tradução. Só posso dizer aos desenvolvedores: “Obrigado pelo menos por nenhum erro” (mas veja como: as traduções são organizadas de modo que alguns recursos de seu trabalho não sejam muito diferentes dos erros).
Temos que viver com isso.
Designer de página
Designer de página - editor de página. Este é provavelmente o principal local do IDE. Aqui você criará com o que o usuário interage diretamente - as páginas do aplicativo. É apenas um monte de recursos, quase como no cockpit. Para acessar o Page Designer, você precisa clicar no link com o nome da página na página do aplicativo (desculpe pela tautologia). Na captura de tela, os principais componentes do editor são destacados com quadros coloridos:

Barra de botões na parte superior (em uma moldura vermelha):
- O campo para inserir o número da página, as setas para cima e para baixo e o botão "Ir": navegar pelas páginas do aplicativo. Cada página tem um número, aqui você pode inserir o número da página desejada ou usar as setas para ir para a próxima / anterior, ou clicar no botão mais à esquerda e selecionar uma página da lista na janela modal exibida.
- Botão com trava: permite bloquear a página contra alterações de outros desenvolvedores.
- Desfazer / Refazer Botões
- Dois botões com acesso a funções auxiliares.
- Link do botão para Componentes Compartilhados. Útil, porque você tem que ir e voltar o tempo todo. (Eu mesmo, no entanto, prefiro apenas manter os componentes compartilhados em uma guia separada - isso é ainda mais rápido).
- Botão Salvar: salva as alterações na página.
- Botão "Executar": "inicia" a página, ou seja, você vê da mesma forma que o usuário vê posteriormente.
À esquerda (em uma moldura laranja), há um painel com componentes de página. Existem 4 favoritos neste painel:
- "Renderização": mostra em quais componentes a página consiste, em quais processos são executados durante a renderização;
- "Ações dinâmicas": ações executadas no cliente (por exemplo, manipuladores de eventos javascript);
- "Processamento": processos do servidor associados à página;
- "Componentes compartilhados da página": para uma transição direta para os componentes comuns usados na página (os mesmos componentes compartilhados).
No centro (em uma moldura verde) - um painel contendo muitas informações heterogêneas. Na parte superior do painel, existem 5 guias nas quais você pode encontrar:
- "Layout": mostra a disposição aproximada dos componentes na página;
- "Visualização de componentes": em geral, é uma relíquia do passado (o editor de páginas parecia semelhante na versão 4 do ápice, na versão 5.0 ou 5.1, essa "visualização" antiga recebeu o status obsoleto, embora tenha sido usado em paralelo com o novo, mas agora permanece apenas sua sombra pálida);
- "Mensagens": haverá mensagens de erro (por exemplo, uma mensagem informando que algum campo obrigatório não foi preenchido);
- "Pesquisa na página": pesquisa na página. Procura a string desejada em todos os lugares onde você pode inserir algo (no código, nos textos das mensagens, nos nomes dos componentes, etc.);
- "Ajuda": ajuda. Bastante sensato, embora nem sempre. Você pode selecionar uma propriedade de componente no painel esquerdo e ver sua descrição.
O painel central também possui outro painel adicional abaixo, que pode ser usado para adicionar rapidamente componentes à página.
À direita (em uma moldura azul) está o painel de propriedades. Tudo é simples aqui - mostra as propriedades do componente atualmente selecionado. Algumas das propriedades dos componentes são simples: texto, número, valor da lista. Mas as propriedades mais complexas dos componentes possuem recursos adicionais de interface que facilitam bastante a vida ao trabalhar com eles.
Uma propriedade que é um texto grande. Por exemplo, código em PL / SQL ou JavaScript. É assim:

Você pode escrever código diretamente neste campo ou clicar no botão na parte superior da página e, em seguida, uma janela modal é aberta com um editor de código onde estão disponíveis os realces de sintaxe (para SQL, JavaScript, CSS, HTML), pesquisa de texto e outras funções do editor.
Propriedade - componente compartilhado. Se a propriedade for um dos componentes do aplicativo (Componente Compartilhado), você poderá selecionar um componente específico da lista e clicar no botão à direita da lista.

Você pode ir para a seção Componentes compartilhados diretamente para as propriedades do componente selecionado (para, por exemplo, alterá-las).
Se o valor da sua propriedade estiver selecionado na lista, algumas vezes, à direita, você poderá ver outro botão adicional:

É chamado de "Escolha rápida" e é usado quando há muitas opções. "Escolha rápida" fornece um acesso um pouco mais rápido a um pequeno subconjunto de opções - como regra, existem as opções mais usadas. As "opções comumente usadas" aqui não são as suas, mas "em geral". Esta é uma lista fixa e não muda com o tempo.
Workshop SQL
Como eu já disse, o SQL Workshop substitui o IDE comum (se por algum motivo você não tiver a oportunidade de usá-lo).

É composto por 5 seções:
- "Pesquisador de Objetos": um navegador de objetos de banco de dados (tabelas, pacotes, funções e procedimentos, índices, sequências, etc.);
- "SQL Commands": uma seção onde você pode executar qualquer consulta SQL ou código PL / SQL;
- "Scripts SQL": aqui você pode baixar um arquivo de texto com um script e executá-lo;
- "Utilitários": vários recursos adicionais relacionados ao banco de dados: por exemplo, existe um construtor de consultas gráficas (mas não apenas);
- "Serviços RESTful": criando serviços REST. O Apex também possui REST (e por um longo tempo, eles já estavam na versão 4.2)!
Navegador de objetos

Há tudo o que você precisa para trabalhar com objetos de banco de dados: criando, alterando, excluindo, visualizando as propriedades de objetos, inserindo dados em tabelas - por tudo isso, esta seção possui uma interface gráfica. No canto superior esquerdo da lista suspensa, você pode selecionar o tipo de objetos (as tabelas são mostradas na captura de tela); no canto superior direito, você pode selecionar o esquema cujos objetos você pode ver. Na lista de esquemas disponíveis, você não verá todos os esquemas de uma só vez - isso é normal. Como tornar os esquemas visíveis no ápice, eu lhe direi quando chegar à administração.
Além disso, não vejo muito sentido em descrever esta seção com mais detalhes: se você sabe o que significa a frase "adicionar uma coluna à tabela", pode adivinhar facilmente quando precisa clicar no botão "Adicionar coluna" e o que pode esperar em seguida.
Comandos SQL
Nesta seção, você pode executar consultas SQL e código PL / SQL.

Em termos de recursos, esta seção é quase tão boa quanto os ambientes de desenvolvimento completos. A única coisa que falta é a conclusão do código e o destaque da sintaxe (a propósito, há o realce da sintaxe no Pesquisador de Objetos). Recursos disponíveis:
- Execução de SQL, inclusive com parâmetros (uma janela separada aparecerá para a inserção de valores de parâmetros);
- Execução de PL / SQL com a capacidade de gerar texto através de dbms_output (a saída aparecerá na janela abaixo);
- execução apenas da parte selecionada do código (selecione o texto com o mouse e, em seguida, "Executar");
- visualizando o plano de solicitação;
- salvar solicitações.
***
Isso, como você entende, está longe de tudo o que está no IDE do APEX, mas, neste estágio, não faz sentido ir além. Os elementos individuais da interface do ápice serão discutidos em mais detalhes em tópicos diretamente relacionados a eles.
PS Ainda não posso dizer que pensei claramente na estrutura deste tutorial; talvez no futuro adicionarei mais capturas de tela e descrições a este artigo ou descreva recursos adicionais em outros artigos. Resta descobrir como notificar as partes interessadas sobre edições significativas em artigos antigos.