ir a la publicación Jose Tomas Salvador · 2 mar, 2023 Enhorabuena a todos los que habéis participado... y gracias por compartir vuestra experiencia y conocimiento. El año que viene volvemos a la carga! :-)
ir a la publicación Jose Tomas Salvador · 28 feb, 2023 Gracias por compartir Tomás. Muy interesante... seguro que ayudará a muchos que no puedan esperar a la acualización de su versión de IRIS y tengan que utilizar Exchange. Si es posible, te pediría que compartieses el código como proyecto en GitHub... puede resultar más fácil para otros si quieren aportar correcciones o mejoras.
ir a la publicación Jose Tomas Salvador · 27 feb, 2023 Interesante Robert! ... Buen truco para salir de los límites del contenedor desde IRIS... Gracias por compartirlo! Aunque los administradores de sistemas no sé si estarán muy contentos ;-)
ir a la publicación Jose Tomas Salvador · 27 feb, 2023 Hola Ramón! Bienvenido a la Comunidad... Gracias por compartir!! Interesante artículo, con un caso de uso que es bastante común y que otros seguro aprovechan. La ventaja de ir a través de una BO es que igual que en este caso tu has decidido realizar directamente la inserción vía SQL en IRIS, esa misma BO y toda la lógica de negocio anterior, podría estar dirigida a otra BD externa, que puede ser IRIS o no, e incluso a otra tabla. Es decir, la BO te encapsula el almacenamiento. El Business Process o Business Service que la llama, no sabe ni cómo ni dónde se va a almacenar la información... el BO se encarga y puede cambiar sin afectar al resto. Este desacople nos simplifica muchísimo el trabajo de mantenimiento y evolución de la solución!! Estaría muy bien si pudieras poner tu código en un GitHub y compartirlo junto con el artículo. Seguro que otros lo pueden aprovechar.
ir a la publicación Jose Tomas Salvador · 24 feb, 2023 Gracias por compartir tu experiencia Heloisa... mucha gente no sabe que tiene la posibilidad de decidir el formato de los objetos JSON... y que puede predefinir distintos formatos de exportación e importación y utilizar uno u otro según necesite. Duda... las clases de las que quieres exportar objetos en JSON, ¿no deberían heredar de %JSON.Adaptor? O es que consigues hacerlo de otro modo?
ir a la publicación Jose Tomas Salvador · 24 feb, 2023 Buen ejemplo Daniel. Una duda... ¿para poner esto en producción, no sería mejor almacenar las keys válidas en IRIS en lugar de en el código? Así podríamos generar distintas keys y cambiarlas o que expirasen cada X tiempo... o sólo la pones en el parámetro para facilitar el ejemplo?
ir a la publicación Jose Tomas Salvador · 23 feb, 2023 Una pregunta, ¿se podría conseguir lo mismo con las clases ya preconstruidas en IRIS, en el paquete EnsLib.PubSub?
ir a la publicación Jose Tomas Salvador · 22 feb, 2023 Muy ingenioso. Gracias por compartir! Me ha gustado cómo le sacas partido a las funciones de asignación dinámica tanto de métodos ($classmethod(clase,metodo)), como de propiedades ($property(objRef,propName)). Igualmente el utilizar las macros del sistema $$$comMemberNext y $$$cCLASSproperty. Como sugerencia, en lugar de utilizar directamente estas macros, quizá ahí sería mejor utilizar el API que ya existe en %SYSTEM.Dictionary. En concreto esa línea podría ser: set prop = $system.Dictionary.comMemberNext(claseRequest,$$$cCLASSproperty,prop)
ir a la publicación Jose Tomas Salvador · 21 nov, 2022 Yo creo que en el Kahoot hubo hasta codazos!! La verdad es que estuvo genial poder compartir experiencias y sobre todo vernos después de casi 3 años... y las exposiciones super interesantes... personalmente me quedé con ganas de más... y los que exponían ya ni hablamos (David Cano y Carlos Fernández de Roche y Florencio López y Mario del Pozo por Arisnova)... yo creo que si no los paran aún seguían. Estuvo genial. A ver si repetimos.
ir a la publicación Jose Tomas Salvador · 11 oct, 2022 Seguro que hay todavía mucho %ZEN.proxyObject por ahí. ¡¡Nunca es tarde si la dicha es buena!! La única precaución es que %ZEN.proxyObject es una clase de sistema... Si la modificamos, hay que preservarla en las actualizaciones y validar que no haya cambiado o hacer un merge... de otro modo perderemos los cambios nuestros o las correcciones de producto. Por "IRIS-izarlo" un poco... aunque no tan automático como lo que presentas, podemos también alterar temporalmente los tipos en los %Library.DynamicObject. set obj = {} set objB = {} set objB.phone = 961000000 set obj.phone = 91001001 set obj.nombre = "Luis" set obj.objetoB = objB set orig = obj.%GetSerial() //si queremos preservar el valor original do obj.%Set("phone",obj.phone,"string") do objB.%Set("phone",objB.phone,"string") do obj.%ToJSON() set obj = obj.%SetSerial(orig) //para volver al objeto JSON original do obj.%ToJSON() Resultado: {"phone":"91001001","nombre":"Luis","objetoB":{"phone":"961000000"}} {"phone":91001001,"nombre":"Luis","objetoB":{"phone":961000000}} Igual sería interesante ver todas las posibilidades de formateo de las antiguas clases %ZEN y ver si están cubiertas por %Dynamic*, %JSON.Adaptor y %JSON.Formatter,... y, si no,... pues igual toca funcionalidad nueva en OpenExchange! :