No había visto ese artículo, pero más o menos es lo que he seguido. No he instalado zpm-registry en una instancia de IRIS que ya teníamos, sino que he levantado un contenedor nuevo, con la versión community.

Nuestro caso es que trabajamos para clientes que tienen IRIS, cada uno el suyo, pero tenemos librerías comunes que utilizamos en estos clientes. Mi idea era levantar un registry propio para nuestra compañía, en la que tener estas librerías disponibles para cualquier cliente, y en caso de que cada cliente lo necesite, levantar en sus instancias su registry privado.

Entiendo, entonces, que lo ideal es tener el registry levantado en la instancia de IRIS que ya tengamos, y no utilizar un contenedor aparte con una versión Community. Es así?

Hola @Luis Angel Pérez Ramos

No veo el link al artículo, quizá te refieras a alguno de estos? 

De todas formas, mi pregunta va sobre tener nuestro propio repositorio IPM, privado. Es decir, crear nuestro propio registro. Lo he conseguido hacer en local, la verdad es que con la template que hay en el github de la comunidad ha sido muy fácil. Pero a la hora de tenerlo disponible para toda la compañía y empezar a subir nuestras propias librerías, antes de arrancarlo con la versión que hay ahora, etc, quería saber si es conveniente crearlo en una versión IRIS enterprise, o vale con que sea una IRIS Community.

Gracias!

La cookie llega, conseguimos leerla con esta instrucción:

 Set tokenCookie = httpRequest.GetCookie("SessionToken")

El nombre es inventado, no sé si quizá esté ahí el problema... O si se debe generar una cabecera o alguna historia para que funcione.

Lo que no sabemos es qué hacer una vez leída la cookie y obtenido el token.

He estado repasando de nuevo el artítulo, he ido a GitHub y leído el README, y sobre la configuración cliente OAuth pone esto:

Now you just have to click on Client Configurations to add a new Client Configuration. Define the application and client names (don’t forget the client name because we are going to use it in our FHIR configuration) and set the Client Type as a Resource Server. Now you can click on Dynamic Registration and Save.

Al crear la configuración cliente, le he puesto el nombre de aplicación y cliente, el SSL y que es un servidor de recursos. Al hacer click en Registro dinámico, me da error, indicando que está deshabilitado:

Y al hacerlo a mano, le pongo el ClientID y ClientSecret de la aplicación de Auth0, y me dice que el cliente se ha guardado, pero que no se ha registrado:

Dónde tendría que registrarlo exactamente?

Sí, lo tengo configurado, junto con un servicio para tener traza de las peticiones (la producción está en marcha):

Es más, el contenedor lo he creado en la versión 2024.1 por si había algo que no funcionase en la 2024.3. Pero nada... sigue igual :(

Una pregunta: debería ver la cabecera Authorization desde el WebGateway? Porque no la veo, aunque entiendo que es por seguridad:

Hola!

Estoy intentando montar esta aplicación y no consigo que funcione... Creo que no estoy configurando bien el cliente OAuth. Después de configurar todo, al acceder a la aplicación y llamar al repositorio FHIR con el token oauth me da un 401 Unauthorized:

Sin embargo, si llamo desde Postman con usuario/contraseña de IRIS funciona sin problemas.

La configuración del cliente la he creado como servidor de recursos:

Y le he añadido la información de ClientID y ClientSecret a mano:

Tengo la sensación de que no lo he hecho bien... Me podrías echar una mano? Gracias!!

¡Gracias Luis Ángel! Si he entendido bien lo que me recomiendas, sería utilizar el tipo de dato PosixTime en lugar del TimeStamp y crearle un índice normal, no? Pero el rendimiento no sería bueno, por lo que comentabas al comienzo, de que los valores no son únicos, verdad? O en este caso no haría falta índice? (lo probaré de todas formas 😉)

Hola, es justo lo que venía a decir. Si la operación está desactivada, y es en ésta donde tienes configurado el control de alertas, al no estar activo, no lo gestiona.

Hace ya unos años, cuando estuvimos mirando esas configuraciones, nos pasó lo mismo. Para probarlo no vale con desactivar la operación. Nosotros lo que hicimos para probar fue añadirle al método que recibe los mensajes un hang para que estuviese ahí parado un rato. Al mandarle los mensajes y empezar a encolar, ya nos saltaba la alerta

Acabo de conseguir encontrar las referencias a las clases. Al abrir el XML, buscando "<Sub>CLS</Sub>" los siguientes 4 nodos son las 4 clases que no quiero que importe:  

Eliminando estos 4 nodos, ya puedo importar el archivo deploy en otro servidor.

----------------------------------------

Aunque ahora tengo otro problema: un BusinessProcess con código funciona bien, pero un BusinessProcess con BPL, no funciona. Creo que es porque el BPL genera un XData, así que tendré que cambiar el BPL por un proceso con código. Pero por lo menos ahora puedo añadir al archivo Deploy los BusinessProcess :)

Hola, estoy haciendo pruebas con la exportación del proyecto usando el DeployToFile, pero tengo problemas con los BusinessProcess.

Al exportarlo con DeployToFile, me añade las siguientes clases:

  • Ens.BP.MasterPendingResponse.cls
  • Ens.BusinessProcess.cls
  • Ens.BusinessProcessMessagesReceived.cls
  • Ens.BusinessProcessMessagesSent.cls

Pero al intentar importarlo en otro Namespace, me da error porque son clases del paquete Ens:

ERROR #5567: Class 'Ens.BP.MasterPendingResponse' is in a database you do not have write permissions on so it can not be compiled

> ERROR #5030: An error occurred while compiling class 'Ens.BP.MasterPendingResponse'

Solo me pasa con los BusinessProcess, con otras clases (mensajes, servicios, reglas...) funciona.

Creo que es por la recursividad. He probado a exportar sin recursividad (aunque no sé si estoy poniendo bien el flag), invocando do p.DeployToFile("C:\test.xml", "/norecursive", 1) pero sigue exportando esas clases.

Qué puedo hacer?

Gracias por la respuesta Luis Ángel. Lo probaré, aunque creo que para poder detectar los updates/deletes tendré que implementar también el %OnBeforeSave.

-------------------------------------------------------------------

Acabo de probar otra cosa. Buscando en la comunidad he encontrado este comentario: https://community.intersystems.com/post/trigger-or-callback#comment-99361

He probado a ponerle al trigger "Foreach = row/object" y ahora ya salta cuando se hacen acciones sobre los objetos 🎉

He mirado este artículo y estoy invocando correctamente el método. Lo que sí he tenido que hacer es reconvertir la clave pública de pkcs#8 a pkcs#1 como indica en el artículo. Con eso consigo que encripte, aunque luego el sistema del proveedor me dice que no es válido, pero quizá sea que me falte/sobre algo. Seguiré probando a ver si consigo hacerlo funcionar.

Muchas gracias!

Gracias David.

Al final, dado que el comando de terminal funcionaba, esto es exactamente lo que hice, invocar el comando utilizando $ZF(-100, "openssl", ...). Con esto hemos conseguido que funcione. Entiendo que es una solución igualmente válida, no? Me hubiera gustado poder realizarlo con los métodos de clase de $System.Encryption, pero no lo he conseguido.