查找

InterSystems 官方
· 十一月 19

Client SDKs available on external repositories

Hi community!

I am excited to say that since the beginning of this year we have published many of the client SDKs for InterSystems IRIS, InterSystems IRIS for Health and Health Connect to the corresponding external repositories (Maven, NuGet, npm and PyPI). This provides many benefits to you such as:

  • You can access the latest releases for a client SDK as soon as they get published, independent of the InterSystems IRIS release cadence
  • You can integrate the SDKs as a dependency with the native package manager tool within your ecosystem and manage dependencies in an industry-standard way
  • End users can access the SDKs directly e.g., when they are looking for direct access to the database layer through a SQL tool such as DBeaver
  • You can publish projects with dependencies on InterSystems client SDKs without including them directly in your project

Here is a list of client SDKs we have published so far, as well as the corresponding version number of the latest release and where to find them:

Java

 

.NET

 

Node.js

 

Python

 

Going forward client SDKs will be published to external repositories as soon as a new version is available. The external repositories will also become the major distribution channel for client SDKs.

Usage of the client SDKs is subject of the Terms of Use as outlined here: https://www.intersystems.com/IERTU/

If you haven't used the external repositories yet, I encourage you to give them a try. As always, we are looking forward to your feedback!

3 条新评论
讨论 (3)2
登录或注册以继续
公告
· 十一月 19

[Vídeo] Tabelas Estrangeiras na versão 2025.2

Oi Comunidade!

Temos o prazer de compartilhar um novo vídeo do nosso canal do YouTube InterSystems Developers:

⏯  Tabelas Estrangeiras na versão 2025.2 @ Ready 2025 

<--break->

Esta apresentação explica as novas melhorias em tabelas externas na versão 2025.2, com foco no aprimoramento do pushdown de consultas. A atualização permite que consultas inteiras, agregações, agrupamentos e limites sejam processados ​​pelo banco de dados externo em vez de localmente, reduzindo significativamente a transferência de dados e melhorando o desempenho para consultas entre bancos de dados.

🗣 Apresentador: @Michael Golden, Principal Systems Developer, InterSystems

Aproveite o vídeo e inscreva-se para ver mais! 👍

讨论 (0)1
登录或注册以继续
公告
· 十一月 19

¿Qué te parece la interfaz de la IA de la Comunidad? La herramienta sigue mejorando cada mes

¡Hola a todos!

La IA de la Comunidad de desarrolladores sigue mejorando cada mes. Como sabéis, se nutre con datos oficiales de la compañía, lo que permite garantizar información rigurosa sobre los productos de InterSystems. Cada vez se le incorporan más manuales, actualizaciones y documentación para mejorar su precisión en las consultas.

Hemos recibido muchos comentarios positivos, también constructivos, sobre la plataforma. Su interfaz ha ido cambiando con el tiempo ¿qué os parece? Para los que andáis más despistados, su estructura en forma de chat permite entablar una conversación, repreguntar, y valorar la calidad de las respuestas.

  

Probad la IA de la Comunidad: https://es.community.intersystems.com/ask-dc-ai

Si aún no la habéis utilizado... estáis tardando. Os podría ayudar mucho tiempo a la hora de resolveros dudas de código, métodos o posibilidades de la tecnología.

Además, en la franja izquierda encontraréis chats por defecto. Os pueden ayudar a encontrar nuevas ideas, explorar posibilidades y conocer más sobre InterSystems.

¿Qué me decís? ¿Tenéis ya la IA de la Comunidad jugando en vuestro equipo? 

讨论 (0)1
登录或注册以继续
问题
· 十一月 19

Australia Brides Second Marriage Matrimony

As Yogesh, with years of experience supporting individuals through sensitive and important matrimonial decisions, I help guide Australia Brides Second Marriage Matrimony on matrimonialsindia.com. I focus on trust, clarity, and understanding, creating a safe and reliable space where brides seeking a second marriage can find genuine profiles and begin a confident new chapter.

讨论 (0)1
登录或注册以继续
文章
· 十一月 19 阅读大约需 5 分钟

¿Cómo ejecutar un proceso en intervalos o según una programación?

Cuando comencé mi trayectoria con InterSystems IRIS, especialmente en el área de Interoperabilidad, una de las preguntas iniciales y más comunes que tuve fue: ¿cómo puedo ejecutar algo en intervalos o según una programación? En este artículo quiero compartir dos clases sencillas que abordan este problema. Me sorprende que no haya clases similares ubicadas en algún lugar de EnsLib. ¿O quizá no busqué bien? En cualquier caso, este artículo no pretende ser un excesivamente complejo, sino una muestra de un par de fragmentos para principiantes.

Así que supongamos que tenemos una tarea: “Tomar algunos datos de una API y colocarlos en una base de datos externa”. Para resolver esta tarea, necesitamos:

  1. Ens.BusinessProcess, que contiene el algoritmo de nuestro flujo de datos: cómo preparar una solicitud para obtener los datos, cómo transformar la respuesta de la API en una solicitud para la base de datos, cómo manejar los errores y otros eventos a lo largo del ciclo de vida del flujo de datos. 
  2. EnsLib.REST.Operation para realizar solicitudes HTTP a la API utilizando EnsLib.HTTP.OutboundAdapter
  3. Ens.BusinessOperation con EnsLib.SQL.OutboundAdapter para insertar los datos en la base de datos externa a través de una conexión JDBC.

