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.