1. Comprende opciones de integración de sistema de control de código fuente (lado del cliente vs. lado del servidor)
Puntos Clave
- Integración del Lado del Cliente: VS Code e IDEs gestionan archivos fuente localmente con flujos de trabajo Git
- Integración del Lado del Servidor: Hooks %Studio.SourceControl ejecutan en servidor IRIS durante compilar/guardar
- Fundamento REST API: Source Code File REST API habilita herramientas modernas del lado del cliente
- Enfoque Híbrido: Combinar repositorios Git cliente con hooks de validación del lado del servidor
- Modelos de Desarrollo: Desarrollo servidor-primero (tradicional) vs. cliente-primero (moderno)
Notas Detalladas
Resumen
InterSystems IRIS soporta dos arquitecturas primarias de integración de control de código fuente, cada una con características y casos de uso distintos.
Integración del Lado del Cliente
- Herramientas: VS Code con la extensión ObjectScript usando la Source Code File REST API
- Flujo de Trabajo: Desarrolladores mantienen repositorios Git en sus estaciones de trabajo locales, editan código en editores de texto, y sincronizan cambios a IRIS
- Métodos REST API: GetDoc, PutDoc, GetDocNames, y Compile para recuperar, actualizar, y compilar código remotamente
- Beneficios: Se alinea con prácticas de desarrollo contemporáneas, soporta flujos de trabajo Git estándar (branching, merging, pull requests)
Integración del Lado del Servidor
- Framework: Framework de clase %Studio.SourceControl con hooks ejecutando dentro del servidor IRIS
- Hooks de Evento: Interceptan eventos tales como antes/después de guardar, antes/después de compilar, antes/después de eliminar, y check-in/check-out
- Capacidades: Acceso directo a internos IRIS, aplicación de política antes de permitir operaciones
- Limitaciones: Requiere que desarrolladores trabajen principalmente dentro de herramientas centradas en IRIS
Enfoque Híbrido
- Desarrolladores usan Git y VS Code para su flujo de trabajo diario
- Hooks del lado del servidor proporcionan validación adicional, logging, o integración con sistemas empresariales
- Ejemplo: Git del lado del cliente para control de versión con hooks del lado del servidor previniendo despliegue de clases sin documentación apropiada
Elegir un Modelo
Equipos de desarrollo deben elegir su modelo basado en:
- Tamaño de equipo
- Herramientas existentes
- Requisitos CI/CD
- Estándares organizacionales
Desarrollo IRIS moderno favorece crecientemente integración del lado del cliente debido a su alineación con prácticas DevOps y patrones de desarrollo cloud-native.
Referencias de Documentación
2. Implementa estrategias de mitigación para importaciones de clase/esquema actualizadas
Puntos Clave
- Orden de Compilación: Compilador de clase genera listas de dependencia y compila dependencias primero
- Directiva Import: Usar directiva Import para resolver dependencias de paquete durante compilación
- Compilación Incremental: Compilar dependencias modificadas automáticamente con flag /compile
- Conflictos de Esquema: Abordar cambios de tabla/columna con validación $SYSTEM.SQL.Schema.ImportDDL()
- Estrategias de Despliegue: Usar $SYSTEM.OBJ.LoadDir() con flags para importaciones controladas
- Protección de Rollback: Validar importaciones en entornos de prueba antes de despliegue a producción
Notas Detalladas
Resumen
Al importar clases y definiciones de esquema actualizadas a InterSystems IRIS, desarrolladores deben implementar estrategias para mitigar riesgos asociados con dependencias de compilación, cambios de esquema, y fallos de despliegue.
Gestión Automática de Dependencia
El compilador de clase gestiona automáticamente dependencias básicas:
- Generando una lista de clases que deben compilarse primero
- Resolviendo jerarquías de herencia
- Determinando estructuras de almacenamiento para clases persistentes
Escenarios complejos requieren gestión explícita a través de directivas Import y flags de compilación.
Directiva Import
- Sintaxis: `Import (Package1, Package2)` antes de la definición de Class
- Función: Permite al compilador resolver nombres de clase cortos buscando paquetes especificados
- Paquetes Predeterminados: Paquete actual, %Library, y paquetes User
- Beneficio: Previene errores de compilación cuando clases referencian otras clases sin nombres completamente calificados
Flags de Compilación
- /compile: Compilar automáticamente dependencias modificadas
- "ck": Compilar con check compile
- "d": Mostrar salida
- "k": Mantener código fuente
Usar métodos $SYSTEM.OBJ como Compile(), Load(), y CompileList() con estos flags.
Desafíos Relacionados con Esquema
- Cambios de clase persistente afectan tablas SQL e índices subyacentes
- Cambios conflictivos (modificaciones de tipo de dato, agregar propiedades requeridas con datos existentes) pueden causar fallos de importación
Estrategias de Mitigación
- Pre-validar cambios de esquema usando $SYSTEM.SQL.Schema.ImportDDL()
- Usar mecanismo Storage Default para personalizar mapeo de clase a almacenamiento
- Implementar rutinas de migración de datos en %OnBeforeSave() o clases de utilidad separadas
- Probar importaciones en entornos no producción antes de despliegue a producción
Mejores Prácticas de Despliegue
- Usar $SYSTEM.OBJ.LoadDir() con flags "/compile/displaylog/displayerror"
- Mantener tags/ramas de control de código fuente correspondiendo a versiones desplegadas
- Usar GetModifiedDocNames REST API para detección de cambio basada en hash
- Exportar clases usando $SYSTEM.OBJ.Export() para backup antes de importaciones mayores
- Mantener entornos separados dev/test/prod con procesos de promoción controlados
- Implementar testing automatizado que ejecuta después de importaciones
Referencias de Documentación
Resumen de Preparación para el Examen
Conceptos Críticos a Dominar:
- Modelos de Control de Código Fuente: Comprender diferencias entre lado del cliente (REST API/Git) y lado del servidor (hooks %Studio.SourceControl)
- Métodos REST API: Conocer métodos clave (GetDoc, PutDoc, GetDocNames, GetModifiedDocNames, Compile)
- Integración VS Code: Comprender cómo IDEs modernos conectan a IRIS usando la Source Code File REST API
- Hooks del Lado del Servidor: Reconocer cuándo hooks de control de código fuente del lado del servidor ejecutan (operaciones guardar, compilar, eliminar)
- Dependencias de Compilación: Comprender cómo el compilador de clase resuelve dependencias y directivas de importación
- Estrategias de Importación: Saber cómo usar métodos $SYSTEM.OBJ con flags apropiados para importaciones controladas
- Cambios de Esquema: Comprender riesgos al importar clases persistentes actualizadas con modificaciones de esquema
- Protección de Rollback: Conocer técnicas para validar importaciones y mantener opciones de backup/recuperación
Escenarios Comunes de Examen:
- Seleccionar enfoque de integración de control de código fuente apropiado para un equipo de desarrollo
- Solucionar problemas de error de compilación relacionados con importaciones de paquete y dependencias
- Implementar procedimientos de despliegue que manejen evolución de esquema seguramente
- Configurar conectividad VS Code a IRIS usando la REST API
- Usar GetModifiedDocNames para detectar archivos cambiados y evitar conflictos
- Aplicar flags de compilación para gestionar actualizaciones de dependencia durante importaciones
- Diseñar estrategias de rollback para importaciones fallidas de clase/esquema
- Distinguir cuándo usar integración de control de código fuente del lado del cliente vs. del lado del servidor
Recomendaciones de Práctica Práctica:
- Configurar extensión ObjectScript de VS Code y conectar a una instancia IRIS
- Experimentar con la Source Code File REST API usando herramientas como Postman o curl
- Importar clases usando $SYSTEM.OBJ.Load() y CompileList() con varios flags
- Crear escenarios de prueba que modifiquen esquemas de clase persistente y manejen migración
- Usar GetModifiedDocNames para rastrear cambios e implementar lógica de detección de cambio
- Practicar ciclos de exportar/importar con archivos XML como mecanismo de backup/recuperación
- Implementar subclase %Studio.SourceControl simple para comprender hooks del lado del servidor
- Probar flujos de trabajo de despliegue a través de entornos de desarrollo, prueba, y producción
- Usar directivas Import para resolver dependencias de paquete en definiciones de clase
- Validar cambios de esquema usando métodos $SYSTEM.SQL.Schema antes de importación a producción
Términos Clave y Definiciones:
- Integración del Lado del Cliente: Control de código fuente gestionado en workspace de desarrollador usando Git e IDEs modernos
- Integración del Lado del Servidor: Hooks de control de código fuente ejecutando dentro del servidor IRIS durante operaciones
- Source Code File REST API: API HTTP REST proporcionando acceso a archivos de código fuente IRIS para IDEs
- GetDoc/PutDoc: Métodos REST API para recuperar y actualizar archivos de código fuente remotamente
- GetModifiedDocNames: Método REST API retornando nombres de archivo con hash para detección de cambio
- %Studio.SourceControl: Clase base para implementar hooks de control de código fuente del lado del servidor
- Directiva Import: Directiva de declaración de clase especificando paquetes para resolución de nombre de clase corto
- Flags de Compilación: Parámetros como "ck", "d", "k" controlando comportamiento de compilación
- Evolución de Esquema: Proceso de modificar estructuras de almacenamiento de clase persistente con datos existentes
- $SYSTEM.OBJ: Clase de sistema proporcionando métodos para cargar, compilar, y gestionar código
- Compilador de Almacenamiento: Componente determinando estructuras de almacenamiento para clases persistentes/seriales
- Resolución de Dependencia: Proceso de compilador identificando y compilando clases dependientes primero
- Compilación Incremental: Compilar solo clases modificadas y sus dependencias cambiadas
- LoadDir(): Método importando todos los archivos fuente desde un directorio con opciones de compilación
- XML Exportar/Importar: Mecanismo de backup/restauración usando formato de archivo XML para clases y rutinas
Puntos de Configuración Importantes:
- Endpoint REST API: `https://server:port/api/atelier/`
- Rutas de versión API: `/v1/` y `/v2/` para diferentes generaciones de API
- Autenticación: Requiere header Authorization con credenciales de nombre de usuario/contraseña
- Content-Type: Debe especificar `application/json` para operaciones POST/PUT
- Header If-None-Match: Habilita GET condicional para recuperar solo archivos modificados
- Aplicación web: REST API expuesta a través de web app con clase dispatch %Api.Atelier
- Flags de compilación: "/compile", "/displaylog", "/displayerror" para operaciones LoadDir
- Contexto de namespace: Todas las llamadas REST API especifican namespace destino en ruta URL
Lista de Verificación de Mitigación de Riesgo:
- Siempre exportar clases a backup XML antes de importaciones mayores
- Probar cambios de esquema en entornos no producción primero
- Usar valores hash GetModifiedDocNames para detectar modificaciones concurrentes
- Implementar pruebas automatizadas que ejecutan después de importaciones para validar funcionalidad
- Mantener entornos separados dev/test/prod con promoción controlada
- Documentar dependencias y orden de importación para jerarquías de clase complejas
- Usar tags/ramas de control de versión correspondiendo a versiones desplegadas
- Validar cambios DDL con métodos $SYSTEM.SQL.Schema antes de importar
- Planear estrategias de migración de datos para clases persistentes con datos existentes
- Establecer procedimientos de rollback y practicar escenarios de recuperación