Los detalles de la implementación de estos hosts de negocio quedan fuera del alcance de este artículo, así que supongamos que ya tenemos un proceso y dos operaciones. Pero, ¿cómo ejecutarlo todo? El proceso solo puede ejecutarse mediante una solicitud entrante… ¡Necesitamos un iniciador! Uno que se ejecute a intervalos y envíe una solicitud ficticia a nuestro proceso.

Aquí tenemos una clase de iniciador de ese tipo. Le añadí un poco de funcionalidad adicional: se podrán usar llamadas síncronas o asíncronas, y decidir si detener o no el proceso en caso de error si tenemos varios hosts como destino. Pero lo principal aquí es la lista de destinos. A cada elemento (host de negocio) de esta lista se le enviará una solicitud. Prestad atención al evento OnGetConnections: es necesario para construir correctamente los enlaces en la interfaz de producción.

/// Call targets by interval
Class Util.Service.IntervalCall Extends Ens.BusinessService
{

/// List of targets to call
Property TargetConfigNames As Ens.DataType.ConfigName;
/// If true, calls are made asynchronously (SendRequestAsync)
Property AsyncCall As %Boolean;
/// If true, and the target list contains more than one target, the process will stop after the first error
Property BreakOnError As %Boolean [ InitialExpression = 1 ];
Property Adapter As Ens.InboundAdapter;
Parameter ADAPTER = "Ens.InboundAdapter";
Parameter SETTINGS = "TargetConfigNames:Basic:selector?multiSelect=1&context={Ens.ContextSearch/ProductionItems?targets=1&productionName=@productionId},AsyncCall,BreakOnError";
Method OnProcessInput(pInput As %RegisteredObject, Output pOutput As %RegisteredObject, ByRef pHint As %String) As %Status
{
    Set tSC = $$$OK
    Set targets = $LISTFROMSTRING(..TargetConfigNames)

    Quit:$LISTLENGTH(targets)=0 $$$ERROR($$$GeneralError, "TargetConfigNames are not defined")

    For i=1:1:$LISTLENGTH(targets) {
        Set target = $LISTGET(targets, i)
        Set pRequest = ##class(Ens.Request).%New()

        If ..AsyncCall {
            Set tSC = ..SendRequestAsync(target, pRequest)
        } Else  {
            Set tSC = ..SendRequestSync(target, pRequest, .pResponse)
        }
        Quit:($$$ISERR(tSC)&&..BreakOnError)
    }

    Quit tSC
}

ClassMethod OnGetConnections(Output pArray As %String, pItem As Ens.Config.Item)
{
    If pItem.GetModifiedSetting("TargetConfigNames", .tValue) {
        Set targets = $LISTFROMSTRING(tValue)
        For i=1:1:$LISTLENGTH(targets) Set pArray($LISTGET(targets, i)) = ""
    }
}

}

Después de eso, solo necesitáis añadir esta clase a la Producción y marcar nuestro proceso de negocio en la configuración TargetConfigNames.

Pero, ¿qué pasa si los requisitos cambian? Y ahora necesitamos ejecutar nuestro recolector de datos todos los lunes a las 08:00 a. m. La mejor manera de hacerlo es utilizando el Administrador de Tareas. Para ello, debemos crear una tarea personalizada que ejecute nuestro Iniciador de forma programada. Aquí tenéis un código sencillo para esa tarea:

/// Launch selected business service on schedule
Class Util.Task.ScheduleCall Extends %SYS.Task.Definition
{

Parameter TaskName = "Launch On Schedule";
/// Business Service to launch
Property ServiceName As Ens.DataType.ConfigName;
Method OnTask() As %Status
{
    #dim tService As Ens.BusinessService
    Set tSC = ##class(Ens.Director).CreateBusinessService(..ServiceName, .tService)
    Quit:$$$ISERR(tSC) tSC
    
    Set pRequest = ##class(Ens.Request).%New()
    Quit tService.ProcessInput(pRequest, .pResponse)
}

}

Dos cosas importantes aquí:

  • Debéis establecer el tamaño del grupo (Pool Size) del Servicio de Negocio Iniciador en 0 para evitar que se ejecute por Call Interval (la opción Call Interval se puede borrar o dejar tal cual, ya que no se usa cuando el Pool Size es 0).

             

  • Necesitáis crear una tarea en el Task Manager, elegir “Launch On Schedule” como tipo de tarea (no olvidéis comprobar el Namespace), establecer el nombre de nuestro ServiceName Iniciador en el parámetro ServiceName y configurar la programación deseada. Consultad: Operaciones del sistema > Administrador de tareas > Nueva tarea.

Y un bonus

A menudo me he encontrado con casos en los que necesitamos ejecutar algo en Producción solo bajo demanda. Por supuesto, podríamos crear una interfaz personalizada en CSP para ello, pero reinventar la rueda no es nuestro camino. Creo que es mejor utilizar la interfaz típica del Portal de Administración. Así que la misma tarea que creamos anteriormente se puede ejecutar manualmente. Solo hay que cambiar el tipo de ejecución de la tarea a “On Demand”. La lista de tareas On Demandestá disponible en System > Task Manager > On-demand Tasks, donde veréis el botón Run. Además, el botón Run(ejecución manual) está disponible para cualquier tipo de tarea.

Eso es todo. Ahora tenemos una arquitectura de interoperabilidad bastante sólida para nuestros hosts de negocio, y tres formas de ejecutar nuestro recolector de datos: por intervalo, según un horario o manualmente.

讨论 (0)0
登录或注册以继续