Recientemente, me sorprendió descubrir que resulta que no hay tutoriales razonables sobre Oracle Application Express (también conocido como APEX, apex, pero que no debe confundirse con el lenguaje apex utilizado en Salesforce) en la naturaleza.
Esta no es la tecnología más común, por supuesto, pero, sin embargo, tiene mucha demanda. Hay docenas de blogs sobre apex (en su mayoría en inglés), un par de miles de preguntas sobre Stackoveflow, una sección especial sobre apex en foros oficiales en el oráculo, el apex ha existido durante 15 años y se ha estado desarrollando todo el tiempo. Estaba seguro de que había muchos buenos tutoriales. Pero no!
Inmediatamente se me ocurrió una idea brillante para llenar este vacío.
Tabla de contenidos
Por qué los tutoriales existentes son malos
Información introductoria
Resumen del IDE
Creador de aplicaciones
Página de solicitud
Propiedades de la aplicación
Componentes compartidos
Diseñador de página
Taller SQL
Buscador de objetos
Comandos SQL
Por qué los tutoriales existentes son malos
Explicaré un poco por qué creo que los tutoriales existentes son malos. Apex no es un lenguaje de programación, es una herramienta de desarrollo de muy alto nivel, el análogo ideológico más cercano al que llamaría MS Access. En consecuencia, la mayor parte del desarrollo en el ápice consiste en trabajar con la interfaz web de este entorno: hacer clic en los botones, seguir los enlaces, completar los campos con los nombres de los componentes, elegir valores de las listas, etc. ¿Qué hace un tutorial típico? Muestra capturas de pantalla de estas mismas pantallas con subtítulos "haga clic allí". Al mismo tiempo, el IDE en sí es bastante conveniente y comprensible, casi todos los elementos se proporcionan con explicaciones de referencia, hay ayuda incorporada. Como resultado, si necesita explicarle al usuario cómo crear una aplicación, habrá una gran captura de pantalla en el tutorial que explica cómo hacer clic en el botón "Crear una nueva aplicación". Aquí, eche un vistazo al tutorial oficial de Oracle:

También explicarían con capturas de pantalla que un "clic" es un solo clic en el botón izquierdo de un manipulador de tipo mouse.
Por supuesto, también hay información útil en dichos tutoriales, pero allí es muy pequeña. Alrededor del 80 por ciento de los tutoriales consisten en tales capturas de pantalla, y según mi propia experiencia, puedo decir que una persona que no ha leído ninguno de los tutoriales encontrará independientemente cómo crear una aplicación, agregar una página, colocar un informe, etc. Y luego tendrá que organizar una interacción más o menos no trivial de varios elementos del ápice, y resulta que esta pregunta casi no está cubierta por el tutorial. Permíteme darte una analogía: estás aprendiendo a programar, has estudiado variables, matrices, bucles, condiciones y tienes una tarea, en cuyo marco debes ordenar la matriz. Ordenar una matriz de alguna manera es bastante simple, pero tan pronto como la tarea se complica al "ordenar una matriz grande rápidamente ", resulta que su conocimiento no es suficiente. Buscando en Google, cavando Stackoverflow y foros, encontrará un algoritmo de clasificación rápida. Por supuesto, alguien mismo reinventará este algoritmo tarde o temprano, pero una forma más efectiva sería leer inmediatamente un libro con un análisis de algoritmos típicos. Y tal conjunto de "algoritmos típicos" para el ápice generalmente no se encuentra en ninguna parte, y el mismo método de búsqueda científica, motores de búsqueda, foros y Stackoverflow (y, espero, este tutorial) vienen al rescate.
Se supone que el lector está familiarizado con la versión de Oracle Database de al menos 11th, SQL, PL / SQL, y especialmente con qué es EXECUTE IMMEDIATE
y cómo funciona.
El IDE del ápice cambió significativamente durante la transición de la versión 4.2 a la 5.0 (el lanzamiento fue hace solo 4 años, en marzo de 2015). Desde entonces, el IDE ha cambiado poco, pero a veces se agregan nuevas características. Tomaré capturas de pantalla en apex.oracle.com, donde la versión 19.1 está instalada ahora, pero si tiene una versión anterior en algún lugar (5.x, 18.x), puede encontrar fácilmente el elemento que necesita, a menos que aparezca en una versión posterior a la tuya.
Comenzaré revisando las secciones más utilizadas del IDE. También mostraré algunas capturas de pantalla. Donde sin ellos, ya que todo aquí está hecho de componentes visuales. Pero no habrá tantos como en los malos tutoriales, y básicamente estarán en los capítulos iniciales, y luego solo indicaré el nombre de la sección IDE, que contiene las cosas necesarias. Inmediatamente llamaré su atención sobre el hecho de que esta es solo la primera vez que conoce el IDE. Información más detallada sobre cuándo hacer clic en qué botón y dónde mirar lo que se proporcionará más adelante cuando avancemos a temas específicos.
Vamos
Resumen del IDE
La pantalla de inicio, que verá inmediatamente después de ingresar el IDE:

