Você está na página 1de 158

Omnistudio Consultant

⚠ Existem algumas diferenças entre OmniStudio e o OmniStudio for Vlocity.

➡ OmniStudio for Vlocity e OmniStudio são como duas versões de um conjunto de aplica:vos.

➡ Não são DOIS :pos de pacotes.

➡ Existe apenas UM pacote, OmniStudio.

➡ OmniStudio for Vlocity, usa o modelo de custom objects.

➡ OmniStudio usa o modelo de standard objects.

📌 OmniStudio Core

OmniStudio Architecture

O OmniStudio consiste em três camadas, sendo elas sua arquitetura:

• Digital Experience
• Service Management
• Developer Experience
🔵Digital Experience (front-end)

-> Inclui dois componentes principais da Camada de interface do usuário.

1. FlexCard: Exibe informações contextuais e ações em um formato rápido.

➡ É um componente que reside em uma página (ou em um processo guiado) e exibe os dados de
sua escolha. Em vez de ficar limitado aos componentes Out of the box (OOTB), você pode
configurar um novo :po de componente para a página.

2. OmniScript: Fluxo guiado para concluir um processo de negócios.

➡ É para processos passo a passo em que o usuário consome informações, insere informações e
dá o próximo passo.
🔵Service Management (back-end)

Serviço de dados que leem, gravam, transformam, calculam e rastreiam dados dentro e fora do
Salesforce.

1. DataRaptor: serviços configuráveis para recuperar, transformar e atualizar dados

2. Integra:on Procedures (IP): AplicaQvo usados para ler e gravar dados do Salesforce e de
sistemas externos.
3. Calcula:on Procedures and Calcula:on Matrices: Procedimentos de cálculo são usados
para configurar matemáQca complexa. Um procedimento de cálculo pode chamar vários arquivos
de matriz de cálculo para lidar com valores de entrada de variáveis e cálculos.

🔵Developer Experience
-> Entra em cena assim que terminamos o desenvolvimento e focamos na implantação.
1. IDX build Tool: Ferramenta de automação que empacota e migra Datapack (pacote de
dados) ominstudio .

2. IDX Workbench: App desktop que permite desenv. Migra Datapack e metadados do SF de
uma org p/ outra ou de uma org para o Git.
Para migrações simples, os desenvolvedores podem exportar e importar o componente como um
Datapack (Coleção de componentes do OmniStudio agrupados para fins de exportação e
importação.)

➡ Por exemplo, os desenvolvedores podem exportar e importar um FlexCard com um


procedimento de integração específico.
Para migrações grandes ou complexas, os desenvolvedores usam IDX Build Tool ou IDX
Workbench.

FlexCards

Usados para criar componentes e aplica>vos de interface do usuário.

🔎UI components - Componentes de interface do usuário

FlexCards exibem informações do objeto Salesforce junto com ações dis:ntas e clicáveis que
mudam de acordo com o contexto em que aparecem e com base nas informações que contêm.

São construídos com o modelo de programação Lightning Web Components.

PRINCIPAIS RECURSOS

O que eles podem fazer;

• Resumem informações contextuais rapidamente.


• São os pontos inicial e final das transações do cliente.
• Podem ser visualizados em qualquer disposiQvo ou canal.
• Podem exibir dados de várias fontes de dados.
• Construídos rapidamente usando elementos de arrastar e soltar.
• Têm um editor WYSIWYG (o que você vê é o que você obtém) para controlar seu layout e
esQlo.
• As ações do FlexCard são relevantes para o contexto do cartão.
• Podem ser integrados em outros FlexCards.
• Podem ser incorporados dentro de um LWC OmniScript.
• Exibem mais detalhes sob demanda com flyouts.
• Têm vários estados que são exibidos com base nas condições.

CICLO DE VIDA
📋CREATE FLEXCARD

1. Clique no ícone do Iniciador de aplicaQvos.


2. Pesquise OmniStudio e abra o aplicaQvo OmniStudio.
3. Clique no menu suspenso
4. Selecione OmniScripts
New FlaxCard
📌 Requisitos de nomenclatura do FlexCard

Name/Author

• O nome e o autor devem conter apenas sublinhados e caracteres alfanuméricos. Deve ser
único, começar com uma letra, não incluir espaços, não terminar com sublinhado e não conter
dois sublinhados consecu:vos.

⚠ A combinação do nome e autor do cartão deve ser única dentro da sua organização Salesforce.

Exemplo

• O FlexCard "AccountAc:ve", criado pelo autor "CustomerSales", já existe na sua


organização.

• Se você tentar importar um novo FlexCard com o mesmo nome e autor, o sistema vai
perguntar se deseja subs:tuir o FlexCard atual pelo novo.

• O FlexCard "AccountClosed", criado pelo mesmo autor "CustomerSales", não haverá


conflito com o FlexCard “AccountAc:ve", pois o nome do cartão é diferente.

Theme

Existem duas opções para o tema FlexCard.

• Lightning: Para usar o Salesforce Lightning Design System (SLDS)

• Newport: Para usar o Newport Design System

• Newport é uma ferramenta CSS que permite aos designers e desenvolvedores web
rees:lizar facilmente todos os componentes do OmniStudio em um único local.
• É possível gerar um arquivo CSS personalizado e oQmizado que poderá ser uQlizado em
todas as páginas futuras.

⚠ Ao salvar o FlexCard, não será mais possível editar o nome, autor ou tema. Se precisar mudar
as edições, clone o FlexCard e atualize essas configurações ao criar o clone.
⁃ Title (opcional) - Preenche automaQcamente, mas pode ser alterado opcionalmente.
⁃ Is Child Card(Opcional) - Habilita para incorporar um FlexCard dentro de outro FlexCard.
⁃ Descrip:on (opcional)

Select Source Type

O :po de fonte de dados recupera dados de um objeto Salesforce ou de um banco de dados


externo.

🔎 Data Source Wizard for OmniStudio FlexCards

Referência de fonte de dados FlexCards

1. SOQL Query : Usa uma linguagem de consulta de objeto Salesforce (SOQL) para pesquisar
dados específicos do Salesforce de uma organização.

Exemplo:
SELECT FirstName, AccountId, Id FROM Contact WHERE Id = '003Dp000004x5aAIAQ'

⚠Essa consulta está selecionando os Fields "FirstName", "AccountId" e "Id" do "Contact". O


filtro da consulta é definido pela condição "WHERE Id = '003Dp000004x5aAIAQ'".

Isso significa que apenas os registros que possuem o valor '003Dp000004x5aAIAQ' no fileld "Id"
serão retornados como resultado da consulta.

🔎Observação: Se a segurança for uma preocupação, use um DataRaptor em vez de uma SOQL
query, pois os DataRaptors suportam totalmente a segurança em nível de campo.

2. SOSL Search: Usa a Salesforce Object Search Language para criar consultas de pesquisa
baseadas em texto no índice de pesquisa.

3. Apex Remote: UQliza uma classe Apex para retornar dados por meio da
VlocityOpenInterface.

4. Apex REST: Usa um endpoint REST de uma classe Apex para retornar dados.

5. DataRaptor: UQliza a interface DataRaptor Extract para retornar dados, com suporte total à
segurança em nível de campo.

6. REST: Usa a chamada de API REST padrão para retornar dados de um endpoint de callout,
com credenciais nomeadas ou não.

7. Integra:on Procedures: UQliza procedimentos de integração para executar várias ações em


uma única chamada do servidor.

8. Streaming Channel: Usa a API de streaming do Salesforce para enviar noQficações de


eventos gerais não relacionados a alterações de dados do Salesforce.
9. Plakorm Event: Usa a plataforma de mensagens corporaQvas Platorm Events da Salesforce
para permiQr que os aplicaQvos se comuniquem dentro e fora da Salesforce.

10. PushTopic: Usa uma consulta SOQL para retornar um resultado que noQfica os ouvintes
sobre alterações nos registros em uma organização do Salesforce.

11. Custom: UQliza JSON de amostra para configurar um FlexCard com dados temporários
subsQtuídos por outra fonte de dados.

⚠ Um FlexCard pode ser criado sem NENHUMA fonte de dados.

⚠ Um FlexCard filho não precisa de uma fonte de dados se um FlexCard pai es:ver configurado
para enviar dados de sua fonte para esse filho.

⚠Um FlexCard pai pode não precisar de uma fonte de dados se o FlexCard filho :ver uma.
➡ A escolha do :po de fonte de dados determina as propriedades exibidas para a própria fonte
de dados. (Select Data Source)

✏ FLEXCARD DESIGNER

Local para criar e projetar FlexCards.

Ferramenta declara:va com uma interface de arrastar e edição WYSIWYG que facilita a criação
de componentes da Web do Lightning da interface do usuário (IU) sem código.

• WYSIWYG = (o que vc vê, é o que você obtém)


• WYSIWYG = (what you see is what you get)
É possível criar a aparência do FlexCard esQlizando elementos individuais de interfaces gráficas de
usuário (GUIs) incorporadas ao designer.

HEADER AND CANVAS

• HEADER

O cabeçalho é onde você visualiza os metadados e executa ações relacionadas ao seu FlexCard da
seguinte forma:

🟦 Visualize os metadados básicos sobre o seu FlexCard, como Autor, Versão, Status, o FlexCard
do qual foi clonado, se é um cartão infan:l, data da úl:ma modificação e tema.
🟥Alterne entre visualização de design e visualização, crie uma nova versão de seu FlexCard e
clone, a:ve ou desa:ve seu FlexCard.

🟪Configure as opções de publicação para um FlexCard aQvado e exporte seu FlexCard.

🟨Acesse a documentação do FlexCard por meio do link Ajuda.

• CANVAS

Construa seu FlexCard dragging elements para a tela.

Arraste elementos como Fields, Ac:on, Image, State, FlexCards filhos e componentes da Web
personalizados do Lightning (LWC) do painel para a tela.
• Reorganize, clone, exclua e ajuste as larguras de seus elementos conforme necessário.

• No modo Design, teste a responsividade do seu FlexCard com a lista suspensa de viewport.

Essa funcionalidade permite uQlizar o viewport, para ver como os elementos do FlexCard são
exibidos em diferentes tamanhos de tela, possibilitando ajustar o layout para garanQr que o
conteúdo seja apresentado da melhor forma possível em disposi:vos com telas de diferentes
tamanhos.

FLEXCARD ELEMENTS

➡ Block Elements

Um elemento Block combina grupos lógicos de outros elementos. É possível tornar esse bloco
recolhível para ocultar ou expandir seu conteúdo. Além disso, é possível aninhar blocos, ou seja,
colocar um bloco dentro de outro bloco.

➡ Text and Field Elements

O elemento Text combina texto e mescla campos usando um editor de rich text.

⚠ Um editor de rich text, também conhecido como editor WYSIWYG (What You See Is What You
Get), é uma ferramenta de sowware que permite a criação e edição de conteúdo de texto
formatado de maneira visualmente semelhante ao resultado final.

O editor de rich text adiciona um DIV HTML para cada seção de texto. Este elemento também
inclui um menu “Styles” para formatar o texto.

📌 Caso o FlexCard não tenha nenhuma fonte de dado vinculada, não será possível retornar
informação de campo, pois não temos nenhuma fonte.

Exemplo:
Não é possível selecionar a guia “Fields”.

📌 Em situações em que temos uma fonte vinculada ao FlexCard é possível adicionar os campos
pertencente aquela fonte.

Exemplo:

É possível selecionar a guia “Fields” e visualizar os campos disponíveis.


O Field elements é usado para exibir dados retornados de uma fonte de dados em um FlexCard.

Existem duas maneiras de adicionar campos de dados usando esse elemento.

1. Arraste o elemento Field para a tela

Em Proper:es selecione os campos disponíveis em Output.

As propriedades do campo incluem o “Field Type”, que é ú:l para mostrar os dados em seu
formato correto.

Exemplo:

Se o Output escolhido para ser retornado, seja do :po Data o Field Type deve ser “Date”.
2. Quando existe fonte de dados vinculada ao FlexCard é possível visualizar os campos
disponíveis no Paínel Build.

Arraste o campo que deseja u:lizar sem precisar arrastar o elemento Field e configurar o Output.
➡ Icon Elements

O Icon Elements exibe um ícone SVG do Salesforce que você acessa na biblioteca de ícones do
Salesforce.
É possível carregar o ícone de sua escolha. (custom icon)

Os ícones também podem executar Ac:on quando clicados.

⚠ Os elements Image, Block and Toggle também tem esse recurso.

➡ Menu and Ac:on Elements

O Menu element cria um menu a par:r de uma lista de ações.


➡ AcEon Elements

O Ac:on element exibe um texto ou um botão que executa uma ação quando clicado, podendo
adicionar ação ao FlexCard para fazer o seguinte:

• Iniciar ou atualizar um OmniScript.


• Navegar para a página da web ou aplicaQvo.
• Exibir um menu desdobrável.
• Disparar um evento.
• Atualizar valores de dados.
Existem vários types of ac:ons disponíveis.

Card Executa ações no nível do cartão, como recarregar, atualizar fonte de


dados e remover.
Data Aciona uma fonte de dados de uma ação para obter dados de um
servidor ou postar dados em um servidor.
Event Custom: dispara um evento personalizado para noQficar o FlexCard pai
sobre a ocorrência de um evento. PubSub: dispara um evento PubSub
para noQficar outro componente em uma página ou aplicaQvo sobre a
ocorrência de um evento.
Flyout Exiba informações adicionais de um cartão filho, OmniScript ou
componente da Web personalizado do Lightning (LWC) em um modal
ou popover.
Navigate Selecione um URL de desQno ou um Qpo de PageReference que permita
a navegação no Lightning Experience, nas Comunidades ou para um
endereço da Web externo.
OmniScript Inicie um OmniScript a parQr do FlexCard.
Update OmniScript Atualize um OmniScript de um FlexCard incorporado como um
componente da Web do Lightning personalizado em um OmniScript.
➡Datatable

O DataTable element cria uma estrutura de tabela para exibir os dados obQdos de um data
source.

Quando existe uma fonte de dado vinculada ao flexcard ao arrastarmos o elemento Datatable
para tela é possível ver os campos disponíveis para tabela.

⚠ Para retornar os dados é necessário o preenchimento do campo “Records”, aqui é


determinando quais informações serão enviadas para Tabela, neste caso é {Records}.
{records} Envie todos os dados.

• Configure os campos da tabela clicando no Icon ✏

Em TABLE é possível:

• Add, delete, and update columns.


• Change Field Labels.
• Make columns Sortable.
• Make fields Searchable.
• Change field Type.
• Make fields Editable.
• Make fields Visible or hide fields.

➡ Chart

Exibe dados como Gráficos, existem vários :pos, sendo:

• bar
• pie
• donut
• line
• radar

➡ Custom LWC

Incorpore LWC OmniScript, FlexCard LWC gerado ou um LWC personalizado.

• FlexCard LWC são prefixados com “cf” antes do nome

➡FlexCard

Incorpora FlexCard filho reu:lizável. O filho pode ter sua própria fonte de dados ou o pai pode
subsQtuir a fonte de dados do filho.

➡State

Adiciona um State para apresentar diferentes interações e layouts com base nas condições.

⚠ Cada FlexCard quando criado tem um default state que NÃO pode ser excluído.

• Drag a State element à tela de um FlexCard ou clone um State que já esteja na tela.
State ProperEes

Nas propriedades do State element é possível alterar o nome do State e informar seu estado.

⚠ Por padrão o nome do State é “AcQve”.

Vamos supor que estamos criando uma lista de tarefas usando FlexCards. Cada FlexCard
representa uma tarefa na lista.

Abaixo estão alguns exemplos de States que poderíamos ter para um FlexCard:

1. State Ac:ve:
• Nesse estado, o FlexCard exibe os dados da tarefa, como o |tulo da tarefa, a descrição e a
data de vencimento.
• Os usuários podem interagir com o FlexCard, marcando a tarefa como concluída, editando
os detalhes da tarefa ou excluindo-a.

2. Blank Card State:


• Se não houver nenhuma tarefa para exibir, o FlexCard pode ter um estado em branco ou
aberto.
• Nesse estado, o FlexCard pode mostrar uma mensagem indicando que não há tarefas
disponíveis no momento.
• Os usuários podem ter a opção de adicionar uma nova tarefa clicando no FlexCard ou em
um botão de adição.
Cloning a State

O nome do State é o nome padrão Ac:ve.

Para clonar esse State selecione o ícone e crie um novo State que aparece quando as condições
definidas são atendidas.

🔎OBS: Ao clonar o State element, uma cópia idênQca é gerada.

Ao clonar um State, é possível alterar o nome e configurar as condições que determinam quando
ele é exibido.
Configuring Display CondiEons

Para determinarmos quando esse flexcard será exibido uQlizamos condições.

Vamos clonar o state do flexCard que exibe o clima atual.

Ao clicar em clonar vamos alterar o nome do State para Alert e adicionar as condições de quando
deve ser exibido esse State flexCard.

⁃ Selecione os campos disponíveis conforme fonte de dados, adicione o operador e inclua o


valor.

Neste caso, para que este State element seja acionado será necessário o campo “Condi:on” está
preenchido com “Heavy Snow”.
Os mesmos elementos são usados para os State Ac:ve e Alert: Blocos, Imagem, Texto e Ações.

O Style é o que os torna diferentes uns dos outros.

⚠ Os State Ac:ves são considerados padrão, se o elemento State Ac:ve for o primeiro no topo
da tela, isso significa que não há nenhuma condição para avaliar, sendo por padrão exibida.
No entanto, se houver condições que verifiquem se o FlexCard deve estar em um estado
diferente, essas condições devem ser verificadas antes da condição padrão.

🔎 O FlexCard determina qual State exibir indo de cima para baixo.

O primeiro estado que possui condições verdadeiras é exibido.

É uma prá:ca recomendada sempre ter um State FlexCard na parte inferior que não possui
condições.
(no exemplo acima, é o State AcEve).

➡Image

Adicione uma fonte de elemento de imagem:

• carregar do seu computador


• apontar para um url
• de aQvos em sua biblioteca de arquivos
➡Toggle

Acionar uma ação.

BUILD, PROPERTIES, STYLE, AND SETUP PANELS

🛠 BUILD PANEL

➡ Fields

A seção "Fields" é onde você seleciona e adiciona os campos da fonte de dados do seu FlexCard.

Exemplo:

Se você escolheu uma fonte de dados que contenha informações sobre contas do Salesforce
(Objeto Conta), pode arrastar os campos (existentes neste objeto) como nome, telefone e
endereço para a tela do FlexCard.

⚠ Ao publicar o FlexCard, ele exibirá essas informações para o usuário com base nos dados
disponíveis na fonte de dados selecionada.

➡ Display

Permite definir de que forma os dados serão exibidos no componente.


Isso inclui a escolha dos :pos de exibição, como text, image, icons e Block podem ser adicionados
ao FlexCard para criar uma estrutura básica.

Os elementos mais complexos, como ac:on, chart, menu e datatable podem ser incorporados
para melhorar a funcionalidade do FlexCard.

Exemplo

• Ações podem ser adicionadas para permi:r que o usuário execute uma ação específica,
como salvar ou enviar um formulário.

• Gráficos podem ser usados para visualizar dados de forma mais clara e compreensível.

• Menus podem ser adicionados para facilitar a navegação dentro do FlexCard.

• Tabelas de dados podem ser incluídas para exibir dados de forma organizada e
estruturada.

• Adiciona um State para apresentar diferentes interações e layouts com base nas condições
O componente Custom Lightning Web são componentes que você pode criar para adicionar
funcionalidades personalizadas ao seu FlexCard.

Exemplo

Digamos que é preciso exibir um gráfico personalizado em seu FlexCard. Você pode criar um
Lightning Web Component que gera esse gráfico usando uma biblioteca de terceiros como D3.js.

Esse componente da Web do Lightning pode então ser incorporado ao seu FlexCard para exibir o
gráfico e quaisquer dados associados.

Esses componentes são criados usando as tecnologias padrão da Web, como HTML, CSS e
JavaScript, mas são integrados ao Lightning e podem ser usados em seu FlexCard.

⚠ Os Custom LWC são reu:lizáveis e podem ser facilmente compar:lhados com outros usuários
ou equipes.

Por fim, Os Child FlexCards podem ser incorporados a outros FlexCards, muitas vezes chamados
de FlexCards “Parent”.
Exemplo

• FlexCard Parent: "Receitas de Sobremesas"


• Child FlexCards: "Bolo de Chocolate", "Sorvete de Baunilha", "Torta de Maçã"

O Child FlexCard pode conter informações detalhadas sobre a receita em questão, como
ingredientes, etapas de preparação, tempo de cozimento, nutrição e fotos da sobremesa
acabada.

Quando um usuário clica em um Child FlexCard específico, ele pode ser levado a uma tela com
informações mais detalhadas sobre a receita correspondente.

⚠ Um componente "parent" FlexCard pode conter vários componentes "child" FlexCard, cada
um exibindo informações diferentes.

➡ Input

Os elementos de input na guia "Build" do FlexCard podem receber entrada de dados dos
usuários.

1. Checkbox: permite que os usuários escolham uma ou mais opções em uma lista de opções.

2. Currency: permite que os usuários digitem um valor monetário em uma área específica do
FlexCard.

3. Date: permite que os usuários selecionem uma data específica.


4. Date/Time: permite que os usuários selecionem uma data e hora específicas.

5. E-mail: permite que os usuários digitem um endereço de e-mail válido em uma área
específica do FlexCard.

6. Mul:-select: permite que os usuários escolham várias opções em uma lista de opções.

7. Number: permite que os usuários digitem um número em uma área específica do FlexCard.

8. Radio: permitem que os usuários escolham entre opções exclusivas.

9. Ranger: permite que os usuários escolham um valor em um intervalo específico.


10. Select: permite que os usuários selecionem uma opção em uma lista suspensa.

11. Telephone: permite que os usuários digitem um número de telefone em uma área
específica do FlexCard.

12. Text: permite que os usuários digitem texto em uma área específica do FlexCard.

13. Text Area: permite que os usuários digitem um texto mais longo em uma área específica do
FlexCard.

14. Time: permite que os usuários selecionem um tempo específico.

15. Toggle: permite que os usuários alternem entre dois estados (ligado ou desligado) clicando
em um botão de alternância.
16. Typeahead: permite que os usuários digitem texto em uma caixa de pesquisa e sugere
possíveis correspondências com base no que o usuário digitou até agora. Isso pode ser úQl
para encontrar e selecionar rapidamente um item em uma lista longa de opções.

📋 PROPERTIES PANEL

As propriedades são os valores configuráveis que determinam o comportamento e a aparência


do FlexCard em sua aplicação.

Esta é as propriedades do elemento Field, é possível atualizar o nome do elemento, rótulo,


escolher o :po de dados exibido, texto de ajuda…
No modo preview é possível visualizar de que forma está sendo exibido o campo criado.

É possível observar as configurações realizadas em Proper:es como Label, Placeholder, Help


text…
🖌STYLE PANEL

Permite es:lizar elementos FlexCard, sendo possível visualizar em tempo real como as alterações
afetam a aparência e tornando a personalização mais rápida e intuiQva.

➡ Custom Styles

Permite configurar e salvar styles personalizados de um elemento.

É possível configurar a es:lização que deseja ao seu elemento e salvar no Custom Style, basta
clicar em “Save As” e preencha com o nome desejado.
Caso deseje limpar toda a esQlização do elemento clique em “Clear Styles”

➡ Dimension

Permite ajustar as dimensões do FlexCard para personalizar a aparência e o layout do FlexCard


de acordo com suas necessidades

Oferece opções para ajustar a largura e altura mínima e máxima do FlexCard, podendo ser
ajustadas manualmente digitando valores em pixels ou porcentagens (10px ou 10%).
Exemplo:

Nota-se que a altura do flexCard foi alterada para 200px

⚠ Quando adicionamos um elemento ao nosso FlexCrad, neste caso o Field conseguimos


visualizar em Style a dimensão para este elemento.

Exemplo:

Nota-se que a largura do elemento Field foi altera para 6.


➡ Appearance

Personalizar a aparência visual do FlexCard e garante que ele atenda às necessidades de design
específicas do projeto.

É possível a personalização da cor, fonte, tamanho e alinhamento do texto, bem como o


arredondamento da borda.
Exemplo:

⚠ Quando selecionamos um elemento específico, neste caso o Field é possível observar em Style
uma configuração uníca para este elemento, além da dimensions, appearance…
Aqui é possível alterar o rótulo do campo, fonte, cor, tamanho e também é possível es:lizar o
value a ser recebido no campo.

➡ Alignment

O alinhamento e u:lizado para ajustar, permiQndo que o conteúdo seja colocado em posições
precisas dentro do FlexCard.

Exemplo:

O texto do elemento Field foi alinhado ao centro, juntamente com o preenchimento do topo do
card.
Quando removemos o pedding type e pedding size (top:large) é possível ver a ausência de
preenchimento no flexcard, ficando apenas o alinhamento do texto, veja:

➡ Custom CSS

É uma técnica avançada de es:lização, uQliza código CSS personalizado que pode ser aplicado ao
FlexCard para es:lizar elementos específicos.

Ela permite criar es:los de página personalizados que NÃO são possíveis com as propriedades de
es:lo padrão fornecidas pelo FlexCard Design.

⚙ SETUP PANEL

É um painel onde visualizamos as informações preenchidas inicialmente quando criamos o


cartão.
Neste painel é possível atualizar essas configurações ou definir mais configurações, como:

• Atualize sua fonte de dados/Data Source.

• Aplique permissões personalizadas para limitar o acesso ao seu FlexCard.

• Rastreie dados personalizados em elementos com rastreamento aQvado.

• Habilite o suporte a Mul:-Language, defina Session Variables e crie Event Listeners.


📍Session Variable

Uma Session variable é como uma "memória" do FlexCard, onde podemos armazenar
informações de diferentes fontes de dados ou sistemas externos.

Exemplo:

Digamos que estamos construindo um FlexCard que precisa exibir informações sobre um usuário.
Podemos criar uma variável de sessão chamada "user_data" e armazenar nela as informações do
usuário, como nome, e-mail, endereço, etc.

Essas informações podem vir de uma fonte de dado ou de um sistema externo, e a variável de
sessão permite que o FlexCard acesse esses dados globalmente, em qualquer lugar em que ela
seja necessária.

📍 Event Listeners

São funções que são acionadas quando um determinado evento ocorre em uma aplicação.

Exemplo:

Quando um usuário clica em um botão em um FlexCard, um evento é gerado. Um Event Listener


pode ser adicionado ao botão para detectar esse evento e executar uma ação correspondente,
como mostrar uma mensagem na tela.

👀✅PREVIEW AND PUBLISH

⚠Altere a forma de visualizar o seu FlexCard, quando estamos no processo de criação ou edição,
u:lizamos o modo Design, e para visualizar em tempo real uQlizamos o modo Preview.
No modo preview conseguimos observar o botão "Add Test Parameters" que permite testar seu
FlexCard com diferentes valores de parâmetros.

⚠Os parâmetros de teste geralmente são fornecidos em um formato de Key / Value.

