Find

InterSystems Official
· Apr 1 5m read

2025.1 Modernización de la Experiencia del Usuario en Interoperabilidad

La interfaz de usuario de Interoperabilidad ahora incluye experiencias modernizadas para las aplicaciones DTL Editor y Production Configuration, las cuales están disponibles para su activación en todos los productos de interoperabilidad. Podéis alternar entre las vistas moderna y tradicional. Todas las demás pantallas de interoperabilidad permanecen en la interfaz de usuario estándar. Tenéis que tener en cuenta que los cambios se limitan a estas dos aplicaciones, y a continuación se identifica la funcionalidad que está disponible actualmente.

Para probar las nuevas pantallas antes de la actualización, podéis descargar la versión 2025.1 desde nuestra página web del kit de la comunidad aquí: https://evaluation.intersystems.com/Eval/.

Configuración de Producción - Introducción a las Tareas de Configuración
  • Configuración de Producción: Soporte en esta versión de la Configuración de Producción:
    • Creación/Edición/Copia/Eliminación de Hosts
    • Detener/Iniciar Hosts
    • Edición de Configuración de Producción
    • Detener/Iniciar Producciones
  • Integración con Control de Versiones: El soporte para la integración con control de versiones para la funcionalidad de configuración mencionada está disponible.
  • Vista de Panel Dividido: Los usuarios pueden abrir directamente el Editor de Reglas y el Editor DTL desde la pantalla de Configuración de Producción para ver y editar reglas y transformaciones incluidas en la producción en una vista de panel dividido.
  • Filtrado Mejorado: Un cuadro de búsqueda en la parte superior permite buscar y filtrar en todos los componentes de negocio, incluyendo múltiples categorías, DTLs y subtransformaciones. Usad la barra lateral izquierda para buscar independientemente del panel principal y ver los resultados de búsqueda a través de hosts y categorías.
  • Edición Masiva de Categorías de Hosts: Podéis añadir una nueva categoría o editar una existente para una producción añadiendo hosts desde la configuración de producción.
  • Routers Expandibles: Los routers pueden ser expandidos para ver todas las reglas, transformaciones y conexiones en línea.
  • Conexiones de Hosts Reformuladas: Las conexiones directas e indirectas ahora se muestran cuando se selecciona un host de negocio, permitiendo ver el camino completo que un mensaje puede tomar. Colocad el cursor sobre cualquier host de salida o entrada para diferenciar mejor las conexiones. El interruptor Mostrar solo Hosts Conectados filtrará solo los hosts seleccionados y sus conexiones.

 

 

  • Integración con Control de Versiones: El soporte para la integración con control de versiones está disponible.
  • Integración con VS Code: Los usuarios pueden ver esta versión del Editor DTL en su IDE de VS Code.
  • Soporte de Python Embebido: El soporte de Python embebido se extiende a esta versión del Editor DTL.
  • Pruebas de DTL: La utilidad de prueba DTL está disponible en esta versión del Editor DTL.
  • Cambio de Diseño del Panel: El editor DTL soporta un diseño de lado a lado y de arriba a abajo. Haced clic en el botón de diseño en la cinta superior para experimentar con esto.
  • Deshacer/Volver a Hacer: Los usuarios pueden deshacer y rehacer todas las acciones con los botones de deshacer/rehacer que aún no se han guardado en el código.
  • Generar Parámetro de Segmentos Vacíos: El parámetro GENERATEEMPTYSEGMENTS está disponible para generar segmentos vacíos para los campos faltantes.
  • Visualización de Subtransformaciones: Los usuarios pueden ver subtransformaciones haciendo clic en el ícono del ojo para abrir el DTL de la subtransformación en una nueva pestaña.
  • Desplazamiento:
    • Desplazamiento Independiente: Las secciones izquierda y derecha (origen y destino) del DTL pueden desplazarse de manera independiente colocando el cursor sobre una de las secciones y utilizando la rueda de desplazamiento o el trackpad para mover los segmentos verticalmente.
    • Desplazamiento Conjunto: Ambas secciones, origen y destino, pueden desplazarse juntas colocando el cursor en el medio del diagrama.
  • Autocompletado de Campos: El autocompletado está disponible para los campos: 'origen', 'destino' y 'condición', así como para la Clase de Origen, Tipo de Documento de Origen, Clase de Destino y Tipo de Documento de Destino.
  • Numeración Ordinal: El editor visual permite activar y desactivar la visualización de los números ordinales y la expresión del camino completo para cada segmento.
  • Referencias Fáciles: Cuando un campo en el Editor de Acción está enfocado, al hacer doble clic en un segmento en el Editor Gráfico se inserta la referencia del segmento correspondiente en la posición actual del cursor en el Editor de Acción.
  • Sincronización: Al hacer clic en un elemento en el editor visual, se resalta la fila correspondiente en el editor de acción.

 

