Está en la página 1de 22

J. Enrique Vázquez R.

Web Services with


GeneXus
GeneXus 16

1
J. Enrique Vázquez R.

Contenido

1. Introducción……………………………………………………………………...…………....3

2. Transacción como Web Service………………………………………………..……………..4

3. Consumo de Web Services (Transacción)………………………………………………...…..6

4. Data Provider como Web Service…………………………….……………………………..10

5. Consumo de Web Services (Data Provider)…………………………..…….……………….13

6. Business Component como WebService………………………..……………….…………..16

7. Consumo de Web Services (Business Component)…………………..……………………..18

a. Insert, Update, Delete…………………………………………………………...….20

8. Consumo de Web Service Externo……………………………………..………………..…..22

a. Oorspong…………………………………………………………………………...22

2
J. Enrique Vázquez R.

1. Introducción
Los Web Services son pequeños programas formados por varios componentes que permiten ser
publicados en directorios e invocados para su ejecución por otros programas vía http, generando
una respuesta en XML.

Quizás la ventaja principal de los Web Services es que se trata de un estándar aceptado y que, a
diferencia de otras tecnologías de integración, posibilitan la compartición de funcionalidades
entre sistemas heterogéneos de forma transparente, mediante el intercambio de datos vía XML.
Para este intercambio el único requisito es establecer conexiones TCP/IP posibilitando la
comunicación http entre los sistemas.

SOAP (Simple Object Access Protocol). Protocolo de comunicación, basado en XML, que sirve
para la invocación de los servicios Web a través de un protocolo de transporte, como HTTP.
Consta de tres partes: una descripción del contenido del mensaje, unas reglas para la codificación
de los tipos de datos en XML y una representación de las llamadas RPC para la invocación y
respuestas generadas por el Web Service.

WSDL (Web Service Description Language). Es un lenguaje basado en XML que se utiliza para
describir un Web Services. Un archivo con formato WSDL provee información de los distintos
métodos (operaciones) que el Web Services brinda, muestra cómo accederlos y que formatos
deben de tener los mensajes que se envían y se reciben.
Es como un contrato entre el proveedor del servicio y el cliente, en el cual el proveedor se
compromete a brindar ciertos servicios solo si el cliente envía un requerimiento con determinado
formato.

Es el documento principal a lo hora de documentar un Web Services, pero puede no ser el único.
En la mayoría de los casos es conveniente que este acompañado por un documento escrito en
lenguaje natural que brinde información de que es lo que hace cada uno de los métodos brindados
por el Web Service.

En forma resumida podríamos decir que un archivo WSDL describe lo siguiente:

• Mensajes que el servicio espera y mensajes que el servicio responde.


• Protocolos que el servicio soporta.
• A donde mandar los mensajes.

3
J. Enrique Vázquez R.

2. Transacciones como Web Service


La intención es crear una aplicación en el que podamos dar de alta distintas monedas con su
respectiva paridad respecto al peso mexicano. Posteriormente publicaremos un Web Service
que estará disponible para ser utilizado por otras aplicaciones.

1. Crear una Base de Conocimiento llamada TipoCambio.

2. Crear la transacción Moneda con la siguiente estructura:

Nota: El dominio TCambio=Numeric(10.2)

3. Presionar F5 para generar y ejecutar la aplicación. Dar de alta algunos registros.

4. Generar un Procedimiento WSTCambio y setear sus propiedades:

• Main Program= TRUE


• Call Protocol= SOAP

5. Definir las variables que serán utilizadas por el Procedimiento,

• Moneda, Char(3)
• Tcambio, Domain: Tcambio

6. En la sección de rules definir la regla parm:

parm(in:&Moneda, out:&TCambio);

7. Finalmente en la sección de Source definiremos la consulta que deseamos hacer


para obtener el tipo de cambio actual:

4
J. Enrique Vázquez R.

for each where MonedaId= &Moneda


for each order (MonedaTipoCambioFecha)
&TCambio= MonedaTipoCambioValor
exit
endfor
endfor

8. Ejecutamos la aplicación F5

9. Al generar y compilar un web service, GeneXus genera el archivo WSDL. El web


service "WSTCambio".

El WSDL del mismo esta disponible en:

http://server/baseurl/aNombreWebService.aspx/?WSDL

Para nuestro ejemplo:

http://localhost/TipoCambio16.NetEnvironment/aWSTCambio.aspx?WSDL

10. Si entramos al link anterior veremos el WSDL del web service WSTCambio

5
J. Enrique Vázquez R.

3. Consumo de Web Service (Transacción)


Para probar la comunicación entre distintas aplicaciones a través de Web Services,
generaremos una aplicación distinta. Crearemos una nueva base de conocimiento
FacturaWS. En esta aplicación daremos de alta productos cuyos precios estarán en distintos
tipos de moneda como euro, dólar, etc. Desde aquí consumiremos el Web Service
WSTCambio para cotizar los productos en pesos mexicanos.

1. Crear la base de conocimiento FacturaWS.


2. Crear la transacción Productos con la siguiente estructura:

3. Presionamos F5 para ejecutar la aplicación. Le asignamos datos de conexión para la


base de datos y una vez en ejecución agregaremos distintos productos. Para el atributo
ProductoPrecioMoneda utilizar distintos valores que correspondan con los
ingresados para el atributo MonedaId de la Aplicación TipoCambio, por ejemplo
EUR, USD, MXP, etc.

En el ejercicio anterior publicamos un Procedimiento como Web Service, ahora crearemos


un objeto para consumirlo.

1. Accedemos al menú Tools / Application Integration / WSDL Import.

6
J. Enrique Vázquez R.

2. Ingresamos la url en la que se encuentra el Web Service y presionamos siguiente.

3. Asignamos una descripción y presionamos siguiente.

4. En la siguiente pantalla presionamos import. Veremos en el KB Navigator que ha


sido creado un External Object WSTCambio.

7
J. Enrique Vázquez R.

5. Crear un Web Panel WPProductos. En la sección de variables crear una variable


pesos de tipo de dato Numeric(10.2) y otra variable WsTipoCambio de tipo
WSTCambio.

6. En el Web Form insertar una Tabla. Dentro de la tabla insertar un grid con los
siguientes atributos: ProductoId, ProductoNombre, ProductoPrecio,
ProductoPrecioMoneda. Insertamos la variable Pesos en otra celda de la tabla y a un
costado un texto MXP. Agregar un botón y asociarle el evento “Consultar” a través
de la Propiedad OnClickEvent / New.

7. En las propiedades del grid vamos a modificar la propiedad AllowSelection= TRUE.

8
J. Enrique Vázquez R.

8. En la sección de Eventos codificamos el evento Consultar:

Event 'Consultar'
&pesos= ProductoPrecio *
&WsTipoCambio.Execute(ProductoPrecioMoneda)
EndEvent

9. Ejecutamos la aplicación para probar el Web Panel que invoca al Web Service. Para
cotizar algún producto en pesos mexicanos. Seleccionar alguna línea del Grid y
después presionar el botón Consultar.

9
J. Enrique Vázquez R.

4. Publicar un Data Provider como Web Service


Nuestro objetivo es crear un Data Provider y publicarlo como Web Service. Este Data
Provider debe devolver una colección de SDTs donde se listen las monedas disponibles en
el sistema con su respectivo tipo de cambio correspondiente a la última fecha de actualización
para consultar desde la aplicación FacturacionWS y desplegar en un Web Panel.

1. En la KB de Tipo de Cambio. Crear un SDT llamado SDTMoneda. La estructura del


SDT debe quedar como sigue:

10
J. Enrique Vázquez R.

2. Crear el Data Provider DPTipoCambio y setear sus propiedades como se muestra en


la imagen:

3. El source del Data Provider queda así:

SDTMoneda
{
MonedaId
MonedaNombre
TipoCambio [count=1] order (MonedaTipoCambioFecha)
{
MonedaTipoCambioFecha
MonedaTipoCambioValor

}
}

4. Ejecutamos presionando F5.

11
J. Enrique Vázquez R.

El Data Provider ha quedado publicado como un Web Service, y podemos ver el WSDL
con el siguiente link:

http://localhost/TipoCambio16.NetEnvironment/DPTcambio.aspx?WSDL

12
J. Enrique Vázquez R.

5. Consumir un Data Provider Web Service


Hemos publicado un Data Provider como Web Service, ahora haremos un pequeño ejemplo
para consumirlo.

1. Abrimos la base de conocimiento FacturaWS.


2. Accedemos al menú Tools / Application Integration / WSDL Import.
3. Seguimos los pasos del ejemplo anterior para importar Web Service.
4. Ingresamos la url en la que se encuentra el Web Service y presionamos siguiente.

http://localhost/TipoCambio16.NetEnvironment/DPTcambio.aspx?WSDL

5. Asignamos una descripción.


6. En la siguiente pantalla presionamos import. Veremos en el KB Navigator que ha
sido creado un External Object DPTcambio y dos tipos de datos estructurados.

7. Para consumir este Web Service creamos el Web Panel WP_Monedas. En la sección
de Variables damos de alta una variable Monedas de tipo de dato
DPTcambioSDTmoneda de tipo colección y una variable MonedasWS de tipo del
external object DPTcambio.

13
J. Enrique Vázquez R.

8. Desde la Toolbox Insertamos en el Web Form del Web Panel una tabla de 3 X 3. En
la celda superior de la tabla insertar la variable &Monedas. En el último renglón
agregar un Botón y asociarle el evento “Ver tipo de cambio” a través de la Propiedad
OnClickEvent / New.

9. Nos vamos a la sección de Events y codificamos el Evento “Ver tipo de cambio”

Event 'Ver tipo de Cambio'


&Monedas= &MonedasWS.Execute()
EndEvent

14
J. Enrique Vázquez R.

10. Ejecutamos la aplicación para probar el Web Panel que invoca al Web Service.

Pregunta:

¿Por qué sale un solo precio para cada moneda y por qué ese valor?

15
J. Enrique Vázquez R.

6. Publicar un Business Component como Web Service


1. En la KB TipoCambio crear la transacción Cliente, con la siguiente estructura:

Cliente
{
ClienteId= Numeric(4.0)
ClienteNombre= Char(20)
ClienteRFC= Char(20)
}

2. En las propiedades de la transacción Cliente cambiar las propiedades Business


Component y Expose as Web Service en true, SOAP Protocol true:

16
J. Enrique Vázquez R.

3. Presionamos F5 para ejecutar la aplicación. En el explorador podremos validar que


el Business Component de cliente a quedado publicado como un web service con el
siguiente link:

http://localhost/TipoCambio16.NetEnvironment/cliente_bc.aspx?WSDL

17
J. Enrique Vázquez R.

7. Consumir un Business Component Web Service

1. Abrimos la base de conocimiento FacturaWS.


2. Crear un Fólder llamado BC_WS.
3. Accedemos al menú Tools / Application Integration / WSDL Import.
4. Seguimos los pasos del ejemplo anterior para importar Web Service.
5. Ingresamos la url en la que se encuentra el Web Service y presionamos siguiente.

http://localhost/TipoCambio16.NetEnvironment/cliente_bc.aspx?WSDL

6. Asignamos una descripción y presionamos siguiente.


7. En la siguiente pantalla presionamos import. Veremos en el KB Navigator que ha
sido creado un External Object Cliente_BCBC y dos tipos de datos estructurados
que serán utilizados al consumir el Web Service.

8. Crear un Web Panel WP_BCWS y en la sección de variables dar de alta las que se
muestran en la siguiente imagen:

18
J. Enrique Vázquez R.

9. En el Web Form insertar las variables &ClienteId, un botón ‘Ver Cliente’ y las
Variables &Id, &Nombre y &RFC como se muestra en la figura.

10. En el código del evento “Ver Cliente”

Event 'Ver Cliente'


&ErrorDes = &ws_bc.LoadKeySvc(&ClienteId,&Customer)
For &ErrItem in &ErrorDes
msg(&ErrItem.Description.ToString())
Endfor
&Id= &Customer.ClienteId
&Nombre=&Customer.ClienteNombre
&RFC= &Customer.ClienteRFC
Endevent

11. Podemos ejecutar para probar el Web Panel presionando F5.

19
J. Enrique Vázquez R.

Insert, Update y Delete.

A través del Business Component publicado como Web Service y que consumimos en el
sistema FacturaWS podemos actualizar, Insertar o eliminar el registro en el sistema
TipoCambio.

Update

1. En el Web Panel WP_BCWS insertar tres nuevos botones y asociar los eventos
Update, Insert y Delete. Agregar también un error viewer.

20
J. Enrique Vázquez R.

2. Codificar los eventos:

Event 'Update'
&ErrorDes = &ws_bc.LoadKeySvc(&ClienteId,&Customer)
For &ErrItem in &ErrorDes
msg(&ErrItem.Description.ToString())
Endfor
&Customer.ClienteNombre= &Nombre
&Customer.ClienteRFC= &RFC
&ErrorDes = &ws_bc.SaveSvc(&Customer)
For &ErrItem in &ErrorDes
msg(&ErrItem.Description.ToString())
Endfor
EndEvent

Event 'Insert'
&Customer.Mode= 'INS'
&Customer.ClienteId= &Id
&Customer.ClienteNombre= &Nombre
&Customer.ClienteRFC= &RFC
&ErrorDes = &ws_bc.SaveSvc(&Customer)
For &ErrItem in &ErrorDes
msg(&ErrItem.Description.ToString())
Endfor
EndEvent

Event 'Delete'
&ErrorDes = &ws_bc.LoadKeySvc(&ClienteId,&Customer)
For &ErrItem in &ErrorDes
msg(&ErrItem.Description.ToString())
Endfor
&ErrorDes = &ws_bc.DeleteSvc(&Customer)
For &ErrItem in &ErrorDes
msg(&ErrItem.Description.ToString())
Endfor
EndEvent

21
J. Enrique Vázquez R.

8. Consumo de Web Service Externo

En la KB de FacturaWS crear la transacción de Country con los siguientes Atributos:

Agregar algunos registros con el ISO code de 3 caracteres de los países, que pueden consultar
aquí:

https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes

Crear un web panel llamado ViewCountryDetails agregaremos un grid con AllowSelection


en true.

1. Accedemos al menú Tools / Application Integration / WSDL Import.


2. Seguimos los pasos del ejemplo anterior para importar Web Service.
3. Ingresamos la url en la que se encuentra el Web Service y presionamos siguiente.
http://www.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL
4. Asignamos una descripción y presionamos siguiente.
5. En la siguiente pantalla presionamos import. Veremos en el KB Navigator que ha sido
creado un External Object CountryInfoService y dos tipos de datos estructurados que serán
utilizados al consumir el Web Service.
6. Jugar.

22

También podría gustarte