English|Português|Español
UsuárioSenhaLogin

INÍCIO
PALESTRAS
INFO
Imagen6347P

De GeneXus 8.0 RC: Tipos de dados estruturados (II)

Na edição anterior vimos como definir um objeto estruturado e algumas de suas propriedades, agora vejamos como utilizá-lo

Uso do SDT: carga

Seguindo o exemplo do estruturado ?Cliente?, uma vez criado o SDT

 

 

é possível definir variáveis baseadas nele desde qualquer objeto GeneXus.

 

 

Podemos instalar esta variável, por exemplo, recorrendo a Base de Datos com o código:

For Each

    Where CliID = &CliId

    &Cliente.Nombre = Clinom

    &Cliente.Identidad = CliDoc

    &Cliente.Nacionalidad=   &Nacionalidad

    &CLiente.Direccion.Empresa = Clidir

    &Cliente.Telefonos.Add(CliTel)

Endfor

 

Uso do SDT: carga via XML

 

Também podemos instalar a informação desde um XML, simplesmente com o código

 

       &Cliente.FromXml(&ClienteXml)

 

Uma vez instalado o xml se obtém os dados do cliente, acessando os ítens do SDT, de uma forma mais clara que tradicionalmente com o tipo de dados Xmlreader.

 

Similarmente pode-se salvar o conteúdo de um SDT em um xml com:

 

       &ClienteXML =     &Cliente.ToXml()

 

O conteúdo do string &CLienteXml será:

 

 Cliente xmlns = "name_Kb"

    Nombre CliNom /Nombre

    Identidad ...  /Identidad

    Nacionalidad ...  /Nacionalidad

    Direccion

         Empresa CliDir /Empresa

         Personal CliDir2 /Personal

    /Direccion

    Telefonos

         item  CliTel1  /item

         item  CliTel2  /item

   /Telefonos

o mesmo string pode ser gerado com os tipos de dados XML, mas é bastante mais complexo, precisam-se as seguintes linhas de código:

 

      &FileXml.opentoString()

      &filexml.WriteNSStartElement('Cliente', , "name_kb")       &filexml.WriteElement('Nombre', CliNom  )

  &filexml.WriteElement('Identidad', & )

  &filexml.WriteElement('Nacionalidad', & )

&filexml.WriteStartElement('Dirección')

  &filexml.WriteElement('Empresa', CliDir )

  &filexml.WriteElement('Personal', CliDir2 )

&filexml.WriteEndElement()  

&filexml.WriteStartElement('Telefonos')

  &filexml.WriteElement('Item', CliTel1  )

  &filexml.WriteElement('Item', CliTel2  )

    &filexml.WriteEndElement()  

&filexml.WriteEndElement() 

&ClienteXML = filexml.resultingString()

&filexml.Close()

 

Uso do SDT: Proveer/consumir

 

Agora estamos em condições de fornecer/consumir em um Webservice os dados do cliente. Para fornecer simplesmente deve-se definir um procedimento con call protocol SOAP e retornar por parâmetro uma variável do tipo Cliente. Para consumir deve-se utilizar o WSDL inspetor e ele mesmo se encarrega de criar os SDT necessários para poder consumi-lo.

 

Também se poderia passar ou receber o cliente em qualquer outro objeto GeneXus , sem necessidade de acessar a base de dados. Antigamente isto implicava passar n parâmetros, algo como:

 

     Call('WtrabCliente', &CliNom, &CLiDoc, &Clidir, &Clitel1, &CLitel2)

Agora se traduz em:

     Call('WtrabCliente', &cliente)

 

Especificação, geração, knowledge manager

 

O objeto SDT se especifica através dos objetos que o invocam (que tem variáveis baseadas no estruturado). É possível exportar/consolidar um ou mais estruturados através do knowledge manager.

 

Na próxima edição das Notícias GeneXus comentaremos a definição de estruturados mais complexos (coleções) suas propriedades e mais casos sobre Webservices.

 

 

 

 

 

Relacionado
De GeneXus 8.0 RC: Tipos de dados estruturados (SDT)
De GeneXus 8.0 RC: Tipos de dados estruturados (III)
Novos parceiros acadêmicos no Brasil!