Colecciones
Si bien ya definimos una lista de teléfonos del cliente, una colección de un tipo simple (numérico), se podría definir un nuevo SDT, o el mismo, como una lista de clientes
En este caso son creados dos tipos de datos, uno Clientes y otro Clientes.Cliente.
Cargar una colección
Una variable de tipo Clientes se cargaría de una forma similar al Cliente, pero es necesario utilizar el comando new, ya que los SDT por defecto se asignan por referencia. Con el siguiente código podríamos cargar la lista de clientes.
For Each
&Cliente = new Clientes.Cliente ()
&Cliente.Nombre = Clinom
&Cliente.Identidad = CliDoc
&Cliente.Nacionalidad= &Nacionalidad
&CLiente.Direccion.Empresa = Clidir
&Cliente.Telefonos.Add(CliTel)
&Clientes.add(&Cliente)
Endfor
Recorrer una colección
Luego de cargada la estructura de clientes es posible recorrerla con el comando For IN Array, con las siguientes líneas de código:
For &Cliente in Clientes
&Clinom = &cliente.Nombre
...
EndFor
Proveer/consumir servicios
Ahora podemos proveer/consumir en un Webservice la lista de clientes. Al igual que en el caso de los datos del cliente, para proveer simplemente se debe definir un procedimiento con call protocol SOAP y retornar por parámetro una variable de tipo Clientes.
Para consumir utilizar el WSDL inspector.
Muchos de los webservices disponibles proveen datos estructurados, por ejemplo http://www.swanandmokashi.com/HomePage/WebServices/Horoscope.asmx?WSDL provee, diariamente, la lista de los signos del horóscopo con su respectivo pronóstico.
Para programar dicha interfase en su portal, debería:
1) Incluir la definición del webservices desde diseño
2) Definir en un objeto Web Panel dos variables, "array" e "item", con los nuevos tipos de datos y una variable, "ws" con el servicio:
3) Codificar la carga de un subfile recorriendo el array resultado de la invocación:
Event Load
&array = &ws.GetHoroscope()
For &item in &array
&SodiacSign = &item.ZodiacSign
&ForeDailiy = &item.DailyForecast
load
endfor
EndEvent // Enter