📣 LLAMADA A LA ACCIÓN 📣

Si tenéis comentarios, por favor proporcionadlos a través de los siguientes canales:

  • Nuevas Características en toda la Interoperabilidad: Introducid una idea en el portal de ideas o participad en otras ideas en el Portal de Ideas de InterSystems. Para nuevas ideas, añadid la etiqueta "Interoperabilidad" en vuestro post o votad positivamente por las características ya propuestas en la lista.
  • 💻 Comentarios Generales sobre la Experiencia del Usuario en toda la Interoperabilidad: Comentad vuestros comentarios o participad en otros comentarios a continuación.
  • 🗒 Sugerencias/Comentarios sobre Aplicaciones Modernizadas (como se describe arriba): Comentad vuestros comentarios o participad en otros comentarios a continuación.

¡Considerad completar la oportunidad de Global Master's para interactuar con el equipo en una sesión de retroalimentación guiada privada y ganar puntos! ¡Inscribíos en estas sesiones a través de Global Masters >> aquí!

Si queréis proporcionar comentarios adicionales de manera privada, por favor enviad vuestros pensamientos o preguntas a: ux@intersystems.com.

Discussion (0)1
Log in or sign up to continue
Question
· Apr 1

S3

Hi Guys,

Not sure what I'm missing here, I'm using to download files that starts with MTC_88 from S3 bucket using AmazonS3 inboundAdapter as below, but I'm not getting anything and I'm sure there thousands of files that starts with MTC_88 

 

 

 

and the log is not getting any errors?

 

Thanks

2 Comments
Discussion (2)2
Log in or sign up to continue
Digest
· Apr 1

Resumen de la Comunidad de Desarrolladores de InterSystems, marzo 2025

¡Hola!

¿No habéis podido entrar en la Comunidad todo lo que queríais este mes? ¡No pasa nada! Os traemos un resumen de este mes de marzo.

Estadísticas generales
✓ publicaciones nuevas:
 18 artículos
 12 anuncios
 1 nueva pregunta
Top 10 publicaciones populares
Uso de OpenEHR con InterSystems IRIS
Por Jose-Tomas Salvador
Presentación del adaptador UDP
Por Jose-Tomas Salvador
Top autores populares
Todos los artículos
#InterSystems IRIS
Evitad usar el paquete llamado «code» con métodos python incrustados usando [Language = python].
Por Ricardo Paiva
Plugin moderno y fácil de usar para VSCode de InterSystems ObjectScript: Visualización de diagramas de clases con PlantUML
Por Jinyao
QuinielaML - Predicción de la 48ª jornada de la Quiniela
Por Luis Angel Pérez Ramos
Presentación del adaptador UDP
Por Jose-Tomas Salvador
Embedded Python VS ObjectScript - Prueba de rendimiento parseando XML
Por Luis Angel Pérez Ramos
Cómo mostrar %Error de estado en la Terminal o ¡Tengamos un nuevo y útil alias de terminal!
Por Luis Angel Pérez Ramos
¿Problemas conectando tu Visual Studio Code con tu instancia de IRIS a través del WebGateway? ¡Pues aquí tienes unos consejos!
Por Luis Angel Pérez Ramos
Volver a lo básico: ¿Por qué InterSystems?
Por Ricardo Paiva
Ollama AI con IRIS
Por Rodolfo Pscheidt
SQLAchemy-iris con la última versión del controlador Python
Por Luis Angel Pérez Ramos
Cómo poner los registros de la aplicación en el ^ERRORS global
Por Jose-Tomas Salvador
Instalar WebTerminal en IRIS 2024.3
Por Pierre-Yves Duquesnoy
QuinielaML - Predicción de la 52ª jornada de la Quiniela
Por Luis Angel Pérez Ramos
 
