Buscar

Limpiar filtro
Artículo
Luis Angel Pérez Ramos · 13 jun, 2023

Mi primera experiencia usando IAM

Experiencia & comentarios del curso online "Hands-On with InterSystems API Manager for Developers" Con mis conocimientos básicos de contenedores Docker y API REST, me gustaría probar el uso del administrador de APIs de InterSystems para gestionar las API y los microservicios. Completé este curso en línea utilizando mi instancia local de IRIS como host (sistema operativo Windows) e IAM ejecutándose en una máquina virtual Linux. En primer lugar, presentaré InterSystems API Manager (IAM), a continuación explicaré los pasos para configurar mi entorno local y, por último, repasaré los capítulos del curso. Introducción Hoy en día, la administración de API es muy importante al aprovechar las ventajas de una implementación fácil, siempre que se cuente con un portal de interfaz de usuario centralizado para administrar, monitorizar y proteger el tráfico de las APIs. InterSystems API Manager (IAM) permite la gestión de las API y los microservicios consumidos y expuestos por la aplicación IRIS. Es una puerta de enlace API entre los sistemas ascendentes y descendentes y también tiene una forma de seguimiento visual para averiguar a qué API se llama, con qué frecuencia se han llamado y quién las llamó. Beneficios del uso de IAM: Monitorización de APIs basadas en HTTP Control del tráfico. Protección de la seguridad de las APIs mediante el uso de mecanismos de securización. Facilidad de uso para nuevos desarrolladores. Configuración de IAM Lo que tengo instalado antes de empezar a configurar el IAM: Windows (Instancia de IRIS instalada) Linux VM (Docker instalado) Habilitación de la instancia de InterSystems IRIS para usar IAM Open management portal of IRIS instance, enable IAM. En el Portal de Gestión seleccionar System Administration > Security > Users y seleccionar al usuario IAM Hacer click en la opción Password Introducir y confirmar una contraseña para el usuario IAM Habilitar el usuario IAM marcando el check box Grabar Habilitar la aplicación web IAM (Asegúrate que tu licencia de IRIS especifica "API Management") En el Portal de Gestión selecciona System Administration > Security > Applications > Web Applications y selecciona "/api/iam" Marca Habilitar aplicación Grabar Descarga y descomprime los archivos de instalación de IAM Descarga el kit de instalación de IAM de WRC para entornos Linux Extrae los archivos tar (No descomprimas iam-image.tar, es la imagen de Docker de IAM) Configuración y arranque de IAM En este paso, he usado el usuario ROOT porque recibía errores como "No se puede cargar el Portal de Gestión correctamente" o el script de configuración no pasaba el valor de la variable de entorno al archivo docker-compose.yml cuando usaba sudo con mi usuario de Linux. Una solución a este último fue usar "sudo -E" para pasar las variables de entorno. Abrir el terminal y ejecutar el comando "docker load -i iam_image.tar" desde el directorio en el que se ubicó el tar de la imagen de IAM. Ejecuta "source ./scripts/iam-setup.sh" en el directorio actual o "source ./iam-setup.sh" desde la carpeta "scripts". Introduce el nombre exacto de la imagen de IAM y el nombre del repositorio de https://containers.intersystems.com/contents Por ejemplo: intersystems/iam:3.0.2.0-2 (Este paso es obligatorio; de lo contrario, recibirá un error sobre fallo de autenticación del repositorio al ejecutar "docker compose") Introduce la IP de tu máquina (Puedes encontrarla bajo la etiqueta de IPV4 en la configuración de Windows o lanzando un ipconfig (no uses localhost o 127.0.0.1) Introduce el puerto web de la instancia de IRIS, for example 52773 Configura el password definido previamente para el usuario IAM Dentro de la carpeta "scripts" asegúrate de ejecutar "iam-test.sh" para probar la conexión Dentro de la carpeta "scripts" ejecuta "docker compose up -d" para arrancar la IAM Abre el portal de gestión del IAM accediendo a: http://localhost:8002/overview Si no puede hacer ping a la dirección del host usando VM, comprueba el Firewall de Windows - Advanced Settings - Inbound Rules. Habilita File and Printer Sharing (Echo Request - ICMPv4-In) Profile: Private, Public Prueba de IAM Dentro del kit de instalación, encontrará un script llamado "iam-test.sh" en el directorio de scripts. Escriba y ejecute "./iam-test.sh" para comenzar a probar la conexión entre IAM y la instancia de IRIS. Nota: Si el resultado de la prueba dice "Error al crear el servicio. Código de estado HTTP: 000 o Error al crear el servicio. Código de estado HTTP: 409", comprueba el estado de Docker, si funciona correctamente pero sigue sin funcionar, tire el contenedor desplegado y ejecuta nuevamente la instrucción de docker compose, por mi experiencia, esto puede suceder tras pausar la máquina virtual. Para más información puedes encontrar aquí la documentación de configuración de IAM: https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=CIAM3.0_install#CIAM3.0_install_setupIAM Y el ejercicio: https://learning.intersystems.com/course/view.php?name=IAMExercise Capítulos del curso Tras realizar el ejercicio podemos encontrar 3 capítulos principales: Configuración de Servicios (Services) Configuración de Rutas (Routes) Configuración de Consumidores y Plugins (Consumers) Antes de comenzar a usar IAM, este ejercicio me pedía que hiciera una solicitud REST usando el método GET, esta solicitud HTTP es del servidor del cliente que apunta directamente al punto final, que es una aplicación web creada en una instancia de IRIS. Para los siguientes pasos, este ejercicio me mostró cómo configurar los servicios a los que se reenvía la solicitud API y la ruta que analiza la solicitud entrante y luego la asigna a la API más adecuada. Configuración de servicios y enrutadores ¿Qué es un servicio? Se configura un servicio para conectar API Manager a InterSystems IRIS; normalmente tiene un servicio por cada servicio REST o aplicación web dentro de InterSystems IRIS. Por ejemplo, si tiene una aplicación web con la ruta base /rest/coffeemakerapp, configurará un servicio dentro de API Manager para esta URL. Los servicios generalmente se definen antes que las rutas. ¿Qué es una Ruta? Una ruta define lo que llamarán las aplicaciones cliente a InterSystems API Manager. Por lo general, define un servicio antes que una ruta porque la interfaz le permite crear fácilmente las rutas correspondientes directamente desde un servicio definido. Las rutas suelen ser versiones simplificadas de las rutas dentro de InterSystems IRIS. En el siguiente ejemplo, creará rutas para /test, /coffeemakers, /coffeemaker y /newcoffeemaker. Cuanto más específicas sean sus rutas, más control tendrá sobre sus API dentro de API Manager, tanto en la visualización de métricas como en la adición de complementos a rutas específicas. Crear un servicio: Desde el portal de administración de IAM, seleccione la pestaña Services Haga clic en New Service y asígnele un nombre Seleccione Add usando URL Proporcione la URL base, que es la ruta URL exacta que especificó en la aplicación web, y verifique que la dirección IP de la instancia sea correcta (no use localhost o 127.0.0.1) Crear una ruta: Desplácese hacia abajo en el resumen del servicio y haga clic en Add a Route Especifique nombre, protocolos, ruta(s) El campo Service debe generarse automáticamente con los detalles del servicio creado previamente. El ejercicio requería que deseleccionáramos Strip Path en Advanced Fields. Si se selecciona, esto elimina la ruta al enviar la solicitud a InterSystems IRIS, que es un elemento importante para conectarse al endpoint de InterSystems IRIS. Una vez creados el servicio y la ruta, puede utilizar un cliente REST como Postman para enviar una solicitud directamente a IAM y recibir una respuesta "200 ok", por ejemplo: GET http://10.0.0.1:8000/test ( /test es la Route creada). Nota: en mi caso, la URL de la solicitud HTTP debe coincidir con la dirección IP de la VM de Linux, puedes encontrar la dirección IP a través de Configuración-Red o ejecutar el comando "ifconfig" en la terminal. Abra el Portal de administración de IAM, verá que la solicitud para mostrar todas las cafeteras se registró correctamente, desde el cliente REST hasta IAM. Incluso con las solicitudes CRUD básicas, en lugar de enviar una solicitud HTTP directamente a la aplicación web de IRIS, el uso de IAM le brinda una representación visual para tomar el control de las API y mantener la seguridad de los endpoints. Uso de complementos Uno de los beneficios de usar IAM es que tiene muchos complementos disponibles, como el complemento de limitación de velocidad para ayudar con la limitación, el complemento ACL, el complemento OAuth2.0. En mi caso, compartiré mi experiencia de habilitar la autenticación básica y crear un consumidor. Habilitar complemento de autenticación básica Abra el portal de administración de IAM Admin y selecciona la pestaña de Plugin Click en New Plugin > Basic Authentication > Create Cree un usuario de IRIS que necesite para la autenticación básica Abra el portal de gestión de IRIS Vaya a Administración del sistema > Seguridad > Usuarios > Crear nuevo usuario Establecer nombre de usuario, contraseña Puedes dejar el resto de campos en blanco, en mi caso he creado un usuario llamado "CoffeeManager" Crear un consumidor y configurar sus credenciales Vaya al Portal de administración de IAM, seleccione la pestaña Consumers Haga clic en New Consumer > Introduce CoffeeManager (en mi caso) en Username > Create Vaya a la página de información de CoffeeManager > Credentials > New Basic Auth Credential Utilice las credenciales de usuario que creamos en la instancia de IRIS > Guardar Hemos concluido con todos los requisitos para que el plugin de autenticación básica sea funcional. Enviemos una solicitud HTTP utilizando autenticación básica con la credencial "CoffeeManager" que creamos en el último paso Vaya a la página de información de CoffeeManager > Activity, verá que se ha registrado una solicitud con éxito Conclusión En conclusión, he comenzadopresentando qué es InterSystems API Manager (IAM) y sus beneficios. A continuación he seguido de un tutorial sencillo sobre cómo configurar IAM en una máquina virtual Linux y cómo usar IAM implementando sus funciones básicas, crear servicios y rutas, habilitar complementos y consumidores. Si tienes alguna pregunta y comentario, no dudes en ponerte en contacto. ¡Diviértete y disfruta con IAM!
Anuncio
Esther Sanchez · 21 feb, 2023