Quando definimos um parâmetro, podemos atribuir um nome a ele, o que chamamos de chave.

Essa chave é como uma iden:ficação para o parâmetro.

Exemplo:

Crie um parâmetro com a KEY "Limite de registros" e atribuir o VALEU "10" a essa chave.

Dessa forma, o nome do parâmetro ("Limite de registros") é a chave/key e o valor do parâmetro


("10") é o valor/value associado a essa chave.

A chave é como o nome ou iden:ficador do parâmetro, e o valor é o conteúdo ou valor que está
associado a essa chave.
🔁 Atualizar

• Atualize apenas a tela enquanto visualiza e depura seu FlexCard.


• Atualizar recarrega o cartão e redefine os dados JSON.

📟 Data JSON

Data JSON do FlexCard é uma representação estruturada dos dados que são usados para
preencher os elementos do FlexCard.

Ele contém informações sobre a fonte de dados, como as consultas ou APIs usadas para obter os
dados, e como esses dados são mapeados para os elementos do FlexCard.

Ao visualizar o Data JSON do FlexCard, é possível verificar se os dados estão sendo preenchidos
corretamente nos elementos do FlexCard.
Por exemplo, se um elemento de texto não está sendo preenchido com o valor correto, é
possível verificar se o valor correspondente está presente no JSON de dados.

O Data JSON é atualizado dinamicamente à medida que o usuário interage com o FlexCard. Isso
permite verificar como as mudanças na interação afetam os dados exibidos no FlexCard e no
JSON de dados. Isso pode ser úQl para iden:ficar problemas de sincronização ou de atualização
de dados em tempo real.

🐞 Ac:on Debugger

Permite visualizar as solicitações e respostas de eventos e ações do FlexCard.

Ao interagir com o FlexCard, como clicar em um botão, enviar um formulário ou selecionar um


item em uma lista, várias ações podem ser executadas em segundo plano, como enviar
solicitações para um serviço da web ou atualizar a interface do usuário.

O Ac:on Debugger registra todas essas ações em um log, que pode ser acessado através da guia
"Ac:on Debugger”.
O AcQon Debugger pode ser úQl para depurar problemas no FlexCard, como erros de integração
com serviços da web, problemas de desempenho ou comportamento inesperado do usuário. Ele
permite visualizar em detalhes o que está acontecendo nos bas:dores do FlexCard enquanto
você o usa.

✅PUBLISH

Para publicar um FlexCard, você precisa primeiro a:var clicando no botão “Ac:vate no cabeçalho
do editor. Esse processo compila e implanta seu FlexCard como um componente da Web do
Lightning (LWC).

Após a:var o FlexCard, você pode configurar os valores de metadados do LWC gerado, como
onde ele será publicado.

🔎 Obs: você não pode adicionar ou editar elementos em um FlexCard a:vo.

Isso pode ser feito na seção “Publish Op:ons”.


(1) Master Label: é o nome visível do seu componente FlexCard no Lightning App Builder e no
Community Builder.

(2) API Version: Esta é a versão API do seu componente FlexCard. O padrão é a versão da API
usada quando você criou o FlexCard. Quando você cria um novo FlexCard, o padrão é a versão
API atual.

(3) Run:me Namespace: Este é o namespace do pacote gerenciado.

(4) Is Exposed: Isso é aQvado quando você deseja que seu componente FlexCard seja público.

(5) Add SVG Resource/Drop it here: é aqui que você pode adicionar seu próprio ícone SVG de
componente personalizado para iden:ficar seu LWC gerado no Lightning App Builder e no
Community Builder.

(6) Targets: Aqui você seleciona os locais onde seu componente FlexCard está disponível para
publicação.

⚠Os alvos não são definidos para um FlexCard filho por padrão, já que os FlexCards filhos são
normalmente incorporados apenas nos pais ou usados em ações, como o menu desdobrável.
➡ A publicação de um FlexCard pode ser feita em diferentes locais, dependendo da finalidade do
componente.

As opções de publicação disponíveis são:

• Lightning Page
• App Page
• Home Page
• Record Page

⁃ App Page é uma página que pode ser acessada através do menu do aplica:vo e que
geralmente é usada para exibir um resumo dos principais recursos do aplicaQvo.

⁃ Home Page é a primeira página que o usuário visualiza quando acessa o aplicaQvo.

⁃ Record Page é uma página que mostra informações detalhadas sobre um registro em
par:cular. Essa página é usada principalmente para exibir informações de um objeto específico,
como detalhes do contato ou oportunidade.

• Experience Page
• Community Page
• Community Default

⁃ Community Pages são páginas em uma comunidade do Salesforce, que permitem que os
usuários acessem recursos e informações específicas da comunidade.

⁃ Community Default permite publicar um FlexCard como a página inicial padrão de uma
comunidade.
A Custom components list é onde você encontrará os componentes que criou e outros
componentes que compõem o pacote.

⚠Caso não encontre um componente FlexCard na lista de componentes personalizados, retorne


ao FlexCard Designer e verifique se o FlexCard está a:vado e se os alvos corretos estão definidos.
h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_AcQvate_and_Publish_FlexCa
rds.pdf?_ga=2.194714155.781961959.1684786615-242827117.1655918874

🏋 Pra:que:

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Meet_the_Data_Source_Wiz
ard.pdf?_ga=2.171536928.1671807635.1683573867-242827117.1655918874

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Display_Data_and_AcQons_o
n_a_FlexCard.pdf?_ga=2.148327730.440651954.1684177707-242827117.1655918874

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Style_the_Elements_on_a_Fl
exCard.pdf?_ga=2.55003182.440651954.1684177707-242827117.1655918874

👪 Child FlexCards

➡ Child and Parent FlexCards

Child FlexCards podem ser incorporados a outros FlexCards, muitas vezes chamados de FlexCards
“Parent”.

• Child FlexCards são reu:lzaveis


• Sua equipe cria um FlexCard filho que exibe informações específicas e é reuQlizável em
vários FlexCards.

• Child FlexCards possibilitam múl:plas fontes de dados em um FlexCard.


• Um FlexCard filho pode ter sua própria fonte de dados, independente de um pai.

• Child FlexCards são usados como flyouts.


• Os menus desdobráveis ajudam a organizar como os dados são exibidos.

A ação flyout exibe os dados usando um FlexCard filho em uma janela popover ou modal.

Para colocar um FlexCard Filho dentro do FlexCard Pai é necessário está a:vo.

Entre no FlexCard pai e arraste o elemento FlexCard para tela e configure.

1. Em “FlexCard Name” preencha com o nome do FlexCard filho.

2. Data Node é um conjunto de dados para passar um registro ou uma matriz de registros
para o FlexCard filho. (Nó)
Exemplo:

Se você Qver uma lista de registros em uma base de dados, cada registro pode conter várias
informações, como nome, idade, endereço etc.

Nesse caso, cada registro seria um nó de dados. Ao selecionar o FlexCard filho e escolher um nó
de dados, você está determinando quais informações desse registro serão enviadas para o
FlexCard filho.

⚠Para passarmos registros ou uma array de dados para um FlexCard Child, uQlizamos os
seguintes Node/nós:

NÓ DESCRIÇÃO
{records} Envie todos os dados.
{recordId} Obtém o ID de contexto do registro de dados de um objeto Salesforce. Se
esQver usando um DataRaptor para obter uma lista de Casos de conta,
no Input Map , insira AccountId como Key e {recordId}como Value . Em
seguida, adicione um Test Parameter cuja chave é recordId o
valor é 138238279r9ff para preencher seu FlexCard com dados reais.
{record[#]} Envie todos os dados de um registro específico. {records[0]} = primeiro
registro. {records[1]} = segundo registro. E assim por diante.
{record} Envie apenas os dados do registro atual, como quando Repe:r registros está
desabilitado no painel Configuração para que apenas um registro seja
retornado.
{record.FieldName} Envie um objeto de registro. Por exemplo, se {record.Product} for um objeto
ou array com dados adicionais, selecione-o. Mas, se você quiser enviar um
campo de dados, use a propriedade A‚ributes .
{record.a€ributes} Envie todos os Atributos para o registro atual.

Se um FlexCard Child usa a fonte de dados pai, não importa se sua fonte de dados está
configurada ou definida como Nenhum.

De qualquer forma, a fonte de dados do pai subs:tui a fonte de dados do filho se um nó de


dados for selecionado porque o registro já está definido.

⚠Para passarmos um campo de dados para um FlexCard Child, uQlizamos A‚ributes:


Imagine que deseja passar um campo de dados específico do FlexCard Parent, como "Id", para o
FlexCard filho.

Para fazer isso, você pode usar a propriedade "A‚ributes”.

A‚ributes permite que você defina campos de dados adicionais que deseja passar para o
FlexCard Child.

Nesse caso, você quer passar o campo "Id", então você insere "Id" como Atributo (2) e "{Id}"
como Valor (3).

Isso significa que o valor do campo "Id" no FlexCard pai será passado para o FlexCard filho.

Em Setup do FlexCard Child, é necessário especificar como usar o valor do "Id" passado, neste
caso nossa fonte de dado é um DataRaptor.
Na seção Input Map, será mapeado a saída de dados do seu DataRaptor, sendo o "Id" como key
(input) e o campo "Value" determinará qual valor será usado para o contextId do filho.

Nesse caso, usamos o valor como "{Parent.Id}". Isso significa que o valor "Id" do FlexCard pai
será atribuído ao contextId do FlexCard filho.

▶ Collapse a Block

Refere-se à capacidade de ocultar e expandir informações em um bloco.

Os usuários têm a opção de expandir o bloco para visualizar o conteúdo completo quando
desejarem.
Existem duas opções para configurar o bloco recolhível.

• Collapsible

⁃ PermiQr que os usuários visualizem e ocultem o bloco quando quiserem.

• Collapsed By Default

⁃ Sempre ocultar o bloco quando o FlexCard for exibido pela primeira vez.

👯 Clone FlexCard

A clonagem do FlexCard cria uma cópia do FlexCard com o layout e configurações do FlexCard
clonando.

⚠ A clonagem de um FlexCard não é possível até que você altere o nome do cartão.

Caso queira criar uma cópia idên:ca de um FlexCard a:vado sem afetar os locais em que é
usado, crie uma versão.
O controle de versão mantém o nome e o autor iguais, mas permite que você faça edições e
alterações sem afetar a versão a:va usada, para que nada seja interrompido.

Version a FlexCard

O controle de versão é uma maneira de fazer alterações em seu FlexCard enquanto mantém o
FlexCard existente.

O nome e o autor do FlexCard permanecem os mesmos, mas o número da versão aumenta para
a nova versão que você deseja editar.

⚠ Apenas UMA versão de um FlexCard deve estar a:va por vez, portanto, quando você a:va a
nova versão, ela subs:tui automa:camente a versão anterior.

❓ Quando do clonar ou criar versões de um FlexCard?

Version a FlexCard

⁃ Fazer pequenas modificações em um FlexCard existente para testar o comportamento e o


layout.

⁃ O novo FlexCard subsQtua o anQgo, como quando uma atualização é necessária.

Clone a FlexCard

⁃ Deseja um FlexCard disponível independentemente de seu pai.


⁃ Deseja alterar o nome ou autor do FlexCard.

🏗 FlexCard with External Data

Dados externos referem-se a todos os dados que estão fora do ambiente do Salesforce.

Quando você precisa acessar informações que não estão armazenadas no Salesforce, é
necessário u:lizar uma fonte de dados externa.

Este FlexCard contém o clima atual, que é previsto para o local de uma conta. Usar uma API
meteorológica é uma óQma maneira de obter dados por meio de uma API da web.

Display Data in a Flyout

Flyout é uma maneira de mostrar dados adicionais com um simples clique do mouse.

• Um flyout pode exibir informações extensas que não cabem no campo FlexCard padrão.

• Um flyout pode exibir informações sobre child records, como casos abertos relacionados a
uma conta específica.

Existem três :pos de Flyout


• Child FlexCard
• OmniScript
• Custom Lightning web component (LWC)

⚠ Os Flyouts são criados com o elemento Ac:on selecionando o Ac:on Type como Flyout.

Setup External Data

Usar uma API meteorológica é uma óQma maneira de praQcar a obtenção de dados por meio de
uma API da web.

No painel de Setup do FlexCard configure o Type Data Source, busque pelo Name da API criada e
preencha o Input Map.

⁃ O Input Map determinar quais informações são enviadas entre as ferramentas.


Na image acima, o KEY "AccountId" tem o VALUE "{recordId}", tendo com objeQvo, especificar
qual conta deverá ser acessada.

O VALUE "{recordId}" seria subs:tuído pelo ID real da conta durante a execução do processo de
integração.

🔁 Repeat Records

Permite exibir repe:ções de registros ou dados.

Essa funcionalidade é usada para mostrar uma lista ou tabela com múl:plos registros, onde cada
registro é exibido de forma repe:da de acordo com os dados disponíveis.

⚠ Repeat Records é habilitado by default.

Exemplo:

FlexCard recebendo Data Source de Integra:on Procedure e “REPEAT OPTIONS” selecionada.


Em Preview é possível ver a tabela cinco vezes para os 5 dias que você inseriu no Input Map do
Data Source.
Após desmarcar a opção “REPEAT OPTIONS” é possível observar apenas um Datatable.

OmniScript Support

A:ve o recurso OmniScript Support quando o FlexCard for interagir com um OmniScript.
🏋 Pra:que:

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Work_With_Child_FlexCards.
pdf?_ga=2.206321557.781961959.1684786615-242827117.1655918874

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Build_a_FlexCard_with_Exter
nal_Data.pdf?_ga=2.172841765.781961959.1684786615-242827117.1655918874

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Add_FlexCard_States_and_C
ondiQons.pdf?_ga=2.180625953.704177184.1685294552-242827117.1655918874

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_AcQvate_and_Publish_FlexCa
rds.pdf?_ga=2.194714155.781961959.1684786615-242827117.1655918874
OmniStudio Integra3on Procedures
Processos declara:vos Server-side que executam várias ações em uma única chamada do
servidor.

⚠ Server-side: É onde a lógica do sistema é implementada e os dados são armazenados.

• Declara:ve: Usa drag-and-drop elements para construir a estrutura do processo.


• Server-side processing: Permite um desempenho mais rápido, porque o servidor é mais
rápido que o cliente no processamento de dados.
🔎
h€ps://help.salesforce.com/s/arQcleView?id=ind.doc_gen_client_side_server_side_docgen_comp
ared_392343.htm&type=5

• Mul:ple ac:ons in a single server call: Ao executar várias ações em uma única chamada
do servidor, os procedimentos de integração evitam viagens de ida e volta desnecessárias entre o
cliente e o servidor.

⚠ Os procedimentos de integração podem ler e gravar dados do Salesforce e de sistemas


externos (usando REST) e podem chamar o código Apex.

É possível mesclar a saída para várias APIs para buscar ou enviar dados, realizar cálculos em
várias etapas ou até mesmo orquestrar fluxos de trabalho complexos.

Exemplo:

Você pode criar uma Integra:on Procedures chamada "Processar Pedido".

Nesse procedimento, você pode chamar as APIs do PayPal, Stripe e PagSeguro para obter as
informações do pagamento.

🔴 Quando Usar Procedimentos De Integração⁉

➡Access and transform data from third-party sources: Obter informações de diferentes fontes
externas, como APIs de terceiros, bancos de dados de outras empresas ou serviços de
armazenamento em nuvem.
➡No user interac:on is required:

Ações que não exigem a intervenção ou entrada direta do usuário. AutomaQza o processo sem
depender de ações manuais do usuário.

➡Moving the workload from client to server is preferable: Em vez de executar o


processamento no disposi:vo do usuário/cliente, você move essa carga para um servidor
remoto. Isso permite que o servidor execute as operações de maneira mais eficiente.

🛠 CREATE INTEGRATION PROCEDURES

Para criar um procedimento de integração do OmniStudio, você deve nomeá-lo, configurá-lo,


definir sua lógica e visualizar como ele é executado.

1. Clique no menu suspenso


2. Selecione Integra:on Procedures
📝 PROPERTIES INTEGRATION PROCEDURE

• Integra:on Procedure Name — Defina o Nome da sua integração.


• Type and SubType — Define a iden:dade única do Procedimento de Integração

⚠ só pode ter uma Integra:on Procedure com o mesmo Type and SubType a:vos a qualquer
momento.

• Descrip:on — Descrição geral do Procedimento de Integração.


⚠ Na List View da página inicial do IntegraQon Procedure é mostrado o Type/SubType, name e
descrip:on.

✏ IntegraEon Procedure Designer

O Integra:on Procedure Designer é dividido em três partes:


1. Available Components Panel
2. Structure Panel
3. Preview Pane

🔴 1. Available Components Panel

O painel Available Components contém elementos Groups and Ac:ons.

Os elementos do procedimento de integração trabalham nos bas:dores (Back-end) não existe


elementos para interação do usuário.

➡ Groups

Permite agrupar etapas relacionadas como uma unidade dentro de um bloco.


Element Func:on Exemplos
Cache Block - Salva a saída das etapas dentro Você pode ter um bloco de cache
dele em uma sessão ou cache para armazenar temporariamente
organizacional para recuperação os detalhes do usuário atualmente
rápida. logado. Dessa forma, quando um
- Armazena dados acessados usuário solicitar informações sobre
com frequência e atualizados sua conta repeQdamente durante
com pouca frequência. uma sessão, o sistema pode buscar
- Permite atualizações de dados esses detalhes do cache em vez de
sem cache. fazer uma consulta ao banco de
- Permite que diferentes dados dados a cada vez, o que melhora o
em cache expirem em desempenho.
momentos diferentes.
Condi:onal Block (este é - Executa um conjunto de ações Imagine que você esteja
o Qpo de bloco mais somente se uma condição desenvolvendo um fluxo de trabalho
básico.) especificada for verdadeira. Caso para um formulário de inscrição em
contrário, ele pode tratar as um evento. Um bloco condicional
etapas dentro dele como uma pode ser usado para verificar se a
série de alterna:vas idade do parQcipante é maior que
mutuamente exclusivas, onde 18 anos. Se a condição for
apenas uma das opções será verdadeira, o fluxo pode conQnuar
escolhida e executada com base para o próximo passo de registro.
na condição avaliada. Caso contrário, o bloco condicional
- Oferece suporte a fluxos de pode redirecionar o fluxo para uma
trabalho de ramificação, nos etapa de mensagem informando
quais é possível criar diferentes que a inscrição é permiQda apenas
caminhos de execução com base para maiores de 18 anos.
em condições específicas. Esses
fluxos de trabalho funcionam de
maneira semelhante a exibições
condicionais em um OmniScript,
permiQndo que o sistema
direcione o fluxo com base em
critérios determinados.
Loop Block - Permite percorrer cada item Suponha que você tenha uma lista
em uma matriz de dados, de produtos em um sistema de
permiQndo que as ações dentro comércio eletrônico e queira
dele sejam repe:das para cada calcular o preço total de cada
item, evitando a necessidade de produto com base em sua
criar elementos de ação quanQdade. Você pode usar um
separados para cada item bloco de loop para iterar sobre a
individualmente. lista de produtos e mulQplicar a
quanQdade pelo preço unitário de
cada produto. Dessa forma, as
mesmas ações são executadas
repeQdamente para cada item da
lista.
Try-Catch Block - Permite “tentar” executar as Digamos que você esteja
etapas dentro do bloco e, em desenvolvendo uma integração com
seguida, “pegar” o erro se uma um serviço de pagamento. Em um
etapa falhar. bloco try-catch, você pode tentar
- Retorna a saída especificada ou fazer uma chamada para processar o
chama uma classe Apex se uma pagamento e, em caso de falha,
etapa dentro dela falhar. capturar a exceção e lidar com ela
adequadamente. Por exemplo, você
pode exibir uma mensagem de erro
para o usuário ou registrar os
detalhes do erro em um log para fins
de depuração.

⚠ Todos os element Block têm uma propriedade em comum - “Execu:on Condi:onal Fórmula.
• Se esta fórmula for avaliada como verdadeira ou não for definida, o bloco será executado.
• Se for avaliado como falso, o bloco será ignorado.

⚠ É possível aninhar blocos dentro de outros blocos.

Exemplo:

Aninhar um Loop Block dentro de um Try-Catch Block ou Cache Block.

➡ Ac:ons

Os Ac:on elements são blocos de construção essenciais de todos os procedimentos de


integração. Essas ações podem definir valores de dados, executar funções, chamar DataRaptors,
invocar classes Apex, enviar e-mails, invocar endpoints REST, executar outros

⚠ Você também pode usar blocos para agrupar ações para execução condicional.
Element Func:on
Batch AcQons Execute um trabalho agendado.
CalculaQon AcQon Chamar uma ação de cálculo. - Pode exigir um
DataRaptor Transform.
DataRaptor Extract AcQon Chame um DataRaptor Extract.
DataRaptor Post AcQon Chame um DataRaptor Post.
DataRaptor Transform Chame um DataRaptor Transform.
AcQon
DataRaptor Turbo AcQon Chame um DataRaptor Turbo.
Delete AcQon Exclua registros do Salesforce
DocuSign Envelope AcQon Envie e-mails DocuSign para assinatura.
Email AcQon Preencha e envie e-mails.
IntegraQon Procedure AcQon Chame um IntegraQon Procedure.
List AcQon Mesclar listas.
Matrix AcQon Chame uma Matriz de Cálculo.
Remote AcQon A maioria das coisas que você pode fazer com uma classe
e um método do Apex. - Pode exigir um DataRaptor
Transform.
Response AcQon Passe os dados de volta para o objeto de inicialização
HTTP AcQon Obtenha, salve ou exclua dados por meio de uma API da
web. Métodos: GET, POST, DELETE, PUT
Set Values Definir valores padrão. Execute transformações simples,
funções e mapeamento.

Data Input and Data Output

⚠ Data source determina qual elemento você usa.

➡ Data Input

Data Input Source Use este Integra:on Procedure Ac:on Element


Salesforce Org DataRaptor Extract AcQon or DataRaptor Turbo AcQon
API HTTP AcQon
Qualquer coisa que o Apex possa Remote AcQon
acessar
➡ Data Output

⚠ O Response Ac:on element é exclusivo do Procedimento de Integração.

A Response Ac:on finaliza um Procedimento de Integração e retorna os dados para a en:dade


que o chamou.

Data output Source Use este elemento de ação do procedimento de


integração
FlexCards ou OmniScripts Response AcQon

Salesforce Org DataRaptor Post AcQon (To save data to Salesforce


Records)

Salesforce Org Delete AcQon (To delete data from Salesforce Records)

API HTTP AcQon

Enviar email Email AcQon

Modelo DocuSign DocuSign Envelope AcQon

🔴 2. Structure Panel

Drag and drop elements do painel Componentes disponíveis para o painel Estrutura.

⚠ Cada elemento tem um painel Propriedades com um link para editar JSON.
Exemplo:

Neste exemplo o componente Ac:on “DataRaptor Post Ac:on” encontra-se selecionado na


estrutura, sendo assim é possível visualizar a guia de propriedade do componente selecionado.

🔴 3. Preview

O painel de visualização permite inserir parâmetros e executar o procedimento de integração


para confirmar se foi configurado corretamente.

Exemplo:

Foi uQlizado AccountId como chave (Key) e o ID de uma conta existente como valor (Value).

Os dados retornados em “Response”, são os dados puxados do ID solicitado.


⚠ Neste exemplo os dados estão sendo puxados de um DR (DataRaptor Turbo) e os parâmetros
são definidos na propriedade do componente.
Para que seja possível visualizar o que está sendo integrado e retorna os dados para a en:dade
que o chamou.

UQlizamos o componente “Response Ac:on”

Em suas propriedades é possível mencionar o nome do DR em que estamos extraídos os dados e


preencher o campo “Send JSON Path” com o nome do DataRaptor.

🛑 Errors/Debug Output
🔽 Debug Log

Ajuda a iden:ficar quaisquer problemas com a saída e a entrada de cada elemento.

Na imagem abaixo é possível visualizar a Resposta de depuração completa “Debug ResponseFull”

É possível visualizar todas as etapas.


🏋 Pra:que:

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Build_Simple_IntegraQon_Pr
ocedures.pdf?_ga=2.124719562.1730121652.1686079454-242827117.1655918874

📟 OmniStudio Data Tools and External Data

Dados externos referem-se a todos os dados que estão fora do ambiente do Salesforce em uma
organização.

Quando você precisa acessar informações que não estão armazenadas no Salesforce, é
necessário u:lizar uma fonte de dados externa.

Fontes de dados externas incluem:

• Legacy data sources

⁃ Referem-se a sistemas ou tecnologias mais an:gas que foram u:lizadas para armazenar e
gerenciar dados antes da implementação do Salesforce.

⁃ Esses sistemas podem incluir bancos de dados locais, planilhas, sistemas de arquivos,
entre outros. Ao integrar dados legados ao Salesforce, é possível aproveitar os dados existentes e
torná-los acessíveis.

• On-premises (on prem) data sources

⁃ Referem-se a sistemas ou bancos de dados que estão instalados e hospedados


internamente em uma infraestrutura própria da organização, em vez de estarem na nuvem.

⁃ Esses dados podem ser armazenados em servidores locais, data centers privados ou em
outros disposi:vos de armazenamento ƒsicos.
• API integra:ons

⁃ São uQlizadas para conectar o Salesforce a outras aplicações, sistemas ou serviços


externos. As APIs permitem que diferentes plataformas troquem informações e compar:lhem
dados de maneira segura e controlada.

• Other third-party data and applica:ons

⁃ Essa categoria inclui qualquer outra fonte de dados ou aplica:vo de terceiros que não se
enquadre nas categorias mencionadas anteriormente.

🌀 FLUXO DE DADOS PARA EXTRAIR DADOS EXTERNOS

🔎 A Explicação do fluxo uQliza o Client-side (Weatherbit.io) para buscar dados meteorológicos.

⚠ IntegraQon Procedures são processos criados em Server-side.

Entenda como funciona o fluxo de dados de um FlexCard ou OmniScript para um Procedimento


de Integração.

Um FlexCard ou OmniScript envia o parâmetro de AccountId para IntegraQon Procedure.

O procedimento de integração passa o AccountId para um elemento DataRaptor Extract Ac:on


que extrair o código postal da conta do Salesforce e retorná-lo ao Integra:on Procedure.
É usado um elemento SetValues para guardar uma Chave de API.

Este SetValues compar:lha a API Key com dois elementos HTTP Ac:on.

DataRaptor Extract AcQon compar:lha o código postal da conta com os dois elementos HTTP
Ac:on.

Os dois elementos HTTP Ac:on enviam o código postal da conta (a localização da conta) e a API
Key para o site ⚠.

Uma ação recebe um JSON com o clima atual (Current JSON) e o outro recebe um JSON com 5 dias
de dados de previsão do tempo (Forecast JSON).
Após pegar o JSON de “Current” e “Forecast” os dados são enviados para um DataRaptor
Transform, que corta e transforma os dados, retornando apenas um JSON selecionado.

Com os dados JSON selecionado, está informação é passada ao elemento Response Ac:on, que
retorna os dados selecionados para o FlexCard ou OmniScript que chamou o Integra:on
Procedure.

🏋 Pra:que:

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Extract_External_Data_with_
an_IntegraQon_Procedure.pdf?_ga=2.125147850.1730121652.1686079454-
242827117.1655918874
h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Get_and_Transform_Externa
l_Data.pdf?_ga=2.158111226.1730121652.1686079454-242827117.1655918874

OmniScripts

Um OmniScript é uma interação guiada que é configura para guiar os usuários por meio de
processos de negócios complexos.

Creat OmniScript

1. Clique no menu suspenso


2. Selecione OmniScripts
📌OmniScript Unique

➡ O “Name” de um OmniScript NÃO precisa ser exclusivo em sua organização.

O que torna um OmniScript único é o TYPE, SUBTYPE, AND LANGUAGE eles se combinam para
criar um iden:ficador exclusivo que se torna o nome de um componente da Web Lightning do
OmniScript compilado.

Exemplo:

Type=account,
SubType=Create
Language=English

Gera um LWC chamado accountCreateEnglish

Apenas UM OmniScript a:vo pode ter o mesmo :po, sub:po e idioma a qualquer momento.

⚠ Embora não seja obrigatório, é recomendável que o Type do OmniScript comece com uma
letra minúscula.

⁃ Descrição para seu OmniScript é opcional.


✏ OmniScript Designer

O OmniScript Designer permite criar a estrutura/web forms dinâmicos adicionando, movendo e


configurando elementos em uma tela.

Sua interface drag-and-drop tem a edição WYSIWYG, a mesma uQlizada em flexCard.

• WYSIWYG = (o que vc vê, é o que você obtém)


• WYSIWYG = (what you see is what you get)

Header (1)

O cabeçalho é onde você visualiza os metadados do seu OmniScript da seguinte forma:

🟦 Visualize os metadados sobre o seu OmniScript como Type, SubType, Version, Language, and
Ac:va:on status.

🟥 Execute ações relacionadas ao seu script usando naviga:on bar.

⚠ A barra de navegação encontra-se dentro do Header.


AcEons navigaEon bar (2)

Na barra de navegação de ações no cabeçalho é possível:

• Alterne entre as visualizações Design e Preview.


• Crie uma New Version e Ac:ve ou desa:ve a versão atual.
• Edite as configurações básicas.
• Export seu OmniScript.
• Obtenha instruções de lançamento.

NavigaEon panel (3)

O painel de navegação tem dois :pos de visualização, sendo:

⁃ Tree View

⁃ Slide View

• Tree View

Use a guia Tree View para obter uma visão detalhada da estrutura do script.

Exemplo:

Quando arrastamos os elementos OmniScript para tela, é possível visualizar sua estrutura com a
guia Tree View.
Neste exemplo, é possível observar todos os elementos que estão sendo usado no STEP1 e de
forma estruturada.

Use a Tree View para acessar etapas ou elementos ina:vos.

⚠ Quando clicamos em cima de cada elemento, a propriedade do elemento é aberta.

• Slide View

Use Slide view para uma visualização de alto nível da estrutura de scripts grandes e complexos.

Exemplo:

Neste exemplo é possível ver o STEP1 de forma completa, sem mostrar detalhes de sua estrutura.

⚠ Clique no slide para abrir o painel Propriedades de uma etapa ou ação, existente.
CANVAS

🔎 OmniScripts têm arquitetura modular

Crie seus scripts arrastando elementos do painel Build para a tela.

Na tela é possível preencher:

• Theme: Visualize seu OmniScript com um tema Lightning ou Newport.

O Newport Design System (NDS) inclui um conjunto completo de es:los globais personalizáveis e
é uma estrutura CSS.

• Hide Condi:onal Elements: Permite ocultar elementos ou grupos de elementos com base
em determinadas condições.

Isso significa que, se uma determinada condição for atendida, os elementos associados serão
ocultados na visualização do OmniScript.

⚠ Os elementos condicionais são marcados com um ícone de olho amarelo.

🛠 Build Painel

Construa seu Omniscript dragging elements para a tela.

Esses elementos são colocados em uma sequência específica para o fluxo de trabalho.

Os elementos do OmniScript são agrupados por :po, e cada um deles possui configurações que
devem ser definidas adequadamente.
➡ ELEMENTS ACTIONS

Aciona outras ferramentas para executar diversas ações: get or save data, calculate, send an
email e assim por diante.

🔎 Integra dados de várias fontes (Salesforce ou terceiros), manipula os dados e os envia de volta à
sua fonte.
OMNISCRIPT ACTION ELEMENTS

• CalculaQon AcQon:

• DataRaptor Extract Ac:on: Obtenha dados de um ou mais registros do Salesforce.

• DataRaptor Post Ac:on: Atualize os dados em um ou mais registros do Salesforce.

• Integra:on Procedure Ac:on: Chame uma série de ações.

• HTTP Ac:on: Obtenha, salve ou exclua dados por meio de uma interface de programação
de aplicaQvo (API) da Web.

• Email Ac:on: Preencha e envie um e-mail como parte de uma interação.

• DocuSign Envelope Ac:on and DocuSign Signature Ac:on: Envie e-mails DocuSign para
assinatura ou assine e-mails DocuSign.
• Navigate Ac:on: Envie o usuário de volta para uma página anterior após a conclusão da
interação.

⚠ Os elementos de ação de navegação não são executados no modo de visualização.

Você testa a ação de Navegação quando


você executa o OmniScript a par:r de um console.

➡ DISPLAY

Os elementos de exibição permitem exibir um contexto importante no fluxo de trabalho ou


ajudá-lo com o layout da página.

Line Break

• Permite criar uma quebra de linha para controlar o espaçamento na página.

Text Block

• Permite adicionar instruções, imagens e hiperlinks.

➡ FUNCTIONS ELEMENTS

Realiza cálculos no OmniScript, mostrar mensagens condicionais e fornecer geolocalização.


❓ Aggregate

• Usado para fins de agregação, como média ou soma de elementos.

Fórmula

Permite criar fórmulas ou expressões que u:lizam os valores fornecidos em diferentes campos
para realizar cálculos e obter um resultado desejado.

Exemplo:

Você esteja construindo um formulário para calcular o IMC (Índice de Massa Corporal) de uma
pessoa com base nos campos "peso" e "altura".

Você pode usar um elemento Fórmula ou Agregação para definir a expressão que realiza o
cálculo do IMC.

Exemplo de como poderia ser definida essa expressão:

❓%IMC% = %PESO% / (%ALTURA% * %ALTURA%)


Essas expressões podem usar operadores matemá:cos, operadores lógicos, funções e constantes
para realizar cálculos e avaliar condições.

✏ Constantes são valores fixos e imutáveis, que representa informações está:cas e conhecidas.

Ao contrário das variáveis, que podem ter seus valores alterados durante a execução.

Tipos de dados e constantes suportados pelos elementos Formula and


Aggregate:

📍 OmniScript elements and JSON nodes

Acessa campos e nós JSON específicos usando a sintaxe

%NOME_DO_CAMPO% ou %NOME_DO_NÓ_JSON%.

Por exemplo, %IDADE% pode representar o valor de um campo chamado "IDADE" em seu
formulário.

📍 Numbers and integers:

Realizar operações matemá:cas básicas, como addi:on (+), subtrac:on (-), mul:plica:on (*) e
division (/), com números.

Por exemplo, 5 + 3.145 é uma expressão válida que resulta em 8.145.

📍String literals wrapped in quotes:

Usa strings para combinar texto, uQlizado aspas ‘’.

Por exemplo, 'ABC' + 'DEF' é uma expressão que resulta em 'ABCDEF'.


📍Booleans:

Usar valores booleanos, como true ou false, e operadores lógicos, como && (e), || (ou) e !
(negação), para avaliar condições e tomar decisões em suas expressões.

📍Arrays:

As arrays armazenam e manipular conjuntos de valores relacionados.

São coleções de valores, usando colchetes [ ] para envolver os elementos.

Nesse exemplo, temos uma matriz que contém os números de 1 a 5. Os valores são separados
por vírgulas e estão dentro dos colchetes [ ] para indicar que se trata de uma array.

[1, 2, 3, 4, 5]

Nesse caso, a array [ "Opção A", "Opção B", "Opção C" ] representa as opções disponíveis para
um campo de seleção múl:pla, em que o usuário pode selecionar.

Opções: ["Opção A", "Opção B", "Opção C"]

📍 Null:

O "Null" representa um valor nulo ou ausente.

Indica que um campo pode não ter um valor atribuído ou pode ter um valor vazio.

➡ Quando se diz que um campo pode não ter um valor atribuído, significa que nenhum valor foi
especificado ou inserido nesse campo.

Exemplo:

• Field "Name": [sem valor atribuído]

➡ Quando se diz que um campo pode ter um valor vazio, significa que um valor foi atribuído a
esse campo, mas o valor atribuído é considerado vazio.
Exemplo:

• Field "Name": " "

Nesse exemplo, o campo "Nome" tem um valor atribuído, mas esse valor é composto apenas por
espaços em branco.

🔎 Lista de funções disponíveis: Funções do OmniScript

Messaging

UQlizado para exibir mensagens ou no:ficações durante a interação do usuário com o formulário.

Ele permite que você exiba mensagens de comentários, requisitos, sucesso ou aviso para orientar
o usuário e fornecer informações relevantes durante o preenchimento do formulário.

Exemplo:

Exibir mensagens de sucesso quando uma ação é concluída com êxito ou suponha que você tenha
um campo chamado "Idade" e deseja exibir uma mensagem de aviso se a idade for inferior a 18
anos.

Nesse caso, a expressão de validação pode ser algo como: ‘%IDADE% < 18’.

➡ GROUPS

Use esses elementos para agrupar itens.


- Ac:on Block

Execute várias ações do OmniScript de forma assíncrona, agrupando-as em um bloco de ação.


As ações dentro do bloco de ação são executadas em paralelo e herdam as configurações do
bloco de ação.

- Block

Combine grupos lógicos de elementos em uma etapa OmniScript usando um elemento Block.

- Edit Block

Crie, edite e exclua vários registros externos ou do Salesforce em uma página usando o bloco de
edição.

Exemplo:

Se esQver coletando as informações de contato de uma conta, você pode adicionar um bloco de
edição ao seu OmniScript para permiQr que os usuários adicionem um registro para cada contato.
- Radio Group

O Radio Group do OmniScript permite que você crie e exiba perguntas em um formato de
quesQonário.

- Step

Ao criar a estrutura de script para um OmniScript, as etapas devem ser usadas para criar cada
"página" do formulário.

Os usuários podem navegar pelas etapas usando os botões Next e Previous.

É possível habilitar a validação de campo para uma Etapa, o que significa que todos os campos
obrigatórios na Etapa devem ser preenchidos para avançar.

• Type Ahead Block

Exibe uma lista de resultados quando um usuário começa a digitar em um campo de entrada.

Exemplo:

Um bloco Type Ahead pode ser usado com um DataRaptor para listar contas nos resultados.

Opções de dados para elementos de dados Type Ahead;

• DataRaptor Turbo AcQon


• DataRaptor Extract AcQon
• HTTP AcQon
• Remote AcQon
• IntegraQon Procedure
• JSON Data
• Google Maps Auto Complete

➡ INPUT ELEMENTS

Os elementos de entrada permitem a entrada do usuário.

Com esses Qpos de elementos, um usuário:

• Insere informações, como forma de pagamento, data de pagamento e valor do pagamento.


• Seleciona uma ou várias opções.
• Seleciona uma caixa de seleção.
• Insere ou exibe texto, um número de telefone, um endereço de e-mail ou um site.
➡ OMNISCRIPT ELEMENTS

Um elemento OmniScripts (Child OmniScript) chama um OmniScript para reu:lizá-lo dentro de


outro.

Isso permite que você crie OmniScripts “filhos” menores para funcionalidade comum.

Exemplo:

Mostrar campos específicos de contato ou conta.

⚠ Você pode ter apenas um nível de aninhamento.

Isso significa que, se você planeja reu:lizar um


OmniScript, não pode ter um OmniScript reu:lizável como parte da estrutura.

🛠 Setup Panel

A seção de configuração do OmniScript fornece várias opções de configuração que permitem


definir a aparência e o comportamento do OmniScript.
DEFAULT SETUP PROPERTIES

As propriedades de configuração padrão se aplicam a todo o OmniScript.

h€ps://help.salesforce.com/s/arQcleView?id=sf.os_omniscript_setup_reference_9056.htm&type=
5

• Currency Code

SubsQtua a moeda padrão de uma organização em um OmniScript definindo o código de moeda.


• Reusable

Permite que o OmniScript seja incorporado a outro OmniScript quando selecionado.

• Enable SEO

Disponibilize o URL do seu OmniScript para os mecanismos de pesquisa.

• Enable Unload Warning

Habilita um site de saída (Leave Site)? aviso a ser acionado ao recarregar, navegar fora ou fechar a
janela.

• Fetch Picklist Values At Script Load

Permite que os valores da lista de opções sejam recuperados no carregamento do script quando
marcado. Se desmarcada, as listas de opções serão buscadas no momento do design

• Console Tab Title

Aplica o texto à guia do console onde o OmniScript está incorporado.


• Console Tab Icon

Aplica um ícone à guia do console onde o OmniScript está incorporado.

⚠ As configurações do rótulo da guia do console e do ícone da guia do console no OmniScript


serão aplicadas apenas se o OmniScript possuir toda a guia ou subguia.

• Element Type To LWC Component Mapping

Permite que um componente da Web personalizado do Lightning subsQtua todos os elementos de


um Qpo de elemento específico.

• Element Type

Um Qpo de elemento específico, como texto ou bloco de edição, que é subsQtuído por seu
componente da Web do Lightning personalizado.

• Lightning Web Component

Ao criar um componente da Web do Lightning personalizado, é possível mapeá-lo para um


determinado :po de elemento.

Isso significa que você está associando o seu componente a um :po específico de objeto ou dado
no Salesforce.

Ao mapear o Lightning Web Component para um Element Type, você está definindo como e
onde esse componente será usado dentro do contexto.
• Seed Data JSON

A propriedade "Seed Data JSON" é usada para fornecer valores está:cos que são propagados
durante o carregamento inicial do OmniScript. Isso significa que esses valores são carregados e
preenchidos automa:camente quando o formulário é aberto pela primeira vez. Esses valores
geralmente não mudam ao longo do tempo e são úteis para fornecer informações padrão ou
predefinidas.

Existem duas maneiras de preencher os campos do OmniScript com dados: usando dados
fornecidos diretamente ou usando hidden nodes no JSON de dados do OmniScript.

1. Usando hidden nodes no JSON de dados:

• O JSON de dados do OmniScript é um formato estruturado usado para armazenar


informações que serão usadas no formulário. A propriedade "Seed Data JSON" é uma parte da
configuração do OmniScript onde você pode adicionar dados iniciais ao formulário.

• Ao adicionar nós ocultos ao JSON de dados, você pode definir valores que não são visíveis
inicialmente no formulário, mas que podem ser u:lizados posteriormente.

• Por exemplo, você pode adicionar um nó oculto chamada “idade” com o valor "30" no
JSON de dados do OmniScript.

• Esse valor não será visível no formulário, mas você pode usá-lo em fórmulas ou em outros
cálculos dentro do formulário.

2. Preenchendo campos com dados:

• Ao preencher os campos com dados, você insere os valores diretamente nos campos do
formulário. Por exemplo, se você tem um campo "Nome" no seu formulário OmniScript, você
pode preenchê-lo com um valor como "João Silva".
• Tracking Custom Data

Registre dados personalizados na tabela Vlocity Tracking Entry adicionando pares de Key/Value.

⚠ É necessário o Vlocity Tracking Service esteja a:vado nas Custom Se•ngs.

⚙ SETUP PROPERTY SECTIONS

As seções de propriedade de configuração incluem conjuntos de propriedades que se aplicam a


uma configuração específica.
SECTION DESCRIPTION CONFIGURATION
Step Chart Op:ons Oculte o gráfico de etapas ou escolha onde Opções do Gráfico de
exibi-lo em relação ao seu OmniScript. Etapas

Cancel Op:ons Habilite a funcionalidade de cancelamento e Configurar opções de


configure como o comportamento de cancelamento do
cancelamento é executado. OmniScript

Save Op:ons Permita que os usuários salvem um OmniScript Configurar opções de


para uso posterior. salvamento

Knowledge Op:ons Habilite a exibição de arQgos de conhecimento Integre o Salesforce


em ou ao lado de seu OmniScript. Knowledge com
OmniScript
Error Messages Defina uma mensagem de erro padrão ou Personalizar mensagens de
simplifique as mensagens de erro para os erro do OmniScript
usuários.

Messaging Framework Passe informações usando Pub/Sub, Estrutura de mensagens


windowPostMessage e Session Storage.

Styling Op:ons Personalize o design do seu OmniScript usando EsQlizar OmniScripts


folhas de esQlo personalizadas, tokens de
design e uma animação de rolagem.

🏋 Pra:que:

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Create_a_Simple_OmniScript
.pdf?_ga=2.26203325.1632278648.1687176936-242827117.1655918874

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Design_and_Build_a_Branchi
ng_OmniScript.pdf
h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Create_a_Type_Ahead_Block
_Element.pdf

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Validate_Data_and_Handle_
Errors.pdf

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Display_External_Data.pdf

DataRaptors

DataRaptor é uma ferramenta de mapeamento que permite ler, transformar e gravar dados do
Salesforce.

Pense em um sistema que permite o usuário preencher um formulário online, e após preencher o
formulário, esses dados são coletados e processados.

É aí que entra os DataRaptors do OmniStudio. Eles são uma parte do sistema que tem a função de
extrair e salvar os dados provenientes dessas interações digitais.

Existem quatro (4) :pos de DataRaptor:

1. Turbo Extract – Extrai/obtém dados de um único sObject


2. Extract – Extrai/obtém dados de um ou mais sObjects
3. Load – Salva/Gravar dados em um ou mais sObjects
4. Transform – manipule/ transforma quaisquer dados de dentro/fora do Salesforce.
⚠ (sObject) são Objetos Salesforce.

⚠ DataRaptors fornece dados do Salesforce para OmniScripts e FlexCards. Grava atualizações de


OmniScripts e FlexCards de volta para o Salesforce.

➡ DataRaptor Turbo Extract

Um DataRaptor Turbo Extract recupera dados de um único :po de objeto Salesforce com suporte
para campos de objetos relacionados. Os usuários podem filtrar os dados e selecionar os campos
a serem retornados.

Existe duas vantagens:

• Configuração mais simples


• Melhor desempenho em tempo de execução

⚠ DataRaptor Turbo Extract não oferece suporte a fórmulas, mapeamentos output, JSON
personalizado, default values, and transla:ons .
➡ DataRaptor Extract

O DataRaptor Extract lê os dados de um ou mais sObjects


e retorna os resultados em formatos JSON, XML ou custom. Os usuários podem filtrar os dados e
selecionar os campos a serem retornados.

⚠DataRaptor Extract suporta Fórmulas, default values, and transla:ons.

➡ DataRaptor Transform
O DataRaptorTransform permite que os usuários executem transformações de dados sem ler ou
gravar no Salesforce.

• Converta a entrada JSON em saída XML e vice-versa.


• Reestruture os dados de entrada e renomeie os campos.
• Subs:tuir valores em campos (todos os DataRaptors podem subsEtuir valores).

Use DataRaptor Transforms para as seguintes situações.

• Quando um OmniScript deve preencher um modelo DocuSign.


• Quando um OmniScript deve preencher campos em um documento PDF.

➡ DataRaptor Load

DataRaptor Loads aceitam dados em JSON, XML ou formatos de entrada personalizados e


gravam os dados em objetos do Salesforce.

Além disso, suporta Fórmulas e atributos; por exemplo, quando um usuário está executando um
OmniScript de tratamento de casos, termina de inserir a data e clica em Salvar, o script chama
um DataRaptor Load para registrar os dados inseridos.
📋 CREATE DATARAPTOR

1. Clique no ícone do Iniciador de aplicaQvos.


2. Pesquise OmniStudio e abra o aplicaQvo OmniStudio.
3. Clique no menu suspenso
4. Selecione DataRaptor
• DataRaptor Interface Name — Nome descriQvo de sua escolha (Para boas práQcas, comece
sempre com uma letra minúscula).

• Interface Type — Escolha o :po de DataRaptor (Turbo, Extract, Load, Transform)

• Input Type — Escolha o :po de dado de entrada (JSON, XML or Custom)


• Output Type — Escolha o :po de dado de saída (JSON, XML, SObject or Custom)

• Required Permission — Esta configuração limita quem pode executar este Procedimento
de Integração.

• Descrip:on - Descrição do DataRaptor

⚠ Dependendo do Epo de DataRaptor selecionado os campos de input Type e output Type tem
opções de seleção diferente.

➡ HEADER

No header do DataRaptor é possível observar todos os campos preenchidos ao criamos o DR,


sendo eles:

Interface Type
Input Type
Output Type
Required Permission
Descrip:on
UQlize os botões para realizar ações como:

Edit - Edite as informações de seu DataRaptor.


Quick Match - Mapeamento rápido de Input e Output.
Clone - Clone seu DataRaptor.
Export - Faça o Download do DataRaptor criado.

✏ DataRaptor Designer

No DataRaptor Designer é possível observar guias, nas quais especificam o que desejamos fazer.

⚠ As guias do DataRaptor mudam conforme seu :po.

Neste exemplo de Interface Type: Extract, temos as guias:

Extract
Fórmula
Output
Op:ons
Preview
🔽 Extract Tab

Na guia Extract, você especifica os objetos Salesforce que deseja que o DataRaptor consulte e os
filtros determinam os dados a serem retornados do objeto.

Clique em Adicionar etapa de extração e escolha o objeto de origem na lista suspensa de objetos.
(Select an Op:on) - (Neste caso, Account)

Extract Output Path: Nomeie o caminho de saída de extração para o objeto Salesforce que é sua
fonte de dados. (Neste caso, Account)

Isso define o primeiro nó dos valores do campo Extract JSON Path na guia Output.

Filter: É uma comparação usada para determinar quais dados devem ser lidos, o item filtro é um
operador de comparação.

O filtro mais básico é Id = Id, que define o Id do objeto para um parâmetro de entrada chamado
Id.

⚠ Na imagem abaixo, o item à esquerda é um campo do objeto de origem. O item no meio é um


operador de comparação. O item à direita pode ser um valor literal entre aspas, um parâmetro
de entrada, outro campo do mesmo objeto de origem ou um campo de um objeto de origem em
uma etapa de extração anterior.
⚠ é possível definir configurações de filtro adicionais opcionais, clicando na seta para baixo à
direita.

• AND: É um operador lógico que adiciona um filtro adicional a uma consulta e especifica
que ambos os filtros devem ser verdadeiros para que um registro seja incluído no resultado.

• OR: É um operador lógico que adiciona um filtro adicional a uma consulta e especifica que
qualquer um dos filtros pode ser verdadeiro para que um registro seja incluído no resultado.

• LIMIT: É um parâmetro usado para especificar o número máximo de registros retornados


em uma consulta. O valor permi:do para o limite varia de 1 a 2.000, ou seja, você pode definir
quantos registros deseja obter no resultado.

• OFFSET: É usado juntamente com o parâmetro LIMIT para especificar o primeiro registro
em uma página de uma recuperação de várias páginas.

Exemplo:

Você deseja obter 5 registros por página e começar a recuperar a par:r do primeiro registro.
Se você definir o LIMIT como 5 e o OFFSET como 0, a consulta retornará os primeiros 5 registros.
Agora, se você quiser recuperar a próxima página de resultados, definirá o OFFSET como 5, para
pular os primeiros 5 registros, e manterá o LIMIT como 5 para obter mais 5 registros. Essa
consulta retornará os registros da página 2, começando do sexto registro.

• ORDER BY: É usado para classificar os resultados da consulta pelo campo especificado.
• Você pode classificar os resultados por um único campo ou por vários campos,
especificando uma lista separada por vírgulas dos nomes dos campos na ordem de precedência.

Resultados por um único campo: ”FirstName"

Resultados por vários campo: “LastName,FirstName"

⚠Você pode opcionalmente especificar ASC ou DESC para uma classificação crescente ou
decrescente.

Exemplo:

Suponha que você tenha um objeto chamada "produtos" com os seguintes campos: "nome",
"preco" e "quan:dade". Você deseja obter os produtos ordenados pelo preço em ordem
crescente.

Nesse caso, o resultado da consulta retornará todos os registros do objeto "produtos", mas
ordenados pelo campo "preço" em ordem ascendente (ASC).

Se você quisesse obter os produtos em ordem decrescente, era só definir o filtro para ordem
descendente (DESC).

🔽Fórmulas Tab

Na guia fórmulas, você define as fórmulas. Ao definir uma fórmula, você mapeia a saída para
OutputJSON (para Extract e Transform) ou campo de objeto do Salesforce (para loads).

⚠ Apenas três >po de DataRaptor suporta Fórmula (Extract, Transform, and Load).
🔎 DataRaptor func:on

Uma função DataRaptor é uma equação que você usa para realizar;

• Manipulação de dados sobre data e hora

• Encadear texto juntos


• Determinar um resultado com base na lógica
• Realizar operações matemá:cas em números usando frações.

Tipos de funções disponíveis:

Tipo de Função inclui Exemplo


Numerical +, -, *, /, ^, ROUND MulQplique o número de textos enviados
pela taxa por texto para obter o valor total
de uma conta de telefone celular.
Aggregate SUM, AVG, MAX, and MIN Um cliente se inscreve em um plano de
pagamento de taxa fixa. O pagamento é
calculado com base no valor médio gasto nos
úlQmos 12 meses.
Logical Se o cliente for menor de 18 anos, retorne o
OR, AND, and IF valor “Menor”. Caso contrário, retorne um
valor de “Adulto”. Para fazer essa
funcionalidade funcionar, a função seria:
SE(IDADE<18, “Menor”, “Adulto”).
String CONCAT Exibir cidade e estado juntos, separados por
vírgula.
Date and Time AGE, AGEON, DATEDIFF TODAY() retorna a data de hoje e NOW()
retorna a data e hora atuais.
🔽 Output Tab

Na guia Saída, você mapeia os dados JSON do objeto de extração para o Output JSON.

• Clique em +. Um mapeamento vazio é adicionado à lista.

• No campo Extract JSON Path, escolha qual o campo deseja u:lizar dentro do objeto de
extração JSON.

• No campo Output JSON Path, especifique o caminho de saída desejado.

Na imagem abaixo o Extract JSON Path foi o Objeto Account do Campo Name (Account:Name)

O Extract JSON Path deste output será o Campo AccountName que trás o nome da conta.

⚠ Nomeie o Extract JSON Path na guia Extrat para o objeto que é sua fonte de dados (neste
exemplo Account). Isso define o primeiro nó dos valores do campo Extract JSON Path.
É possível configurar o :po de saída de dado que aquele campo Output tem.

No caso do exemplo acima para o campo Name o Tipo de dado a ser retornado é do :po “Text”.

🔎 Quick Match for Output Maps

Quando precisamos de uma grande quan:dade muito grande de campo, clicamos no botão Quick
Match.

Na caixa de diálogo Quick Match, os mapeamentos são exibidos na coluna Matched Mappings à
direita.
É possível mapear os campos da seguinte maneira:

• Drag and drop: Arraste o campo sObject de origem da coluna da esquerda para o campo de
output de desQno na coluna do meio ou vice-versa.

Exemplo:

Na imagem acima é possível arrasar a entrada Account Name para a coluna Output para a saída
AccountName.

⚠ Para um output que não tem campo sObject de origem, arraste o Output Mappings para a
coluna Matched Mappings.

• Pair: Selecione um campo de entrada e um campo de saída e clique em Pair.

• Auto Match: Clique em Auto Match para que os campos com nomes correspondentes
sejam combinados automa:camente.
🔽Op:ons Tab

Na guia Opções, você define opções para verificar permissões de acesso do usuário aos campos
antes de executar o DataRaptor.

Em Plakorm Cache Type existem dois :pos de cache:

1. Session Cache

Esse Qpo de cache é usado para armazenar dados relacionados a usuários e suas sessões de
login.

Os dados armazenados nesse cache são específicos para cada usuário e são descartados quando a
sessão do usuário é encerrada.

É úQl para dados personalizados ou específicos de cada usuário que precisam ser acessados com
frequência durante a sessão.
2. Org Cache

Esse Qpo de cache é usado para armazenar outros :pos de dados que não estão diretamente
relacionados a usuários ou sessões de login.

Os dados armazenados nesse cache são compar:lhados por todos os usuários da organização e
permanecem disponíveis mesmo quando a sessão de um usuário é encerrada.

É úQl para dados está:cos ou comuns que são acessados com frequência por vários usuários.

Em Time to Live in Minutes determinamos por quanto tempo os dados permanecem no cache
antes de serem considerados inválidos ou expirados.

Essa configuração define o tempo de vida dos dados em minutos, ou seja, após o período
definido, os dados serão descartados do cache e uma nova consulta ou acesso aos dados será
necessário para obtê-los novamente.

🔽Preview Tab

Na guia Visualização, é possível testa a saída do DataRaptor. Você fornece parâmetros de entrada
como Kay/Values e, em seguida, clica em Executar.

A saída de dados exibida na seção Response, em resposta só é exibido os outputs definidos na


guia Output.
Em Debug Log é possível observar a consulta realizar por Query conforme os parâmetros
configurados.

Query gerada no Debug Log:

SELECT primarycontac:d__r.email, primarycontac:d__c, name, id,


primarycontac:d__r.firstname, primarycontac:d__r.lastname FROM Account WHERE Id =
'001Hn00001uLsKdIAK' LIMIT 50000

🔎 Entenda

Selecione os campos primarycontac:d__r.email, primarycontac:d__c, name, id,


primarycontac:d__r.firstname, primarycontac:d__r.lastname De conta onde o ID é igual a
'001Hn00001uLsKdIAK’.

O ID é aquele passado nos parâmetros e os campos são o configurados no Output.

🛠 Design DataRaptor Turbo Extract

As guias dos DataRaptor são alteradas conforme seu :po, nos exemplos mostrados anteriormente
u:lizamos o DataRaptor Extract e agora falaremos sobre “Turbo Extract”.

No DataRaptor Turbo Extract temos três Tab/guias.

⁃ Extract
⁃ Op:ons
⁃ Preview
🔽 Extract tab

Na guia Extract, temos o campo Extract Output Path (1), que especifica o nó JSON de nível
superior na saída.Geralmente é o mesmo que o objeto de origem.

Um filtro consiste em três campos: O objeto de origem (2) (neste caso o Id da conta); um
operador de comparação (3) (igual a); e um valor literal entre aspas, um parâmetro de entrada
ou outro campo do mesmo objeto de origem (4) (neste caso u:lizamos um campo do objeto de
origem “AccountId”).
No campo Search Field(5) é possível selecionar ou escrever os campos que você deseja extrair do
seu objeto de origem.

⚠ O campo Id (6) é sempre incluído na saída, por isso possui um cadeado.

🔽 Op:ons and Preview tab

As guias OpQons e Preview não sofrem alterações, em Op:ons verificamos quais permissões de
acesso o usuário tem aos campos antes de executar o DataRaptor.
E na guia Preview, testamos a saída do DataRaptor. Fornecendo parâmetros de entrada como
Kay/Values e, executando.

O Response (2) retorna os campos definidos no “Source Field” conforme os parâmetros de


Kay/Values definidas. (Neste caso, a Key é AccountId e o Value é um RecordId de uma conta).

⚠Todos os registros no Salesforce têm um RecordId exclusivo. Para encontrar um RecordId para
uma conta, basta abrir qualquer registro de conta em sua organização e copiar o RecordId do URL

🛠 Design DataRaptor Load

Ao criar um DataRaptor Load, temos três Tab/guias em Designer.

⁃ Objects
⁃ Fórmula
⁃ Fields
⁃ Op:ons
⁃ Preview
⚠ As Guias de Fórmula e Op>ons tem as mesmas funcionalidades dos DataRaptor já vistos.

🔽Objects tab

A guia Objetos é onde você adiciona os sObject que deseja atualizar.

Clique em +Add Object para adicionar o sObject que deseja atualizar, é possível atualizar mais de
um objeto.

Na imagem acima foi uQlizado o Account Object.

🔽Fields tab

Na guia Campos, mapeie os dados de entrada para os campos do sObject que você deseja
atualizar, neste caso “Account”.
Para cada campo que deseja mapear, clique em + e defina estas configurações:

• Input JSON Path — especifica a chave do nó JSON, ou seja, o nome que será gravado
aquele valor vindo do objeto Salesforce.

• Domain Object Field — O campo no sObject que você deseja atualizar.

⚠ Para controlar como a atualização é realizada, você pode definir configurações opcionais:

• Is Disabled
• Upsert Key
• Is Required for Upsert
• Is Lookup
• Output Data Type
• Default Value

Os campos Upsert Key e Is Required for Upsert foram selecionados, por que o campo mapeado se
trata de um “Id”

• Upsert Key

Especifica que o campo é uma chave para o objeto Salesforce (Id de Account). O DataRaptor usa
o valor para determinar se ele atualiza um registro existente ou insere um novo.
• Is Required for Upsert

Impede que um registro de objeto seja atualizado se este campo for nulo.

⚠ É possível designar qualquer campo no mapeamento DataRaptor Fields como uma Upsert
Key marcando a caixa de seleção, o que significa que é necessário corresponder a um registro
exclusivo no Salesforce.

Na Field Tab é possível realizar o mapeamento dos campos pelo input JSON.

Determinei uma entrada, sendo “Name” e um valor “Laryssa” de uma conta existente.

{
"Name": "Laryssa",
"Phone": "(11) 98124-5054",
"Cep": "04832-180",
"Website": "www.consultantpass.com",
"Id": "001Hn00001uLsKdIAK"

}
Quando clicamos em “Quick Match” podemos relacionar as entradas aos campos do Objeto
Salesforce em que estamos atualizando, neste caso Account.

Selecione a entrada e o campo de saída correspondente em “Output Mapping” e clique em


“Pair”.

Cep:Account:BillingPostalState

Quando clicamos em “Auto Match” os campos de entrada são mapeados automa:camente as


saídas.
Quando salvamos é possível visualizar o mapeamento realizado.

⚠ não esqueça de mapear o Id da Conta.

🔽Preview tab

Na guia Visualização, é possível teste a saída do DataRaptor.

Em Input passe os parâmetros em JSON, no exemplo abaixo foi configurado todos os campos da
guia FIELDS.

{
"Name": "Laryssa",
"Phone": "(11) 98124-5054",
"Cep": "04832-180",
"Website": "www.consultantpass.com",
"Id": "001Hn00001uLsKdIAK"

Em Objects Created é mostrado um objeto Account relacionado ao Id configurado em Input.


Se clicarmos, somos redirecionados a conta relacionada ao Id de entrada, e nela podemos
observar os campos de dados JSON.

Observe o campo PHONE, se retornarmos ao nosso DataRaptor Load e alterar o valor da chave
“Phone” para: (99) 9999-9999 e executar, é possível ver a atualização no objeto Account.

🏋 Pra:que:

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Build_a_DataRaptor_Turbo_
Extract_and_a_DataRaptor_Load.pdf?_ga=2.171010656.1503207957.1688148490-
242827117.1655918874
🎛 Lightning Web Components

Lightning Web Components (LWC) é uma estrutura de interface do usuário (IU) que os
desenvolvedores do Salesforce usam para criar páginas e funções personalizadas na plataforma
Salesforce.

Os LWCs usam o padrão comum de JavaScript, HTML e CSS, para criar componentes para sua
organização do Salesforce.

✏ Custom Lightning Web Components

⁃ Neste exemplo criaremos um componente LWC de pesquisa de conta (Account Lookup).

Para criar um componente LWC personalizado uQlizaremos o VSCode, nele construiremos um


projeto.

No VSCode instalamos a extensão: Salesforce Extension Pack

Após instalação vamos cria um projeto, clique em Explore e pressione Ctrl+Shi•+P (Windows) ou
Cmd+Shi•+P (macOS).

Escreva na barra “SFDX: Create Project” e aperte enter.


Selecione “Standard” e aperte enter novamente.

Escreva o nome do projeto que estamos criando “CaseManagement” e aperte enter.

Na configuração do projeto, observe os arquivos à esquerda em Explorer.

Observe a mensagem de erro informando que ainda não temos uma organização conectado.

⚠Para que seja possível conectar a org é necessário instalar o Salesforce CLI:
hUps://developer.salesforce.com/tools/sfdxcli.

Abra a Paleta de comando: Ctrl+Shi•+P (Windows) ou Cmd+Shi•+P (macOS).

Escreva SFDX: Authorize an Org aperte enter


Selecione “Standard” e aperte enter novamente.

Para uma melhor praQca o nome para o Alias será o nome do nosso projeto e “LWC” ao final,
ficando “CaseManagemenLWC”. Aperte enter.

Uma nova janela de login do Salesforce é aberta, entre com a org desejada e permita o acesso.

Depois de auten:car no navegador, a CLI lembra suas credenciais. É possível vê uma mensagem
de sucesso no Output do VSCode.
Esta organização agora é a organização padrão para seu projeto.

Abra a Paleta de comando: Ctrl+Shi•+P (Windows) ou Cmd+Shi•+P (macOS).

Escreva na barra: “SFDX: Create Lightning Web Component”

Preencha o nome do LWC como “accountLookupLWC”, pressione entre e escolha o diretório,


aperte enter novamente.

Observe os arquivos HTML, JS e XMl no paínel á esquerda.


Abra o arquivo accountLookupLWC JS e cole o código abaixo no arquivo JS

⚠ (Cole o sobre o código existente no arquivo).

import { LightningElement } from 'lwc';


import pubsub from 'omnistudio/pubsub';
import { OmniscriptBaseMixin } from 'omnistudio/omniscriptBaseMixin';
import OmniscriptLookup from 'omnistudio/omniscriptLookup';
export default class accountLookupLWC extends OmniscriptBaseMixin(OmniscriptLookup) {
selectOp:on(event) {
let a€r = event.target.getA‚ribute('data-opQon-index');
const inputIndex = parseInt(a€r, 10);
this.setSelected(inputIndex).then(()=> {
pubsub.fire("newAccountSelected", 'data', {"AccountId": this.lookupValue});
});
this.hideOp:ons();
}
}
Em resumo, esse código define uma função de busca de contas. Quando uma opção é
selecionada, ele define o valor da conta selecionada e dispara um evento chamado
"newAccountSelected" usando o objeto pubsub.

Abra o arquivo accountLookupLWC.js-meta.xml e cole o código abaixo no arquivo XML

<?xml version="1.0" encoding="UTF-8"?>


<LightningComponentBundle xmlns="h€p://soap.sforce.com/2006/04/metadata">
<apiVersion>47.0</apiVersion>
<isExposed>true</isExposed>
<runQmeNamespace>omnistudio</runQmeNamespace>
<targets>
<target>lightning__AppPage</target>
<target>lightningCommunity__Page</target>
<target>lightningCommunity__Default</target>
</targets>
</LightningComponentBundle>
Esse código é um arquivo XML de configuração de um componente da Web do Lightning.

Ele define os metadados e as configurações para o componente chamado "AccountLookup".

Aqui está uma explicação dos elementos e atributos presentes no código:

• A linha <?xml version="1.0" encoding="UTF-8"?> é a declaração XML padrão, indicando a


versão do XML e a codificação uQlizada.

• O elemento <LightningComponentBundle> é o elemento raiz do arquivo XML e contém


todas as informações relacionadas ao componente.

• O namespace xmlns="h‚p://soap.sforce.com/2006/04/metadata" define o namespace


padrão para os elementos e atributos usados neste arquivo.

• <apiVersion> é um elemento que define a versão da API do Lightning Component Bundle


sendo usado. Neste caso, a versão é definida como "47.0".

• <isExposed> é um elemento booleano que indica se o componente está exposto para uso
externo. Neste caso, está definido como "true", o que significa que o componente pode ser
acessado e u:lizado em outros contextos.

• <run:meNamespace> define o namespace de tempo de execução para o componente.


Neste exemplo, o namespace é definido como "omnistudio".
• <targets> é um elemento que define os alvos em que o componente pode ser usado. Neste
caso, o componente pode ser usado em uma página de aplicaQvo
(<target>lightning__AppPage</target>), em uma página de comunidade do Lightning
(<target>lightningCommunity__Page</target>), e como um componente padrão em uma
comunidade do Lightning (<target>lightningCommunity__Default</target>).

⚠ O arquivo HTML não é necessário editar.

Depois de criarmos o nosso LWC vamos realizar o deploy para nossa org.

Abra a Paleta de comando: Ctrl+Shi•+P (Windows) ou Cmd+Shi•+P (macOS).

Escreva na barra: “SFDX: Deploy Source to Org”

Verifique no Output se o Deploy foi executado.

Atualize sua org, e verifique se o LWC se encontra na org.

Neste exemplo estou u:lizando um Omniscript com um Input Lookup que u:lizará o LWC
personalizado.

Nas propriedades do elemento Input Lookup é possível chamar o LWC que criamos no Campo
“LWC Componente Override”.
Para que seja possível visualizar o Componente LWC que criamos funcionando é necessário a:var
o Omniscript.

🏋 Pra:que:

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Design_and_Build_a_Case_
Management_OmniScript.pdf?_ga=2.95949982.307288174.1688737315-242827117.1655918874

h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Extend_a_Standard_Lookup_
Component_to_Display_Accounts_and_Cases.pdf?_ga=2.99096476.307288174.1688737315-
242827117.1655918874
h€ps://developer.salesforce.com/files/OmniStudio/pdf/OmniStudio_Build_OmniStudio_Compone
nts_for_Cases.pdf?_ga=2.86324378.307288174.1688737315-242827117.1655918874

Business Rules Engine

O Business Rules Engine é um conjunto de serviços, componentes e objetos que aplicam lógica
avançada e automa:zam a tomada de decisões.

O Existem três ferramentas principais: expression sets, decision matrices, and decision tables.

➡ Expression set

Um Expression set é uma série de regras. Cada elemento em um conjunto forma uma etapa
lógica que é executada sequencialmente.

Conjuntos de expressão avaliam condições, executam operações matemá:cas, consultam tabelas


e matrizes de decisão e executam várias transformações simultaneamente.

Você pode adicionar conjuntos de expressões a fluxos de trabalho criados com Flow, OmniStudio e
ferramentas de terceiros.
Exemplo:

Aqui está um exemplo de uma série de regras u:lizando a estrutura "caso" (case) em um
conjunto de expressões para um sistema de atendimento ao cliente:

Caso :po: "Suporte Técnico":

Regras:
• Realizar um diagnósQco remoto do sistema do cliente.
• Caso o problema seja idenQficado, agendar uma visita técnica.
• Caso o problema não possa ser resolvido remotamente, oferecer assistência via chat ou
telefone.

Caso :po: “Cancelamento de Serviço":

Regras:
• Verificar o moQvo do cancelamento informado pelo cliente.
• Caso seja um problema específico, oferecer uma solução alternaQva ou desconto.
• Caso o cliente insista no cancelamento, fornecer instruções para o procedimento de
cancelamento.

Nesse exemplo, foi avaliado o :po de solicitação do cliente e, em cada caso, o conjunto de
expressões determina o comportamento e as operações a serem realizadas sequencialmente.
➡Decision matrix

Uma matrix de decisão combina os valores de entrada com uma linha da tabela e
retorna os valores de saída da linha.

Você pode chamar matrizes de decisão diretamente dentro de conjuntos de


expressões ou usar matrizes de decisão como uma ferramenta autônoma.

As matrices de decisão são úteis para implementar regras complexas de maneira


sistemática e legível.

Suponha que você esteja construindo um sistema de recomendação de atividades


com base nas preferências do usuário.

Você criar uma matriz de decisão para determinar qual atividade recomendar com
base no estado de espírito do usuário (entrada) e no clima atual (entrada).

⚠ Os valores de entrada desta matriz é Estado de espírito e Clima.


Cada linha representa uma combinação de valores de entrada (Estado de espírito +
Clima). E a coluna de Recomendação indica a atividade recomendada para essa
combinação específica.

• Se o usuário estiver feliz e o clima estiver ensolarado, a matriz de decisão


indicará que a recomendação é um passeio no parque.

• Se o usuário estiver triste e o clima estiver chuvoso, a matriz de decisão


indicará que a recomendação é ler um livro.

Ao utilizar essa matriz de decisão você mapea os valores de entrada (estado de


espírito e clima) para obter recomendações de atividades (valores de saída)
correspondentes de forma rápida e eficiente.

➡Decision table

Uma tabela de decisão fornece vários resultados para o mesmo conjunto de


entradas.
Uma tabela de decisão é uma ferramenta utilizada para tomar decisões com base em
um conjunto de regras predefinidas. Ela mapeia combinações de entradas para
resultados correspondentes.

Vamos supor que uma empresa oferece descontos em produtos com base na
categoria e no preço do produto.

Regra 1:

3. Se Categoria for Calçados e o preço for <=R$500,00 o desconto será 5%.

Regra 2:

2. Se Categoria for Calçados e o preço for >R$500,00 o desconto será 10%.

Regra 3:

4. Se Categoria for Qualquer e o preço for >R$1.000,00 o desconto será 15%.

Dessa forma, a tabela de decisão permite determinar a porcentagem de desconto com


base nas características do produto, simplificando o processo de cálculo de descontos
de acordo com as regras estabelecidas.
🔎 Diferença entre Decision Matrix e Decision Table

A Decision matrix não possui uma lógica embutida para realizar cálculos ou
validações automáticas com base nos valores inseridos.

Ela é apenas uma representação visual dos dados, e qualquer cálculo ou validação
relacionada aos operadores ou regras deve ser feito externamente.

Diferente da Decision matrix, a Decision table é usada para criar regras utilizando
operadores.

Ela permite definir condições e ações associadas a essas condições por meio de
regras predefinidas.

Os operadores são utilizados para comparar os valores das entradas e determinar


se uma determinada regra deve ser aplicada ou não.
🔹 Principais benefícios do Business Rules Engine

2. Intuitive
3. Agile
4. Functional
5. Flexible
6. Transparent
7. Performant

O Business Rules Engine fornece soluções para todos os setores.

👩💻 Implantação do Business Rules Engine

Pra implantar o Business Rule Engine precisamos definir as regras usando o


Expression Set Builder.

Use-o para criar conjuntos de expressões definindo elementos e combinando-os em


uma sequência.
Esta tabela define alguns dos principais elementos:

🔹Aggregate

Executa funções de adição, média, máximo ou mínimo em várias execuções das


etapas anteriores do conjunto de expressões.

Exemplo:

Suponha que você tenha uma tabela chamada "Vendas" com as seguintes colunas:
"Produto", "Quantidade" e "Preço". Você pode usar o elemento "Aggregate" para
obter a soma total das quantidades vendidas e a média dos preços dos produtos.

🔹Aggregate Group

Executa as etapas anteriores do conjunto de expressões uma vez para cada conjunto de
valores de entrada e, em seguida, executa as etapas de Agregação.
Exemplo:

Continuando com o exemplo da tabela "Vendas", suponha agora que você queira obter
a soma total das quantidades vendidas e a média dos preços dos produtos para
cada categoria de produtos.

Nesse caso, você pode usar o elemento "Aggregate Group" para agrupar os dados
por categoria e, em seguida, calcular as estatísticas para cada grupo.

🔹Branch

Mostra vários caminhos condicionais que um conjunto de expressões pode assumir


com base na prioridade atribuída a cada caminho.

Uma ramificação pode ter até seis caminhos condicionais, incluindo o caminho
padrão.

Todos os caminhos não padrão requerem uma etapa de condição, que avalia os
critérios de entrada para o caminho.

🔹Business Elements

Executa a ação definida no elemento.

Os elementos de negócios são elementos customizados específicos para um


requisito de negócios do segmento de mercado.

Se os elementos de negócios estiverem disponíveis em sua instância e forem


específicos para o tipo de uso escolhido para o conjunto de expressões, esses
elementos serão listados no painel Elementos.
🔹Calculation

Executa uma ou mais funções ou operações matemáticas em variáveis, constantes


e números e retorna um único resultado.

🔹Condition

Permite que as etapas a seguir sejam executadas se sua expressão for avaliada
como verdadeira.

🔹Conditional Group

Executa um grupo de etapas se sua expressão de etapa de Condição for avaliada


como verdadeira.

🔹Lookup Table

Procura e corresponde valores de entrada a linhas em uma matriz de decisão ou


tabela de decisão e retorna a saída dessa linha.

🔹 Sub Expression

Executa um conjunto de expressões filho e retorna seus resultados ao pai.


Além desses elementos principais, os conjuntos de expressões contêm recursos
adicionais, como access control, versioning, e live simulation tool.

E possível salvar, copiar e reutilizar conjuntos de expressões, economizando tempo e


esforço para processos semelhantes.

3. Após definir uma série de regras, salve e ative seu Expression Set.

Agora é possível incorpora as regras em uma experiência guiada, usando OmniScript


ou Flow.

➡ Decision Explainer

O Decision Explainer é um serviço que fornece informações sobre por que uma regra
de negócios gera um resultado específico.

Vamos considerar um exemplo para ilustrar seu funcionamento:

Suponha que um aluno tenha feito uma inscrição em um curso e, ao receber a


confirmação de pagamento, percebe que o desconto aplicado na taxa do curso foi
menor do que ele esperava. O aluno está confuso e deseja entender o motivo por
trás desse desconto menor.

Nesse caso, o Decision Explainer entra em ação. Ele registra informações


detalhadas sobre a avaliação do aplicativo do aluno e o conjunto de expressões
usado para determinar o desconto aplicado.

O revisor do aplicativo pode acessar esses registros para analisar o histórico e


identificar exatamente como o desconto foi calculado.

O revisor pode examinar as regras, critérios e dados utilizados na avaliação do


aplicativo e, com base nessas informações, explicar ao aluno o motivo pelo qual ele
recebeu um desconto menor.

Essas informações detalhadas capturadas pelo Decision Explainer ajudam o revisor a


ter uma visão mais clara do processo de tomada de decisão e permitem explicar ao
usuário o motivo dos resultados obtidos.
Diferentes ferramentas de fluxo de trabalho disponíveis para chamar business rules.

🔹Salesforce Flow

Expression sets, decision matrices, and decision table estão disponíveis como ações
no Salesforce Flow.

🔹OmniStudio

OmniScripts e procedimentos de integração são os principais componentes do


OmniStudio

Adicione componentes de ação a OmniScripts e Integration Procedure para chamar


expression sets e decision matrices.
🔹Custom or third-party tools

Use as APIs do Connect para invocar expression sets, decision matrices, and
decision tables em fluxos de trabalho criados com ferramentas personalizadas ou de
terceiros.
OmniStudio Best Practices
➡ Pense em simplicidade e reutilização
• Configure e crie com recursos Salesforce padrão prontos para uso (OOTB)
sempre que possível e reutilize componentes sempre que possível. Considere o que
você já tem para atender aos requisitos do caso de uso.

5. Lembre-se de entender a escala da função que você está construindo – ela será
complexa, mas raramente usada ou será executada milhares de vezes por hora?
Quando se fala em dimensionar em quantidades de produção, significa que as soluções
devem ser capazes de lidar com volumes maiores de dados e transações.

Por exemplo, se você estiver desenvolvendo um processo de integração que será


executado milhares de vezes por hora em um ambiente de produção, é importante
garantir que ele seja eficiente e rápido o suficiente para lidar com essa carga de
trabalho.

• Não crie um DataRaptor ou procedimento de integração diferente para cada


OmniScript ou FlexCard. Ao construir um DataRaptor ou Procedimento de Integração,
considere mantê-lo o mais genérico possível, para que você possa reutilizá-lo mais
tarde.

📦OmniStudio: DevOps

São ferramentas utilizada pelos desenvolvedores para gerenciar e mover alterações


de componentes do OmniStudio entre ambientes.

🔽 O IDX Workbench

É um aplicativo de desktop que permite migrar OmniStudio DataPacks e metadados


do Salesforce.

As migrações são suportadas:

• De uma organização Vlocity para outra.


• De uma organização Vlocity para um repositório Git.

• De um repositório Git para uma organização Vlocity.

• Da biblioteca de processos Vlocity para uma organização Vlocity.

• De um arquivo JSON para um repositório Git ou uma organização Vlocity.

⚠ Quando você escolhe um componente para migração, o IDX Workbench garante


que seus componentes dependentes sejam incluídos.

Por exemplo, se você migrar um OmniScript que requer um DataRaptor, esse


DataRaptor será empacotado para migração com o OmniScript.

🔽 O IDX Build Tool

É uma ferramenta de linha de comando que faz tudo o que o IDX Workbench faz, mas sem uma
interface do usuário.

Cenários de migração suportadosl:

• Migração entre Organizações Vlocity:


Permite transferir OmniStudio DataPacks e metadados de uma organização Vlocity para outra.

2. Integração com Repositório Git:


Facilita a migração de dados para ou a parQr de um repositório Git, oferecendo uma abordagem
versáQl para controle de versão e colaboração em equipe.

4. Biblioteca de Processos Vlocity:


Suporta a migração direta da biblioteca de processos Vlocity para uma organização Vlocity,
garanQndo a consistência nos fluxos de trabalho.

3. Migração de Arquivo JSON:


Permite a migração de dados a parQr de um arquivo JSON para um repositório Git ou diretamente
para uma organização Vlocity.

⚠ Ao selecionar um componente para migração, o IDX Build Tool assegura que todos os
componentes dependentes sejam incluídos automa:camente.
Por exemplo, ao migrar um OmniScript que requer um DataRaptor, o DataRaptor é
automaQcamente empacotado para migração junto com o OmniScript.

Você também pode gostar