Skip to main content
Únase a nosotros en TDX, San Francisco o en Salesforce+ del 5 al 6 de marzo en la conferencia de desarrolladores para la era del agente de la IA. Regístrese ahora.

Crear un flujo mediante acciones de servicios externos

Nota

Nota

¿Es su idioma de aprendizaje español (LATAM)? Comience el reto en un Trailhead Playground en español (LATAM) y utilice las traducciones entre paréntesis para navegar. Copie y pegue solo los valores en inglés, ya que las validaciones del reto dependen de los datos en ese idioma. Si no aprueba el reto en su organización en español (LATAM), recomendamos que (1) cambie la configuración local a Estados Unidos, (2) cambie el idioma a inglés (según estas instrucciones) y, luego, (3) haga clic en el botón “Check Challenge” (Comprobar el reto) nuevamente.

Consulte la insignia Trailhead en su idioma para obtener más información sobre cómo aprovechar la experiencia de Trailhead en otros idiomas.

Para comenzar, vamos a crear un flujo que pueda generar nuevas cuentas bancarias o actualizar cuentas existentes en su banco ficticio.

Agregar el lienzo de pantalla

Un lienzo de pantalla permite recopilar entradas del usuario que correspondan a los parámetros de entrada de su especificación de API.

  1. En Setup (Configuración), ingrese Flows (Flujos) en el cuadro de búsqueda rápida y, a continuación, seleccione Flows (Flujos).
  2. Haga clic en New Flow (Nuevo flujo).
  3. Asegúrese de que la opción Start from Scratch (Comenzar desde cero) esté seleccionada y haga clic en Next (Siguiente).
  4. Seleccione Screen Flow (Flujo de pantalla) y haga clic en Create (Crear).
  5. En la barra de botones, modifique la configuración Auto-Layout (Formato automático) a Free-Form (Forma libre).
  6. Desde la caja de herramientas, con la ficha Elements (Elementos) seleccionada, arrastre el elemento Screen (Pantalla) al lienzo.
    • Label (Etiqueta): Bank Account Record (Registro de cuenta bancaria)
    • API Name (Nombre de API): Bank_Account_Record
  1. Desde la lista de componentes de entrada, arrastre dos componentes Text (Texto) al lienzo de pantalla Flow Label (Etiqueta de flujo).
  2. Haga clic para resaltar el primer componente Text (Texto).
    • Label (Etiqueta): Last Name on Account (Apellido en la cuenta)
    • API Name (Nombre de API): Last_Name_on_Account
  1. Haga clic en el segundo componente Text (Texto).
    • Label (Etiqueta): Bank Account Type (Tipo de cuenta bancaria)
    • API Name (Nombre de API): Bank_Account_Type
  1. Haga clic en Done (Listo).
  2. Haga clic en Save (Guardar) para guardar el flujo y establecer sus propiedades.
    • Flow Label (Etiqueta de flujo): Bank Account Records (Registros de cuenta bancaria)
    • Flow API Name (Nombre de la API del flujo): Bank_Account_Records
  1. Haga clic en Save (Guardar) e ignore todas las advertencias.
Nota

Para no perder su trabajo, guarde de forma anticipada y con frecuencia mientras crea su flujo.

Hasta ahora, solo agregamos un elemento de pantalla a nuestro flujo que permite dos entradas de texto. Ahora, es momento de la acción. 

Agregar una acción

Los elementos de acción, por definición, presentan y realizan acciones invocables del flujo que los servicios externos crearon cuando registró la especificación de API. Llamar a una de las acciones que registró el servicio de banco externo es un ejemplo de invocación de una acción por fuera del flujo.

Le interesa la capacidad de agregar una cuenta a nuestro banco ficticio desde adentro de Salesforce. “¡Un momento! ¿No debo ser desarrollador para hacer eso?”. Para nada. Los servicios externos realizaron todo el trabajo pesado por usted. Ahora, solo debe utilizar una herramienta como Flow Builder o bots de Einstein para vincular las conexiones.