#Otro
 
#IRIS contest
 
#InterSystems IRIS for Health
 
#Comunidad de Desarrolladores Oficial
 
Todos los anuncios
#InterSystems IRIS
 
#Comunidad de Desarrolladores Oficial
 
#Otro
 
#IRIS contest
 
Todas las preguntas
#InterSystems IRIS
 
marzo, 2025Month at a GlanceInterSystems Developer Community
Digest
· Apr 1

Resumen de la Comunidad de Desarrolladores, marzo 2025

Hola y bienvenidos al boletín de la comunidad de desarrolladores marzo 2025.
Estadísticas generales
✓ publicaciones nuevas:
 18 artículos
 12 anuncios
 1 nueva pregunta
10 nuevos miembros se unieron en marzo
2,056 contenidos publicados de forma constante
742 miembros se unieron de forma constante
Publicaciones populares
Presentación del adaptador UDP
Por Jose-Tomas Salvador
Autores populares
Artículos
#InterSystems IRIS
Evitad usar el paquete llamado «code» con métodos python incrustados usando [Language = python].
Por Ricardo Paiva
Plugin moderno y fácil de usar para VSCode de InterSystems ObjectScript: Visualización de diagramas de clases con PlantUML
Por Jinyao
QuinielaML - Predicción de la 48ª jornada de la Quiniela
Por Luis Angel Pérez Ramos
Presentación del adaptador UDP
Por Jose-Tomas Salvador
Embedded Python VS ObjectScript - Prueba de rendimiento parseando XML
Por Luis Angel Pérez Ramos
Cómo mostrar %Error de estado en la Terminal o ¡Tengamos un nuevo y útil alias de terminal!
Por Luis Angel Pérez Ramos
¿Problemas conectando tu Visual Studio Code con tu instancia de IRIS a través del WebGateway? ¡Pues aquí tienes unos consejos!
Por Luis Angel Pérez Ramos
Volver a lo básico: ¿Por qué InterSystems?
Por Ricardo Paiva
Ollama AI con IRIS
Por Rodolfo Pscheidt
SQLAchemy-iris con la última versión del controlador Python
Por Luis Angel Pérez Ramos
Cómo poner los registros de la aplicación en el ^ERRORS global
Por Jose-Tomas Salvador
Instalar WebTerminal en IRIS 2024.3
Por Pierre-Yves Duquesnoy
QuinielaML - Predicción de la 52ª jornada de la Quiniela
Por Luis Angel Pérez Ramos
#Otro
#IRIS contest
#InterSystems IRIS for Health
#Comunidad de Desarrolladores Oficial
Anuncios
#InterSystems IRIS
#Comunidad de Desarrolladores Oficial
#Otro
#IRIS contest
Preguntas
marzo, 2025Month at a GlanceInterSystems Developer Community
Article
· Apr 1 6m read

Conjunto de mensajes huérfanos

En este artículo, hablaremos sobre los Mensajes Huérfanos.

¿Qué es un Mensaje Huérfano?

Cada cuerpo de mensaje está asociado con un encabezado de mensaje que contiene los metadatos. El encabezado incluye información como el nombre de la configuración de origen, el nombre de la configuración de destino, la hora de creación, la hora de procesamiento, la referencia asociada al cuerpo del mensaje, la información de sesión, el nombre de la clase del cuerpo del mensaje y el estado del mensaje.

