ir a la publicación Alberto Fuentes · 18 ago, 2021 Hola Marta, No consigo entender exactamente lo que intentas probar. Parece que tu clase es un %JSON.Adaptor pero luego en tu código parece que estás intentando generar un %DynamicObject sobre la marcha. No sé en qué caso encuentras el problema. Te paso un ejemplo parecido al de tu clase y un método para probar: Class Services.IS.Data.Pe Extends (%RegisteredObject, %JSON.Adaptor) { Property codigo As %String; Property descripcion As %String; Property ListaP As list Of %String; ClassMethod Test() { // Ejemplo. %JSONExport() set obj = ##class(Services.IS.Data.Pe).%New() set obj.codigo = "123" set obj.descripcion = "desc" write !,"obj.%JSONExport(): " do obj.%JSONExportToString(.output) write !,output // Ejemplo. %DynamicObject set pts = { "pts":[] } for i=1:1:3 { set pec = { } set pec.codigo = "cod"_i set pec.descripcion = "des"_i do pts.pts.%Push(pec) } write !!,"%Dynamic Object" write !,pts.%ToJSON() } } Si lo pruebas, verás que en ningún caso (ni con %JSON.Adaptor ni con %DynamicObject) se genera la lista vacía que indicas: USER>do ##class(Services.IS.Data.Pe).Test() obj.%JSONExport(): {"codigo":"123","descripcion":"desc"} %Dynamic Object {"pts":[{"codigo":"cod1","descripcion":"des1"},{"codigo":"cod2","descripcion":"des2"},{"codigo":"cod3","descripcion":"des3"}]} Aquí puedes encontrar más información sobre JSON y cómo trabajar tanto con %JSON.Adaptor como con %DynamicObject: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...
ir a la publicación Alberto Fuentes · 1 jul, 2021 Hola @Yone Moreno, Al final ha coincide que hemos comentado este tema online :) Hemos descubierto finalmente que los ficheros Streams se estaban generando por otra clase de mensajes que utilizaban %Stream.FileBinary. Recuerda que las propiedades %Stream.Global* no almacenan en fichero externos sino en la base de datos. En cualquier caso, sean %Stream.File* o %Stream.Global* al hacer un Clear() podemos borrarlas sin problemas.
ir a la publicación Alberto Fuentes · 11 mar, 2021 Hola Diego, Tal vez lo mejor es que empieces echándole un vistazo a un ejemplo: https://github.com/intersystems-ib/iris-sample-rest-angular Saludos!
ir a la publicación Alberto Fuentes · 26 feb, 2021 Hola Kurro, Sí, como dices es probable que tenga que ver con la versión, además la función ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject() utiliza internamente el deprecado %zen.ProxyObject y es probable que el comportamiento haya sufrido correcciones desde entonces. En cualquier caso, si te encuentras a veces restringido por la versión que utilizas y necesitas realizar mapeos a mano (simples) de propiedades puedes apoyarte en métodos generados. Por ejemplo, esta clase provee un método generado - muy simple - para tener un CopyProperties que puedas invocar y copie las propiedades. /// Clase auxiliar para copiar propiedades de objetos que tengan el mismo nombre Class MyMsg.ObjCopy Extends %RegisteredObject { /// Método generado que copia las propiedades (con el mismo nombre) de un objeto en el actual /// -obj: objeto del cual se quieren copiar las propiedades Method CopyProperties(ByRef obj) As %Status [ CodeMode = objectgenerator ] { set properties = %compiledclass.Properties for i=1:1:properties.Count() { #dim prop As %Dictionary.CompiledProperty = properties.GetAt(i) if prop.Name'="",prop.Name'["%" { set propName = prop.Name if prop.Name["_" { set propName = """"_prop.Name_"""" } // set ..x = obj.x do %code.WriteLine(" set .."_propName _"=obj."_propName) } } quit 1 } } Por lo que en tu clase MyMsg.PartialJson sólo necesitas cambiar la herencia: Class MyMsg.PartialJson Extends (Ens.Response, ObjCopy) Y a continuación, puedes invocarlo de la siguiente manera para que te copie las propiedades (parciales) de %DynamicObject: set partialJsonObj = ##class(MyMsg.PartialJson).%New() do partialJsonObj.CopyProperties(objJson.returnValue.data) write !!,"** partialJsonObj (copied):",! zw partialJsonObj
ir a la publicación Alberto Fuentes · 23 sep, 2020 Hola de nuevo, No entiendo muy bien cuál es el objetivo de lo que estás intentando hacer. ¿Estás intentando construir un objeto participant con dos actors para después obtener su representación JSON y poder enviarlo a algún sitio? En la versión 2018, puedes construir la jerarquía de objetos que necesites y después transformarla tú mismo a un %DynamicObject con la estructura que quieras utilizando. Mira Creating and Modifying Dynamic Entities. En IRIS / Health Connect además tendrías la posibilidad de %JSON.Adaptor que es mucho más cómodo. ¿Has recibido esa cadena JSON y estás intentando pasearla a un objeto? Puedes convertir la cadena JSON a un %DynamicObject y acceder a todos las propiedades (e.g. arrays, objetos, etc.) en forma de objetos para poder trabajar con ellos como prefieras. Mira Converting Dynamic Entities to and from JSON De todas formas, si no estás familiarizado con estas clases o incluso necesitas que algún especialista se conecte contigo y te echemos una mano no dudes por favor en abrir un caso de soporte WRC para que te podamos ayudar con más detalle.
ir a la publicación Alberto Fuentes · 27 abr, 2020 Hola Uthman. La clase %Net.Remote.Java.JDBCGateway es una clase interna que está disponible en IRIS y Ensemble 2018. No podrás llamarla en Ensemble 2016. Tal vez la mejor opción es que te plantees un upgrade de versión. En cualquier caso, si necesitas que se revise tu caso en concreto lo mejor es que abras un caso a soporte WRC para estudiarlo.
ir a la publicación Alberto Fuentes · 13 feb, 2020 Hola Javier! Ya he visto que te han contestado en el developer community Por lo que preguntas parece que lo que necesitas es ejecutar los tests automáticos, convertir el resultado a JUnit e interpretarlo en Jenkins. Como te ha dicho Timothy, échale un ojo a JUnitOutput. Te servirá para exportar los resultados de un %UnitTest a formato JUnit. https://github.com/intersystems-community/zpm/blob/master/src/cls/_ZPM/P... Por si te sirve de "inspiración", te paso un ejemplo (anticuado - habría que adaptarlo), pero que en esencia al final hacía algo parecido a lo que buscas: https://github.com/albertoft/widgets-direct/blob/master/WidgetsDirect/Je...
ir a la publicación Alberto Fuentes · 2 dic, 2019 Los puertos por defecto de IRIS son 52773 (web) y 51773 (tcp superport). Cuando ejecutas el contenedor Docker puedes elegir cómo exponer estos puertos en tu máquina local para que puedas acceder. Por ejemplo, si quieres utilizar los puertos 9100 y 9101 que comentas puedes hacer: docker run --name iris -p 9100:52773 -p 9101:51773 store/intersystems/iris-community:2019.4.0.379.0 De esa forma, tendrías disponible el Portal de Gestión en http://localhost:9100/csp/sys/UtilHome.csp Puedes echar un vistazo a la documentación o al Container Bootcamp que se hizo para el Global Summit.
ir a la publicación Alberto Fuentes · 17 oct, 2019 Hola Yunier, El componente IAM (InterSystems API Manager) actualmente sólo está disponible como imagen Docker. Puedes intentar configurar Docker en tu Windows, o instalar IAM en otra máquina (física o virtual) sobre la que puedas hacer la instalación de Docker.