Para continuar, agregue la acción addAccount, que originalmente es una operación de nuestra especificación de API, como un elemento de acción en el flujo. Si no hay una cuenta bancaria existente, deberá utilizar la acción addAccount para crear una nueva cuenta bancaria en el servicio de banco. Esta acción toma las dos entradas de usuario, llama al servicio de banco mediante la credencial con nombre BankService y busca una cuenta bancaria existente con un nombre y un tipo de cuenta coincidentes.

Hay dos valores de salida de la operación addAccount en nuestra especificación de API que define aquí como variables.

  • 201: no se encontró una coincidencia de nombre. En este momento, no hay una cuenta bancaria. Por lo tanto, se crea una nueva cuenta bancaria a través de addAccount.
  • 409: es una excepción que significa que se encontró una coincidencia de nombre, la cuenta bancaria ya existe, por lo que no crearemos una nueva. En este caso, se muestra un mensaje dentro del flujo junto con los detalles de la cuenta existente. Los detalles se muestran para que sepamos con exactitud qué cuenta desencadenó la excepción 409.

Debe definir estos valores de salida aquí para hacer que otros elementos descendentes en nuestro flujo sean más inteligentes. De acuerdo. Hablemos con claridad: la cursiva no le dará superpoderes de Salesforce… pero completar el resto de esta unidad y el reto práctico sí lo hará.

  1. Desde la caja de herramientas, con la ficha Elements (Elementos) seleccionada, arrastre el elemento Action (Acción) al lienzo.
  2. Cambie Filter By (Filtrar por) a Type (Tipo), seleccione External Service (Servicio externo) y haga clic en el cuadro de búsqueda.
  3. Seleccione Add Account (Agregar cuenta).
    • Label (Etiqueta): Add Bank Account (Agregar cuenta bancaria)
    • API Name (Nombre de API): Add_Bank_Account
  1. Haga clic en el campo Account Name (Nombre de la cuenta), seleccione Bank Account Record (Registro de cuenta bancaria) y, luego, Last_Name_on_Account.
  2. Haga clic en el campo Account Type (Tipo de cuenta), seleccione Bank Account Record (Registro de cuenta bancaria) y, luego, Bank_Account_Type.
  3. Amplíe la sección Show advanced options (Mostrar opciones avanzadas) y marque Manually assign variables (Asignar variables manualmente).
  4. En Store Output Values (Almacenar valores de salida), haga clic en el campo 201 y seleccione New Resource (Nuevo recurso).
    • Resource Type (Tipo de recurso): Variable
    • API Name (Nombre de API): account (cuenta)
    • Data Type (Tipo de datos): Definido por Apex
    • Apex Class (Clase de Apex): ExternalService__BankService_accountDetails
    • Availability Outside the Flow (Disponibilidad fuera del flujo): seleccione Available for input (Disponible para entrada) y Available for output (Disponible para salida)
  1. Haga clic en Done (Listo).
  2. En Store Output Values (Almacenar valores de salida), haga clic en el campo 409 Exception (Excepción 409) y seleccione New Resource (Nuevo recurso).
    • Resource Type (Tipo de recurso): Variable
    • API Name (Nombre de API): existingAccount
    • Data Type (Tipo de datos): Definido por Apex
    • Apex Class (Clase de Apex): ExternalService__BankService_accountDetails
    • Availability Outside the Flow (Disponibilidad fuera del flujo): seleccione Available for input (Disponible para entrada) y Available for output (Disponible para salida)
  1. Haga clic en Done (Listo) y Done (Listo).

Ventana New Action (Nueva acción) con la acción addAccount completada.

Con tantos representantes de bancos que registran clientes nuevos, ¿quién sabe con seguridad si ya existe una cuenta para Maria Thompson? Agreguemos una lógica para evaluar si la cuenta ya existe o no. 

Agregar una decisión

Cuando el flujo se ejecuta, si la cuenta no existe, este se enrutará a través de una ruta “create account” (crear cuenta) y procederá a actualizar la nueva cuenta de usuario mediante addAccount. Si la cuenta ya existe (resultado predeterminado), se enrutará a través de una ruta “update” (actualizar), y simplemente actualizaremos el registro de usuario de Salesforce con la información del servicio bancario. Este tipo de lógica de evaluación y bifurcación es perfecta para el elemento Decision (Decisión) de Flow Builder. 

  1. Desde la ficha Elements (Elementos) de la caja de herramientas, arrastre Decision (Decisión) al lienzo.
  2. En la parte superior de la ventana New Decision (Nueva decisión), ingrese los siguientes valores.
    • Label (Etiqueta): Bank Account Updated? (¿Se actualizó la cuenta bancaria?)
    • API Name (Nombre de API): Bank_Account_Updated (Quite el signo ? al final de la cadena para API_Name)
  1. En la sección Outcomes (Resultados), observe los dos resultados enumerados a la izquierda: New Outcome (Nuevo resultado) y Default Outcome (Resultado predeterminado).
  2. Asegúrese de que New Outcome (Nuevo resultado) esté seleccionado e ingrese estos valores en la sección Outcome Details (Detalles del resultado).
    • Label (Etiqueta): Bank Account Created (Cuenta bancaria creada)
    • API Name (Nombre de API): Bank_Account_Created
    • Para Condition Requirements to Execute Outcome (Requisitos de condición para ejecutar el resultado), seleccione All Conditions Are Met (AND) (Se cumplen todas las condiciones [AND]).
  1. En Resource (Recurso), ingrese las siguientes condiciones.
    • Resource (Recurso): existingAccount
    • Operator (Operador): Is Null (Es nulo)
    • Value (Valor): True (Verdadero)
      Observe que el recurso existingAccount no especifica un sufijo como existingAccount.id o existingAccount.name. Esto se debe a que desea buscar coincidencias en todo el objeto, no en un único campo. Esto significa que el nombre y el tipo de cuenta, que se proporcionan en la entrada de pantalla inicial, deben coincidir ambos para actualizar una cuenta existente. Si no se encuentra una coincidencia, debe crear una cuenta nueva. 
  1. Seleccione Default Outcome (Resultado predeterminado) e ingrese lo siguiente:
    • Label (Etiqueta): Bank Account Found (Cuenta bancaria encontrada)
  1. Haga clic en Done (Listo).
Nota

Observe que Bank Account Found (Cuenta bancaria encontrada) no tiene condiciones. Esto se debe a que es el resultado predeterminado. Si no se cumplen las condiciones para que el flujo cree una cuenta, el flujo siempre usará esta ruta y actualizará la información de la cuenta.

Agregar una asignación

En el caso de que una cuenta bancaria ya exista, debemos indicarle al flujo que actualice el campo Salesforce User Account ID (Id. de cuenta del usuario de Salesforce) con la Id. de la cuenta bancaria. Para ello, debe asignar el valor a una variable (account.id).

  1. Desde la caja de herramientas, arrastre Assignment (Asignación) al lienzo.
  2. En la ventana New Assignment (Nueva asignación), ingrese estos valores.
    • Label (Etiqueta): Assign Existing Bank Account ID (Asignar Id. de la cuenta bancaria existente)
    • API Name (Nombre de API): Assign_Existing_Bank_Account_ID
  1. En Set Variable Values (Establecer valores de variable), ingrese los siguientes valores.
    • Variable: seleccione account (cuenta) y, luego, id
    • Operator (Operador): Equals (Es igual a)
    • Value (Valor): seleccione existingAccount y, luego, id
  1. Haga clic en Done (Listo) e ignore todas las advertencias.
Nota

No puede copiar ni pegar los valores de la variable. En la variable, escriba account (cuenta), haga clic en account (cuenta) en Apex-Defined Variables (Variables definidas por Apex) y seleccione id.

Agregar el elemento Update Records

Utilicemos los valores almacenados en variables para actualizar nuestro registro de usuario de Salesforce con el tipo y la Id. de la cuenta bancaria. 

  1. Desde la caja de herramientas, arrastre el elemento Update Records (Actualizar registros) al lienzo.
  2. En la ventana New Update Records (Nueva actualización de registros), ingrese los siguientes valores:
    • Label (Etiqueta): Update Salesforce User Record (Actualizar registro de usuario de Salesforce)
    • API name (Nombre de API): Update_Salesforce_User_Record
  1. Seleccione Specify conditions to identify records, and set fields individually (Especificar condiciones para identificar registros y establecer campos individualmente)
  2. En Update Records of This Object Type (Actualizar registros de este tipo de objeto):
    • Object (Objeto): User (Usuario)
  1. En Filter User Records (Filtrar registros de usuario):
    • Condition Requirements for record to update (Requisitos de condición para que los registros se actualicen): All Conditions Are Met (AND) (Se cumplen todas las condiciones [AND])
    • Field (Campo): LastName
    • Operator (Operador): Equals (Es igual a)
    • Value (Valor): Last_Name_on_Account
  1. En Set Field Values for the User Records (Establecer valores de campo para los registros de usuario):
    • Field (Campo): Account_ID__c
    • Value (Valor): seleccione account (cuenta) y, luego, id en Apex-Defined (Definido por Apex)
  1. Haga clic en + Add Field (Agregar campo).
    • Field (Campo): Account_Type__c
    • Value (Valor): Bank_Account_Type, en Screen Components (Componentes de pantalla), no en Apex-Defined (Definido por Apex)Ventana New Update Records (Nueva actualización de registros) con los valores completados.
  1. Haga clic en Done (Listo).

Conectar los elementos

¡Casi terminamos! Solo necesita vincular su flujo. Para comenzar, conectemos los elementos en el orden correcto. Para ello, arrastremos el nodo del conector al elemento de destino para que nuestro proceso de negocio fluya con éxito al momento de la ejecución. No se olvide de guardarlo.  

  1. Conecte Start (Iniciar) con la pantalla Bank Account Record (Registro de cuenta bancaria).
  2. Conecte la pantalla Bank Account Record (Registro de cuenta bancaria) con la acción Add Bank Account (Agregar cuenta bancaria).
  3. Conecte la acción Add Bank Account (Agregar cuenta bancaria) con la decisión Bank Account Updated? (¿Se actualizó la cuenta bancaria?).
  4. Alinee el elemento Decision (Decisión) en el lienzo para tener espacio para un conector saliente en cada extremo.
  5. Conecte el resultado de la decisión Bank Account Updated? (¿Se actualizó la cuenta bancaria?) con la asignación Assign Existing Bank Account ID (Asignar Id. de la cuenta bancaria existente).
  6. Cuando se le solicite, seleccione Bank Account Found (Cuenta bancaria encontrada) para que se asigne el resultado de la decisión a la ruta y haga clic en Done (Listo).Ventana Select outcome for decision connector (Seleccionar resultado para el conector de la decisión).
  7. Conecte la asignación Assign Existing Bank Account ID (Asignar Id. de la cuenta bancaria existente) con el elemento de actualización de registros Update Salesforce User Record (Actualizar registro de usuario de Salesforce).
  8. Conecte la decisión Bank Account Updated? (¿Se actualizó la cuenta bancaria?) con el elemento de actualización de registros Update Salesforce User Record (Actualizar registro de usuario de Salesforce).
  9. Haga clic en Save (Guardar).

Depurar el flujo

¡Casi termina! Antes de finalizar, utilicemos el modo de depuración para verificar el flujo. 

  1. Haga clic en Debug (Depurar).
  2. Seleccione Show details of what’s executed and render flow in Lightning runtime (Mostrar los detalles de qué se ejecuta y representar el flujo en el tiempo de ejecución de Lightning).
  3. Haga clic en Run (Ejecutar).
  4. En Last Name on Account (Apellido en la cuenta), escriba Thompson. Además, en Bank Account Type (Tipo de cuenta bancaria), ingrese Checking (Cuenta corriente).
  5. Haga clic en Next (Siguiente).

El flujo se ejecuta con nuestras entradas. 

En Debug Details (Detalles de depuración), siga el flujo completo que acaba de crear. 

Primero, se encuentran sus entradas de texto. A continuación, en BANKSERVICE.ADDACCOUNT, podemos observar que las entradas de texto se asignaron de forma adecuada y que los resultados indican una cuenta existente:

{!existingAccount} = 409exc

y

{!account} = 201 (null)

… o bien, que no se encontró una cuenta y se creó una nueva:

{!existingAccount} = 409exc (null)

y

{!account} = 201

En la fase Decision (Decisión), se confirma el resultado de la decisión. Se asignaron las variables.

Ahora, en Update Records (Actualizar registros), se propagaron los campos Account Type (Tipo de cuenta) y Account ID (Id. de cuenta) en Salesforce con los nuevos valores desde del servicio web de banco.  

Nota

No se preocupe si obtiene resultados diferentes (201 o 401). El resultado varía en función de la actualización de cuentas de la aplicación.

(Música maestro…) Ahora, observe el registro de usuario de Maria Thompson en Salesforce.

Como representante del banco, ingresó el nombre y el tipo de cuenta en Salesforce, y nuestra aplicación de flujo actualizó de forma automática una cuenta bancaria existente (o creó una nueva) en el servicio de banco y mostró la Id. de la cuenta y el nuevo tipo de cuenta en el registro de usuario de Salesforce. 

Ahora, cuenta con un seguimiento de la actividad de ventas en las cuentas bancarias desde Salesforce. ¿Acaso dijo “sin código”? Así es. Se hizo todo sin escribir ni una sola línea de código.

Conocer los límites de su aplicación

También debe saber que puede recibir un error. Por ejemplo, si escribe “Maria Thompson” en Last Name on Account (Apellido en la cuenta), verá un error, ya que está prohibido ingresar un espacio en este campo. De forma similar, puede que se muestre un error si ingresa un nombre con menos de seis caracteres (por ejemplo, Jones), ya que este es otro límite de nuestra aplicación simple. Los siguientes son algunos de los códigos que puede observar.

Código

Descripción del servicio de banco Acme

200

El sistema encuentra una cuenta con un nombre específico.

201

Es la respuesta cuando la cuenta no existe y podemos crear una.

204

Es la respuesta cuando el sistema encuentra una cuenta con nombre específico.

400

Es una respuesta de error si el nombre de la cuenta tiene menos de seis caracteres o si contiene espacios.

404

Es una respuesta de error si la cuenta no es compatible con el servicio o no se encuentra.

409

Es la respuesta cuando la cuenta existe y no podemos crear una.

Nota

Si hubiéramos creado un flujo para utilizarlo con un servicio de banco externo real, crearíamos registros mediante identificadores únicos en lugar de nombres. Existe otra lógica que seguro es demasiado básica para un escenario de banco. Sin embargo, de nuevo, mantenemos este ejemplo simple para que pueda enfocarse en comprender los servicios externos. 

Revisión

¡Bien! ¡Excelente trabajo! Revisemos cómo creó un flujo mediante servicios externos y observemos los pasos que realizó durante el proceso. Observe que, si bien tuvo que tratar con una definición de esquema que cumpla con OpenAPI en su especificación de API, la mayor parte del trabajo es declarativa (con poco o nada de código). Excelente, ¿no es así?

Imagen que ilustra los seis pasos del uso de servicios externos con el flujo.

Llegó el momento que estaba esperando. Comprobemos su trabajo.

Verificar paso

+100 puntos

Completará esta/este proyecto en su propia organización de prácticas. Haga clic en Iniciar para empezar a trabajar, o haga clic en el nombre de su organización para seleccionar una diferente.

Comparta sus comentarios de Trailhead en la Ayuda de Salesforce.

Nos encantaría saber más sobre su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios en cualquier momento en el sitio de Ayuda de Salesforce.

Más información Continuar a Compartir comentarios