Novedades en Open Exchange

¡Hola Comunidad! Os mostramos aquí las mejoras que hemos realizado en Open Exchange. Echadle un vistazo y esperamos que os resulten útiles! Si tenéis alguna duda o pregunta, podéis dejarla en los comentarios de la publicación. En la pestaña ANALYTICS de vuestras apps, ahora podéis ver estadísticas detalladas del número de instalaciones de vuestra app a través de IPM (antes ZPM) El filtro "ObjectScript quality test" ahora permite encontrar apps que han sido probadas por Community objectscriptQuality. Podéis acceder al informe de calidad en la misma página de la app, en la columna de la derecha, para ver su rendimiento. Y no dudéis en usar esa app para probar vuestros propios proyectos. Apps con el filtro "ObjectScript quality test passed" >> Ahora también se pueden afinar los resultados de las búsquedas para que muestren solo aplicaciones que incluyan Docker y/o Python: Apps con Docker Apps con Python O buscar solo aplicaciones que estén soportadas oficialmente por InterSystems: Apps soportadas oficialmente por InterSystems >> Tanto la página con el perfil personal como la página de cada app tienen una pestaña AWARDS (premios) que muestra todos los premios que han recibido tanto los miembros de Open Exchange como las aplicaciones: Miembros de Open Exchange más premiados >> Si queréis asociar vuestra aplicación con uno o varios artículos en la Comunidad o con vídeos en YouTube, ahora podéis incluir múltiples enlaces a ellos cuando editéis la aplicación.
Artículo
Ricardo Paiva · 17 jun, 2021

