#InterSystems IRIS

4 Seguidores · 1.4K Publicaciones

InterSystems IRIS es una Plataforma completa de datos.
InterSystems IRIS le proporciona todo lo que necesita para capturar, compartir, comprender y actuar sobre el activo más valioso de su organización, sus datos.
Dado que es una plataforma completa, InterSystems IRIS elimina la necesidad de integrar varias tecnologías de desarrollo. Las aplicaciones necesitan una menor cantidad de código, menos recursos del sistema y poco mantenimiento.

Anuncio Marcus Wurlitzer · dic 28, 2021

¡Hola desarrolladores!

Estoy encantado de presentar Git para InterSystems IRIS, mi primera contribución a OpenExchange.

Git para InterSystems IRIS es un paquete de control de código fuente, que pretende facilitar una integración nativa del workflow de Git con la plataforma InterSystems IRIS. Está diseñado para trabajar como un enlace transparente entre InterSystems IRIS y un directorio de código con Git activado que, una vez configurado, no requiere interacción del usuario. Podéis encontrar una descripción más detallada en GitHub.

0
0 198
Artículo Eduardo Anglada · dic 28, 2021 1m read

¡Hola desarrolladores!

El Administrador de paquetes ZPM se está haciendo muy popular y por ello la librería de paquetes está creciendo.

Así, algunas soluciones o muestras pueden crearse con InterSystems IRIS y uno o dos paquetes instalados.

Me gustaría compartir con vosotros iris-docker-zpm-usage-template - una plantilla que se puede utilizar exactamente con esa finalidad.

0
0 146
Artículo Eduardo Anglada · dic 24, 2021 1m read

A veces es necesario ejecutar comandos desde la consola del sistema operativo del servidor, en el que se localiza tu programa ObjectScript, para lanzar programas, servicios de sistema operativo, programar tareas cron... entre otras actividades. Para ello, el lenguaje tiene una función llamada $ZF(-100). Se usa así:

$ZF(-100,flags,program,args)

En el que flags es el tipo de comando que quieres ejecutar. En nuestro caso, el flag es "/ SHELL", para ejecutar shell commands en el sistema operativo del servidor.

Program es el nombre del programa o servicio para ser ejecutado.

0
0 179
Artículo Alberto Fuentes · dic 24, 2021 4m read

¡Hola desarrolladores!

Como sabéis, es muy fácil publicar un paquete en el repositorio de la Comunidad de Desarrolladores

Pero, ¿cómo se puede probar antes de publicarlo? ¿Cómo se puede garantizar que todo lo que se introdujo en module.xml funciona correctamente?

¡Seguid leyendo las instrucciones que os detallo a continuación!

0
0 198
InterSystems Official Mario Sanchez Macias · dic 17, 2021

13 de diciembre de 2021

InterSystems está investigando el impacto de una vulnerabilidad de seguridad relacionada con Apache Log4j2.

La vulnerabilidad — impactando al menos a Apache Log4j2 (versiones 2.0 a 2.14.1) — fue anunciada recientemente por Apache y ha sido notificada en la Base de Datos de Vulnerabilidad Local de Estados Unidos (NVD) como CVE-2021-44228 con la calificación de gravedad más alta, 10.0.

Por favor, consultad esta página para conocer más detalles sobre la vulnerabilidad y actualizaciones sobre si los productos de InterSystems están afectados.

0
0 185
Artículo Alberto Fuentes · dic 17, 2021 6m read

¡Hola desarrolladores!

Hace un tiempo lanzamos InterSystems Package Manager - ZPM. Uno de los objetivos de ZPM es permitir empaquetar soluciones y enviarlas al registro de ZPM para que su implementación sea tan sencilla como el comando "install tu-paquete".

Para ello es necesario introducir el archivo module.xml en tu repositorio, que describe en qué consiste tu paquete de InterSystems IRIS.

En este artículo se describen las diferentes partes de module.xml, que te ayudarán a configurar el tuyo.

Comenzaré por el paquete samples-objectscript, que instala en IRIS la aplicación Sample ObjectScript y se puede instalar mediante:

zpm: USER>install samples-objectscript

Este es probablemente el paquete más sencillo y aquí está el archivo module.xml, que describe el paquete:

<?xml version="1.0" encoding="UTF-8"?>
<Export generator="Cache" version="25">
  <Document name="samples-objectscript.ZPM">
    <Module>
      <Name>samples-objectscript</Name>
      <Version>1.0.0</Version>
      <Packaging>module</Packaging>
      <SourcesRoot>src</SourcesRoot>
      <Resource Name="ObjectScript.PKG"/>
    </Module>
    
  </Document>
</Export>
0
0 229
InterSystems Official David Reche · dic 13, 2021

Ya están disponibles las versiones de prueba 2021.2 de InterSystems IRIS, IRIS for Health e IRIS Studio.

Al ser versiones de prueba, estamos impacientes por aprender de vuestras experiencias con esta nueva versión antes de su lanzamiento oficial el próximo mes. Podéis compartir vuestros comentarios a través de la Comunidad de Desarrolladores, para crear entre todos un mejor producto.