Cuando existen registros de cuerpos de mensajes que no tienen sus correspondientes registros de encabezado, estos se denominan cuerpos de mensajes huérfanos. En este artículo, analizaremos las posibles causas que pueden generar cuerpos de mensajes huérfanos.

Purgar solo los Encabezados

En la configuración de la tarea de purga, el parámetro BodiesToo determina si se deben purgar también los cuerpos de los mensajes junto con sus encabezados. Si esta opción está desactivada, la tarea de purga eliminará solo los encabezados de los mensajes, dejando los cuerpos de los mensajes intactos. Estos cuerpos de mensajes se convertirán en registros huérfanos, ya que el encabezado de referencia habrá sido eliminado.

Si purgáis los encabezados de los mensajes pero conserváis los cuerpos de los mensajes, el Portal de Gestión no ofrecerá ninguna opción para purgar estos cuerpos de mensajes huérfanos. En este caso, deberéis eliminarlos de forma programada.

(Traducción de la foto de debajo)

Asistente del programador de tareas

Este asistente os ayuda a programar una tarea para su ejecución por el administrador de tareas o a editar los detalles de una tarea previamente programada. Para definir tareas personalizadas, primero debéis crear una nueva subclase de la clase %SYS.Task.Definition, que luego podrá seleccionarse como un "tipo de tarea".

 

Por favor, consultad la documentación sobre la tarea de purga.

http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=EGMG_purge#EGMG_purge_basic

Clases Message Body complejas (Propiedades que referencian objetos)

Cuando IRIS purga un cuerpo de mensaje, no necesariamente elimina los objetos referenciados en las propiedades de tipo objeto. Específicamente, elimina otros objetos solo si son objetos serializables o si son objetos secundarios (según una relación definida). Para otros objetos, debéis gestionar su eliminación adecuadamente definiendo un disparador de eliminación o implementando el method %OnDelete() en la body class del mensaje.

Un ejemplo de código para la implementación de OnDelete:

Class Sample.Address Extends %Persistent{
/// The street address.
Property Street As %String(MAXLEN = 80);
/// The city name.
Property City As %String(MAXLEN = 80);
/// The 2-letter state abbreviation.
Property State As %String(MAXLEN = 2);
/// The 5-digit U.S. Zone Improvement Plan (ZIP) code.
Property Zip As %String(MAXLEN = 5);
}
Class Sample.Person Extends %Persistent{
/// Person's name.
Property Name As %String [ Required ];
/// Person's Social Security number. This is validated using pattern match.
Property SSN As %String(PATTERN = "3N1""-""2N1""-""4N") [ Required ];
/// Person's Date of Birth.
Property DOB As %Date;
/// Person's home address.
Property Home As Address;
/// Person's office address.
Property Office As Address;
///Callback for object deletion
ClassMethod %OnDelete(oid As %ObjectIdentity) As %Status [ Private ]{
      // Delete the property object references.
      Set tSC = $$$OK, tThis = ##class(Sample.Person).%Open(oid)
      If $ISOBJECT(tThis.Home) Set tSC = ##class(Sample.Address).%DeleteId(tThis.Home.%Id())
      If $ISOBJECT(tThis.Office) Set tSC = ##class(Sample.Address).%DeleteId(tThis.Office.%Id())
      Quit tSC
}
///Callback/Trigger for SQL delete
Trigger OnDelete [ Event = DELETE ]{
      // Delete the property object references. {%%ID} holds the id of the record being deleted.
      Set tID={%%ID}
      Set tThis = ##class(Sample.Person).%OpenId(tID)
      If $ISOBJECT(tThis.Home) Do ##class(Sample.Address).%DeleteId(tThis.Home.%Id())
      If $ISOBJECT(tThis.Office) Do ##class(Sample.Address).%DeleteId(tThis.Office.%Id())
      Quit
}
}

