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.

Estimación de tiempo

Ejecute un flujo dentro de otro flujo

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Minimizar su trabajo utilizando el elemento Subflow (Flujo secundario)
  • Crear un flujo que se ejecuta dentro de otro flujo.
  • Configurar las variables de un flujo referenciado para transferir datos al flujo principal.
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.

Nota

Esta insignia es un paso más en el proceso de dominar Flow Builder. De principio a fin, la ruta Crear flujos con Flow Builder lo guía por todos los conceptos sobre Flow Builder. Siga esta secuencia recomendada de insignias para desarrollar capacidades sólidas de automatización de procesos y convertirse en experto de Flow Builder.

El poder de la pereza

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

Sí, lo ha leído bien. Si necesita hacer un cambio en su organización de Salesforce que afecta a cuatro flujos diferentes, ¿prefiere actualizar los cuatro flujos o solamente uno? Parece magia, pero usted también puede superar obstáculos, como el trabajo innecesario, mediante el poder de la pereza.

Por ejemplo, la organización de Flo tiene cuatro flujos que publican el mismo mensaje en Chatter. Cada vez que cambia algo sobre esa publicación, Flo debe actualizar el elemento duplicado en cada uno de los cuatro flujos. A Flo le entran escalofríos solo de pensar que tiene que realizar tanto trabajo repetido. Afortunadamente, existe otro elemento, uno que no hemos utilizado todavía: el elemento Subflow (Flujo secundario). 

El uso de este elemento en un flujo (flujo principal) le permite hacer referencia a otro flujo (flujo secundario) para ejecutarlo dentro del flujo actual (principal). La idea de realizar los cambios en un solo flujo en lugar de en cuatro hace a Flo tremendamente feliz. Además, con menos flujos, hay menos oportunidades de que algo se pase por alto o se configure incorrectamente.

Flo le pide que cree un flujo por separado para la publicación de Chatter. Ella planea reemplazar los elementos repetidos en cada uno de los cuatro flujos utilizando el nuevo flujo secundario en su lugar. Así, si cambia algo relacionado con la publicación de Chatter, Flo puede actualizar un único flujo secundario en vez de actualizar los cuatro flujos por separado.

Flo Smith relajada en una tumbona, siendo abanicada por una hoja de palmera, pensando en un flujo.

Variables de entrada y de salida

Las variables en un flujo secundario son especiales. ¿Se ha fijado en las opciones de configuración Available for input (Disponible para entrada) y Available for output (Disponible para salida) cuando crea las variables? Estas opciones de configuración activan las variables para que transfieran entradas del flujo principal al secundario y salidas del flujo secundario al principal.

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é transferir datos desde y hacia un flujo secundario? En el ejemplo de Flo, el flujo secundario publica en Chatter sobre la base del registro desencadenante del flujo principal, por lo que el flujo secundario necesita ese Id. del registro desencadenante. Un flujo secundario no tiene acceso al registro desencadenante en el flujo principal, por lo que este último necesita enviarle esta información al flujo secundario. Y, si el flujo principal necesita conocer el Id. de la publicación de Chatter creada por el flujo secundario, este último tiene que enviar ese Id. de vuelta al flujo principal.

Usted es el que define 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 a un flujo principal cuando termina el flujo secundario, este último necesita una variable que esté disponible para salida.
  • Si no necesita transferir datos en ninguna de las direcciones, no necesita ninguna variable de entrada o salida.

Diagrama correspondiente a la descripción anterior

Crear un elemento Subflow (Flujo secundario)

Para ejecutar un flujo dentro de otro flujo, lo primero es crear un flujo principal y uno secundario. Después, debe agregar un elemento Subflow (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): seleccionado
  1. Cree otra variable de texto:
    • API Name (Nombre de API): postTargetID
    • Available for input (Disponible para entrada): seleccionado
  1. Cree otra variable de texto más:
    • API Name (Nombre de API): chatterPostID
    • Available for output (Disponible para salida): seleccionado
  1. Cree una plantilla de texto:
    • API Name (Nombre de API): chatterBody
    • Body (Cuerpo): @[{!userMentionID}], please review this record. (@[{!userMentionID}], revise este registro).
    • En el editor del cuerpo, cambie "View as Rich Text" (Ver como texto enriquecido) a "View as Plain Text" (Ver como texto plano).
  1. Agregue un elemento Action (Acción):
    • Action (Acción): Publicar en Chatter
    • Label (Etiqueta): Chatter Mention Post (Publicación de mención en Chatter)
    • API Name (Nombre de API): Chatter_Mention_Post
    • Message (Mensaje): chatterBody
    • Target Name or ID (Id. o nombre 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 Subflow (Flujo secundario)

  1. Cree un flujo desencadenado por un registro:
    • Object (Objeto): Case (Caso):
    • Trigger the Flow When (Active el flujo cuando): Se crea o se actualiza un registro
    • Condition Requirements (Requisitos de condición): All Conditions Are Met (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 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 (Optimizar el flujo para): Actions and Related Records (Acciones y registros relacionados)
  1. Agregue un elemento Subflow (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
    • Active el campo postTargetID y seleccione Triggering Case (Caso desencadenante) > Case ID (Id. del caso)
      El panel Subflow (Flujo secundario), seleccionando Triggering Case (Caso desencadenante) y luego Owner ID (Id. del propietario) en el campo userMentionID.
    • Active el campo userMentionID y seleccione Triggering Case (Caso desencadenante) > Owner ID (Id. del propietario).
      Asegúrese de desplazarse hacia abajo y seleccionar Owner ID (Id. del propietario), no Owner ID (Group) (Id. del propietario [Grupo]) ni Owner ID (User) (Id. del propietario [Usuario]).
Nota

Cuando un flujo referenciado no tenga 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, siempre que sea necesario un cambio en la creación del registro, Flo actualiza solamente el flujo secundario. Y este partido termina con un resultado de 1 punto para la pereza y 0 para el trabajo de más.

Cuestiones para tener en cuenta

Recuerde estas peculiaridades cuando trabaje con flujos secundarios.

  • El elemento Subflow (Flujo secundario) puede hacer referencia solamente a flujos que se inician automáticamente y a flujos de pantalla.
  • En un flujo de pantalla, solo puede hacer referencia a otro flujo de pantalla.
  • Si hace referencia a un flujo inactivo, solo se ejecutará para usuarios que tengan 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 ninguna versión activa, el flujo principal ejecuta la última versión.

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