InterSystems IRIS Data Platform 2021.2 hace aún más fácil desarrollar, desplegar y gestionar aplicaciones aumentadas y procesos de negocio que canalizan silos de datos y aplicaciones aisladas. Ofrece muchas nuevas funcionalidades, como:

0
0 178
Artículo Ricardo Paiva · dic 10, 2021 4m read

Me gustaría compartir algunas funciones de almacenamiento que también existen en Caché y que son prácticamente desconocidas y en su mayoría no se utilizan. Por supuesto, están disponibles en IRIS y son más relevantes con arquitecturas de almacenamiento extensas y distribuidas.

0
0 193
Artículo Muhammad Waseem · dic 9, 2021 3m read


En este artículo, mostraré los conceptos básicos de la autenticación OAuth2 con la cuenta de GitHub con la ayuda de la demostración online
https://dappsecurity.demo.community.intersystems.com/csp/user/index.csp usando SuperUser | SYS

Recomendaciones:

A continuación, necesitamos 3 pasos:

  • Paso 1: Registrar la aplicación con el servidor de autenticación de GitHub
  • Paso 2: Configurar el cliente OAuth 2.0 desde el portal de administración de InterSystems
  • Paso 3: Llamar a la API para iniciar sesión con una cuenta de GitHub

Así que... ¡empecemos!

0
0 499
Artículo Ricardo Paiva · dic 3, 2021 2m read

Si defines una tabla/clase persistente, el compilador de clases genera una definición de almacenamiento adecuada. Otra opción es definir un mapeo SQL para un almacenamiento global que ya existe.  Esto ya se explicó estupendamente en otra serie de artículos:  El arte del mapeo de globales para Clases 1 de 3

0
0 230
Pregunta Flávio Lúcio Naves Júnior · nov 30, 2021

¡Hola a todos!

Estoy intentando exportar una clase a xml y quitar la etiqueta "xmlns" de la clase madre. Estas son mis clases para crear el XML.

Class Class.Test Extends (%RegisteredObject, %XML.Adaptor)
{ 

Parameter NAMESPACE = "http://mynamespace.com/test"; 
Property Person As Class.Person; Property Address As Class.Address; 

}
Class Class.Person Extends (%RegisteredObject, %XML.Adaptor)
{ 

Parameter NAMESPACE = "http://mynamespace.com/test"; 
Property name As %String; Property age As %String; 

}
Class Class.Address Extends (%RegisteredObject, %XML.Adaptor)
{ 

Parameter NAMESPACE = "http://mynamespace.com/test"; 
Property location As %String; 

}
2
0 273
Artículo Ricardo Paiva · nov 29, 2021 14m read

En la primera parte de esta serie de artículos, hablamos sobre cómo leer un fragmento "grande" de datos del contenido sin procesar de un método HTTP POST y guardarlo en una base de datos como una propiedad de flujo de una clase. Ahora veremos cómo guardar esos datos y metadatos en formato JSON.

Desafortunadamente, Advanced REST Client no permite configurar objetos JSON con datos binarios como valor de una clave (o quizá simplemente no he descubierto cómo hacerlo), así que decidí escribir un cliente simple en ObjectScript para enviar datos al servidor.

Creé una nueva clase llamada RestTransfer.Client y le añadí los parámetros Server = "localhost" y Port = 52773 para describir mi servidor web. Y creé un método de clases GetLink en el que creo una nueva instancia de la clase %Net.HttpRequest y establezco sus propiedades con los parámetros mencionados anteriormente. 

0
0 1117
Anuncio Esther Sanchez · nov 25, 2021

¡Hola desarrolladores!

Os traemos la primera ponencia del Virtual Summit 2021, ya disponible en el Canal de YouTube de la Comunidad de Desarrolladores en inglés.

El idioma del vídeo es el inglés y podéis activar los subtítulos en inglés si os resulta más fácil entender el vídeo leyendo el texto. Solo tenéis que hacer clic en el icono de subtítulos abajo:

 

Introducción a Python Embebido (Embedded Python)

0
0 446
Artículo Alberto Fuentes · nov 23, 2021 6m read

¡Hola desarrolladores!

¿Sabéis cómo crear una solución de analítica de datos con InterSystems IRIS?

Para empezar, pongámonos de acuerdo sobre lo que es una solución de analítica de datos - este podría ser un tema muy amplio -. Por ello, acotaremos el conjunto de soluciones que se podían presentar al Concurso de Analítica de Datos.

Y a continuación examinaremos tres tipos de soluciones para analítica de datos: de monitorización, de análisis interactivo y de elaboración de informes (reporting)

1
0 277
Artículo Ariel Arias · nov 23, 2021 6m read

Bajo el escenario que ya tenemos una API REST, funcionando, y queremos incorporarla a una producción para contar con trazabilidad y todas las ventajas que ofrece IRIS para interoperar, dejo este artículo para cambiar una API existente que responde un JSON, para responder el mismo JSON pero dejando sus trazas en una producción de la misma instancia.

Lo primero, ya contamos con una aplicación creada, llamada /restapi y que tiene como DispatchClass: Testing.REST.ApiDisp (o la clase que tenemos en nuestra instancia).

Este ejemplo, responderá un JSON a la petición: /restapi/test

La clase:

0
0 473
Artículo Pablo Frigolett · nov 23, 2021 2m read

En esta minera - Operación de Candelaria para Lundin Mining - como en muchas otras, los sistemas de registro de eventos de la operación están separados de forma física y lógica. Buscando encontrar trazar la ubicación de material en el yacimiento y los diámetros de material relevante una vez molido lo extraído, sus ejecutivos usan herramientas no especializadas, planillas de cálculo en este caso, para bucear en los datos. El escenario se complica cuando en los datos no hay información de cruce del vehículo que transporta el material desde su ubicación en el yacimiento con la información del

0
0 130
Artículo Bernardo Linarez · nov 22, 2021 4m read

Hace algún tiempo, empecé a recibir alertas de consumo excesivo de espacio en el sistema de archivos (filesystem) de un cliente, cuya solución utiliza la capa de interoperabilidad (IRIS / Ensemble) de manera masiva.

Me percaté que las bases de datos que crecían eran las dedicadas a la interoperabilidad, mas no la base de datos operacional de la solución, por tanto había que revisar los mensajes de las diferentes integraciones presentes.

También verifiqué los espacios libres de cada base de datos por si compactar y truncar podrían liberar algún espacio importante, pero no era el caso.

0
1 275
Artículo Pablo Frigolett · nov 22, 2021 4m read

Servidor Externo de Lenguaje Python en un contenedor

La primera vez que se intenta iniciar un servidor externo de lenguaje Python (de aquí en adelante Gateway de Python), en la versión en contenedor, intenta ejecutar cierto código para detectar si está instalado el paquete python3-venv.

La imagen que está en containers.intersystems.com:

  • a la fecha de este artículo es la versión 2021.1.0.215.0
  • está basada en Ubuntu 18 LTS
  • viene con python 3.6.9 instalado
0
0 172
Artículo Bernardo Linarez · nov 22, 2021 3m read

Mas de una vez nos ha sucedido que requerimos añadir algún comportamiento a algún Bussiness Service core (tal como viene "de caja").

En este caso puntual, tomaré de ejemplo el BS EnsLib.RecordMap.Service.FileService, el cual nos permite leer un archivo (normalmente un csv) desde una carpeta configurable. A veces sucede que el archivo que estamos leyendo es muy grande, y por tanto contiene muchas filas, y nuestra lógica requiera saber exactamente cuando se termino de procesar y además generar un evento que incluso sea procesado por algún Host personalizado.

0
0 229
Artículo Bernardo Linarez · nov 22, 2021 3m read

En algún momento, puede surgir la necesidad de llamar (sentencia CALL en BPL) de manera dinámica, porque hay mucha lógica de negocio compartida por distintos orígenes de datos, que da pie a que esa lógica se comparta y no se individualice cada llamada (CALL).

Esto tiene ventajas a nivel de mantenimiento de la lógica definida, catch de errores y administrar los hilos de ejecución de manera centralizada.

Entonces lo normal es que se defina una sentencia FOREACH que ejecute la sentencia CALL según cada ítem que se necesite.

0
0 188
Artículo Bernardo Linarez · nov 22, 2021 2m read

Tal como sucede con otros tipos de Host, en ciertos casos de uso nos conviene personalizar el comportamiento de algún Business Operation (BO) de caja. En este caso, tomaré de ejemplo el siguiente EnsLib.REST.GenericOperation

En principio, el caso de uso era un simple Pass Through de una petición HTTPRest, por lo que se decidió usar tanto el BS y el BO core de IRIS para reenviarlo. Sin embargo, el destino de esta petición, necesitaba algunos Header por defecto, que no proporcionaba el request original.

0
0 201
Artículo Rubén Larenas · nov 22, 2021 2m read

Estimados

Todos ya conocerán las propiedad y facilidades que entrega %Populate para las clases registradas, es una herramienta muy útil a la hora de realizar alguna demostración o presentación. Sin embargo, también habrán notado que por defecto tiene un set de datos localizado y creado para Estados Unidos lo que en algunas situaciones puede ser una dificultad.

Es por esta razón que les dejo este pequeño ejemplo de cómo usar POPSPEC para poder localizar y crear nuestro propio conjunto de datos de prueba.

En primer lugar creemos nuestra clase persistente:

0
0 108
Artículo Eduardo Anglada · nov 22, 2021 3m read

¡Hola amigos!

A veces necesitamos importar datos a InterSystems IRIS desde archivos de tipo CSV. Esto puede hacerse, por ejemplo, mediante la herramienta csvgen, que genera una clase e importa todos los datos a ella.

Pero, ¿qué pasa si tienes tu propia clase y quieres importar datos desde un archivo CSV a una tabla que ya existe previamente?

Hay varias formas de hacerlo, ¡pero puedes utilizar csvgen (o csvgen-ui) otra vez! Preparé un ejemplo y estoy encantado de compartirlo con todos. ¡Vamos allá!

0
0 202