Ao começar a usar o InterSystems IRIS ou Cache, os desenvolvedores frequentemente se deparam com três conceitos principais: Objetos Dinâmicos, Globals e Tabela Relacional. Cada um tem seu papel na construção de soluções escaláveis e fáceis de manter. Neste artigo, vamos percorrer exemplos de código práticos, destacar as melhores práticas e mostrar como esses conceitos se conectam.
1. Trabalhando com Objetos Dinâmicos
Objetos dinâmicos (%DynamicObject e %DynamicArray) permitem que os desenvolvedores manipulem estruturas semelhantes a JSON diretamente no ObjectScript. Eles são especialmente úteis para aplicações modernas que precisam analisar, transformar ou gerar JSON.
Exemplo: Criando e Manipulando Objetos Dinâmicos
// 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
Melhores Práticas
- Sempre valide a entrada JSON com
%FromJSON()para capturar erros. - Use
obj.%Get("property")quando não tiver certeza se uma propriedade existe. - Prefira
%DynamicArraypara estruturas do tipo lista..
2. Usando Globals de forma Eficaz
Globals são arrays esparsos hierárquicos armazenados diretamente no motor de banco de dados do IRIS. Eles são extremamente rápidos e podem armazenar praticamente qualquer estrutura.
Exemplo: Armazenando Dados em 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"),")",!
}
Melhores Práticas:
- Defina uma estrutura global clara antes de codificar (evite chaves ad hoc).
- Use globals para armazenamento de alto desempenho quando o overhead do SQL não for necessário.
- Para dados de aplicação, prefira classes persistentes com globals gerenciados internamente
3. Criando Tabelas SQL Relacionais
No IRIS, tabelas relacionais podem ser criadas usando DDL SQL e classes persistentes.
Exemplo: Criando uma Tabela SQL via DDL
CREATE TABLE Employee (
ID SERIAL PRIMARY KEY,
Name VARCHAR(50),
Age INT,
Department VARCHAR(50)
);
Exemplo: Criando a mesma tabela como uma Classe Persistente
Class Company.Employee Extends (%Persistent) {
Property Name As %String(MAXLEN=50);
Property Age As %Integer;
Property Department As %String(MAXLEN=50);
}
Uma vez compilada, esta classe cria automaticamente um global subjacente e uma tabela SQL. Agora você pode usar tanto o ObjectScript quanto o 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
}
Melhores Práticas:
- Prefira classes persistentes para aplicações fáceis de manter.
- Use DDL SQL para definições rápidas de tabelas ou integração com sistemas externos.
- Sempre defina índices para propriedades frequentemente consultadas.
RESUMO:
Seja para analisar payloads JSON, gerenciar dados de consulta de alta velocidade ou projetar tabelas relacionais, entender quando usar objetos dinâmicos, globals ou classes persistentes é fundamental para se tornar um desenvolvedor ObjectScript eficaz.
.png)
.png)