查找

Artigo
· Out. 7 5min de leitura

Présentation de testcontainers-iris-node: simplification des tests d'intégration IRIS dans Node.js

Aperçu Je suis ravi d'annoncer la sortie de testcontainers-iris-node, une bibliothèque Node.js qui facilite le lancement de conteneurs InterSystems IRIS temporaires pour l'intégration et les tests E2E. Ce projet vient naturellement compléter la gamme existante d'adaptateurs Testcontainers pour IRIS, notamment testcontainers-iris-python et testcontainers-iris-java.

Pourquoi testcontainers-iris-node? En tant que développeur Node.js travaillant avec InterSystems IRIS, j'ai souvent été confronté à des difficultés lors de la configuration d'environnements de test imitant la production. testcontainers-iris-node résout ce problème en exploitant le framework testcontainers-node pour créer des environnements IRIS isolés à la demande.

Ceci est particulièrement important pour:

  • Les tests d'intégration avec les bases de données IRIS
  • Les tests de pipelines de données ou de microservices
  • L'automatisation des environnements de test dans les pipelines CI

Fonctionnalités

  • Lancement d'IRIS dans des conteneurs Docker à l'aide de Testcontainers
  • Prise en charge des images et de la configuration Docker personnalisées
  • Stratégies d'attente pour s'assurer qu'IRIS est prêt avant le début des tests
  • Désinstallation de nettoyage entre les exécutions de tests

Discussão (0)2
Entre ou crie uma conta para continuar
Anúncio
· Out. 7

Resumen de aplicaciones de InterSystems Open Exchange, septiembre de 2025.

Hola y bienvenidos al resumen de Open Exchange de septiembre de 2025.
Estadísticas generales
✓ 13 nuevas aplicaciones
477 descargas
✓ 1.132 aplicaciones en total
✓ 42.871 descargas en total
✓ 3.343 desarrolladores registrados
Nuevas Aplicaciones
iris-execute-mcp
Por Joshua Brandt
SentinelIris
Por André Dienes Friedrich
FHIR Data Explorer with Hybrid Search and AI Summaries
Por Pietro Di Leo
Dashboard of database space
Por Robert Cemper
ToolQA
Por Andre Larsen Barbosa
IAM HA Deployments
Por Ariel Glikman
iris-recordmap-fordummies
Por Kurro Lopez
MessageLogViz
Por Ashok Kumar T
Snapshot of free disk space
Por Robert Cemper
RAGBookRecommender
Por Gabriel Ing
TaskScheduler
Por Ashok Kumar T
A Configurable Template for Automated Splitting of HL7 Repeating Segments
Por Sanjib Pandey
UNICAS Implementation
Por Luis Angel Pérez Ramos
Nuevos lanzamientos
csvgen de Evgeny Shvarov
v1.7.1
Se añadió el método Gen() para habilitar calificadores JSON; por ejemplo: para añadir, llamadlo de la siguiente manera:
set status=##class(community.csvgen).Gen(fname,,.pclass,.prowtype,{"append":1},.recordCount)
o configurad los calificadores de antemano, como:
set qualifiers={"verbose":1,"PrimaryKey":"name"}
set status=##class(community.csvgen).Gen(fname,,.pclass,.prowtype,qualifiers,.recordCount)
snapshot-to-JSON de Robert Cemper
v1.10.0
  • ampliado el README con un ejemplo de la demo
  • ampliado el README con una guía de instalación estándar
  • simplificada la compilación
  • añadida ZPrety para la demo
InterSystems Testing Manager for VS Code de John Murray
v2.0.4
  • Corregida la subcarpeta de Server Tests que se quedaba cargando indefinidamente al expandirse.
  • Modo del lado del servidor: excluir las clases TestCase mapeadas.
iris-dataset-countries de Evgeny Shvarov
v1.1.4
Más países, variaciones de nombres y correcciones.
MDX2JSON de Eduard Lebedyuk
v3.2.48
Rollback
Embedded Git de Pravin Barton
v2.13.1

