Skip to main content
Join the Agentforce Virtual Hackathon to build innovative solutions and compete for a $50k Grand Prize. Sign up now. Terms apply.

Ejecutar un flujo dentro de un flujo

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Minimizar el trabajo con el elemento de flujo secundario.
  • Crear un flujo que se ejecute en otro flujo.
  • Configurar variables de un flujo al que se hace referencia para volver a pasar datos al flujo principal.
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.

Nota

Esta insignia es solo una parte del proceso hacia el dominio de Flow Builder. De principio a fin, la ruta Crear flujos con Flow Builder le sirve de guía en el aprendizaje de todo sobre Flow Builder. Siga esta secuencia de insignias recomendada para desarrollar habilidades sólidas de automatización de procesos y convertirse en un experto en Flow Builder.

El poder de la pereza

Créase o no, una de las cualidades más importantes que puede tener un administrador es la pereza.

Sí, ¡leyó bien! Si tiene que hacer un cambio en su Salesforce org que afecte a cuatro flujos distintos, ¿preferiría actualizar los cuatro flujos o solo uno? Parece magia, pero usted también puede superar obstáculos, como el trabajo innecesario, gracias al poder de la pereza.

Por ejemplo, la organización de Flo tiene cuatro flujos que publican el mismo mensaje en Chatter. Cada vez que algo cambia en esa publicación de Chatter, ella actualiza el elemento duplicado en los cuatro flujos. Flo se estremece al pensar en hacer tanto trabajo duplicado. Afortunadamente, existe otro elemento, uno que todavía no hemos usado: el elemento Subflow (Flujo secundario). 

Cuando se usa el elemento de flujo secundario en un flujo (el flujo principal), se puede hacer referencia a otro flujo (el flujo secundario) para ejecutarlo dentro del flujo actual (principal). La idea de hacer cambios solo en un flujo y no en los cuatro entusiasma mucho a Flo. Además, con menos flujos, son menos las posibilidades de que algo se pase por alto o se configure de forma incorrecta.

Flo le pide que cree un flujo por separado para la publicación de Chatter. Planea reemplazar los elementos duplicados en cuatro flujos distintos mediante el uso del flujo secundario nuevo en su lugar. Luego, si cambia algo relacionado con la publicación de Chatter, Flo puede actualizar el flujo secundario único en vez de actualizar los cuatro flujos por separado.

Flo Smith se relaja en una lujosa tumbona, abanicada por una hoja de palma, y piensa en un flujo.

Variables de entrada y salida

Las variables de un flujo secundario son especiales. ¿Ha notado las opciones de configuración Available for input (Disponible para entrada) y Available for output (Disponible para salida) cuando crea variables? Esas opciones permiten que las variables lleven la entrada desde el flujo principal hasta el flujo secundario y la salida desde el flujo secundario hasta el flujo principal nuevamente.

En la ventana New Resource (Nuevo recurso), la sección Availability Outside the Flow (Disponibilidad fuera del flujo) tiene dos opciones: Available for input (Disponible para entrada) y Available for output (Disponible para salida).

¿Pero por qué enviar datos hacia un flujo secundario y desde este? En el ejemplo de Flo, el flujo secundario publica en Chatter en el registro desencadenante del flujo principal, por lo tanto, el flujo secundario necesita la Id. de ese registro desencadenante. Un flujo secundario no puede acceder al registro desencadenante en el flujo principal, por lo tanto, el flujo principal tiene que enviarlo al flujo secundario. Y si el flujo principal tiene que saber la Id. de la publicación de Chatter creada por el flujo secundario, este último tiene que enviar esa Id. de regreso al flujo principal.

Debe definir las variables como disponibles para entrada o salida en el flujo secundario.

  • Para recibir datos de un flujo principal, el flujo secundario necesita una variable que esté disponible para entrada.
  • Para enviar datos de vuelta al flujo principal cuando el flujo secundario finaliza, este último necesita una variable que esté disponible para salida.
  • Si no necesita enviar datos en ninguna dirección, no necesita ninguna variable de entrada o salida.

Diagrama de flujo que corresponde a la descripción anterior

Crear un elemento de flujo secundario

Para ejecutar un flujo en otro flujo, primero debe crear los flujos principal y secundario. Luego, debe agregar un elemento de flujo secundario al flujo principal.

Crear el flujo secundario

  1. Cree un flujo y seleccione el tipo Autolaunched Flow (Flujo iniciado automáticamente).
  2. Cree una variable de texto:
    • API Name (Nombre de API): userMentionID
    • Available for input (Disponible para entrada): marcada
  1. Cree otra variable de texto:
    • API Name (Nombre de API): postTargetID
    • Available for input (Disponible para entrada): marcada
  1. Cree una variable de texto más:
    • API Name (Nombre de API): chatterPostID
    • Available for output (Disponible para salida): marcada
  1. Cree una plantilla de texto:
    • API Name (Nombre de API): chatterBody
    • Cuerpo: @[{!userMentionID}], please review this record. (@[{!userMentionID}], revise este registro).
    • En el editor de cuerpo, cambie “View as Rich Text” (Ver como texto enriquecido) a “View as Plain Text” (Ver como texto sin formato).
  1. Agregue un elemento de acción:
    • Action (Acción): Post to Chatter (Publicar en Chatter)
    • Label (Etiqueta): Chatter Mention Post (Publicación de menciones en Chatter)
    • API Name (Nombre de API): Chatter_Mention_Post
    • Message (Mensaje): chatterBody
    • Target Name or ID (Nombre o Id. de destino): postTargetID
    • En Show advanced options (Mostrar opciones avanzadas), seleccione Manually assign variables (Asignar variables manualmente).
    • Feed Item ID (Id. de elemento de noticias en tiempo real): chatterPostID
  1. Guarde el flujo. En Flow Label (Etiqueta de flujo), introduzca Post to Chatter (Publicar en Chatter).
  2. Active el flujo.

Crear el flujo principal con un elemento de flujo secundario

  1. Cree un flujo desencadenado por registro:
    • Object (Objeto): Case (Caso)
    • Trigger the Flow When (Active el flujo cuando): A record is created or updated (Se crea o se actualiza un registro)
    • Condition Requirements (Requisitos de condición): All Conditions Are Met (AND) (Se cumplen todas las condiciones [AND])
    • Condition (Condición): Priority (Prioridad), Equals (Es igual a), High (Alta)
    • When to Run the Flow for Updated Records (Cuándo ejecutar el flujo para los registros actualizados): Only when a record is updated to meet the condition requirements (Solo cuando un registro se actualiza para cumplir los requisitos de condición)
    • Optimize the Flow for (Optimice el flujo para): Actions and Related Records (Acciones y registros relacionados)
  1. Agregue un elemento de flujo secundario:
    • Seleccione el flujo Post to Chatter (Publicar en Chatter).
    • Label (Etiqueta): Post to Chatter (Publicar en Chatter)
    • API Name (Nombre de API): Post_to_Chatter
    • Habilite el campo postTargetID y seleccione Triggering Case (Caso desencadenante) > Case ID (Id. de caso).
      El panel de flujo secundario; selección de Triggering Case (Caso desencadenante), luego, Owner ID (Id. de propietario) en el campo userMentionID.
    • Habilite el campo userMentionID y seleccione Triggering Case (Caso desencadenante) > Owner ID (Id. de propietario).
      Asegúrese de desplazarse hacia abajo y seleccionar Owner ID (Id. de propietario), no Owner ID (Group) (Id. de propietario [Grupo]) ni Owner ID (User) (Id. de propietario [Usuario]).
Nota

Cuando un flujo mencionado no tiene variables establecidas como disponibles para entrada, no verá la sección Set Input Values (Establecer valores de entrada).

  1. Guarde el flujo. En Flow Label (Etiqueta de flujo), introduzca Case Priority is High (La prioridad del caso es alta).

Ahora, cada vez que se necesita un cambio en la creación del registro, Flo actualiza solo el flujo secundario único. La puntuación es Pereza 1-Sobrecarga de trabajo 0.

Considerar lo siguiente

Tenga en cuenta estas peculiaridades cuando trabaje con flujos secundarios.

  • El elemento de flujo secundario puede hacer referencia solo a los flujos iniciados automáticamente y a los flujos de pantalla.
  • En un flujo de pantalla, puede hacer referencia solamente a otro flujo de pantalla.
  • Si menciona un flujo inactivo, solo se ejecuta para los usuarios que tienen el permiso Manage Flows (Gestionar flujos).
  • Si un flujo secundario tiene varias versiones, el flujo principal ejecuta la versión activa del flujo secundario. Si un flujo secundario no tiene versiones activas, el flujo principal ejecuta la versión más reciente.

Recursos

Reto práctico

+500 puntos

Prepararse

Completará esta/este unidad 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.

Su reto

Simplify and Build Upon the Opportunity Product Flow
In the opportunity product creation flow from unit 1, replace repeated elements with a subflow element that references another flow (child flow) multiple times. Also, add another product path to the parent flow. Prework: If you haven’t already completed the challenge in unit 1 (Define Multiple Paths in a Flow), do that now. Otherwise, you won't be able to complete this challenge.
  • Create an autolaunched flow
  • Create a text variable:
    • API Name: ProductKW
    • Available for input: checked

  • Create another text variable:
    • API Name: OpportunityID
    • Available for input: checked

  • Create another text variable:
    • API Name: PricebookID
    • Available for input: checked

  • Add a Get Records element:
    • Label: Get Product
    • API Name: Get_Product
    • Object: Product
    • Condition Requirements: All Conditions Are Met (AND)
      • Field: Name
      • Operator: Contains
      • Value: ProductKW
    • Keep default values for all other settings

  • Add a Get Records element after the Get Product element:
    • Label: Get PBE
    • API Name: Get_PBE
    • Object: Price Book Entry
    • Condition Requirements: All Conditions Are Met (AND)
    • Add a condition requirement:
      • Field: Pricebook2Id
      • Operator: Equals
      • Value: PricebookID
    • Add another condition requirement:
      • Field: Product2Id
      • Operator: Equals
      • Value: Product from Get_Product > Id
    • Keep default values for all other settings

  • Add a Create Records element after the Get PBE element:
    • Label: Create Opp Product
    • API Name: Create_Opp_Product
    • How to set record field values: Manually
    • Object: Opportunity Product
    • Set Field Values:
      • Field: Opportunity ID, Value: OpportunityID
      • Field: Price Book Entry ID, Value: Price Book Entry from Get PBE > Price Book Entry ID
      • Field: Quantity, Value: 1
      • Field: Total Price, Value: Price Book Entry from Get PBE > List Price

  • Save and activate the flow.
    • Label: Subflow-Create Generator Opp Product
    • API Name: Subflow_Create_Generator_Opp_Product

  • Make a new version of the Add Generator Product to Named Opps flow (Open the flow and click Save As New Version.)
  • Delete these elements:
    • Create 1500 Opp Product
    • Create 2000 Opp Product
    • Get 1500 PBE
    • Get 2000 PBE
    • Get 1500 Product
    • Get 2000 Product

  • On the 1500kW path, add a Subflow element:
    • Select the Subflow-Create Generator Opp Product flow
    • Label: Create 1500 Opp Product
    • API Name: Create_1500_Opp_Product
    • Include the OpportunityId field and select Triggering Opportunity > Opportunity ID
    • Include the PricebookID field and select Price Book from Get Pricebook > Price Book ID
    • Include the ProductKW field and enter 1500

  • On the 2000kW path, create a Subflow element:
    • Select the Subflow-Create Generator Opp Product flow
    • Label: Create 2000 Opp Product
    • API Name: Create_2000_Opp_Product
    • Include the OpportunityId field and select Triggering Opportunity > Opportunity ID
    • Include the PricebookID field and select Price Book from Get Pricebook > Price Book ID
    • Include the ProductKW field and enter 2000

  • In the Check Opp Name Decision element, add a new outcome:
    • Label: 1000kW
    • API Name: X1000kW
    • Condition Requirements: All Conditions Are Met (AND)
    • Resource: Triggering Opportunity > Name
    • Operator: Contains
    • Value: 1000

  • On the 1000kW path, create a Subflow element:
    • Select the Subflow-Create Generator Opp Product flow
    • Label: Create 1000 Opp Product
    • API Name: Create_1000_Opp_Product
    • Include the OpportunityId field and select Triggering Opportunity > Opportunity ID
    • Include the PricebookID field and select Price Book from Get Pricebook > Price Book ID
    • Include the ProductKW field and enter 1000

  • Save and activate the flow
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