Dominando la Modularidad
Paquetes, REST Data Sources y Componentes Compartidos

Search for a command to run...
Paquetes, REST Data Sources y Componentes Compartidos

No comments yet. Be the first to comment.
El patrón para producción que ahora despliego en menos de 30 minutos — y por qué finalmente lo empaqueté.

A production pattern I now deploy in under 30 minutes — and why I finally packaged it.
Cómo resolvimos el caos de WhatsApp en las inmobiliarias mexicanas con componentes nativos de APEX y diseño intencional.

How we transformed a complex real estate workflow into a sleek, high-density productivity tool using native APEX components and intentional design.

Por qué el 'los empleados no tienen opción' es la mayor falacia del software empresarial, y cómo construir herramientas que los usuarios realmente amen.

En el desarrollo con Oracle APEX, muchos proyectos comienzan rápido… y también se complican rápido. A medida que las aplicaciones crecen, las páginas se multiplican, los procesos se duplican y los cambios se vuelven riesgosos.
Ya hemos hablado de Buenas Prácticas, Seguridad, UX y Rendimiento. Ahora toca hablar de arquitectura.
Aquí es donde entra en juego la modularidad: la capacidad de construir aplicaciones Oracle APEX organizadas en piezas reutilizables, independientes y mantenibles.
Una aplicación modular reduce errores, acelera el mantenimiento y facilita el trabajo en equipo.
Si trabajas en equipos o mantienes varias aplicaciones Oracle APEX, entender y aplicar modularidad puede cambiar por completo tu flujo de desarrollo.
En este APEX Insights, construiremos una arquitectura modular desde cero, explorando tres pilares clave:
Usaremos un ejemplo técnico: un módulo de autenticación y logs centralizado, reutilizable por varias aplicaciones Oracle APEX dentro del mismo workspace.
Antes de escribir una sola línea de código, entendamos qué buscamos con un diseño modular:
Estos principios son la base de toda arquitectura sostenible, sin importar el tamaño o complejidad del proyecto.
Antes de escribir código, define una estructura clara.
Esta puede parecer un detalle menor, pero te ahorrará horas de mantenimiento más adelante.
Estructura inicial sugerida:
/apex-insights/
│
├── db/
│ ├── packages/
│ │ ├── auth_core.pks
│ │ ├── auth_core.pkb
│ │ ├── log_utils.pks
│ │ ├── log_utils.pkb
│ └── install/
│ ├── create_users.sql
│ ├── seed_data.sql
│
├── rest/
│ ├── auth_api/
│ │ ├── get_user_status.sql
│ │ ├── post_login_audit.sql
│ └── system_monitor/
│ ├── get_logs.sql
│
├── apex/
│ ├── shared_components/
│ │ ├── templates/
│ │ ├── lists/
│ │ ├── substitutions/
│ └── apps/
│ ├── core_app/
│ ├── admin_app/
│ └── user_portal/
└── docs/
└── architecture.md
Consejos clave:
core_, mod_, app_). architecture.md).Los paquetes PL/SQL son la base de toda arquitectura modular en Oracle.
Permiten centralizar la lógica de negocio y exponer funciones limpias y reutilizables.
Los paquetes no solo agrupan procedimientos: protegen tu lógica de negocio y evitan duplicaciones en diferentes aplicaciones.
auth_core.pks
CREATE OR REPLACE PACKAGE auth_core AS
FUNCTION validate_user(p_username VARCHAR2, p_password VARCHAR2) RETURN BOOLEAN;
PROCEDURE register_login(p_username VARCHAR2);
END auth_core;
/
auth_core.pkb
CREATE OR REPLACE PACKAGE BODY auth_core AS
FUNCTION validate_user(p_username VARCHAR2, p_password VARCHAR2) RETURN BOOLEAN IS
v_count NUMBER;
BEGIN
SELECT COUNT(*) INTO v_count
FROM users
WHERE username = p_username
AND user_password = STANDARD_HASH(p_password, 'SHA256');
RETURN v_count = 1;
END validate_user;
PROCEDURE register_login(p_username VARCHAR2) IS
BEGIN
INSERT INTO login_audit (username, login_time)
VALUES (p_username, SYSDATE);
END register_login;
END auth_core;
/
💡 Consejo: coloca los paquetes de negocio en un schema centralizado (CORE_DB o APEX_UTILS) y accede a ellos desde cualquier app Oracle APEX con privilegios limitados (GRANT EXECUTE ON auth_core TO app_user;).
Cuando varias aplicaciones necesitan los mismos datos o servicios, lo peor que puedes hacer es copiar la lógica.
Con REST Data Sources, puedes centralizar esa información sin reinventar la rueda.
-- SQL Handler: GET_LOGS
SELECT username, action, log_date
FROM app_logs
WHERE log_date > SYSDATE - NVL(:DAYS, 7)
ORDER BY log_date DESC;
Configuración recomendada:
/ords/core/logs/GET, POSTCache-Control para consultas estáticas.💡 Consejo: usa APEX_WEB_SERVICE.MAKE_REST_REQUEST para consumir servicios entre apps del mismo workspace y mantener un flujo controlado.
Así como el backend tiene sus módulos, la interfaz también puede volverse modular.
Los componentes compartidos (Shared Components) son tu mejor aliado para mantener coherencia visual entre aplicaciones.
Ejemplos comunes:
En tu app base (por ejemplo, “Core App”), crea una región HTML:
<div class="session-banner">
Logged in as: &APP_USER.
</div>
Luego, usa “Copy Shared Components” en otras apps para importar el banner y mantener coherencia visual sin reescribir nada.
Supongamos que tienes tres aplicaciones: Portal de Usuarios, Admin Dashboard y Core App.
auth_core y log_utils (backend). /ords/core/logs/ para mostrar auditoría. auth_core.validate_user para login. El resultado es un entorno modular, conectado y fácil de mantener, donde cada pieza cumple un propósito y puede evolucionar sin romper las demás.
La modularidad no es un lujo, es una estrategia.
En Oracle APEX, dividir tu aplicación en paquetes, servicios REST y componentes compartidos transforma la forma en que construyes y mantienes tus proyectos.
Empieza por un módulo pequeño — como autenticación o logs — y verás cómo tu entorno Oracle APEX evoluciona hacia algo más escalable, limpio y profesional.
Ayudo a empresas a construir arquitecturas escalables y modulares. Si tu aplicación es un monolito difícil de mantener y necesitas una refactorización profesional, hablemos.
☕ Agendar una Llamada | 💼 Conectar en LinkedIn