[2.13.1] - 2025-09-16

Correcciones

  • Corregido el problema de “Importar todo” que desplegaba cambios en archivos de una aplicación CSP (#828)
  • Corregido el fallo al hacer pull cuando los elementos eliminados no tenían nombre interno ni externo (#848)
  • Corregido un error por el cual las páginas de control de código fuente no se mostraban después de la instalación en IRIS 2025.1 (#852)
Test Coverage Tool por Timothy Leavitt
v4.0.7

[4.0.7] - 2025-09-23

Correcciones

  • #66: Ya no se producen errores cuando un método con[ Language = python ]tiene un nombre que comienza con “%”.
  • Los archivos coverage.list con finales de línea al estilo de Windows ahora se analizan correctamente en contenedores.
Más descargadas
MDX2JSON
Por Eduard Lebedyuk
zpm-registry
Por Evgeny Shvarov
WebTerminal
Por Nikita Savchenko
DeepSeeWeb
Por Anton Gnibeda
ObjectScript-Math
Por Peter Steiwer
Intersystems-Monitoring
Por Teunis Stolker
iris-web-swagger-ui
Por Semion Makarov
yaml-utils
Por Benjamin De Boe
Test Coverage Tool
Por Timothy Leavitt
passwordless
Por Sergey Mikhailenko
, 2025Month at a GlanceInterSystems Open Exchange
Discussão (0)1
Entre ou crie uma conta para continuar
Artigo
· Out. 7 6min de leitura

La espera ha terminado: damos la bienvenida al soporte de GoLang para InterSystems IRIS

Introducción

La plataforma de datos InterSystems IRIS ha sido conocida durante mucho tiempo por su rendimiento, interoperabilidad y flexibilidad entre distintos lenguajes de programación. Durante años, los desarrolladores pudieron usar IRIS con Python, Java, JavaScript y .NET, pero los desarrolladores de Go (o Golang) tuvieron que esperar.

Golang Logo

Esa espera finalmente ha terminado.

El nuevo controlador go-irisnative incorpora soporte para GoLang en InterSystems IRIS, implementando la API estándar database/sql. Esto significa que los desarrolladores de Go ahora pueden utilizar herramientas de base de datos conocidas, agrupación de conexiones e interfaces de consulta para crear aplicaciones impulsadas por IRIS.


Por qué es importante el soporte para GoLang

GoLang es un lenguaje diseñado para la simplicidad, la concurrencia y el rendimiento, ideal para arquitecturas nativas en la nube y basadas en microservicios. Impulsa algunos de los sistemas más escalables del mundo, como Kubernetes, Docker y Terraform.

Integrar IRIS en el ecosistema de Go permite:

  • Servicios ligeros y de alto rendimiento utilizando IRIS como backend.
  • Concurrencia nativa para la ejecución paralela de consultas o el procesamiento en segundo plano.
  • Integración fluida con sistemas distribuidos y en contenedores.
  • Acceso a bases de datos de forma idiomática mediante la interfaz database/sql de Go.

Esta integración convierte a IRIS en la opción perfecta para aplicaciones modernas y preparadas para la nube desarrolladas en Go.


Cómo empezar

1. Instalación

go get github.com/caretdev/go-irisnative

2. Conectar a IRIS

Así es como se realiza la conexión utilizando la API estándar database/sql:

import (
    "database/sql"
    "fmt"
    "log"
    _ "github.com/caretdev/go-irisnative"
)

func main() {
    db, err := sql.Open("iris", "iris://_SYSTEM:SYS@localhost:1972/USER")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // Simple ping to test connection
    if err := db.Ping(); err != nil {
        log.Fatal("Failed to connect:", err)
    }

    fmt.Println("Connected to InterSystems IRIS!")
}

3. Creación de una tabla

Vamos a crear una tabla de demostración sencilla:

_, err = db.Exec(`CREATE TABLE IF NOT EXISTS demo (
    id INT PRIMARY KEY,
    name VARCHAR(50)
)`)
if err != nil {
    log.Fatal(err)
}
fmt.Println("Table created.")

4. Inserción de datos

Por el momento, no se admiten inserciones de varias filas; se debe insertar una fila por cada llamada:

_, err = db.Exec(`INSERT INTO demo (id, name) VALUES (?, ?)`, 1, "Alice")
if err != nil {
    log.Fatal(err)
}

_, err = db.Exec(`INSERT INTO demo (id, name) VALUES (?, ?)`, 2, "Bob")
if err != nil {
    log.Fatal(err)
}

fmt.Println("Data inserted.")

5. Consulta de datos

La consulta es sencilla utilizando la interfaz database/sql

rows, err := db.Query(`SELECT id, name FROM demo`)
if err != nil {
    log.Fatal(err)
}
defer rows.Close()

for rows.Next() {
    var id int
    var name string
    if err := rows.Scan(&id, &name); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("ID: %d, Name: %s\n", id, name)
}

That’s all you need to perform basic SQL operations from Go.


Cómo funciona

Bajo el capó, el controlador go-irisnativeutiliza la API nativa de IRIS para una comunicación eficiente y de bajo nivel con la base de datos. El controlador implementa las interfaces estándar database/sql/driver de Go, lo que lo hace compatible con herramientas existentes de Go como:

  • sqlx
  • gorm (con un dialecto personalizado)
  • Herramientas estándar de migración en Go

Esto ofrece a los desarrolladores una API familiar con la potencia y el rendimiento del acceso nativo a IRIS.


Ejemplos de casos de uso

  • Microservicios — servicios ligeros en Go conectados directamente a IRIS.
  • APIs de datos — exposición de endpoints REST o gRPC respaldados por IRIS.
  • Herramientas de integración — conexión de los datos de IRIS con otros sistemas en flujos desarrollados en Go.
  • Aplicaciones IRIS nativas en la nube — despliegue de aplicaciones en Go respaldadas por IRIS en Kubernetes o Docker.

Pruebas con Testcontainers

Si deseas ejecutar pruebas automatizadas sin tener que gestionar una instancia activa de IRIS, puedes usar testcontainers-iris-go.
Este lanza un contenedor temporal de IRIS para realizar pruebas de integración.

Ejemplo de configuración de prueba:

import (
    "context"
    "database/sql"
    "flag"
    "log"
    "os"
    "testing"
    iriscontainer "github.com/caretdev/testcontainers-iris-go"
    "github.com/stretchr/testify/require"
    "github.com/testcontainers/testcontainers-go"
)

var connectionString string = "iris://_SYSTEM:SYS@localhost:1972/USER"
var container *iriscontainer.IRISContainer = nil
func TestMain(m *testing.M) {
    var (
        useContainer   bool
        containerImage string
    )
    flag.BoolVar(&useContainer, "container", true, "Use container image.")
    flag.StringVar(&containerImage, "container-image", "", "Container image.")
    flag.Parse()
    var err error
    ctx := context.Background()
    if useContainer || containerImage != "" {
        options := []testcontainers.ContainerCustomizer{
            iriscontainer.WithNamespace("TEST"),
            iriscontainer.WithUsername("testuser"),
            iriscontainer.WithPassword("testpassword"),
        }
        if containerImage != "" {
            container, err = iriscontainer.Run(ctx, containerImage, options...)
        } else {
            // or use default docker image
            container, err = iriscontainer.RunContainer(ctx, options...)
        }
        if err != nil {
            log.Println("Failed to start container:", err)
            os.Exit(1)
        }
        defer container.Terminate(ctx)
        connectionString = container.MustConnectionString(ctx)
        log.Println("Container started successfully", connectionString)
    }

    var exitCode int = 0
    exitCode = m.Run()

    if container != nil {
        container.Terminate(ctx)
    }
    os.Exit(exitCode)
}

func openDbWrapper[T require.TestingT](t T, dsn string) *sql.DB {
    db, err := sql.Open(`intersystems`, dsn)
    require.NoError(t, err)
    require.NoError(t, db.Ping())
    return db
}

func closeDbWrapper[T require.TestingT](t T, db *sql.DB) {
    if db == nil {
        return
    }
    require.NoError(t, db.Close())
}

func TestConnect(t *testing.T) {
    db := openDbWrapper(t, connectionString)
    defer closeDbWrapper(t, db)

    var (
        namespace string
        username  string
    )
    res := db.QueryRow(`SELECT $namespace, $username`)
    require.NoError(t, res.Scan(&namespace, &username))
    require.Equal(t, "TEST", namespace)
    require.Equal(t, "testuser", username)
}

Esto es ideal para pipelines de CI/CD o pruebas unitarias, garantizando que tu aplicación en Go funcione perfectamente con IRIS de forma aislada.


Conclusión

El soporte de GoLang para InterSystems IRIS ya está aquí, y marca un antes y un después.
Con go-irisnative, ahora puedes crear aplicaciones escalables, concurrentes y nativas en la nube que aprovechen directamente la potencia de IRIS.

Tanto si estás desarrollando microservicios, APIs o herramientas de integración, Go te ofrece simplicidad y rendimiento, mientras que IRIS te brinda fiabilidad y amplias capacidades de gestión de datos.

👉 Probadlo:

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

Iris-AgenticAI: インテリジェントなマルチエージェントワークフロー向けの OpenAI Agentic SDK を使ったエンタープライズオートメーション

コミュニティの皆さん、こんにちは。

この記事では、私のアプリケーションである iris-AgenticAI をご紹介します。

エージェンティック AI の登場により、人工知能が世界とやりとりする方法に変革的な飛躍をもたらし、静的なレスポンスが動的な目標主導の問題解決にシフトしています。 OpenAI の Agentic SDK を搭載した OpenAI Agents SDK を使用すると、抽象化をほとんど行わずに軽量で使いやすいパッケージでエージェンティック AI アプリを構築できます。 これは Swarm という前回のエージェントの実験を本番対応にアップグレードしたものです。
このアプリケーションは、人間のような適応性で複雑なタスクの推論、コラボレーション、実行を行える次世代の自律 AI システムを紹介しています。

アプリケーションの機能

  • エージェントループ  🔄 ツールの実行を自律的に管理し、結果を LLM に送信して、タスクが完了するまで反復処理するビルトインのループ。
  • Python-First 🐍 ネイティブの Python 構文(デコレーター、ジェネレーターなど)を利用して、外部の DSL を使用せずにエージェントのオーケストレーションとチェーンを行います。
  • ハンドオフ 🤝 専門化されたエージェント間でタスクを委任することで、マルチエージェントワークフローをシームレスに調整します。
  • 関数ツール ⚒️ @tool で Python 関数をデコレートすることで、エージェントのツールキットに即座に統合させます。
  • ベクトル検索(RAG) 🧠 RAG 検索のためのベクトルストアのネイティブ統合。
  • トレース 🔍 リアルタイムでエージェントワークフローの可視化、デバッグ、監視を行うためのビルトインのトレース機能(LangSmith の代替サービスとして考えられます)。
  • MCP サーバー 🌐 stdio と HTTP によるモデルコンテキストプロトコル(MCP)で、クロスプロセスエージェント通信を可能にします。
  • Chainlit UI 🖥️ 最小限のコードで対話型チャットインターフェースを構築するための統合 Chainlit フレームワーク。
  • ステートフルメモリ 🧠 継続性を実現し、長時間実行するタスクに対応するために、セッション間でチャット履歴、コンテキスト、およびエージェントの状態を保持します。

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

MQTT IRIS Broker

Hi Guys,

I'm looking to setup an MQTT adapter that also acts as broker to connect directly to an MQTT clients, is there an IRIS adapter or client that can be used as Broker as well?

 

Thanks

1 Comment
Discussão (1)2
Entre ou crie uma conta para continuar