Cómo crear un PDF a partir de un archivo de texto

## Cómo utilizar Java Gateway para acelerar el desarrollo InterSystems IRIS incluye Object Gateways dinámicos para Java, .NET y (ahora) Python. Estos *gateways* permiten que tu aplicación IRIS utilice bibliotecas en estos lenguajes, eliminando la necesidad de crear todo desde cero en ObjectScript. En este ejemplo, utilizamos las bibliotecas [iTextPdf](https://itextpdf.com/) y [Apache PdfBox](https://pdfbox.apache.org/) para leer un archivo de texto y producir un PDF básico a partir de él. Estas bibliotecas son controles PDF profundos y ricos, por lo que un poco de desarrollo podría producir una aplicación de ejemplo que ofrezca resultados mucho más convincentes para tus necesidades. También he incluído un archivo de clase corto el cual hace que su uso desde ObjectScript sea muy sencillo.   ## Repositorio de GitHub Las fuentes de la demostración están disponibles en el github de la Comunidad de InterSystems.      ## Instalación La instalación de TextToPDF requiere que tengas suficiente acceso a tu servidor IRIS para trabajar con *gateways* y clases. ### 1. Clonar este repositorio Clona este repositorio en un directorio de tu servidor IRIS: git clone https://github.com/intersystems-community/iris-pdf-generator.git ### 2. Crear un Java Gateway En la consola de administración, ve a *System Administration* > *Configuration* > *Connectivity* > *Object Gateways* y elige "*Create New Gateway*" Object Gateway For: Java Gateway Name: iris-pdf-generator Port: 54545 Class Path: (directory where you cloned the repo)/target/iris-pdf-generator-0.1.0-jar-with-dependencies.jar Deja todo lo demás como predeterminado y haz clic en *Save*. ### 3. Cargar el archivo de clase En la consola de administración, asegúrate de que estás en el *namespace* del usuario, ve a *System Explorer* > *Classes*, y elige "*Import*". Busca el directorio donde clonaste este repositorio y elige "*all files*" en el desplegable con los tipos de archivos. Selecciona el archivo PdfGenerator.cls. Haz clic en "*Next*" y luego en "*Import*". ## Uso Ahora que todo está instalado, puedes usarlo desde IRIS. Abre una consola y haz lo siguiente, sustituyendo "" con el nombre del directorio en el que clonaste este repositorio en: set status = ##class(User.PdfGenerator).TextToPdf("<clone dir>\example.txt", "<clone dir>\example.pdf") Eso creará `example.pdf` como una versión PDF de `example.txt`.
Anuncio
David Reche · 24 mar, 2020