Objetos de tipo Mensaje creados pero nunca enviados a otro host

Cuando un mensaje se envía o reenvía a otro host, IRIS crea un nuevo encabezado de mensaje y asocia el cuerpo de mensaje correspondiente. Si el cuerpo del mensaje/instancia de objeto creada en un Servicio/Proceso de Negocio se guarda en disco/base de datos pero nunca se envía a otro host en producción, no tendrá un encabezado asociado y permanecerá como un Message Body Huérfano. La mejor práctica es no crear un message body a menos que se vaya a reenviar o no llamar al método %Save() en la instancia del objeto (la API SendRequestSync/SendRequestAsync lo guardará antes de poner el mensaje en la cola de configuración de destino). De esta forma, el objeto cuerpo del mensaje no será persistido a menos que se envíe a otro host.

La razón más común de este problema es cuando los desarrolladores:

  • Clonan el cuerpo del mensaje y nunca reenvían el cuerpo del mensaje clonado.
  • Se crean objetos de cuerpo de mensaje en variables de Contexto (BPL) y nunca se reenvían.

Efectos de los Mensajes Huérfanos

Los mensajes huérfanos no serán eliminados por la tarea de purga. Estos mensajes consumirán espacio en disco y, a medida que aumente su número proporcionalmente, el uso del disco incrementará. El espacio en disco no solo provendrá de los datos del cuerpo del mensaje, sino también de cualquier índice/entradas de tabla de búsqueda para cada uno de estos registros de cuerpos de mensaje huérfanos.

Identificación de Mensajes Huérfanos

La existencia de mensajes huérfanos puede identificarse consultando el encabezado y el cuerpo del mensaje. Cada encabezado de mensaje hace referencia al cuerpo de mensaje correspondiente. La referencia al Id del objeto cuerpo de mensaje se almacena en la propiedad MessageBodyId del encabezado y el nombre de la clase del cuerpo del mensaje se almacena en la propiedad MessageBodyClassName del encabezado.

Un ejemplo de consulta para encontrar mensajes huérfanos en la tabla de mensajes HL7:

SELECT HL7.Id  FROM EnsLib_HL7.Message HL7

   LEFT JOIN Ens.MessageHeader hdr

   ON HL7.Id=hdr.MessageBodyId

   WHERE hdr.MessageBodyId IS NULL

La consulta anterior devolverá todos los mensajes HL7 que no tienen sus encabezados correspondientes. La consulta puede modificarse para consultar otros tipos de mensajes simplemente reemplazando el nombre de la tabla del message body.

Purgar Mensajes Huérfanos

El Portal de Gestión no proporciona una forma de purgar los cuerpos de mensajes huérfanos. En este caso, debemos purgar los cuerpos de los mensajes de mediante programación. 

Existe otra rutina escrita como referencia para ayudar a purgar los mensajes huérfanos, pero esta rutina no realiza una purga profunda y solo ayuda a eliminar los cuerpos de los mensajes. He incluido el enlace de GitHub a continuación para descargar el código fuente:

https://gist.github.com/suriyasv/2ed7f2dbcfd8c79f3b9938762c17c0b5

Importante: Esta rutina no se creó específicamente para IRIS (ver artículo original). Debe tomarse simplemente como referencia y ejemplo, pero no debe utilizarse directamente en sistemas en producción.

La mejor práctica es siempre:

  1. Evitar errores de programación (como se mencionó anteriormente) para prevenir mensajes huérfanos.
  2. Configurar la tarea de purga con la opción BodiesToo desactivada solo si es necesario conservar los cuerpos de los mensajes, sabiendo que estos solo podrán purgarse programáticamente.
  3. Implementar relaciones o métodos OnDelete para las propiedades de objetos persistentes.

Espero que este artículo os sea útil al construir vuestra producción. No dudéis en hacernos saber si tenéis preguntas o inquietudes. ¡Gracias!

Discussion (0)1
Log in or sign up to continue