Los elementos principales aquí son 4 imágenes cliqueables grandes:
- "App Builder": de hecho, este es el lugar donde puede crear aplicaciones y donde pasará hasta el 99% del tiempo.
- "Taller de SQL": un sustituto del IDE regular para trabajar con Oracle DBMS. Allí puede ver los objetos de la base de datos (tablas, índices, paquetes, etc.) y ejecutar consultas SQL. Si tiene la oportunidad de hacer todo esto a través del IDE "regular" (como Oracle SQL Developer o PL / SQL Developer), hágalo a través de ellos. Sin embargo, esta sección también puede ser útil, y también hablaré sobre ello.
- "Desarrollo del equipo": herramientas para el desarrollo del equipo. Honestamente, nunca he visto a nadie usarlos en la práctica (incluyéndome a mí). En aras de la curiosidad, también miré allí y no llamaría a esta sección completamente inútil, aunque realmente quiero.
- "Galería de aplicaciones": una sección con aplicaciones de demostración. Cuando apareció, ya conocía el vértice bastante bien y casi no miraba allí, pero para los principiantes, creo que será útil. Hay muchas aplicaciones diferentes sin pretensiones, con su ejemplo puede aprender a usar ciertas funciones.
En el menú en la parte superior de la página, se duplican los mismos 4 puntos.
Además, hay varias cosas más inútiles: a continuación hay una cierta cantidad de información estadística (como las aplicaciones editadas con mayor frecuencia o los desarrolladores más activos). Y hay una columna a la derecha, donde también hay algunas estadísticas y enlaces adicionales.
Echemos un vistazo a App Builder y SQL Workshop con más detalle.
Creador de aplicaciones
Esta página se parece a esto:

Los elementos principales de esta página: cuatro botones grandes como en la página anterior, una lista de aplicaciones existentes, la columna derecha con una lista de aplicaciones modificadas recientemente y acciones adicionales. Cuatro botones son:
- "Crear": crea una nueva aplicación. La misma función se duplica un poco más abajo (el botón azul "Crear" encima del informe con la lista de aplicaciones). El botón inicia el asistente de creación de aplicaciones.
- "Importar": importa la aplicación. Apex le permite transferir aplicaciones de un servidor a otro en forma de archivos de texto (que, en esencia, son largos scripts PL / SQL con llamadas a funciones para crear todos los elementos de la aplicación).
- "Panel de control": una pequeña colección útil de estadísticas de desarrollo de aplicaciones. Quién, cuándo, dónde, cuántos cambios realizados. Creo que incluso tu jefe no estará interesado en mirar allí.
- "Workspace Utilities": un conjunto de herramientas adicionales para administrar la aplicación. Honestamente, casi nunca miro allí tampoco.
También quiero llamar su atención sobre un botón tan pequeño en el panel de informes:

Cambia la vista del informe de la de la captura de pantalla anterior (con las "imágenes" de las aplicaciones) al informe en forma de tabla:

Se encuentran informes similares en otras secciones del IDE. Prefiero una vista tabular, por lo que todas las capturas de pantalla estarán incluidas.
Página de solicitud
Después de crear una aplicación o abrir una existente, verá la siguiente página (muy similar a la anterior en estructura):

Llegará a esta página muy a menudo, y aquí hay muchas funciones útiles. Botones grandes con imágenes:
- "Ejecutar aplicación": este botón inicia su aplicación. Se abrirá en una ventana separada. De manera predeterminada, está en la ventana y no en la pestaña del navegador, pero este comportamiento está configurado (más sobre esto más adelante).
- "Objetos de soporte": esta sección aborda problemas relacionados con la instalación, actualización y desinstalación de aplicaciones. Por lo general, apenas se usan.
- "Componentes compartidos": diría que esta es la primera o segunda sección más importante del IDE (otra es el editor de páginas). Si desarrollas mucho en el ápice, muy pronto notarás que has aprendido la estructura de esta sección como "Nuestro Padre".
- "Utilidades": otro conjunto de (pocas) funciones auxiliares útiles.
- "Exportar / Importar": le permite exportar o importar aplicaciones o partes de la aplicación.
Y dos botones adicionales, que están rodeados por un marco naranja en la captura de pantalla:
- Botón "Editar propiedades de la aplicación". Al hacer clic en él, accederá a la página de configuración de propiedades de la aplicación. Es posible que no visite esta sección con frecuencia, pero es muy importante porque almacena la configuración de la aplicación, de la que dependen muchas cosas. Además, si menciono en alguna parte las "propiedades de la aplicación", búsquelas en esta sección.
- Por una vez, una característica útil en el panel derecho es "Eliminar esta aplicación". Si bien muchas funciones en el vértice están duplicadas en diferentes lugares, esta función solo está aquí, y es difícil encontrarla por primera vez sin ningún hábito.
Propiedades de la aplicación
En primer lugar, es interesante organizar el acceso a una gran cantidad de configuraciones.

Los ajustes se agrupan en 4 grupos (vea el cuadro superior), y cada grupo tiene varios subgrupos más (vea el cuadro inferior), cada grupo tiene su propio nombre. Del mismo modo, la configuración se organiza en muchos lugares en el vértice. En el futuro, simplemente indicaré la ruta a la configuración deseada de esta manera: "Propiedades de la aplicación" → "Definición" → "Nombre" → "Versión".
Además, si observa las migas de pan en la parte superior de la página, verá que dice "Editar definición de aplicación", aunque parecería entrar en "Propiedades de aplicación". Solo ignóralo.
Componentes compartidos
Componentes compartidos es nuestro todo. Esta sección es un punto intermedio en el camino hacia componentes específicos de la aplicación. Mostraré aquí una vista general, para que pueda imaginar dónde está:

Casi no hay tonterías aquí. Es posible que necesite cada sección de una forma u otra. Los nombres de las secciones hablan por sí mismos, no hay casi nada que agregar:
- "Lógica de aplicación": controles de lógica de aplicación.
- "Seguridad": problemas de seguridad y control de acceso para toda la aplicación y para componentes individuales dependiendo de los roles de los usuarios.
- "Otros componentes": estos son "todos los demás componentes". En el buen sentido, esta sección debería ser la última, pero por alguna razón está aquí. Y transferiría el subpunto "Lista de valores" en general a Application Logic.
- "Navegación": componentes de la aplicación para la navegación.
- "Interfaz de usuario": personalice la apariencia de la aplicación, estilos, etc.
- "Archivos": sección para archivos (por ejemplo, css o js). Es indispensable si no tiene acceso al sistema operativo, y sigue siendo conveniente, incluso si hay acceso.
- "Fuentes de datos": trabajar con fuentes de datos (para carga y descarga).
- "Informes": informes, obviamente.
- "Globalización": sección para traducir aplicaciones a otros idiomas.
Llorando Yaroslavna sobre la traducción de aplicaciones en el ápiceLa traducción de las aplicaciones en el ápice se hizo horrible (sinceramente, traté de descubrir cómo empeorar las cosas, y no pude), y no hay evidencia de que mejorará en el futuro.
Terrible en términos de arquitectura y facilidad de trabajo en la traducción. Solo puedo decirles a los desarrolladores: "Gracias por al menos no tener errores" (pero así es como deben verse: las traducciones están organizadas para que algunas características de su trabajo no sean muy diferentes de los errores).
Tenemos que vivir con eso.
Diseñador de página
Diseñador de página: editor de página. Este es probablemente el lugar principal en el IDE. Aquí creará con lo que el usuario interactúa directamente: las páginas de la aplicación. Es solo un montón de características, casi como en la cabina. Para acceder al Diseñador de páginas, debe hacer clic en el enlace con el nombre de la página en la página de la aplicación (perdón por la tautología). En la captura de pantalla, los componentes principales del editor se resaltan con marcos coloridos:

Barra de botones en la parte superior (en un marco rojo):
- El campo para ingresar el número de página, las flechas hacia arriba y hacia abajo y el botón "Ir": navegación a través de las páginas de la aplicación. Cada página tiene un número, aquí puede ingresar el número de la página deseada, o usar las flechas para ir a la siguiente / anterior, o hacer clic en el botón de la izquierda y seleccionar una página de la lista en la ventana modal que aparece.
- Botón con bloqueo: le permite bloquear la página de los cambios de otros desarrolladores.
- Botones Deshacer / Rehacer
- Dos botones con acceso a funciones auxiliares.
- Enlace de botón a Componentes compartidos. Útil, porque tienes que ir y venir todo el tiempo. (Sin embargo, yo mismo prefiero mantener los Componentes Compartidos en una pestaña separada, esto es aún más rápido).
- Botón Guardar: guarda los cambios en la página.
- Botón "Ejecutar": "inicia" la página, es decir, la ve como el usuario la ve más tarde.
A la izquierda (en un marco naranja) hay un panel con componentes de página. Hay 4 marcadores en este panel:
- "Representación": muestra en qué componentes se compone la página, qué procesos se realizan durante la representación;
- "Acciones dinámicas": acciones realizadas en el cliente (por ejemplo, controladores de eventos javascript);
- "Procesando": procesos del servidor asociados con la página;
- "Componentes compartidos de página": para una transición directa a los componentes comunes utilizados en la página (los mismos Componentes compartidos).
En el centro (en un marco verde): un panel que contiene mucha información heterogénea. En la parte superior del panel hay 5 pestañas en las que puedes encontrar:
- "Diseño": muestra la disposición aproximada de los componentes en la página;
- "Vista de componentes": en general, esta es una reliquia del pasado (el editor de páginas parecía similar en la versión 4 del ápice, en la versión 5.0 o 5.1 esta antigua "vista" recibió el estado en desuso, aunque se usó en paralelo con el nuevo, pero ahora permanece solo su pálida sombra);
- "Mensajes": habrá mensajes de error (por ejemplo, un mensaje que indica que algún campo requerido no está lleno);
- "Búsqueda de página": busca en la página. Busca la cadena deseada en todos los lugares donde puede ingresar algo (en código, en mensajes de texto, en los nombres de componentes, etc.);
- "Ayuda": ayuda. Bastante sensato, aunque no siempre. Puede seleccionar una propiedad de componente en el panel izquierdo y ver su descripción.
El panel central también tiene otro panel adicional a continuación, que se puede usar para agregar rápidamente componentes a la página.
A la derecha (en un marco azul) está el panel de propiedades. Aquí todo es simple: muestra las propiedades del componente seleccionado actualmente. Algunas de las propiedades de los componentes son simples: texto, número, valor de la lista. Pero las propiedades más complejas de los componentes tienen características de interfaz adicionales que facilitan enormemente la vida cuando se trabaja con ellos.
Una propiedad que es un texto grande. Por ejemplo, código en PL / SQL o JavaScript. Se ve así:

Puede escribir código directamente en este campo, o puede hacer clic en el botón en la parte superior de la página, y luego se abre una ventana modal con un editor de código donde está disponible el resaltado de sintaxis (para SQL, JavaScript, CSS, HTML), búsqueda de texto y otras funciones del editor.
Propiedad - Componente compartido. Si la propiedad es uno de los componentes de la aplicación (Componente compartido), puede seleccionar un componente específico de la lista y hacer clic en el botón a la derecha de la lista

Puede pasar a la sección Componentes compartidos directamente a las propiedades del componente seleccionado (por ejemplo, para cambiarlas).
Si el valor de su propiedad se selecciona de la lista, a veces a la derecha puede ver otro botón adicional:

Se llama "Selección rápida" y se utiliza cuando hay muchas opciones. La "selección rápida" brinda un acceso un poco más rápido a un pequeño subconjunto de opciones; por regla general, existen las opciones más utilizadas. Las "opciones de uso común" aquí no son suyas, sino "en general". Esta es una lista fija y no cambia con el tiempo.
Taller SQL
Como ya dije, SQL Workshop es un sustituto del IDE regular (si por alguna razón no tiene la oportunidad de usarlo).

Consta de 5 secciones:
- "Object Browser": un navegador de objetos de base de datos (tablas, paquetes, funciones y procedimientos, índices, secuencias, etc.);
- "Comandos SQL": una sección donde puede ejecutar cualquier consulta SQL o código PL / SQL;
- "Scripts SQL": aquí puede descargar un archivo de texto con un script y ejecutarlo;
- "Utilidades": varias características adicionales relacionadas con la base de datos: por ejemplo, hay un generador gráfico de consultas (pero no solo);
- "Servicios RESTful": creación de servicios REST. ¡Apex también tiene REST (y durante mucho tiempo ya estaban en la versión 4.2)!
Buscador de objetos

Hay todo lo que necesita para trabajar con objetos de la base de datos: crear, cambiar, eliminar, ver las propiedades de los objetos, ingresar datos en las tablas; para todo esto, esta sección tiene una interfaz gráfica. En la esquina superior izquierda de la lista desplegable, puede seleccionar el tipo de objetos (las tablas se muestran en la captura de pantalla), en la esquina superior derecha puede seleccionar el esquema cuyos objetos puede ver. En la lista de esquemas disponibles, no verá todos los esquemas a la vez; esto es normal. Cómo hacer que los esquemas sean visibles en el ápice, te lo diré cuando llegue a la administración.
Además, no veo mucho sentido describir esta sección con más detalle: si sabe lo que significa la frase "agregar una columna a la tabla", puede adivinar fácilmente cuándo debe hacer clic en el botón "Agregar columna" y qué puede esperar a continuación.
Comandos SQL
En esta sección, puede ejecutar consultas SQL y código PL / SQL.

En términos de capacidades, esta sección es casi tan buena como los entornos de desarrollo completos. Lo único que falta es la finalización del código y el resaltado de sintaxis (por cierto, hay resaltado de sintaxis en Object Browser). Características disponibles:
- Ejecución de SQL, incluso con parámetros (aparecerá una ventana separada para ingresar valores de parámetros);
- Ejecución PL / SQL con la capacidad de generar texto a través de dbms_output (el resultado aparecerá en la ventana a continuación);
- ejecución de solo la parte seleccionada del código (seleccione el texto con el mouse, luego "Ejecutar");
- ver el plan de solicitud;
- guardar solicitudes
***
Esto, como comprenderá, está lejos de todo lo que se encuentra en APEX IDE, pero en este momento no tiene sentido ir más allá. Los elementos individuales de la interfaz del ápice se discutirán con más detalle en los temas que están directamente relacionados con ellos.
PD: No puedo decir que haya pensado claramente en la estructura de este tutorial, tal vez en el futuro agregue más capturas de pantalla y descripciones a este artículo o describa características adicionales en otros artículos. Queda por descubrir cómo notificar a las partes interesadas sobre ediciones importantes de artículos antiguos.