Varios avisos sobre HealthShare (23 de marzo)

Este mensaje contiene tres Avisos recientes sobre HealthShare. El detalle de estos avisos también se encuentran en la página de Alertas y Avisos de Productos de InterSystems Advisory: Patient data is missing in the HSAA.PatientNumber table Advisory: The UpdatePlan for all cubes and cube groups is set to be Manual instead of BuildSynch Advisory: Slow DELETE query during Health Insight data ingestion Si tenéis alguna pregunta sobre estos avisos, contactad por favor con el Centro de Soporte Internacional (WRC).
Anuncio
David Reche · 13 mayo, 2020

Varios avisos sobre HealthShare (12 de mayo, 2020)

Este mensaje contiene tres Avisos recientes sobre HealthShare. Estos avisos también se encuentran en la Página de Avisos y Alertas de Productos de InterSystems Advisory: A manager from one facility could view users from another facility Advisory: Significant Performance Issues with ListEncounterRelationships() Advisory: The Lab Results Table in Clinical Viewer does not display "IM" results Si tenéis alguna pregunta sobre estos avisos, contactad por favor con el Centro de Soporte Internacional (WRC), a través de su email: support@InterSystems.com o su teléfono: +1.617.621.0700.
Anuncio
Esther Sanchez · 8 jun, 2021

¡Global Masters en español!

¡Hola desarrolladores! Estamos encantados de anunciaros que ya podéis elegir el idioma de Global Masters, la plataforma de fidelización de InterSystems! Está disponible en los cinco idiomas de la Comunidad de Desarrolladores: inglés, español, portugués, japonés y chino. Cómo cambiar el idioma en el perfil: No os olvidéis de hacer clic en “Guardar” Vamos traduciendo todo poco a poco. La mayoría de los retos, por ejemplo, están en inglés. ¡Pero esto es solo el comienzo, pronto veréis más contenido en el idioma que hayáis elegido! ¿Aún no eres miembro de Global Masters? Puedes darte de alta aquí usando tus credenciales de acceso a la Comunidad de Desarrolladores. Y descubre más sobre Global Masters en este artículo.
Anuncio
Esther Sanchez · 20 jul, 2021

Nuevo vídeo: Continuando con ObjectScript

¡Hola Comunidad! Hemos grabado el webinar que hicimos ayer y lo hemos subido al canal de YouTube de la Comunidad de Desarrolladores en español. Si os perdisteis el webinar o lo queréis volver a ver con más detalle, ya está disponible la grabación! David Reche es uno de los cracks de InterSystems. Así que, si queréis seguir aprendiendo ObjectScript... ¡no os perdáis el vídeo! ⏯ Continuando con ObjectScript Por cierto, en las listas de reproducción del canal de YouTube de la Comunidad de Desarrolladores en español podéis ver todos los webinars que hemos realizado (¡ya llevamos trece!), varios tutoriales, trucos, demos... ¡Echadle un ojo y dadle al play! ▶️
Anuncio
Jose-Tomas Salvador · 22 dic, 2021

Peticiones de Mejoras, Ideas e Innovación

Sólo quería dar visibilidad a un repositorio en GitHub donde todo el mundo puede publicar Peticiones de Mejora de producto, Ideas e Innovaciones que crea que estarían muy bien tener dentro de nuestro ecosistema de tecnologías de InterSystems. Si quieres añadir tu solicitud de mejora, o echar un vistazo y ver si ya está allí, votar por ella, contribuir, etc.., haz click en este link. No garantiza que Product Management vaya a decidir ir en esa dirección, tienen que sopesar muchas cosas para decidir el roadmap de nuestros productos, pero tener un input directo desde nuestra comunidad creo que es de un valor incalculable. Así que, ¡anímate y haznos sugerencias!
Anuncio
David Reche · 25 mar, 2021

Nuevo Concurso para Desarrolladores: Herramientas para desarrolladores

