En "Web Service URL" se debe ingresar el camino hacia el WSDL.
Puede ser referenciado por medio del protocolo http (por ej. http://api.google.com/GoogleSearch.wsdl ) o file (por ej. file:C:\Servicios\AmazonWebServices.wsdl).
Una vez ingresado el camino del WSDL se debe presionar el botón "Inspect", con lo cual en caso de no existir ningún error se mostrará la información de los distintos métodos que brinda el web service, junto con los tipos de datos necesarios para poder consumirlos.
Para poder importar la información necesaria dentro de la base de conocimientos que permita consumir el web service se debe presionar el botón "Add Reference".
En la imagen anterior se muestra la información de un web service simple, el cual cuenta con un solo método llamado BabelFish que recibe dos parámetros de entrada de tipo Carácter y retorna otro parámetro de tipo Carácter. En el mismo no existe definición para ningún tipo de datos complejo.
El siguiente ejemplo muestra otro caso en el cual el web service cuenta con más de un método y existen tipos de datos complejos:
Add reference
Como se mencionó anteriormente al presionar el botón "Add Reference" se genera dentro de la base de conocimientos los tipos de datos necesarios para poder consumir el web service en forma trasparente. O sea, se genera un tipo de datos que identifica el web service y en caso de que el mismo utilice tipos de datos complejos se genera un tipo de datos para cada uno de ellos.
De esta forma se puede definir una variable a la cual asignarle el tipo de datos definido para el web service y utilizando los métodos de la misma poder invocar a los distintos métodos que el web service provee.
Estructuras de datos
Los Web Services normalmente retornan valores en estructuras de datos. Por ejemplo, retornan un "Cliente" que es una estructura que tiene "Codigo" y "Nombre" que a su vez es otra estructura que tiene "PrimerNombre", "SegundoNombre", etc.
En GeneXus se podrá definir variables de tipo de datos "Cliente" y modificar/acceder a sus "miembros" con la sintaxis: Cliente.Nombre.PrimerNombre.
Por el momento, la definición de estructuras de datos está disponible únicamente a través del WSDL Inspector. En el futuro se incluirá un editor que permita definir las estructuras que el desarrollador entienda necesario.
Invocación de los métodos de un web service
Volvamos entonces a la primera imagen para poder mostrar en un caso sencillo como poder consumir un web service.
En este caso al presionar el botón 'Add Reference' se agrega a los tipos de datos que maneja GeneXus el tipo "net_xmethods_www_sd_BabelFishService.BabelFishService". (Notar que en el nombre asignado al tipo de datos esta precedido por el namespace que identifica al web service, de esta forma GeneXus asegura que no van a existir dos tipos de datos con el mismo nombre para distintos web services).
De esa forma se puede definir una variable a la cual asignarle ese tipo de datos; llamaremos a la misma "ws".
Luego podremos invocar utilizando la variable "ws" a cualquiera de los métodos que el web service provee (en este caso solo uno) de la siguiente forma: &result = &ws.BabelFish(&traslationmode, &source)
Donde &result, &traslationmode y &source son variables de tipo character.
¡Eso es todo!, de esta forma usted pudo invocar a un web service en forma sencilla sin tener que preocuparse de los protocolos involucrados en el proceso y la definición del mismo; solamente usted tuvo que dar la ubicación de su WSDL y GeneXus se encargó de esconder la complejidad y definir un tipo de datos que represente al web service.
Ejemplo
En el GXOpen se encuentra una KB de ejemplo en la cual se consumen tres web services; GXChart (servidor de gráficas), Babelfish (traductor de textos) y GetJoke (provee chistes agrupados por categorías).
El mismo puede ser obtenido en http://www.gxopen.com/main/hproject.aspx?176
Enlaces de interés: