English version
Los servicios Web suelen presentar varios métodos para facilitar su comprensión y uso. Así, por ejemplo, podemos tener un servicio CustomerServices con los métodos BasicInformation y PurchaseHistory. El código del procedimiento (servicio) CustomerServices será semejante al siguiente.
// CustomerServices services
…
Stub BasicInformation( in:&CustomerId, out:&BasicInformation)
For each
// Navigation to populate &BasicInformation
Endfor
EndStub
Stub PurchaseHistory( in:&CustomerId, out:&PurchaseHistory)
For each
// Navigation to populate &PurchaseHistory
Endfor
EndStub
El WSDL generado para un servicio con múltiples métodos como el anterior puede ser inspeccionado por otras Knowledge Bases GeneXus (Tools/Application Integration/WSDL Import), generando un objeto externo que tendrá los métodos del servicio y será utilizable como se indica a continuación.
&CustomerServices = new() // &CustomerServices’ data type is CustomerServices (the imported External Object)
&CustomerBasicInformation = &CustomerServices.BasicInformation( 1)
// Process information of Customer with Id = 1.
&CustomerBasicInformation = &CustomerServices.PurchaseHistory( 2)
// Process PurchaseHistory of Customer with Id = 2
Del mismo modo, el servicio generado puede ser inspeccionado y consumido por lenguajes de programación como C#, Java, etc.
-
Los objetos que tienen Stubs _no_ exponen el servicio “execute”.
Si fuera necesario mantenerlo (generalmente por compatibilidad) basta incluir un Stub con ese nombre (execute).
- Los parámetros definidos en la regla parm() del objeto _no_ son considerados también parámetros de los Stubs
- Los objetos con Stubs no deben tener código fuera de los bloques Stub/EndStub.
Los Stubs y la posibilidad de tener servicios con múltiples métodos aparece en los generadores Java y .Net de GeneXus X Evolution 1 Upgrade 2. Previo a ésta, los servicios sólo podían tener un único método denominado “execute”.