T2.3: Uses Source Control with InterSystems IRIS

Knowledge Review - InterSystems IRIS Development Professional

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.

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

Resumen de Preparación para el Examen

Conceptos Críticos a Dominar:

  1. Modelos de Control de Código Fuente: Comprender diferencias entre lado del cliente (REST API/Git) y lado del servidor (hooks %Studio.SourceControl)
  2. Métodos REST API: Conocer métodos clave (GetDoc, PutDoc, GetDocNames, GetModifiedDocNames, Compile)
  3. Integración VS Code: Comprender cómo IDEs modernos conectan a IRIS usando la Source Code File REST API
  4. Hooks del Lado del Servidor: Reconocer cuándo hooks de control de código fuente del lado del servidor ejecutan (operaciones guardar, compilar, eliminar)
  5. Dependencias de Compilación: Comprender cómo el compilador de clase resuelve dependencias y directivas de importación
  6. Estrategias de Importación: Saber cómo usar métodos $SYSTEM.OBJ con flags apropiados para importaciones controladas
  7. Cambios de Esquema: Comprender riesgos al importar clases persistentes actualizadas con modificaciones de esquema
  8. 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:

  1. Siempre exportar clases a backup XML antes de importaciones mayores
  2. Probar cambios de esquema en entornos no producción primero
  3. Usar valores hash GetModifiedDocNames para detectar modificaciones concurrentes
  4. Implementar pruebas automatizadas que ejecutan después de importaciones para validar funcionalidad
  5. Mantener entornos separados dev/test/prod con promoción controlada
  6. Documentar dependencias y orden de importación para jerarquías de clase complejas
  7. Usar tags/ramas de control de versión correspondiendo a versiones desplegadas
  8. Validar cambios DDL con métodos $SYSTEM.SQL.Schema antes de importar
  9. Planear estrategias de migración de datos para clases persistentes con datos existentes
  10. Establecer procedimientos de rollback y practicar escenarios de recuperación

Report an Issue