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...

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.

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

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.

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. 

Hola Javier! Ya he visto que te han contestado en el developer community smiley

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...

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.