Skip to main content

Criar um fluxo usando ações de serviços externos

Nota

Nota

Deseja aprender em português (Brasil)? Comece o desafio em um Trailhead Playground de português (Brasil) e use as traduções fornecidas entre parênteses para navegar. Copie e cole somente os valores em inglês porque as validações dos desafios dependem de dados em inglês. Se você não passar no desafio em sua organização de português (Brasil), recomendamos que (1) mude o local para os Estados Unidos, (2) mude o idioma para inglês, seguindo as instruções aqui, e (3) clique novamente no botão “Validar o desafio”.

Consulte o emblema Trailhead no seu idioma para saber mais sobre como aproveitar a experiência de Trailhead em outros idiomas.

Vamos começar criando um fluxo que pode gerar novas contas bancárias ou atualizar contas bancárias existentes em seu banco fictício.

Adicionar a área de tela

Uma área de tela permite coletar entradas do usuário que correspondem aos parâmetros de entrada em sua especificação de API.

  1. Em Setup (Configuração), insira Flows (Fluxos) na caixa Quick Find (Busca rápida) e selecione Flows (Fluxos).
  2. Clique em New Fluxo (Novo fluxo).
  3. Verifique se Start from Scratch (Começar do zero) foi selecionado e clique em Next (Avançar).
  4. Selecione Screen Flow (Fluxo de tela) e clique em Create (Criar).
  5. Na barra de botões, altere a configuração Auto-Layout (Layout automático) para Free-Form (Formato livre).
  6. Na caixa de ferramentas, com a guia Elements (Elementos) selecionada, arraste o elemento Screen (Tela) para a tela.
    • Label (Rótulo): Bank Account Record (Registro de conta bancária)
    • API Name (Nome da API): Bank_Account_Record
  1. Na lista de componentes de entrada, arraste dois componentes Text (Texto) para a área de tela Flow Label (Rótulo do fluxo).
  2. Clique no primeiro componente Text (Texto) para destacá-lo
    • Label (Rótulo): Last Name on Account (Sobrenome na conta)
    • API Name (Nome da API): Last_Name_on_Account
  1. Clique no segundo componente Text (Texto)
    • Label (Rótulo): Bank Account Type (Tipo de conta bancária)
    • API Name (Nome da API): Bank_Account_Type
  1. Clique em Done (Concluído).
  2. Clique em Save (Salvar) para salvar o fluxo e configure as propriedades do fluxo.
    • Flow Label (Rótulo do fluxo): Bank Account Records (Registros de conta bancária)
    • Flow API Name (Nome da API do fluxo): Bank_Account_Records
  1. Clique em Save (Salvar) e ignore os avisos.
Nota

Salve cedo e com frequência enquanto cria seu fluxo para não perder seu trabalho.

Por enquanto, apenas adicionamos um elemento de tela ao nosso fluxo que habilita duas entradas de texto. Agora é hora de agir. 

Adicionar uma ação

Elementos de ação, por definição, apresentam e executam ações invocáveis fora do fluxo, que foram criadas pelos Serviços externos quando você registrou sua especificação da API. Chamar uma das ações registradas pelo seu serviço bancário externo é um exemplo de invocação de uma ação fora do fluxo.

Você está interessado na capacidade de adicionar uma conta em nosso banco fictício no Salesforce. “Espere... não tenho que ser um desenvolvedor para fazer isso?” De jeito nenhum! Os Serviços externos fizeram todo o trabalho pesado para você. E, agora, você simplesmente usa uma ferramenta como o Flow Builder ou os Bots do Einstein para fazer as conexões.

Para continuar, adicione a ação addAccount, originalmente uma operação de nossa especificação de API, como um elemento de ação em seu fluxo. Se não existir uma conta bancária existente, você usa a ação addAccount para criar uma nova conta bancária no serviço bancário. Essa ação usa as duas entradas do usuário, chama o serviço bancário por meio da Credencial nomeada do seu BankService e procura uma conta bancária existente com um nome e tipo de conta correspondentes.

Existem dois valores de saída da operação addAccount em nossa especificação da API que você define aqui como variáveis.

  • 201: não foi encontrada uma correspondência de nome. Atualmente, não há conta bancária. Portanto, uma nova conta bancária é criada via addAccount.
  • 409: uma exceção que significa que uma correspondência de nome foi encontrada (a conta bancária já existe), ou seja, não criamos outra. Nesse caso, uma mensagem é retornada dentro do fluxo juntamente com os detalhes da conta existente. Os detalhes são retornados para que saibamos exatamente qual conta acionou a exceção 409.

Defina esses valores de saída aqui para tornar outros elementos à frente em nosso fluxo mais inteligentes. OK. Vamos ser claros: itálico não lhe dará superpoderes do Salesforce... mas a conclusão do resto desta unidade e o desafio prático sim.

  1. Na caixa de ferramentas, com a guia Elements (Elementos) selecionada, arraste o elemento Action (Ação) para a tela.
  2. Altere Filter By (Filtrar por) para Type (Tipo), selecione External Service (Serviço externo) e clique na caixa de pesquisa.
  3. Selecione Add Account (Adicionar conta).
    • Label (Rótulo): Add Bank Account (Adicionar conta bancária)
    • API Name (Nome da API): Add_Bank_Account
  1. Clique no campo Account Name (Nome da conta), selecione Bank Account Record (Registro de conta bancária) e depois Last_Name_on_Account.
  2. Clique no campo Account Type (Tipo de conta), selecione Bank Account Record (Registro de conta bancária) e depois Bank_Account_Type.
  3. Expanda a seção Show advanced options (Mostrar opções avançadas) e marque Manually assign variables (Atribuir variáveis manualmente).
  4. No campo Store Output Values (Armazenar valores de saída), clique no campo 201 e selecione New Resource (Novo recurso).
    • Resource Type (Tipo de recurso): Variable (Variável)
    • Nome da API: account (conta)
    • Data Type (Tipo de dados): Definido pelo Apex
    • Classe do Apex: ExternalService__BankService_accountDetails
    • Disponibilidade fora do fluxo: Selecione Available for input (Disponível para entrada) e Available for output (Disponível para saída)
  1. Clique em Done (Concluído).
  2. No campo Store Output Values (Armazenar valores de saída), clique no campo 409 Exception (Exceção 409) e selecione New Resource (Novo recurso).
    • Resource Type (Tipo de recurso): Variable (Variável)
    • Nome da API: existingAccount
    • Data Type (Tipo de dados): Definido pelo Apex
    • Classe do Apex: ExternalService__BankService_accountDetails
    • Disponibilidade fora do fluxo: Selecione Available for input (Disponível para entrada) e Available for output (Disponível para saída)
  1. Clique em Done (Concluído) e em Done (Concluído).

Janela New Action (Nova ação) com a ação addAccount concluída.

Com tantos representantes bancários inscrevendo novos clientes, quem sabe ao certo se já existe uma conta para Maria Thompson? Então vamos adicionar lógica para avaliar se a conta já existe ou não. 

Adicionar uma decisão

Quando o fluxo é executado, se a conta não existe, nosso fluxo é encaminhado pelo caminho “Create Account” (Criar conta) e prossegue para atualizar a conta do novo usuário por meio de addAccount. Se a conta já existir (resultado padrão), ela é encaminhada por um caminho “Update” (Atualizar) e simplesmente atualizamos o registro do usuário do Salesforce com as informações do serviço bancário. Esse tipo de lógica de avaliação e ramificação é perfeita para o elemento Decision (Decisão) do Flow Builder. 

  1. Na guia Elements (Elementos) da caixa de ferramentas, arraste Decision (Decisão) para a tela.
  2. No início da janela Nova decisão, insira os valores abaixo.
    • Label (Rótulo): Bank Account Updated? (Conta bancária atualizada?)
    • API Name (Nome da API): Bank_Account_Updated (Remova o "?" no final da sequência de caracteres para o API_Name)
  1. Na seção Resultados, observe os dois resultados listados à esquerda: New Outcome (Novo resultado) e Default Outcome (Resultado padrão).
  2. Verifique se New Outcome (Novo resultado) está selecionado e insira os valores abaixo na seção Outcome Details (Detalhes do resultado).
    • Label (Rótulo): Bank Account Created (Conta bancária criada)
    • API Name (Nome da API): Bank_Account_Created
    • Em Condition Requirements to Execute Outcome (Requisitos de condição para executar o resultado), selecione All Conditions Are Met (AND) (Todas as condições são atendidas (AND)).
  1. Em Resource (Recurso), insira estas condições.
    • Resource (Recurso): existingAccount
    • Operator (Operador): Is Null (É nulo)
    • Value (Valor): True (Verdadeiro)
      Observe que o recurso existingAccount não especifica um sufixo como existingAccount.id ou existingAccount.name. Isso ocorre porque você quer verificar uma correspondência em todo o objeto, não apenas em um único campo. Isso significa que o nome e o tipo de conta, dados na entrada inicial da tela, devem corresponder para poder atualizar uma conta existente. Se você não encontrar uma correspondência, crie uma nova conta. 
  1. Selecione Default Outcome (Resultado padrão) e insira:
    • Label (Rótulo): Bank Account Found (Conta bancária encontrada)
  1. Clique em Done (Concluído).
Nota

Observe que Bank Account Found (Conta bancária encontrada) não tem condições. Isso é porque ele é o resultado padrão. Se as condições não forem atendidas para o fluxo criar uma conta, o fluxo sempre pegará esse caminho e atualizará as informações da conta.

Adicionar uma atribuição

No caso de uma conta bancária já existir, vamos informar o Flow para atualizar o campo User Account ID (ID da conta do usuário) do Salesforce com a Bank Account ID (ID da conta bancária). Para isso, você precisa atribuir o valor a uma variável (account.id).

  1. Na caixa de ferramentas, arraste Assignment (Atribuição) para a tela.
  2. Na janela New Assignment (Nova atribuição), insira os valores abaixo.
    • Label (Rótulo): Assign Existing Bank Account ID (Atribuir ID da conta bancária existente)
    • API Name (Nome da API): Assign_Existing_Bank_Account_ID
  1. Em Set Variable Values (Defina valores de variável), insira estes valores.
    • Variable (Variável): Selecione account (conta) e depois id
    • Operator (Operador): Equals (Igual a)
    • Value (Valor): Selecione existingAccount e depois id
  1. Clique em Done (Concluído) e ignore os avisos.
Nota

Você não pode copiar e colar os valores de Variable (Variável). Para a variável, digite account (conta), clique em account (conta) em Apex-Defined Variable (Variável definida por Apex) e selecione id.

Adicionar o elemento de atualização de registros

Vamos usar os valores armazenados em variáveis para atualizar nosso registro de usuário do Salesforce com o tipo de conta bancária e a ID da conta bancária. 

  1. Na caixa de ferramentas, arraste o elemento Update Records (Atualizar registros) para a tela.
  2. Na nova janela Atualizar registros, insira os valores abaixo:
    • Label (Rótulo): Update Salesforce User Record (Atualizar registro de usuário do Salesforce)
    • API name (Nome da API): Update_Salesforce_User_Record
  1. Selecione Specify conditions to identify records, and set fields individually (Especificar condições para identificar registros e definir campos individualmente)
  2. Em Update Records of This Object Type (Atualizar registros deste tipo de objeto):
    • Objeto: User (Usuário)
  1. Em Filter User Records (Filtrar registros de usuários):
    • Requisitos de condição para atualização do registro: Todas as condições são atendidas (AND)
    • Field (Campo): LastName
    • Operator (Operador): Equals (Igual a)
    • Value (Valor): Last_Name_on_Account
  1. Em Set Field Values for the User Records (Configurar valores de campo para os registros de usuário):
    • Field (Campo): Account_ID__c
    • Value (Valor): Selecione account (conta) e depois id (em Apex-Defined (Definido pelo Apex))
  1. Clique em + Add Field (Adicionar campo).
    • Field (Campo): Account_Type__c
    • Value (Valor): Bank_Account_Type (em Screen Components (Componentes de tela), não em Apex-Defined (Definido pelo Apex))Janela New Update Records (Novo Atualizar registros) com valores preenchidos.
  1. Clique em Done (Concluído).

Conectar os elementos

Quase lá! Você só precisa conectar o seu fluxo. Vamos começar a conectar os elementos na ordem certa arrastando o nó do conector para o elemento de destino para que nosso processo comercial flua com sucesso no tempo de execução. Não esqueça de salvar.  

  1. Conecte o Start (Início) a Screen Bank Account Record (Verificar registro de conta bancária).
  2. Conecte Screen Bank Account Record (Triagem de registro da conta bancária) a Action (Ação) Add Bank Account (Adicionar conta bancária).
  3. Conecte Action (Ação) Add Bank Account (Adicionar conta bancária) a Decision Bank Account Updated? (Decisão Conta bancária atualizada?)
  4. Alinhe o elemento Decision (Decisão) na tela para que você tenha espaço para um conector de saída em cada lado.
  5. Conecte o resultado Decision Bank Account Updated? (Decisão Conta bancária atualizada?) a Assignment Assign Existing Bank Account ID (Atribuição Atribuir ID de conta bancária existente).
  6. Quando solicitado, selecione Bank Account Found (Conta bancária encontrada) ao resultado da decisão a fim de atribuir ao caminho e clique em Done (Concluído).Janela Select outcome for decision connector (Selecionar o resultado para conector de decisão).
  7. Conecte Assignment Assign Existing Bank Account ID (Atribuição Atribuir ID de conta bancária existente) a Update Records Update Salesforce User Record (Atualizar registros Atualizar registro de usuário do Salesforce).
  8. Conecte Decision Bank Account Updated? (Decisão Conta bancária atualizada?) a Update Records Update Salesforce User Record (Atualizar registros Atualizar registro de usuário do Salesforce).
  9. Clique em Save (Salvar).

Depurar seu fluxo

Quase concluído. Mas antes de terminar, vamos usar o modo de depuração para verificar o fluxo. 

  1. Clique em Debug (Depurar).
  2. Selecione Show details of what’s executed and render flow in Lightning runtime (Exibir detalhes do que é executado e renderizar o fluxo no tempo de execução do Lightning).
  3. Clique em Run (Executar).
  4. Em Last Name on Account (Sobrenome na conta), insira Thompson e, em Bank Account Type (Tipo de conta bancária), insira Checking (Corrente).
  5. Clique em Next (Avançar).

O fluxo é executado com nossas entradas. 

Em Detalhes de depuração, siga todo o fluxo que você acabou de criar. 

Primeiro, aí estão suas entradas de texto. Em seguida, em BANKSERVICE.ADDACCOUNT, podemos ver que as entradas de texto foram devidamente atribuídas e que as saídas relatam uma conta existente:

{!existingAccount} = 409exc

e

{!account} = 201 (null)

... ou que nenhuma conta foi encontrada e outra foi criada:

{!existingAccount} = 409exc (null)

e

{!account} = 201

A fase Decision (Decisão) confirma o resultado da decisão. As variáveis foram atribuídas.

E agora, em Update Records (Atualizar registros), os campos Account Type (Tipo de conta) e Account ID (ID de conta) no Salesforce foram preenchidos com os novos valores do serviço Web do banco.  

Nota

Não se preocupe se você encontrar resultados diferentes (201 ou 401). O resultado varia de acordo com a atualização de contas do aplicativo.

Que rufem os tambores... Agora veja o registro da usuária Maria Thompson no Salesforce.

Como representante do banco, você inseriu o nome e o tipo de conta no Salesforce, nosso aplicativo Flow atualizou automaticamente uma conta bancária existente (ou criou outra) no serviço bancário e retornou a ID da conta e o novo tipo de conta para o registro de usuário do Salesforce. 

Agora você tem uma maneira de acompanhar a atividade de vendas nas contas bancárias, tudo de dentro do Salesforce. Você disse “sem código”? Sim. Tudo feito sem escrever uma única linha de código.

Conhecer os limites do seu aplicativo

Você também precisa saber que pode receber um erro. Por exemplo, se você usar “Maria Thompson” como Last Name on Account (Sobrenome na conta), você recebe um erro, pois é proibido inserir espaços nesse campo. Da mesma forma, um erro pode ser exibido se você inserir um nome com menos de seis caracteres (digamos, Jones), já que esse é outro limite de nosso aplicativo simples. Aqui estão alguns dos códigos que você pode encontrar.

Código

Descrição do serviço Acme Bank

200

O sistema encontra uma conta com determinado nome

201

Resposta quando a conta não existe e podemos criar outra

204

Resposta quando o sistema encontra uma conta com o nome fornecido

400

Resposta de erro se o nome da conta for menor que o mínimo de seis caracteres ou tiver espaços

404

Resposta de erro se a conta não for suportada pelo serviço ou não for encontrada

409

Resposta quando a conta existe e não podemos criar uma

Nota

Se tivéssemos criado um fluxo para usar com um serviço bancário externo de verdade, teríamos criado registros usando identificadores exclusivos e não nomes. Há outra lógica que certamente é muito elementar para um cenário bancário, mas, novamente, estamos mantendo-o simples aqui para que você possa se concentrar na compreensão dos Serviços externos. 

Vamos recapitular

Uau! Muito bem! Vamos revisar como você criou um fluxo usando serviços externos e dar uma olhada nas etapas executadas ao longo do caminho. Observe que, embora você tenha que lidar com uma definição de esquema compatível com OpenAPI na sua especificação da API, a maior parte do trabalho é declarativo (com pouca a nenhuma codificação). Bom, né?

Imagem que ilustra as seis etapas do uso de External Services (Serviços externos) com Flow.

E agora, o momento que você estava esperando… vamos conferir seu trabalho.

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback