Criar a exibição do Mapa de contas e juntar tudo isso
Objetivos de aprendizagem
- Descrever os comandos da Salesforce CLI usados para sincronizar seu projeto com suas organizações temporárias.
- Descrever o comando da Salesforce CLI para criar um conjunto de permissões.
- Entender como criar um aplicativo usando componentes do Aura.
O que estamos criando?
Nessa etapa, criaremos os componentes finais do nosso aplicativo de geolocalização que reúnem todos os recursos. Criaremos um componente do Aura que visualiza os endereços de contas em forma de marcadores em um mapa. Além disso, criaremos uma guia personalizada que nos permitirá navegar até nosso aplicativo. Também vamos usar um conjunto de permissões para conceder aos usuários acesso ao aplicativo.
Criar o componente Account Map (Mapa de contas) do Aura
Esse componente usa o componente <lightning:map>
para exibir contas em um mapa.
- Crie o componente AccountMap na pasta
aura
.sf lightning generate component --name AccountMap --output-dir force-app/main/default/aura
- Abra
force-app/main/default/aura/AccountMap/AccountMap.cmp
, substitua o conteúdo pelo código a seguir e salve o arquivo.<aura:component> <aura:handler event="c:AccountsLoaded" action="{!c.onAccountsLoaded}"/> <aura:attribute name="mapMarkers" type="Map[]"/> <lightning:card title="Account Map" iconName="action:map"> <lightning:map mapMarkers="{!v.mapMarkers}"/> </lightning:card> </aura:component>
Esse componente escuta o evento AccountsLoaded e exibe os dados do evento como marcadores de mapa.
- Abra
force-app/main/default/aura/AccountMap/AccountMapController.js
, substitua o conteúdo pelo código a seguir e salve o arquivo.({ onAccountsLoaded: function( component, event, helper ) { var mapMarkers = []; var accounts = event.getParam( 'accounts' ); for ( var i = 0; i < accounts.length; i++ ) { var account = accounts[i]; var marker = { 'location': { 'Street': account.BillingStreet, 'City': account.BillingCity, 'PostalCode': account.BillingPostalCode }, 'title': account.Name, 'description': ( 'Phone: ' + account.Phone + 'Website: ' + account.Website ), 'icon': 'standard:location' }; mapMarkers.push( marker ); } component.set( 'v.mapMarkers', mapMarkers ); } })
A funçãoonAccountsLoaded
do controlador do lado do cliente transforma os dados do evento para o formato esperado pelo componente<lightning:map>
.
- Implante seu novo código na organização temporária.
sf project deploy start
Criar o componente do Aura de localizador de contas
Esse é o principal componente que usamos para exibir nosso aplicativo para usuários finais em páginas do Lightning, Salesforce Mobile e guias personalizadas. É também o último componente criado para esse projeto!
- Crie o componente AccountLocator na pasta
aura
.sf lightning generate component --name AccountLocator --output-dir force-app/main/default/aura
- Abra
force-app/main/default/aura/AccountLocator/AccountLocator.cmp
, substitua o conteúdo pelo código a seguir e salve o arquivo.<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes"> <lightning:layout horizontalAlign="space" multipleRows="true"> <lightning:layoutItem size="12" mediumDeviceSize="12" padding="around-small"> <c:AccountSearch/> </lightning:layoutItem> <lightning:layoutItem size="12" mediumDeviceSize="6" padding="around-small"> <c:AccountList/> </lightning:layoutItem> <lightning:layoutItem size="12" mediumDeviceSize="6" padding="around-small"> <c:AccountMap/> </lightning:layoutItem> </lightning:layout> </aura:component>
Esse componente é composto pelos outros componentes criados no decorrer do projeto. Dois recursos importantes da Estrutura de componentes do Lightning são o encapsulamento e a reutilização de componentes. Compor componentes específicos em um componente maior permite que você crie componentes e aplicativos mais interessantes.
- Implante seu novo código na organização temporária.
sf project deploy start
Criar a guia personalizada do localizador de contas
Uma maneira fácil de exibir componentes do Aura no Lightning Experience (formato para desktop) e no Salesforce Mobile é com uma guia personalizada. Depois dessa etapa, para acessar seu aplicativo, navegue até essa guia personalizada.
- Abra sua organização temporária.
sf org open
- Em Setup (Configuração), insira
Tabs
(Guias) na caixa Busca rápida e, em seguida, clique em Tabs (Guias). - Na seção Lightning Component Tabs (Guias de Componentes do Lightning), clique em New (Novo) e insira os detalhes:
- Componente do Lightning: c:AccountLocator
- Rótulo da guia:
Account Locator
(Localizador de contas) - Nome da guia:
Account_Locator
- Estilo da guia: Clique no ícone da lupa e selecione Map (Mapa) como ícone da guia.
- Descrição:
Custom tab for Account Locator.
(Guia personalizada do localizador de contas).
- Clique em Next (Avançar).
- Em Apply one tab visibility to all profiles (Aplicar uma visibilidade de guia a todos os perfis), escolha Tab Hidden (Guia oculta).
- Clique em Save (Salvar).
Criar um conjunto de permissões de geolocalização
Para controlar quem tem acesso ao aplicativo de geolocalização, crie um conjunto de permissões e dê a ele visibilidade para a guia Account Locator (Localizador de contas).
- Em Setup (Configuração), insira
Permission Sets
(Conjuntos de permissões) na caixa Busca rápida e, em seguida, clique em Permission Sets (Conjuntos de permissões). - Clique em New (Novo) e insira os detalhes:
- Rótulo:
Geolocation
(Geolocalização) - Nome da API:
Geolocation
(Geolocalização) - Descrição:
Grants access to the Account Geolocation app
(Concede acesso ao aplicativo Geolocalização de contas)
- Rótulo:
- Clique em Save (Salvar).
- Em Aplicativos, clique em Object Settings (Configurações de objeto).
- Clique em Account Locator (Localizador de contas).
- Clique em Edit (Editar).
- Em Tab Settings (Configurações da guia), selecione Available (Disponível) e Visible (Visível), e clique em Save (Salvar).
Em seguida, atribua o conjunto de permissões a você. Em uma etapa posterior, veremos como automatizar a atribuição de conjuntos de permissões usando a Salesforce CLI.
- Em Setup (Configuração), insira
Users
(Usuários) na caixa Busca rápida e, em seguida, clique em Users (Usuários). - Clique no usuário com nome completo
User, User
(Usuário, usuário) na tabela. - Clique em Permission Set Assignments (Atribuições de conjuntos de permissões).
- Na seção Permission Set Assignments (Atribuições de conjuntos de permissões), clique em Edit Assignments (Editar atribuições).
- Adicione o conjunto de permissões
Geolocation
(Geolocalização) à caixa Enabled Permission Sets (Conjuntos de permissões ativados). - Clique em Save (Salvar).
Caso você esteja se perguntando, User User (Usuário Usuário) é o nome completo padrão dado ao administrador do sistema em uma organização temporária. Se quiser um nome mais interessante, altere-o em Setup (Configuração).
A magia dos metadados: recuperar alterações no seu projeto
Até esse ponto do módulo, você trabalhou no projeto local e enviou metadados para a organização temporária. Nesta etapa, você fez algumas alterações diretamente na organização temporária. Agora vem a magia. Com um único comando, você recupera todos os metadados alterados na organização temporária para o projeto local.
Porém, antes de fazermos isso, convém configurar o arquivo .forceignore
para ignorar a sincronização de alguns metadados. Quando você criou a guia Account Locator (Localizador de contas) e atribuiu sua visibilidade a todos os perfis, o rastreamento automático de alterações na organização temporária detectou alterações nos perfis. Evidentemente, quando você extrair metadados da organização temporária para sincronizar com o projeto local, a CLI vai tentar extrair os metadados do perfil. Como os perfis não são relevantes para seu aplicativo de geolocalização e não precisam ser rastreados no repositório de controle de origem do projeto, precisamos dizer à Salesforce CLI para ignorar as alterações do perfil.
No diretório raiz do projeto de geolocalização, abra o arquivo .forceignore
e adicione **/profiles
como uma nova linha no arquivo e, em seguida, salve o arquivo. Seu arquivo .forceignore
deve ficar parecido com isso:
# List files or directories below to ignore them when running force:source:push, force:source:pull, and force:source:status # More information: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_exclude_source.htm # package.xml # LWC configuration files **/jsconfig.json **/.eslintrc.json # LWC Jest **/__tests__/** # Profiles **/profiles
Agora você está pronto para recuperar metadados. Na janela de comando, recupere as alterações feitas na organização teste com seu projeto local.
sf project retrieve start
O resultado do comando project retrieve start
fica mais ou menos assim:
Retrieving v58.0 metadata from test-t7e5za@example.com using the v58.0 SOAP API Preparing retrieve request... Succeeded Retrieved Source ================================================================================================================ | State Name Type Path | ─────── ─────────────── ───────────── ──────────────────────────────────────────────────────────────────────── | Created Account_Locator CustomTab force-app/main/default/tabs/Account_Locator.tab-meta.xml | Created Geolocation PermissionSet force-app/main/default/permissionsets/Geolocation.permissionset-meta.xml
Observe que nenhuma das alterações do perfil foi recuperada porque foram ignoradas em .forceignore
.
Validar seu aplicativo
Embora seja possível usar a mesma organização temporária utilizada durante o desenvolvimento para realizar testes, recomendamos que você sempre comece com uma nova organização temporária. Uma nova organização temporária garante que você externalizou corretamente todas as origens da organização.
- Crie uma nova organização temporária.
sf org create scratch --set-default --definition-file config/project-scratch-def.json --alias GeoTestOrg
- Implante sua origem e metadados locais em uma organização temporária.
sf project deploy start --target-org GeoTestOrg
- Atribua seu conjunto de permissões.
sf org assign permset --name Geolocation --target-org GeoTestOrg
- Carregue seus dados de exemplo na organização. Esses são os dados que você exportou de uma organização temporária diferente em uma unidade anterior.
sf data import tree --files data/Account.json --target-org GeoTestOrg
- Abra sua organização.
sf org open --target-org GeoTestOrg
- Teste a guia Account Locator (Localizador de contas) e verifique se ela funciona conforme o esperado. No App Launcher (Iniciador de aplicativos), encontre e selecione Account Locator (Localizador de contas).
Parabéns! Você criou e testou corretamente um novo aplicativo com organizações temporárias e a Salesforce CLI. Não se esqueça de adicionar tudo ao repositório de controle de origem!