Combinar o poder do Process Builder e do Flow Builder

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:

  • Descrever um processo comercial que pode ser automatizado usando um processo e um fluxo.
  • Definir o que é uma variável de fluxo.
  • Criar um fluxo que é iterado por um grupo de registros.
  • Criar um processo que inicia um fluxo.

Quando o Process Builder não é suficiente

O Process Builder não foi criado para lidar com todos os casos de uso possíveis e, portanto, você pode descobrir que dá para automatizar partes do seu processo comercial, mas não tudo. Por exemplo, o Process Builder não é capaz de:

  • Publicar no feed de uma comunidade.
  • Enviar um registro relacionado para aprovação.
  • Excluir registros.
  • Criar vários registros e associá-los uns aos outros.
  • Realizar lógicas complexas.

Mas há boas notícias! Você não precisa recriar toda a automação em outra ferramenta. Configure as funções mais complexas em um fluxo e adicione uma ação de fluxo ao seu processo. Se um fluxo não puder fazer o que é necessário, você ou um desenvolvedor poderão escrever Apex para fazê-lo. E adicionar uma ação do Apex ao processo.

Clonar registros com filhos (acessórios)

Você deve criar oportunidades de renovação automaticamente quando uma oportunidade é fechada e ganha. A renovação deveria ser um clone da oportunidade original. Podemos clonar registros no Process Builder, mas também precisamos clonar os produtos e associá-los à oportunidade de renovação.

No Process Builder, você não pode pegar a ID do registro criado e usá-la em outro lugar. Por sorte, isso é possível em um fluxo. Crie um fluxo que clona a oportunidade e seus produtos, e crie um processo que chama o fluxo quando uma oportunidade é fechada e ganha.

Ir além das noções básicas

Na última unidade, falamos sobre fluxos que guiam os usuários por um processo comercial com telas. Chamamos isso de fluxos de tela. Você também pode criar fluxos de inicialização automática, que são executados em segundo plano como um processo. A principal diferença é que os fluxos de inicialização automática não podem ter telas, que exigem interação do usuário. Como eles não têm telas, você pode chamar fluxos de inicialização automática do back-end, como processos e classes do Apex.

Criar um processo

Em vez de criar outro processo, vamos usar como base o que criamos em uma unidade anterior.
Nota

Nota

Não é possível editar um processo ativo. Se você já ativou o processo, clique em Clonar para criar uma nova versão do processo atual.

O processo Oportunidades fechadas ganhas de uma unidade anterior

No processo Oportunidades fechadas ganhas, adicione um nó de critérios chamado Fechado e ganho com essa condição de filtro.

Campo Valor
Oportunidade > Estágio Fechado e ganho

Não podemos configurar as ações no Process Builder e, portanto, vamos salvar e mudar para o Flow Builder.

Criar um fluxo

Em Configuração, insira Fluxos na caixa Busca rápida, selecione Fluxos, clique em Novo fluxo, selecione Fluxo iniciado automaticamente (Sem acionador), clique em Avançar e clique em Formato livre.

Estamos criando um fluxo que:

  • Clona uma oportunidade.
  • Clona produtos de oportunidade.
  • Associa os produtos clonados à oportunidade clonada.

Para fazer tudo isso, o fluxo precisa de alguns dados do processo: a oportunidade original e seus produtos de oportunidade.

Existem quatro tipos de variável de fluxo.

Tipo Pode armazenar... Exemplo
Variável Um único valor “Hello World”, true, 6
Variável da coleção Vários valores do mesmo tipo de dados [1, 2, 3, 5, 8, 13]
Variável de registro Um conjunto de valores de campo para um único registro Classificação, ID e nome de uma conta
Variável da coleção de registros Um conjunto de valores de campo para vários registros do mesmo tipo de objeto Classificação, ID e nome de várias contas

Para armazenar a oportunidade e seus produtos de oportunidade, criamos uma variável de registro e uma variável da coleção de registros. Depois, quando adicionamos o fluxo como uma ação no processo, transmitimos dados nessas variáveis, para que elas possam permitir a entrada.

  1. Em Gerenciador na Caixa de ferramentas, clique em Novo recurso e defina esses valores.
    Campo Valor
    Tipo de recurso Variável
    Nome da API opportunity
    Tipo de dados Registro
    Objeto Oportunidade
    Disponível para entrada Selecionado
  2. Clique em Concluído.
  3. Clique em Novo recurso e defina esses valores.
    Campo Valor
    Tipo de recurso Variável
    Nome da API oppProducts_Original
    Tipo de dados Registro
    Permitir diversos valores (coleção) Selecionado
    Objeto Produto de oportunidade
    Disponível para entrada Selecionado
  4. Clique em Concluído.

Clonar a oportunidade

Quando o fluxo é chamado pelo processo, a variável {!opportunity} contém campos da oportunidade original. Antes de clonarmos essa oportunidade, vamos atualizar alguns campos. Assim, a oportunidade de renovação não começa como Fechada ganha.
  1. Em Elementos, na Caixa de ferramentas, arraste um elemento Atribuição para a tela.
  2. Em Rótulo, dê o nome de Atualizar campos de oportunidade.
  3. Defina o estágio como Prospecção.
    1. Em Variável, selecione VARIÁVEIS DE REGISTRO (ÚNICO) | opportunity | StageName.
    2. Em Operador, selecione Igual a.
    3. Em Valor, selecione VALORES DA LISTA DE OPÇÕES | Prospecção.
  4. Defina Data de fechamento como 90 dias a contar de hoje.
    1. Clique em Adicionar atribuição.
    2. Em Variável, selecione VARIÁVEIS DE REGISTRO (ÚNICO) | opportunity | CloseDate.
    3. Em Operador, selecione Igual a.
    4. Em Valor, selecione Novo recurso e defina esses valores.
      Campo Valor
      Tipo de recurso Fórmula
      Nome da API ninetyDays
      Tipo de dados Data
  5. Em Fórmula, deixe Inserir um recurso... em branco e insira HOJE() + 90 na caixa de texto.
  6. Clique em Concluído e em Concluído.
  7. Para criar a oportunidade, arraste um elemento Criar registros para a tela e defina esses valores.
    Campo Valor
    Label (Rótulo) Clonar oportunidade
    Registro  VARIÁVEIS DE REGISTRO (ÚNICO) > opportunity

  8. Clique em Concluído.
  9. Clique no na parte inferior de Iniciar e arraste-o até Atualizar campos de oportunidade.
  10. Clique no na parte inferior de Atualizar campos de oportunidade e arraste-o até Clonar oportunidade.

Quando a oportunidade é criada, o campo de ID nessa variável ({!opportunity.Id}) é preenchido com a ID do novo registro. Faremos referência a esse valor mais adiante para associar os novos produtos à oportunidade de renovação.

Clonar os produtos de oportunidade

Agora vem a parte divertida: clonar os produtos de oportunidade.

Quando o fluxo é chamado pelo processo, a variável {!oppProducts_Original} contém campos dos produtos da oportunidade original. Antes de clonarmos esses produtos, precisamos associá-los à oportunidade de renovação em vez de associá-los à oportunidade original e definir o preço total de cada produto como nulo. (Os produtos de oportunidade não podem ter um preço unitário e um preço total ao mesmo tempo.)

A única maneira de atualizar itens em uma coleção é iterar a coleção com um loop. Um loop diz ao fluxo para processar os itens da coleção um de cada vez, executando a mesma lógica em cada item até que toda a coleção tenha sido processada.

Cada produto de oportunidade em nossa coleção de registros {!oppProducts_Original} deve ser associado à oportunidade de renovação, e o preço total deve ser definido como nulo.

Cada vez que o loop é iterado, a variável de loop representa um item na coleção. Quando o loop começa, o primeiro item na variável de coleção é copiado para a variável de loop. Depois que a iteração é concluída, a variável de loop é substituída pelos valores do item seguinte. E por aí vai até não existirem mais itens na coleção.

Um item de coleção é copiado para uma variável de loop. Os dados da variável de loop são atualizados e copiados para criar um novo item em uma outra coleção. A variável de loop é atualizada por uma cópia do item seguinte na coleção original.
Dica

Dica

  • Para atualizar os valores de campo de um item em um loop, atualize a variável de loop. Então, antes de a iteração do item terminar, adicione a variável de loop como um item em outra variável de coleção. Se você não fizer isso, as alterações são substituídas quando o item seguinte é carregado na variável de loop.
  • Evite adicionar ações, como criar ou atualizar registros, em um loop. Isso com certeza vai ultrapassar limites.

No loop, atualizamos a ID de oportunidade e o Preço total de cada item e adicionamos o item a uma nova variável de coleção. Após o loop, usamos a nova variável de coleção para criar os produtos de oportunidade.

  1. Arraste um elemento Loop para a tela e defina esses valores.
    1. Em Rótulo, dê o nome de Iterar pelos produtos.
    2. Para a Variável da coleção, selecione VARIÁVEIS DA COLEÇÃO DE REGISTRO | oppProducts_Original. Essa opção indica ao loop que coleção deve ser iterada na hora de atribuir itens à variável de loop.
    3. Clique em Concluído.
  2. Conecte o loop ao elemento Clonar oportunidade.
  3. Defina a ID de oportunidade da variável de loop como a ID da nova oportunidade e seu preço total como nulo. Arraste um elemento Atribuição para a tela.
    1. Em Rótulo, dê o nome de Atualizar produto de oportunidade.
    2. Em Defina valores de variável, configure essas atribuições. Clique em Adicionar atribuição para adicionar uma segunda linha.
      Variável Operador Valor
      VARIÁVEIS DE REGISTRO (ÚNICO) > Item atual do loop Iterate_Over_Products > OpportunityId Igual a VARIÁVEIS DE REGISTRO (ÚNICO) > opportunity > Id
      VARIÁVEIS DE REGISTRO (ÚNICO) > Item atual do loop Iterate_Over_Products > TotalPrice Igual a Deixe em branco

      Atribuições de fluxo que definem os campos ID de oportunidade e Preço total da variável de loop
    3. Clique em Concluído.
  4. Conecte o loop ao elemento Atualizar produto de oportunidade. A janela Selecionar conector de loop aparece.
  5. Verifique se a opção Para cada item na coleção está selecionada no campo Conector de loop e clique em Concluído.
  6. Adicione a variável de loop atualizada a uma nova variável da coleção de registro.
    1. Arraste outro elemento Atribuição para a tela.
    2. Em Rótulo, dê o nome de Adicionar à nova coleção.
    3. Para Variável, selecione Novo recurso e crie uma nova variável de recurso com esses valores.
      Campo Valor
      Tipo de recurso Variável
      Nome da API oppProducts_new
      Tipo de dados Registro
      Objeto Produto de oportunidade
      Permitir diversos valores (coleção) Selecionado
    4. Clique em Concluído.
    5. Em Operador, selecione Adicionar.
    6. Em Valor, selecione VARIÁVEIS DE REGISTRO (ÚNICO) | Item atual do loop Iterate_Over_Products. Exclua o período entre {! Iterate_Over_Products e o colchete direito} e clique fora do campo Valor.
    7. Clique em Concluído.
  7. Conecte o elemento Atualizar produto de oportunidade ao elemento Adicionar à nova coleção. Em seguida, conecte o elemento Adicionar à nova coleção ao loop.
  8. Para clonar os produtos de oportunidade, arraste um elemento Criar registros para a tela e defina esses valores.
    Campo Valor
    Label (Rótulo) Clonar produtos
    Quantos registros criar Selecione Vários.
    Variável da coleção de registros VARIÁVEIS DA COLEÇÃO DE REGISTRO > oppProducts_new
  9. Clique em Concluído.
  10. Conecte o loop ao elemento Clonar produtos.
O fluxo concluído

Concluir o fluxo

Estamos quase acabando! Para concluir o fluxo, salve e ative-o.
  1. Clique em Salvar.
  2. Salve o fluxo e dê o nome de Renovar oportunidade. Clique em Mostrar avançado e defina o Tipo como Fluxo iniciado automaticamente.
  3. Clique em Salvar.

Ative o fluxo para que você possa referenciá-lo no Process Builder. Feche o Flow Builder.

Terminar o processo

Agora que você acabou de criar o fluxo, faça com que o processo inicie o fluxo quando uma oportunidade é fechada e ganha. Lembra-se das variáveis criadas no início do fluxo? Nós as usamos no processo para transmitir valores do registro da oportunidade e de seus registros acessórios para o fluxo.
  1. Abra o processo Oportunidades fechadas e ganhas.
  2. No grupo de critérios Fechado e ganho, adicione uma ação imediata em que o tipo é Fluxos e o nome é Criar renovação.
  3. Em Fluxo, selecione Renovar oportunidade.
  4. Em Definir variáveis de fluxo, adicione duas linhas, defina esses valores e clique em Salvar.
    Variável Tipo Valor
    opportunity Referência de campo Selecione o registro Oportunidade que iniciou seu processo
    oppProducts_original Referência de campo Oportunidade > OpportunityLineItems
    Quando uma oportunidade é fechada e ganha, a renovação deve sempre ser criada. Mas você precisa fazer com que os rascunhos dos contratos e as tarefas de acompanhamento sejam criados se a oportunidade for considerada de alto valor.
  5. Arraste o nó de critérios Fechado e ganho para cima de Fechado e ganho e Alto valor.
  6. No grupo de critérios Fechado e ganho, clique em PARAR.
  7. Selecione Avaliar os próximos critérios e clique em Salvar. O processo final
  8. Ative o processo para começar a utilizá-lo.

Recursos