Entradas

Mostrando las entradas de julio, 2024

Haciendo la transición de Servicios Web SOAP a Servicios Web REST con GeneXus

Imagen
En el desarrollo de software moderno, la adopción de servicios web RESTful ha ganado mucha popularidad debido a su simplicidad y eficiencia. Sin embargo, muchos sistemas legados aún utilizan servicios web SOAP. En este post, explicaremos cómo hacer la transición de un servicio web SOAP a un servicio web REST en GeneXus, permitiendo que ambos servicios coexistan durante un periodo de transición. Paso 1: Analizar el Servicio SOAP Existente y separar interfaz de la lógica.  Antes de iniciar la transición, es crucial entender el servicio SOAP existente. Esto incluye: Identificar las operaciones del servicio SOAP. Revisar los contratos de servicio (WSDL). Entender las estructuras de datos (tipos de mensajes, esquemas XML). Una vez realizado esto, conviene separar la interfaz de la lógica de la siguiente manera, suponiendo que el objeto se llama ServicioWEB y tiene la variable &ParmIN como parámetro de entrada y &ParmOUT como parámetro de salida.  ServicioWEB es un objeto procedure q

Encontrar string no traducibles a los que les falta ! en fuentes Genexus.

Imagen
GeneXus tiene la posibilidad de generar aplicaciones multi-idioma de una forma bastante fácil.  Como es GeneXus el que genera el código, va a traducir todas los labels de las pantallas, los strings dentro de los programas, mensajes, etc.  Realmente es una solución sencilla a un problema realmente complejo.  Pero, hay strings o constantes que no deben traducirse, porque si se traducen la aplicación puede funcionar mal.  Por ejemplo, si leo un XML y busco dentro una etiqueta especifica, con el nombre que viene en el archivo y no con el nombre traducido.  La forma de decirle a GeneXus que no traduzca, es ponerle un signo de exclamación delante del string, por ejemplo el string !'ETIQUETA'  no sera traducido.  Esto trae un lindo problema cuando tenemos código GeneXus que fue desarrollado para ser utilizado en un único idioma y se incorpora a una KB que es multi-idioma. Hay que buscar y cambiar los strings que no deben traducirse.  Como encontrar strings que no debo traducir en el c

Modularizacion de servicios web sin afectar su funcionamiento

Problema: Tengo un servicio web (REST o SOAP) desarrollado con versiones anteriores de GeneXus y quiero modularizar mi KB.  Por ejemplo, tengo un servicio que se llama  Get_Clientes(&Tipo)  que devuelve una Collection de clientes de un determinado tipo.  Como el servicio viene de una versión anterior de GeneXus, donde no existían los módulos, queda en el módulo Root.  En el proceso de modernización de la KB, se crea el módulo Clientes.  Qué hacer con el objeto Get_Clientes()? Si lo muevo al módulo Clientes, voy a afectar a los usuarios de dicho servicio, pues le va a cambiar la  URL desde donde lo consumen, pues el nombre del servicio pasará a ser CLIENTES.Get_Clientes() Si lo dejo en el módulo Root, no afecto a los usuarios del sistema, pero la KB me queda mal modularizada, por ejemplo no puedo pasar la tabla de Clientes a privada del modulo.  Solución: Hay varias formas de solucionarlo, pero una forma sencilla, es dividir el servicio, en dos objetos.  Uno que tiene la interfaz (G