Utilizar Apex para crear una llamada a un servicio externo
Diseñe y pruebe la automatización que envía la información de un usuario desde Salesforce al sistema de banca de empleados externo. Empleado los ejemplos que se proporcionan, cree las variables para los números de teléfono de los usuarios y combine diferentes números de teléfono en un elemento de datos. Luego utilice la acción de servicio externo para crear el usuario.
Ediciones necesarias
| Disponible en: Lightning Experience |
| Disponible en: Enterprise Edition, Performance Edition, Unlimited Edition y Developer Edition |
-
Definir una credencial con nombre
Para este ejemplo simplificado, utilice Credenciales nombradas "heredadas". En vez de hacer clic en Nuevo, seleccione Nuevo heredado desde el menú desplegable junto al botón Nuevo. Para la credencial con nombre que su organización utiliza para acceder al sistema de banca, asigne la etiqueta Bank. Asigne una URL de marcador, como https://api.example.com. Utilice example.com porque pegará el esquema en el momento del registro, en vez de utilizar una URL para señalar una especificación de API.
En el caso donde utiliza una URL, la URL de la credencial con nombre corresponde al host declarado de la especificación de API y uno de sus esquemas de protocolo de transferencia o protocolos de URL. La URL puede apuntar a un extremo diferente siempre que aloje el mismo servicio externo. La ruta de base se agrega a la URL de la credencial con nombre en la llamada.
- Registre el servicio externo del sistema de banca de empleados utilizando los pasos que se describen en Registrar un servicio externo como guía. Utilice el nombre BankService y la credencial con nombre Bank y copie el esquema desde el “Ejemplo 2 de Especificación de API de Servicios externos”, que se encuentra en el tema Esquema de OpenAPI 2.0 de Servicios externos.
-
Cree el
BankServicede clase Apex:public class BankService { } -
Para almacenar los detalles de usuario, agregue una variable de miembro:
public class BankService { private ExternalService.BankService_z0User user; } -
Para inicializar un usuario vacío con una lista vacía de teléfonos, agregue un método:
public class BankService { private ExternalService.BankService_z0User user; private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
Para asignar el valor de teléfono del trabajo, agregue un método:
public class BankService { private ExternalService.BankService_z0User user; public void setWorkPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Work'; this.user.phones.add(phone); } private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
Para asignar el valor de teléfono móvil, agregue un método:
public class BankService { private ExternalService.BankService_z0User user; public void setWorkPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Work'; this.user.phones.add(phone); } public void setCellPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Cell'; this.user.phones.add(phone); } private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
Para asignar un usuario, agregue un método:
public class BankService { private ExternalService.BankService_z0User user; public void setUser(Integer userId, String userName) { setEmptyUser(); this.user.id = userId; this.user.name = userName; } public void setWorkPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Work'; this.user.phones.add(phone); } public void setCellPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Cell'; this.user.phones.add(phone); } private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
Cree una clase de excepción personalizada, ya que no puede generar excepciones integradas de Apex.
Public class BankServiceException extends Exception{}Para más información consulte Crear excepciones personalizadas en la Guía del desarrollador de código Apex.
-
Para crear usuarios en el sistema de banca externo, agregue un método para llamar al servicio de banca externo:
public class BankService { private ExternalService.BankService_z0User user; public void createUser() { if (this.user == null || this.user.id == null) { throw new BankServiceException('Set the user to create first'); } ExternalService.BankService bankService = new ExternalService.BankService(); try { ExternalService.BankService.postUsers_Request request = new ExternalService.BankService.postUsers_Request(); request.z0user = this.user; bankService.postUsers(request); } catch (ExternalService.BankService.postUsers_ResponseException e) { throw new BankServiceException('Couldn\'t create user with ID: ' + this.user.id); } } public void setUser(Integer userId, String userName) { setEmptyUser(); this.user.id = userId; this.user.name = userName; } public void setWorkPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Work'; this.user.phones.add(phone); } public void setCellPhone(String phoneNumber) { setEmptyUser(); ExternalService.BankService_Phone phone = new ExternalService.BankService_Phone(); phone.phone = phoneNumber; phone.typeofphone = 'Cell'; this.user.phones.add(phone); } private void setEmptyUser() { if (this.user == null) { this.user = new ExternalService.BankService_z0User(); this.user.phones = new List<ExternalService.BankService_Phone>(); } } } -
Abra la consola del desarrollador y depure llamando a
BankServicecon algunos valores de muestra con un miniprograma de código en una clase de ejecución anónima. Tenga los registros de depuración abiertos y compare con este registro de llamada de ejemplo:BankService bankService = new BankService(); bankService.setWorkPhone('1234567890'); bankService.setCellPhone('0987654321'); bankService.setUser(1234, 'Maria'); bankService.createUser();
