lunes, julio 17, 2006

Notas acerca de PartnerApi

Hace algunos posts publiqué que estaba construyendo un API para encapsular las llamadas a las funciones del API de AppExchange. He tenido algunos lentos pero seguros progresos y ya conseguí devolver una lista de objetos encapsulando la llamada al método query() de AppExchange. Ahora estoy planeando los siguientes métodos para completar el conjunto de operaciones ABC (Alta, Baja, Cambios) en PartnerApi.

Estas son las firmas de los métodos que se van a implementar:

  • Insert(sObject) => (1)
  • Insert(IList sObjects) => (m)
  • Update(sObject) => (1) update by Id
  • Update(IList sObjects) => (m) update by Id
  • Delete(sObject) => (1) delete by Id
  • Delete(criteria) => (0..m) delete by condition
  • Delete(IList sObjects) => (m) delete by Id

La idea es tener siempre una versión que afecta un solo objeto (1) y la versión que afecta varios objetos (m). En las operaciones de Update y Delete es obvio que se puede establecer una relación directa con el objeto que se va afectar mediante el uso de Id. En el caso de la operación Delete se añade el caso adicional donde especificamos la condición que debe cumplirse para eliminar el objeto de la BD de AppExchange.

También falta por construir un método de conversión de un PartnerApi.sObject a un AppExchange.sObject. Es decir, se consulta a AppExchange y nos devuelve una colección de sObjects en su formato nativo. En PartnerApi se expone una clase que encapsula de una manera más natural los atributos de la clase y ahora se requiere un método que la regrese a su formato original, algo así como AppExchange.sObject => PartnerApi.sObject => AppExchange.sObject en donde cada => se debe entender como conversión.

Finito.

No hay comentarios.: