Criar um fluxo usando ações de serviços externos
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.
- Em Setup (Configuração), insira
Flows
(Fluxos) na caixa Quick Find (Busca rápida) e selecione Flows (Fluxos).
- Clique em New Fluxo (Novo fluxo).
- Verifique se Start from Scratch (Começar do zero) foi selecionado e clique em Next (Avançar).
- Selecione Screen Flow (Fluxo de tela) e clique em Create (Criar).
- Na barra de botões, altere a configuração Auto-Layout (Layout automático) para Free-Form (Formato livre).
- 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
- Na lista de componentes de entrada, arraste dois componentes Text (Texto) para a área de tela Flow Label (Rótulo do fluxo).
- 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
- 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
- Clique em Done (Concluído).
- 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
- Clique em Save (Salvar) e ignore os avisos.
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.
- Na caixa de ferramentas, com a guia Elements (Elementos) selecionada, arraste o elemento Action (Ação) para a tela.
- Altere Filter By (Filtrar por) para Type (Tipo), selecione External Service (Serviço externo) e clique na caixa de pesquisa.
- Selecione Add Account (Adicionar conta).
- Label (Rótulo):
Add Bank Account
(Adicionar conta bancária) - API Name (Nome da API):
Add_Bank_Account
- Clique no campo Account Name (Nome da conta), selecione Bank Account Record (Registro de conta bancária) e depois Last_Name_on_Account.
- Clique no campo Account Type (Tipo de conta), selecione Bank Account Record (Registro de conta bancária) e depois Bank_Account_Type.
- Expanda a seção Show advanced options (Mostrar opções avançadas) e marque Manually assign variables (Atribuir variáveis manualmente).
- 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)
- Clique em Done (Concluído).
- 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)
- Clique em Done (Concluído) e em Done (Concluído).
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.
- Na guia Elements (Elementos) da caixa de ferramentas, arraste Decision (Decisão) para a tela.
- 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)
- Na seção Resultados, observe os dois resultados listados à esquerda: New Outcome (Novo resultado) e Default Outcome (Resultado padrão).
- 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)).
- 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.
- Selecione Default Outcome (Resultado padrão) e insira:
- Label (Rótulo):
Bank Account Found
(Conta bancária encontrada)
- Clique em Done (Concluído).
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).
- Na caixa de ferramentas, arraste Assignment (Atribuição) para a tela.
- 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
- 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
- Clique em Done (Concluído) e ignore os avisos.
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.
- Na caixa de ferramentas, arraste o elemento Update Records (Atualizar registros) para a tela.
- 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
- Selecione Specify conditions to identify records, and set fields individually (Especificar condições para identificar registros e definir campos individualmente)
- Em Update Records of This Object Type (Atualizar registros deste tipo de objeto):
- Objeto: User (Usuário)
- 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
- 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))
- 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))
- 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.
- Conecte o Start (Início) a Screen Bank Account Record (Verificar registro de conta bancária).
- Conecte Screen Bank Account Record (Triagem de registro da conta bancária) a Action (Ação) Add Bank Account (Adicionar conta bancária).
- Conecte Action (Ação) Add Bank Account (Adicionar conta bancária) a Decision Bank Account Updated? (Decisão Conta bancária atualizada?)
- Alinhe o elemento Decision (Decisão) na tela para que você tenha espaço para um conector de saída em cada lado.
- 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).
- 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).
- 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).
- 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).
- 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.
- Clique em Debug (Depurar).
- 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).
- Clique em Run (Executar).
- Em Last Name on Account (Sobrenome na conta), insira
Thompson
e, em Bank Account Type (Tipo de conta bancária), insiraChecking
(Corrente).
- 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.
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 |
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é?
E agora, o momento que você estava esperando… vamos conferir seu trabalho.