Skip to main content
Únase a nosotros en TDX, en San Francisco, o en Salesforce+ los días 5 y 6 de marzo en la conferencia para desarrolladores sobre la era de agentes de IA. Registrarse ahora.

Crear un flujo con acciones de servicios externos

Nota

Nota

¿Su idioma de aprendizaje es español? Comience el reto en un Trailhead Playground en español y utilice las traducciones proporcionadas entre paréntesis para navegar. Copie y pegue solo los valores en inglés, ya que las validaciones del reto se basan en los datos en inglés. Si no aprueba el reto en su organización en español, le recomendamos que (1) cambie la configuración regional a Estados Unidos, (2) cambie el idioma a inglés, siga las instrucciones descritas aquí y, a continuación, (3) vuelva a hacer clic en el botón Check Challenge (Comprobar el reto).

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 empezar, crearemos un flujo que pueda generar nuevas cuentas bancarias o actualizar cuentas bancarias existentes en su banco ficticio.

Añadir el lienzo de la pantalla

Un lienzo de pantalla permite reunir entradas del usuario que corresponden a parámetros de entrada en su especificación de API.

  1. En Setup (Configuración), introduzca Flows (Flujos) en el cuadro Quick Find (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 (Empezar de 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, cambie el ajuste Auto-Layout (Diseño automático) por Free-Form (Formato 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 cuentas bancarias)
    • API Name (Nombre de API): Bank_Account_Record (Registro de cuentas bancarias)
  1. Desde la lista de componentes Input (Entrada), arrastre componentes de Text (Texto) al lienzo de pantalla Flow Label (Etiqueta de flujo).
  2. Haga clic para resaltar el primer componente de Text (Texto).
    • Label (Etiqueta): Last Name on Account (Apellido en la cuenta)
    • API Name (Nombre de API): Last_Name_on_Account (Apellido en la cuenta)
  1. Haga clic en el segundo componente de Text (Texto)
    • Label (Etiqueta): Bank Account Type (Tipo de cuenta bancaria)
    • API Name (Nombre de API): Bank_Account_Type (Tipo de cuenta bancaria)
  1. Haga clic en Done (Listo).
  2. Haga clic en Save (Guardar) para guardar el flujo y establecer sus propiedades.
    • Etiqueta de flujo: Bank Account Records (Registros de cuentas bancarias)
    • Nombre de la API del flujo: Bank_Account_Records (Registros de cuentas bancarias)
  1. Haga clic en Save (Guardar) e ignore las advertencias.
Nota

Para no perder su trabajo, guarde sin tardar y a menudo mientras cree el flujo.

Hasta ahora, simplemente hemos añadido un elemento de pantalla a nuestro flujo que permite dos entradas de texto. Ahora es el momento de pasar a la acción. 

Añadir una acción

Los elementos de acción, por definición, presentan y realizan acciones que se pueden iniciar fuera del flujo que los servicios externos crearon cuando registró su especificación de API. Llamar a una de las acciones registradas por su servicio bancario externo es un ejemplo de inicio de una acción fuera del flujo.

Le interesa la posibilidad de añadir una cuenta en nuestro banco ficticio desde dentro de Salesforce. "Pero... ¿no hay que ser desarrollador para hacerlo?". ¡En absoluto! Los servicios externos han hecho todo el trabajo pesado en su lugar. Además, ahora basta con utilizar una herramienta como Flow Builder o Einstein Bots para enlazar las conexiones.

Para continuar, añada la acción addAccount, originalmente una operación de nuestra especificación de API, como un elemento de acción en su flujo. Si no hay ninguna cuenta bancaria, utilice la acción addAccount para crear una nueva en el servicio bancario. Esta acción toma las dos entradas de usuario, llama al servicio bancario a través de su credencial con nombre BankService (servicio bancario) 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 se definen aquí como variables.

  • 201: No se ha encontrado ninguna coincidencia de nombre. En este momento no hay ninguna cuenta bancaria. Por lo tanto, se ha creado una cuenta bancaria nueva mediante addAccount.
  • 409: Se ha encontrado una excepción que significa una coincidencia de nombre (la cuenta bancaria ya existe), así que no crearemos otra nueva. En este caso, se devuelve un mensaje dentro del flujo junto con los detalles de la cuenta existente. Los detalles se devuelven, así que ahora sabemos exactamente qué cuenta desencadenó la excepción 409.

Aquí se definen estos valores de salida para que otros elementos posteriores de nuestro flujo sean más inteligentes. Vale. Seamos claros: la cursiva no le dará superpoderes de Salesforce, pero completar el resto de esta unidad y el reto práctico sí se los dará.

  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 (Añadir cuenta).
    • Label (Etiqueta): Add Bank Account (Añadir cuenta bancaria)
    • API Name (Nombre de API): Add_Bank_Account (Añadir cuenta bancaria)
  1. Haga clic en el campo Account Name (Nombre de cuenta), seleccione Bank Account Record (Registro de cuenta bancaria) y marque Last_Name_on_Account (Apellido en la cuenta).
  2. Haga clic en el campo Account Type (Tipo de cuenta), seleccione Bank Account Record (Registro de cuenta bancaria) y luego marque Bank_Account_Type (Tipo de cuenta bancaria).
  3. Expanda 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 (Recurso nuevo).
    • Resource Type (Tipo de recurso): Variable (Variable)
    • API Name (Nombre de API): account (cuenta)
    • Data Type (Tipo de datos): Apex-Defined (Definidos por Apex)
    • Apex Class (Clase de Apex): ExternalService__BankService_accountDetails
    • Availability Outside the Flow (Disponibilidad fuera del flujo): Seleccione Available for input (Disponible para la entrada) y Available for output (Disponible para la 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 (Recurso nuevo).
    • Resource Type (Tipo de recurso): Variable (Variable)
    • API Name (Nombre de API): existingAccount (cuenta existente)
    • Data Type (Tipo de datos): Apex-Defined (Definidos por Apex)
    • Apex Class (Clase de Apex): ExternalService__BankService_accountDetails
    • Availability Outside the Flow (Disponibilidad fuera del flujo): Seleccione Available for input (Disponible para la entrada) y Available for output (Disponible para la salida)
  1. Haga clic en Done (Listo) y Done (Listo).

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

Con tantos representantes bancarios dando de alta a nuevos clientes, ¿quién sabe a ciencia cierta si ya existe una cuenta para Maria Thompson? Por eso, vamos a añadir una lógica para evaluar si la cuenta ya existe o no. 

Añadir una decisión

Cuando el flujo se ejecuta, si la cuenta no existe, entonces nuestro flujo se dirige a través de una ruta de creación de cuenta y avanza para actualizar la nueva cuenta de usuario mediante addAccount. Si la cuenta ya existe (resultado predeterminado), se dirige a través de una ruta de actualización y simplemente actualizamos el registro de usuarios de Salesforce con la información del servicio bancario. Este tipo de evaluación y de lógica de enrutamiento son perfectos 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. Al principio de la ventana New Decision (Nueva decisión), introduzca estos valores:
    • Label (Etiqueta): Bank Account Updated? (¿Se actualiza la cuenta bancaria?).
    • API Name (Nombre de API): Bank_Account_Updated (Se actualiza la cuenta bancaria) (es decir, borre el signo de interrogación del final de la cadena del nombre de la API)
  1. En la sección Outcomes (Resultados), observe los dos resultados que aparecen a la izquierda: New Outcome (Nuevo resultado) y Default Outcome (Resultado predeterminado).
  2. Asegúrese de seleccionar New Outcome (Nuevo resultado) e introduzca 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 (Cuenta bancaria creada)
    • En 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. Para Resource (Recurso), introduzca estas condiciones:
    • Resource (Recurso): existingAccount (cuenta existente)
    • Operator (Operador): Is Null (Es nulo)
    • Value (Valor): True (Verdadero)
      Tenga en cuenta que el recurso existingAccount no especifica un recurso como existingAccount.id o existingAccount.name. Esto se debe a que desea buscar una coincidencia en todo el objeto, no solo en un único campo. Esto significa que el nombre y el tipo de cuenta (ambos), indicados en la entrada inicial de la pantalla, deben coincidir para actualizar una cuenta existente. Si no encuentra ninguna coincidencia, cree una cuenta nueva. 
  1. Seleccione Default Outcome (Salida predeterminada) e introduzca lo siguiente:
    • Label (Etiqueta): Bank Account Found (Cuenta bancaria encontrada)
  1. Haga clic en Done (Listo).
Nota

Tenga en cuenta que Bank Account Found (Cuenta bancaria encontrada) no tiene ninguna condición. Eso es porque es el resultado predeterminado. Si no se cumplen las condiciones para que el flujo cree una cuenta, el flujo siempre toma esta ruta y actualiza la información de la cuenta.

Añadir una asignación

En el caso de que ya exista una cuenta bancaria, digamos a Flow que actualice el campo User Account ID (ID de cuenta de usuario) de Salesforce con el ID de 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), introduzca estos valores.
    • Label (Etiqueta): Assign Existing Bank Account ID (Asignar ID de cuenta bancaria existente)
    • API Name (Nombre de API): Assign_Existing_Bank_Account_ID (Asignar ID de cuenta bancaria existente)
  1. Para Set Variable Values (Establecer valores de variables), introduzca estos valores.
    • Variable: Seleccione account (cuenta) y seleccione id
    • Operator (Operador): Equals (Es igual a)
    • Value (Valor): Seleccione existingAccount (cuenta existente) y, a continuación, id
  1. Haga clic en Done (Listo) e ignore las advertencias.
Nota

Los valores de Variable no se pueden copiar y pegar. Para la variable, escriba account (cuenta) y haga clic en account (cuenta) en Apex-Defined Variables (Variables definidas por Apex) y seleccione id.

Añadir el elemento de actualización de registros

Utilicemos los valores almacenados en variables para actualizar nuestro registro de usuario de Salesforce con el tipo y el ID de 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), introduzca estos valores.
    • Label (Etiqueta): Update Salesforce User Record (Actualizar el registro de usuarios de Salesforce)
    • API Name (Nombre de API): Update_Salesforce_User_Record (Actualizar el registro de usuarios de Salesforce)
  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 usuarios):
    • Condition Requirements for record to update (Condición de requisitos para que el registro se actualice): 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 (Apellido en la cuenta)
  1. En Set Field Values for the User Records (Valores de campo para los registros de usuario):
    • Field (Campo): Account_ID__c
    • Value (Valor): Seleccione account (cuenta) y, a continuación, id (en Definidos por Apex)
  1. Haga clic en + Add Field (+ Añadir campo).
    • Field (Campo): Account_Type__c
    • Value (Valor): Bank_Account_Type (Tipo de cuenta bancaria) (en Screen Components [Componentes de pantalla], no en Apex-Defined [Definidos por Apex])Ventana New Update Records (Nueva actualización de registros) con valores completados.
  1. Haga clic en Done (Listo).

Conectar los elementos

¡Ya casi estamos! Solo queda enlazar el flujo. Empezaremos por conectar los elementos en el orden correcto arrastrando el nodo conector al elemento de destino para que nuestro proceso de negocio fluya con éxito en tiempo de ejecución. No se olvide de guardarlo.  

  1. Conecte Start (Inicio) con Screen Bank Account Record (Pantalla Registro de cuentas bancarias).
  2. Conecte Screen Bank Account Record (Pantalla Registro de cuentas bancarias) con Action Add Bank Account (Acción Añadir cuenta bancaria).
  3. Conecte Action Add Bank Account (Acción Añadir cuenta bancaria) con Decision Bank Account Updated? (Decisión ¿Se actualiza la cuenta bancaria?
  4. Alinee el elemento Decision (Decisión) en el lienzo de modo que tenga espacio para un conector de salida en cada lado.
  5. Conecte el resultado Decision Bank Account Updated? (Decisión ¿Se actualiza la cuenta bancaria?) con Assignment Assign Existing Bank Account ID (Asignación Asignar ID de cuenta bancaria existente).
  6. Cuando se le solicite, seleccione Bank Account Found (Cuenta bancaria encontrada) como resultado de la decisión para asignarlo a la ruta y haga clic en Done (Listo).Seleccione el resultado para la ventana de conector de la decisión.
  7. Conecte Assignment Assign Existing Bank Account ID (Asignación Asignar ID de cuenta bancaria existente) con Update Records (Actualizar registros) Update Salesforce User Record (Actualizar el registro de usuarios de Salesforce).
  8. Conecte Decision Bank Account Updated? (Decisión ¿Se actualiza la cuenta bancaria?) con Update Records (Actualizar registros) Update Salesforce User Record (Actualizar el registro de usuarios de Salesforce).
  9. Haga clic en Save (Guardar).

Depurar el flujo

Ya casi ha acabado. Pero, antes de terminar, vamos a utilizar el modo de depuración para comprobar su flujo. 

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

El flujo se ejecuta con nuestras entradas. 

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

Primero, aquí tiene sus entradas de texto. A continuación, en BANKSERVICE.ADDACCOUNT, podemos ver que las entradas de texto se han asignado correctamente y que las salidas informan de una cuenta existente:

{!existingAccount} = 409exc

y

{!account} = 201 (null)

o de que no se ha encontrado ninguna cuenta y se ha creado una nueva:

{!existingAccount} = 409exc (null)

y

{!account} = 201

La fase de decisión confirma el resultado de esta. Se han asignado las variables.

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

Nota

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

Redoble de tambores… Ahora mire el registro de usuario de Maria Thompson en Salesforce.

Como representante del banco, ha introducido el nombre y el tipo de cuenta en Salesforce, y nuestra aplicación Flow ha actualizado automáticamente una cuenta bancaria existente (o ha creado una nueva) en el servicio bancario y ha devuelto el ID y el nuevo tipo de cuenta al registro de usuario de Salesforce. 

Ahora puede realizar un seguimiento de la actividad de ventas en cuentas bancarias desde Salesforce. ¿Ha dicho "sin código"? Sí. Todo ello sin escribir ni una sola línea de código.

Conozca los límites de su aplicación

También debe saber que puede recibir un error. Por ejemplo, si utiliza "Maria Thompson" en Last Name on Account (Apellido en la cuenta), recibirá un error, porque en ese campo no está permitido el uso de espacios. Del mismo modo, puede aparecer un error si se introduce un apellido de menos de seis caracteres (por ejemplo, Jones), ya que este es otro de los límites de nuestra sencilla aplicación. Estos son algunos de los códigos que puede ver.

Código

Descripción para Acme Bank Service

200

El sistema encuentra una cuenta con un nombre determinado

201

Respuesta cuando la cuenta no existe y podemos crear una

204

Respuesta cuando el sistema encuentra una cuenta con el nombre indicado

400

Respuesta de error si el nombre de la cuenta es inferior al mínimo de seis caracteres o tiene espacios

404

Respuesta de error si la cuenta no es compatible con el servicio o no se encuentra

409

Respuesta cuando la cuenta existe y no podemos crear una

Nota

Si hubiéramos creado un flujo para utilizarlo con un servicio bancario externo real, crearíamos registros utilizando identificadores únicos y no nombres. Hay otra lógica que seguramente es demasiado elemental para un escenario bancario; pero, de nuevo, en este caso mantenemos la simplicidad para que pueda centrarse en entender los servicios externos. 

Repaso

¡Uff! ¡Buen trabajo! Repasemos cómo ha creado un flujo utilizando los servicios externos y echemos un vistazo a los pasos que ha seguido en todo el proceso. Tenga en cuenta que, si bien tuvo que ocuparse de la definición de un esquema compatible con OpenAPI dentro de su especificación de API, la mayor parte del trabajo es declarativo (con poco o nada de código). Está bien así, ¿verdad?

Imagen que ilustra los seis pasos para utilizar los servicios externos con Flow.

Y ahora llegamos al momento que estaba esperando. Vamos a comprobar el trabajo que ha hecho.

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 otro diferente.

Comparta sus comentarios sobre Trailhead en la Ayuda de Salesforce.

Nos encantaría conocer su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios cuando quiera desde el sitio de la Ayuda de Salesforce.

Más información Continuar para compartir comentarios