¡Hola desarrolladores! Lo habéis pedido – ¡y ya está aquí! Lanzamos un nuevo concurso para crear soluciones de código abierto utilizando InterSystems IRIS. El tema de este noveno concurso es: Developer Tools Envía una aplicación que ayude a desarrollar más rápido o a tener código de más calidad, o que ayude en la etapa de pruebas, en la implementación, en el soporte o la monitorización de las soluciones desarrolladas con InterSystems IRIS. Estará activo durante cuatro semanas: del 29 de marzo al 25 de abril de 2021. Total en premios: $8,500 Premios 1. Nominación de los expertos - los ganadores serán elegidos por un jurado especialmente formado para el concurso. Los premios serán: 🥇 1er puesto - $4,000 🥈 2º puesto - $2,000 🥉 3er puesto - $1,000 2. Nominación de la Comunidad - ganará la aplicación que obtenga el mayor número total de votos. Los premios serán:: 🥇 1er puesto - $750 🥈 2º puesto - $500 🥉 3er puesto - $250 Si dos o más participantes obtienen la misma cantidad de votos, todos serán considerados ganadores y el dinero del premio se repartirá entre todos. ¿Quién puede participar? Cualquier miembro registrado en la Comunidad de Desarrolladores de cualquier país puede participar en el concurso, excepto los empleados de InterSystems. Regístrate aquí en la Comunidad si aún no tienes una cuenta. 👥 Los desarrolladores pueden hacer equipos para crear una aplicación colaborativa. Se permiten de 2 a 5 desarrolladores en cada equipo. No os olvidéis de nombrar a todos los miembros del equipo en el README de vuestra aplicación – los perfiles de usuario de la DC. Duración del concurso 🛠 Del 29 de marzo al 18 de abril: Fase de desarrollo de aplicaciones y registro (durante este período, se pueden modificar los proyectos). ✅ Del 19 al 25 de abril: Fase de votación. 🎉 26 de abril: Anuncio de los ganadores. Tema del concurso 💡 InterSystems IRIS developer tools 💡 En este concurso, esperamos aplicaciones que mejoren la experiencia de los desarrolladores IRIS, ayuden a desarrollar más rápido, o a tener código de más calidad, o que ayuden en la etapa de pruebas, implementación, soporte o monitorización de las soluciones desarrolladas con InterSystems IRIS. Requisitos: Aplicaciones aceptadas: aplicaciones 100% nuevas, o que ya existan pero que presenten una mejora significativa. Nuestro equipo revisará todas las aplicaciones antes de aprobarlas para el concurso. Tipo de aplicaciones posibles: UI-frameworks, IDE, Database management, monitoring, deployment tools, etc. La aplicación debe funcionar en IRIS Community Edition o IRIS for Health Community Edition o IRIS Advanced Analytics Community Edition. La aplicación debe ser Open Source y publicarse en GitHub. El fichero README de la aplicación debe contener los pasos de la instalación y un vídeo-demo y/o una descripción de cómo funciona la aplicación. El código fuente de la aplicación estará disponible en formato UDL (no XML). Ejemplo. Estos requisitos están sujetos a cambios. Recursos útiles Aplicaciones de ejemplo: iris-rad-studio - RAD for UI cmPurgeBackup - backup tool errors-global-analytics - errors visualization objectscript-openapi-definition - open API generator Test Coverage Tool - test coverage helper and many more. Plantillas recomendadas con las que empezar: objectscript-docker-template rest-api-contest-template native-api-contest-template iris-fhir-template iris-fullstack-template iris-interoperability-template iris-analytics-template Cómo presentar una aplicación a los concursos: How to publish an application on Open Exchange How to apply for the contest Jurado Consulta los Criterios del Jurado y las Reglas sobre los votos aquí. Así que... Ready. Set. Code. ¡Suerte a todos! ❗️ Echad un vistazo a los Términos Oficiales del Concurso.❗️ Bonus tecnológicos para el concurso >>
Anuncio
Esther Sanchez · 10 ene, 2020

Resumen Anual - Todos los artículos publicados en la Comunidad de Desarrolladores en 2019

a {color:#2a2e78;} Empieza un nuevo año y toca hacer balance de 2019. Por eso os traemos un resumen con todos los artículos que publicamos en la Comunidad de Desarrolladores el año pasado. ¿Los leíste todos? Aprovecha y echa un vistazo a los artículos más leídos, los más comentados, los más votados... Y nunca dejes de aprender Los artículos más leídos ¡Bienvenido a la Comunidad de Desarrolladores de InterSystems en español!by David Reche 393 Demo de IRIS + Kong + Kongaby Joel Espinoza 142 Serialización y deserialización de objetos en formato JSON (u otro cualquiera)by Jose Tomas Salvador 139 Clases, tablas y globals - ¿Cómo funcionan?by David Reche 103 Administración de la fecha y hora durante las operaciones en Cachéby Nancy Martínez 95 Presentación de InterSystems API Managerby David Reche 94 Cómo instalar y usar TFS en Atelierby Francisco López 89 Algoritmo de agrupamiento K-medias sobre datos en IRISby Alberto Fuentes 89 Dominando JDBC con SQL Gatewayby Bernardo Linarez 87 API RESTfulby Francisco López 85 Uso de expresiones regulares en ObjectScriptby Alberto Fuentes 81 Clases de consulta en InterSystems Cachéby Francisco López 81 Desarrollar un Backend de servicios REST para una aplicación Angular 1.x con Caché - Parte 1 de variasby Joel Espinoza 81 Desarrollar un backend de servicios REST para una aplicación Angular 1.x con Caché - comencemos aquíby Joel Espinoza 80 InterSystems IRIS edición Community gratuita disponible en AWSby David Reche 77 Crear un Backend con Node/Express y conectarlo a IRIS en menos que decimos 'Mississippi'by David Reche 76 Ejecutar un comando externo (Windows / Unix) de forma interactiva desde IRISby Alberto Fuentes 74 Conectarse a Caché con SQuirreL SQL, un cliente externo de SQLby Bernardo Linarez 73 Estructura Interna de los Bloques de Bases de Datos en Caché (Parte 1)by Estevan Martinez 73 Guía rápida para conectar Apache Spark y Apache Zeppelin con InterSystems IRIS by Alberto Fuentes 70 Ver todos los artículos más leídos » Los más votados ¡Bienvenido a la Comunidad de Desarrolladores de InterSystems en español!by David Reche 6 Tutorial de WebSocketsby Ricardo Paiva 3 Uso de expresiones regulares en ObjectScriptby Alberto Fuentes 3 Crear un Backend con Node/Express y conectarlo a IRIS en menos que decimos 'Mississippi'by David Reche 2 Mejoras en procesamiento JSONby Alberto Fuentes 2 Demo de IRIS + Kong + Kongaby Joel Espinoza 2 Clases, tablas y globals - ¿Cómo funcionan?by David Reche 2 Los Globals son espadas mágicas para almacenar datos. Parte 3. Matrices dispersas.by Francisco López 2 Cómo mejorar las búsquedas dentro de la comunidadby David Reche 2 Ejecutar un comando externo (Windows / Unix) de forma interactiva desde IRISby Alberto Fuentes 2 Configurar un servicio REST en IAM y publicarlo en el Developer Portalby Alberto Fuentes 2 Serialización y deserialización de objetos en formato JSON (u otro cualquiera)by Jose Tomas Salvador 2 Pruebas unitarias en Transformaciones de Datosby Alberto Fuentes 2 Traducir un número en textoby Francisco López 1 Conectarse a Caché con SQuirreL SQL, un cliente externo de SQLby Bernardo Linarez 1 Configuración de aplicaciones cliente de Caché para SSL/TLSby Ricardo Paiva 1 Funciones del lenguaje que deberías conocer desde el día 1by Jose Tomas Salvador 1 Cómo mejorar el rendimiento de SQL en las consultas sobre el rango de fechasby Ricardo Paiva 1 Publicador-Subscriptor simple con $system.Eventby Alberto Fuentes 1 Jugando con la Sincronización de Objetosby Jose Tomas Salvador 1 Ver todos los artículos más votados » Los más comentados ¡Bienvenido a la Comunidad de Desarrolladores de InterSystems en español!by David Reche 3 Clases, tablas y globals - ¿Cómo funcionan?by David Reche 2 Uso de expresiones regulares en ObjectScriptby Alberto Fuentes 2 Serialización y deserialización de objetos en formato JSON (u otro cualquiera)by Jose Tomas Salvador 2 Publicador-Subscriptor simple con $system.Eventby Alberto Fuentes 1 Como añadir una traducción al español de un articulo en inglésby David Reche 1 Demo de IRIS + Kong + Kongaby Joel Espinoza 1 Configurar un servicio REST en IAM y publicarlo en el Developer Portalby Alberto Fuentes 1 Demo de SUDOKUby Robert Cemper 1 Los Globals son espadas mágicas para almacenar datos. Parte 2. Árbolesby Francisco López 1 Ver todos los artículos más comentados » Los 20 autores más leídos David Reche 1138 Francisco López 770 Alberto Fuentes 681 Estevan Martinez 438 Jose Tomas Salvador 426 Nancy Martínez 416 Joel Espinoza 401 Ricardo Paiva 371 Bernardo Linarez 310 Mario Sanchez Macias 78 Yone Moreno 58 Dmitriy Maslennikov 55 Esther Sanchez 50 Evgeny Shvarov 48 Julio Francisco 19 Robert Cemper 19 Ver todos los autores »
Artículo
Luis Angel Pérez Ramos · 2 ene, 2023

Plantilla de Python Embebido

¡Hola desarrolladores! Comparto con vosotros una plantilla de Python Embebido básica, que recomiendo como punto de partida para cualquier proyecto general con InterSystems IRIS que use Python Embebido. Funcionalidades: Python Embebido configurado; 3 ejemplos con difentes formas de desarrollar con Python Embebido; VSCode configurado; Docker disponible; Demo online disponible; Desarrollo ZPM First disponible. Vamos a comentar estas funcionalidades. Primero vamos a hablar de Python Embebido. Esta funcionalidad viene con InterSystems IRIS 2021.2 y permite desarrollar soluciones usando InterSystems IRIS con Python. IRIS 2021.2 y posteriores permiten la ejecución de scripts de Python en un entorno de memoria compartida con InterSystems IRIS que ofrece opciones únicas a los desarrolladores Python al usar la bases de datos en la que el código está cerca de los datos. 3 formas de desarrollar con Python Embebido Invocación a librerías de Python desde ObjectScript Esto es posible por la clase %SYS.Python, que permite importar librerías de python y llamar a Python a través de ObjectScirpt. Documentación, Ejemplo. Aquí podéis ver un ejemplo de código: ClassMethod Today() As %Status { Set sc = $$$OK Set dt = ##class(%SYS.Python).Import("datetime") write dt.date.today().isoformat() Return sc } Escribir métodos de clase de ObjectScript en Python De hecho, ahora los desarrolladores pueden usar la etiqueta [Language=python] en la declaración del método y codificar en Python puro. Hay también una librería de ayuda en Python "iris" que se puede utilizar para hacer referencia a las clases y globals de ObjectScript. Documentación, Ejemplo, código de muestra: ClassMethod CreateRecordPython(propValue As %VarString, ByRef id As %Integer) [ Language = python ] { import iris obj=iris.cls(__name__)._New() obj.Test=propValue sc=obj._Save() id=obj._Id() return sc } Codificar las soluciones de InterSystems IRIS en Python puro Esta es la tercera opción para que los desarrolladores puedan trabajar con IRIS. Aquí el script de Python necesita ser conectado a IRIS, y esto se puede hacer a través de variables de entorno y el servicio CallIn configurado a "On". Podéis ver los detalles más abajo. Una vez configurado el script de Python es ejecutado en la memoria compartida junto con IRIS. Aquí la librería "iris" es muy útil también. Documentación, Ejemplo. def create_rec(var): obj=iris.cls('dc.python.PersistentClass')._New() obj.Test=var obj._Save() id=obj._Id() return id # test record creation from datetime import datetime now=str(datetime.now()) print("Creating new record in dc.python.PersistentClass") print(create_rec(now)) ## run SQL and print data def run_sql(query): rs=iris.sql.exec(query) for idx, row in enumerate(rs): print(f"[{idx}]: {row}") query="Select * from dc_python.PersistentClass" print("Running SQL query "+query) run_sql(query) Docker configurado El repositorio de la plantilla ejecuta IRIS en un contenedor y configura todo lo necesario para trastear con Python Embebido. Variables de entorno. Python Embebido necesita configurar ciertas variables de entorno para conectarse a IRIS y ejecutar los scripts de Python. Esta es la configuración que lo posibilita en dockerfile: # init Python env ENV PYTHON_PATH=/usr/irissys/bin/irispython ENV SRC_PATH=/irisrun/repo ENV IRISUSERNAME "SuperUser" ENV IRISPASSWORD "SYS" ENV IRISNAMESPACE "USER" También, Python Embebido necesita el servicio CallIn "on". Esto se configura en el iris.script durante la fase del build del docker: ; enabling callin for Embedded Python do ##class(Security.Services).Get("%Service_CallIn",.prop) set prop("Enabled")=1 set prop("AutheEnabled")=48 do ##class(Security.Services).Modify("%Service_CallIn",.prop) Además, tu solución puede necesitar algunas librerías de Python a mayores. Esto es proporcionado mediante el archivo requirements.txt en la raíz del repositorio y una llamada pip3 en el dockerfile: pip3 install -r requirements.txt && \ VSCode configurado Es muy recomendable desarrollar en VSCode usando docker. Si quieres desarrollar IRIS con Python Embebido en Docker, VSCode necesita ser configurado a modo Devcontainer. Para ello, introduce el archivo devcontainer.json file en la carpeta .devcontainer folder. Describe qué servicio docker necesita para trabajar con (iris en nuestro caso) y esto ayuda a ejecutar los scripts de Python en VSCode que serán servidos por el motor de Python utilizado por IRIS que se está ejecutando en el contenedor. El archivo devcontainer.json también tiene una sección con una descripción de qué extensiones son necesarias en modo contenedor: "extensions": [ "ms-python.python", "ms-python.vscode-pylance", "intersystems-community.vscode-objectscript", "intersystems.language-server", "intersystems-community.servermanager", "ms-vscode.docker" ], Instalar Python Embebido con ZPM Esta plantilla está configurada como un repositorio de desarrollo "ZPM first". Esto significa que todo el código desarrollado está descrito en module.xml y es instalado como un módulo ZPM cada vez que la imagen del docker es desplegada por el desarrollador mediante la siguiente líne de código en iris.script: zpm "load /home/irisowner/irisbuild/ -v":1:1 Y el código de Python Embebido también está descrito en el módulo ZPM - siendo instalado a través de FILECOPY: <FileCopy Name="python/" Target="${libdir}python/"/> Con esta expresión indicamos que queremos empaquetar todos los scripts de Python bajo la carpeta /python en el repositorio e instalarla en la carpeta python/ en un directorio de librerías de la instalación IRIS de destino. Si los scripts de Python son copiados bajo la carpeta ${libdir}python/, estarán disponibles para ser invocadas desde ObjectScript o desde Python en la máquina IRIS de destino. ¡Ojo! Asegúrate de que los nombres de tus carpeta tienen nombres únicos para los scripts de Python para no invalidar otro código Python accidentalmente. Espero que esta plantilla os resulte útil. Comentarios y especialmente pull requests son bienvenidos :D
Anuncio
Esther Sanchez · 29 mayo, 2023

Mejoras en la Comunidad de Desarrolladores, Primavera 2023

¡Hola desarrolladores! Compartimos con vosotros las últimas mejoras que hemos realizado en la Comunidad durante los últimos meses: 📌 Nuevos emojis 📌 Insertar vídeos de YouTube con un clic 📌 Nuevo menú lateral en las publicaciones 📌 Noticias oficiales de InterSystems Os explicamos en detalle cada una de ellas. Nuevos emojis Hemos actualizado los emojis disponibles en el editor de texto y a partir de ahora podréis usar todos los conocidos! Solo tenéis que hacer clic en el botón de Emoji en la barra de edición: Insertar vídeos de Youtube con 1 clic Quizá os habéis fijado en que hay un nuevo botón con el símbolo de "Play" en la barra de edición. Con él podéis insertar vídeos en vuestras publicaciones de forma rápida y sencilla! Solo tenéis que hacer clic en él y pegar la URL del vídeo que queréis añadir. También podéis pegar el código de inserción (embed code) en la otra casilla: Nuevo menú lateral en las publicaciones También hemos cambiado el menú lateral que aparece en las publicaciones. Ya no hay que desplazarse hasta el final de la publicación para ver los "Me gusta", las veces que se ha guardado como "Favorito", o las visualizaciones que ha tenido - ahora aparece todo a la izquierda: Noticias oficiales de InterSystems Hemos juntado todas las publicaciones que incluyen la etiqueta y se van a mostrar en un apartado separado en el menú, para que sean más fáciles de encontrar. Y para avisar cuando haya nuevas publicaciones con esa etiqueta, aparecerá la palabra "Nuevo": ¡Y esto es todo por ahora! ¡Esperamos que os resulten útiles estos cambios! En los comentarios de esta publicación podéis comentarlos o solicitar otros nuevos. ¡Os leemos! ¡Muchas gracias! 🤗
Pregunta
Evgeny Shvarov · 20 mayo, 2019

¿Cómo crear una configuración SSL programáticamente?

Hola comunidad¿Cómo se crea la configuración SSL para InterSystems IRIS mediante programación? Por ejemplo, para el caso de instalación o despliegue?Por ejemplo, si necesito crear una configuración de cliente SSL "por defecto" muy simple para permitir que HTPPS obtenga solicitudes a un servidor arbitrario. ClassMethod GetSSLConfiguration(host) As %String { NEW $NAMESPACE SET $NAMESPACE = "%SYS" IF '##class(Security.SSLConfigs).Exists(host) { DO ##class(Security.SSLConfigs).Create(host) } QUIT host } Set tRequest = ##class(%Net.HttpRequest).%New() Set tRequest.Server = "community.intersystems.com" Set tRequest.Https = 1 Set tRequest.SSLConfiguration = ..GetSSLConfiguration(tRequest.Server) ....
Pregunta
Francisco Cadenas · 12 ago, 2019

Versión mínima para FHIR R4

Hola,No sé si alguien ya implementa integraciones de datos en FHIR R4, yo lo hago en FHIR DSTU 2 (v1.0.2).Me gustaría saber si hay una versión mínima de HealthShare / Ensemble que lo lleve implementado.¡Gracias! Hola @Francisco.Cadenas,Lo primero, agradecer tu participación. Estamos deseosos de que la comunidad tenga vida.Bien, sobre FHIR decirte que está soportado por HealthShare Health Connect y por InterSystems IRIS for Health pero no por Ensemble.Sobre las versiones:Se acaba de liberar la versión 2019.1 de HealthShare Health Connect que soporta DSTU2 y STU3. DSTU2 se soporta desde la versión 15.01. Se está trabajando en el soporte de R4 y seguramente ya esté disponible en la próxima versión.Saludos
Artículo
Alberto Fuentes · 1 jul, 2021

Cómo utilizar el almacén de certificados del S.O. con TLS / SSL

Existe una forma muy sencilla de añadir los certificados de una *Autoridad Certificadora* a las configuraciones de TLS / SSL en InterSystems IRIS en Windows y Mac. Puedes pedirle a IRIS que utilice el almacén de certificados de tu sistema operativo indicando `%OSCertificateStore` en el campo para "File containing Trusted Certificate Authority X.509 certificate(s)". Aquí tenemos un ejemplo de cómo hacerlo: Tienes información más detallada al respecto en la [documentación](https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GTLS_configs#GTLS_configs_createedit). ¡Y esto es todo lo que necesitas! Con esa configuración activada se aceptarán los certificados emitidos por cualquier *Autoridad Certificadora* que se encuentre en el almacén de certificados del sistema operativo.