Pesquisar

Artigo
· Set. 1 3min de leitura

Programación práctica en ObjectScript: de JSON a Globals a SQL

Al comenzar con InterSystems IRIS o Caché, los desarrolladores a menudo se encuentran con tres conceptos fundamentales: Dynamic Objects, Globals y Relational Table. Cada uno tiene su papel en la construcción de soluciones escalables y mantenibles. En este artículo recorreremos ejemplos prácticos de código, destacaremos buenas prácticas y mostraremos cómo estos conceptos se relacionan entre sí.

1. Trabajando con Dynamic Objects:

Los objetos dinámicos (%DynamicObject y %DynamicArray) permiten a los desarrolladores manipular estructuras similares a JSON directamente en ObjectScript. Son especialmente útiles para aplicaciones modernas que necesitan analizar, transformar o generar JSON.

Ejemplo: Crear y manipular Dynamic Objects

    // Create a Dynamic object
    Set obj - {}

    // Add properties
    Set obj.name = "Vachan"
    Set obj.age = 25
    // Nested objects
    Set obj.address = {"city":"Bengaluru", "zip":"560000"}
    
    // Add an Array
    Set obj.skills = ["Objectscript", "SQL"]
    
    // Convert to JSON string
    Set json = obj.%ToJSON()
    Write json,!
    
    // Parse JSON string back to an object
    Set parser = {}.%FromJSON(json)
    Write parser.name

Mejores prácticas

  • Validad siempre la entrada JSON con %FromJSON() para detectar errores.
  • Usad obj.%Get("property") cuando no estéis seguros de que una propiedad exista.
  • Preferid %DynamicArray para estructuras de tipo lista.

2. Usando Globals de manera efectiva:

Los Globals son arrays dispersos jerárquicos almacenados directamente en el motor de la base de datos IRIS. Son extremadamente rápidos y pueden almacenar prácticamente cualquier estructura.

Ejemplo: Almacenando datos en Globals

// Store student data in a global
SET ^Student(1,"Name") = "Alice"
SET ^Student(1,"Age") = 29
SET ^Student(2,"Name") = "Bob"
SET ^Student(2,"Age") = 34
// Retrieve data
WRITE ^Student(1,"Name")  // outputs: Alice
// Iterate over all students
SET id=""
FOR  SET id=$ORDER(^Student(id)) QUIT:id=""  {
    WRITE "Student ",id,": ",^Student(id,"Name")," (Age ",^Student(id,"Age"),")",!
}

Mejores prácticas:

  • Definid una estructura clara para el global antes de codificar (evitad claves ad-hoc).
  • Usad globals para almacenamiento de alto rendimiento cuando no se necesite la sobrecarga de SQL.
  • Para los datos de la aplicación, preferid clases persistentes con globals gestionados internamente.

3. Creación de tablas relacionales SQL:

En IRIS, las tablas relacionales se pueden crear tanto usando SQL DDL como clases persistentes.

Ejemplo: Crear una tabla SQL mediante DDL

CREATE TABLE Employee (
    ID SERIAL PRIMARY KEY,
    Name VARCHAR(50),
    Age INT,
    Department VARCHAR(50)
);

Ejemplo: Crear la misma tabla como Clase Persistente

Class Company.Employee Extends (%Persistent) {
    Property Name As %String(MAXLEN=50);
    Property Age As %Integer;
    Property Department As %String(MAXLEN=50);
}

Una vez compilada, esta clase crea automáticamente un global subyacente y una tabla SQL. Ahora podéis usar tanto ObjectScript como SQL:

// Create and save an employee
SET emp = ##class(Company.Employee).%New()
SET emp.Name = "Charlie"
SET emp.Age = 40
SET emp.Department = "IT"
DO emp.%Save()

// Query employees with SQL
&sql(SELECT Name, Age FROM Company.Employee)
WHILE (SQLCODE=0) {
    WRITE "Employee: ",Name,", Age: ",Age,!
    FETCH NEXT
}

Mejores Prácticas:

  • Preferid clases persistentes para aplicaciones mantenibles.
  • Usad SQL DDL para definiciones rápidas de tablas o integración con sistemas externos.
  • Definid siempre índices para las propiedades que se consultan con frecuencia.

RESUMEN:

Ya sea que estéis analizando cargas JSON, gestionando datos de acceso rápido o diseñando tablas relacionales, entender cuándo usar objetos dinámicos, globals o clases persistentes es clave para convertiros en desarrolladores efectivos de ObjectScript.

Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Set. 1 7min de leitura

Crea un agente de IA para atención al cliente con smolagents + InterSystems IRIS (SQL, RAG e interoperabilidad)

Las preguntas de atención al cliente pueden abarcar datos estructurados (pedidos, productos 🗃️), conocimiento no estructurado (docs/FAQs 📚) y otros sistemas integrados (actualizaciones de envío 🚚). En este post vamos a construir un agente de IA compacto que cubre los tres—usando:

  • 🧠 Python + smolagents para orquestar el “cerebro” del agente
  • 🧰 InterSystems IRIS para SQL, Búsqueda Semántica (RAG) e Interoperabilidad (una API de seguimiento de envío simulada)

1 novo comentário
Discussão (1)2
Entre ou crie uma conta para continuar
Artigo
· Set. 1 6min de leitura

Build a Customer Support AI Agent with smolagents + InterSystems IRIS (SQL, RAG & Interoperability)

Customer support questions span structured data (orders, products 🗃️), unstructured knowledge (docs/FAQs 📚), and live systems (shipping updates 🚚). In this post we’ll ship a compact AI agent that handles all three—using:

  • 🧠 Python + smolagents to orchestrate the agent’s “brain”
  • 🧰 InterSystems IRIS for SQL, Vector Search (RAG), and Interoperability (a mock shipping status API)

Discussão (0)1
Entre ou crie uma conta para continuar
Pergunta
· Set. 1

Saltanat Turkish Restaurant: A Taste of Turkey in London

From sizzling kebabs to authentic mezes, discover why Saltanat is a favorite for Mediterranean food lovers.

Saltanat Turkish Restaurant in London offers an authentic taste of Turkey with a warm, welcoming ambiance. Known for its flavorful Mediterranean and Turkish dishes, it’s the perfect place to enjoy fresh kebabs, mezes, and traditional specialties. With affordable prices and exceptional hospitality, Saltanat creates a memorable dining experience for families, friends, and food lovers alike.

Discussão (0)1
Entre ou crie uma conta para continuar
Anúncio
· Set. 1

Récapitulation de la communauté des développeurs, Août 2025

Bonjour et bienvenue à la récapitulation de la Communauté des développeurs d'août 2025.
Statistiques générales
✓ Nouvelles publications 22 publiées l'Août :
 12 nouveaux articles
 10 nouvelles annonces
✓ Nouveaux membres 4 ayant rejoint l'Août
✓ Publications 1,244 publiées depuis le début
✓ Membres 185 ayant rejoint depuis le début
Meilleures publications
Les meilleurs auteurs du mois
Articles
#InterSystems IRIS
Configuration d'OpenTelemetry dans IRIS
Par Sylvain Guilbaud
Comment créer votre propre table de recherche pour la messagerie HL7
Par Lorenzo Scalese
Utilisation de LIKE avec des variables et des modèles dans SQL
Par Iryna Mykhailova
Un guide pour débutants sur la création de tables SQL et leur visualisation en tant que classes
Par Iryna Mykhailova
Hébergement d'une application Flask de l'API REST sur InterSystems IRIS à l'aide de l'interface WSGI
Par Liam Evans
Pilote pour connecter IRIS à Metabase
Par Guillaume Rongier
Pourquoi devons-nous établir des règles ou des conventions de codage ?
Par Lorenzo Scalese
Traçage des applications InterSystems IRIS à l'aide de Jaeger
Par Iryna Mykhailova
Comment contrôler l'ordre des colonnes affichées lors de l'accès à partir d'un outil ODBC / JDBC
Par Sylvain Guilbaud
 
#Autre
 
#InterSystems IRIS for Health
 
#Communauté des développeurs officielle
 
Annonces
#Communauté des développeurs officielle
 
#IRIS contest
 
#InterSystems IntelliCare
 
#Global Masters
 
#InterSystems IRIS for Health
 
#InterSystems officiel
 
#HealthShare
 
Août, 2025Month at a GlanceInterSystems Developer Community
Discussão (0)1
Entre ou crie uma conta para continuar