Browsing category

Advanced

Grupos de Conjuntos de Permissões (Spring’20 release)

A release Spring’20 do Salesforce veio com uma nova função importantíssima, que facilitará (e muito) a gestão de permissões das orgs: os grupos de conjuntos de permissões. E este tema faz parte do teste de manutenção da certificação de Salesforce Admin Spring’20. De modo resumido, esta função serve para permitir que sejam criados e atribuídos à usuários, grupos constituídos por conjuntos de permissões (permission sets). Qual a vantagem em usar os Grupos de Conjuntos de Permissões? A vantagem em termos essa função disponível, é podermos criar os conjuntos de permissões (que já conhecemos – E caso não conheça, acesse nosso curso gratuito “Salesforce para Iniciantes”) e então, agrupá-los para constituirmos um grupo de permissões mais abrangente. Além disso, é possível “mutar” (leia retirar) permissões de conjuntos de permissões, para que o grupo não herde as permissões que não deva. Para isso, é preciso acessar a sessão de “Grupo de Conjunto de Permissões” nas configurações da org. E então, criar um “Muted Permission Set Group”. Caso de Uso Vamos usar um exemplo em que você seja administrador de uma org de uma empresa que possua VENDEDORES, PROMOTORES e GERENTES DE VENDA do refrigerante COPA. Suponha também que cada um dos 3 […]

Como testar queries de Objetos Externos

Todo desenvolvedor Salesforce sabe da importância das classes de teste, elas além de testarem se o que desenvolvemos está funcionando como esperado, precisamos também garantir que as classes tenham pelo menos 75% de cobertura conforme requerido pela Salesforce para subir um código para produção. O modelo de uma classe de teste costuma seguir uma receita muito simples, criar os dados para teste, chamar o método que queremos testar e verificar o retorno. Porém, para cobrir classes que fazem queries de objetos externos precisamos adaptar esse modelo um pouco, mas antes vamos entender um pouco o que são os objetos externos. O que são Objetos Externos Objetos externos são parecidos com os objetos customizados, porém eles são armazenados fora da sua ORG. Eles podem ser dados armazenados em outros sistemas como ERPs, CRMs ou até mesmo uma outra ORG Salesforce, a chamada integração Salesforce to Salesforce. Através da opção External Data Sources no Setup é possível configurar a fonte dos dados externos e fazer o mapeamento de tabelas para objetos e campos. A nomenclatura dos objetos externos apresenta o sufixo __x, porém os campos seguem o padrão com o final __c. Como usar os Objetos Externos Embora os objetos externos não […]

Removendo classes do APEX de produção

Se você trabalha em uma ORG do Salesforce por algum tempo, você provavelmente já precisou remover classes do APEX de produção, se não preciso parabéns, mas acredito que mais cedo ou mais tarde você vai precisar, então continue a leitura que um dia tenho certeza que essa dica lhe será muito útil :) Mas atenção, o conteúdo aqui apresentado pode afetar o funcionamento da sua ORG do Salesforce, tenha certeza de que tenha backup dos metadados que deseja remover e de fazer os testes prévios em uma Sandbox, siga por sua conta e risco. O problema Não é comum encontrarmos esse cenário, mas sim, eles ocorrem, eu mesmo já me deparei com ele em praticamente todas as ORGs do Salesforce que trabalhei, quando pegamos um projeto que já esta no meio do caminho, muitas vezes precisamos refatorar algumas classes, em algumas vezes abandonar a classe de vez (ou porque o nome não faz sentido para só refatorar ou porque aquela funcionalidade não tem mais sentido) e quando nos deparamos com esse problema descobrimos que metadados não podem ser renomeados, dessa forma a solução é a exclusão e criação de um novo, e ai uma nova descoberta, não podemos excluir uma […]

Salesforce Certification Days

A Salesforce incentiva e muito que as pessoas se capacitem, e uma forma de mostrar que você esta realmente pronto para o mercado é através de uma certificação, e pensando nisso a Salesforce esta realizando o Salesforce Certification Days, um evento que vai de 01 de abril de 2019 à 26 de abril de 2019, e não, não é uma piadinha de 1º de abril. O que é o Salesforce Certification Days de presente a Salesforce ainda vai te dar um Voucher de 70 dólares A Salesforce tem vários cursos online de preparação para certificações, e nesses dias você terá acesso a um webinário realizado por instrutores certificados e de forma 100% gratuita, e se não bastasse ter acesso a conteúdos exclusivos de forma gratuita, e de presente a Salesforce ainda vai te dar um Voucher (Cupom de desconto) de 70 dólares para ser usado nas certificações de 200 dólares, não é todo dia que ganhamos um desconto de 35%, não é mesmo? UPDATE: O Voucher vale para até 3 certificações, e ele expira em 30 de junho de 2019, não que você tenha que fazer a prova até lá, mas você tem que agendar a prova antes dessa data. […]

Estendendo componentes do Lightning

Se você já atuou em um grande projeto de Lightning, deve estar cansado de repetir o mesmo trecho de código toda vez que precisa interagir com uma Controller, não é mesmo? Então hoje quero te mostrar duas coisas legais, a primeira é o que o título do post diz, estender um componente do Lightning, e o que isso significa, isso significa que você pode aproveitar parte de um componente dentro de outro, mas fique tranquilo, isso fará sentido assim que começarmos a colocar a mão na massa, e segundo vamos fazer isso criando um componente que permitirá você fazer chamadas Apex com apenas 1 linha de código. Entendendo o problema Como eu disse antes, se você já trabalhou com grandes projetos em Lightning, muito provavelmente já precisou fazer uma chamada Apex para consumir dados do Salesforce, e se fez isso mais de uma vez, então você deve ter escrito o código abaixo algumas vezes, não é? var action = component.get(“c.getAccounts”); action.setParams(params); action.setCallback(this, function(response) { var state = response.getState(); if (state === “SUCCESS”) { var result = response.getReturnValue(); //do something with the result } else if (state === “INCOMPLETE”) { // wait, what? } else if (state === “ERROR”) { var […]

Salesforce SP Tour 2019

Reserve agora mesmo na sua agenda o dia 03 de abril de 2019, se você ainda não teve oportunidade de participar do Salesforce SP Tour eu fortemente recomendo que você vá, e se você já foi, com certeza sabe que não será um dia que passará em branco. Salesforce SP Tour Minha experiência dos anos anteriores já me diz que esse evento será incrível, se prepare para uma imersão de um dia inteiro, acompanhando cases de sucesso e novidades do mundo Salesforce, separe também um tempinho para visitar os stands do Salesforce, geralmente são focados em assuntos específicos, por exemplo, no ano passado visitei o stand de Marketing Cloud para tirar uma dúvida (Sim você também pode fazer isso lá), além dos stands de parceiros da Salesforce. O evento esse ano será em um local diferente do habitual, acredito que preparado para comportar o grande número de pessoas, ele será no Transamerica Expor Center, que fica na Av. Dr. Mário Vilas Boas Rodrigues, 38, zona sul de SP, se você não é de São Paulo, já recomendo procurar hotéis na região, porque a oferta e procura deve estar grande, vou deixar aqui em baixo um mapa do local do evento. Aprendizado […]

O que é um MVP Salesforce

A Salesforce iniciou o processo de nomeação dos MVP Salesforce, mas afinal o que é um MVP Salesforce e como eles podem te ajudar no dia a dia? O que é um MVP Salesforce os MVPs Salesforce são pessoas normais, apesar de parecer que eles tem super poderes Acredite, os MVPs Salesforce são pessoas normais, apesar de parecer que eles tem super poderes, o que eles tem mesmo é muita garra e força de vontade para se manter sempre atualizados e em busca de novos conhecimentos, junto a isso uma trajetória de vida e uma sede de compartilhar seus conhecimentos, ajudando todos da comunidade a abrir seus caminho e com certeza você terá um excelente MVP Salesforce.   Como faço para me tornar um MVP Salesforce Na verdade, não depende só da sua vontade para se torna um MVP Salesforce, além de muita dedicação para ajudar a comunidade é preciso participar de um processo de nomeação e através desse processo, ser indicado por usuários da comunidade ou funcionários Salesforce para então ser selecionado pela Salesforce a se tornar um MVP. E isso acontece todo ano, então uma vez MVP Salesforce é preciso manter-se ativo na comunidade para conseguir se “eleger” novamente […]

Melhore o desempenho usando o Platform Cache

Sempre que construímos grandes sistemas, o desempenho é um dos maiores vilões. As performances geralmente podem corresponder ao balanceamento de carga dos servidores, o tempo de resposta das páginas que construímos, e assim por diante! Quando trabalhamos na plataforma force.com, a maior parte desse trabalho pesado é cuidada pela própria plataforma, para o nosso alivio. No entanto, há certas coisas que podemos ajustar para melhorar ainda mais o desempenho, e um desses conceitos é o uso do Platform Cache. O que é um cache? tenha sempre em mente que Cache é um armazenamento temporário Primeira mente, tenha sempre em mente que Cache é um armazenamento temporário, e de uma forma geral é frequentemente usado para evitar acesso desnecessários em um banco de dados, vamos uma imaginar um cenário de uso, onde você armazena no seu banco de dados a Endpoint e Token para acessar um aplicação externa, se você imaginar uma página com muitos acessos e que a cada acesso é realizado uma chamada para uma aplicação externa, a cada acesso precisaríamos consultar os dados de acesso no banco de dados, o que consumiria muito recurso e tempo da plataforma, agora imagine ter essa informação sempre em memória e disponível para uso imediatamente sem depender de […]

Entendendo o uso do SOQL Locking Records

No post de hoje vamos falar sobre o SOQL Locking Records, imagine o cenário onde você precisa fazer o processamento em vários registros, e nesse pequeno intervalo de tempo, ninguém poderá modificar esse registro, para conseguirmos esse feito, precisamos usar o Locking Records, então vamos lá entender como isso funciona?   O que é Locking Records O Locking Records é uma forma de bloquear os registros do Salesforce em uma transação Apex, basicamente o Locking Records consiste na inclusão de duas palavras chaves em sua SOQL, dessa forma todos os registros resultantes da sua SOQL serão bloqueados e não poderão ser alterados até que a transação do Apex seja concluída. ao utilizar o FOR UPDATE você não poderá especificar um ORDER BY Dois pontos importantes aqui são, o primeiro é que não é necessário realizar o commit dos dados, se ocorrer um erro na transação Apex, todas as alterações serão desfeitas, e caso a transação termine sem erros, os registros serão comitados automaticamente. Outro ponto de atenção é que ao utilizar o FOR UPDATE você não poderá especificar um ORDER BY, talvez esse seja o ponto chave que dificulte a sua utilização, porém como a idea do Locking Records é garantir […]

Apex assíncrono – Scheduled Apex – Parte 4

Chegamos ao nosso último post da série sobre Apex assíncrono, falei aqui sobre métodos futuros, classes Queueable e Batch Apex, e hoje para fechar o tema, vamos falar sobre as classes Scheduled Apex, bom mas chega de enrolação e vamos logo para o que interessa não é mesmo? O que é o Scheduled Apex? podemos programar para que ele seja executado TODOS os dias em um determinado horário As Scheduled Apex nos permite realizar o agendamento de uma execução do Apex em horário específicos, diferentemente que fizemos com o agendamento das classes Batch Apex, onde só podíamos adiar a sua execução, com o Scheduled Apex ganhamos um poder de escolha muito maior, podemos programar para que ele seja executado TODOS os dias em um determinado horário. Mas claro que podemos fazer ainda mais do que isso, podemos agendar uma execução para 2x por dia, ou até mesmo 1x por semana, você é quem escolhe quando o processo será executado. Quando usar uma Scheduled Apex O cenário mais comum é exatamente quando temos que executar um conjunto de código do Apex em um horário e dia especificos. Estrutura de uma Scheduled Apex As Scheduled Apex também são classes que precisam implementar […]

Apex assíncrono – Batch Apex – Parte 3

Dando continuidade a série de posts sobre Apex assíncrono, hoje vamos falar da Batch Apex, sem dúvida um dos mais complicados posts da série, e espero conseguir desmistificar e passar para você um overview bem bacana sobre ele, vamos lá? A mas se você ainda não leu o post sobre métodos futuros e sobre Queueable sugiro que de uma pausa na sua leitura, e leia esses posts antes :) O que é uma Batch Apex O Batch Apex é uma classe do Apex que implementa uma interface e dá ao desenvolvedor um poder de processamento enorme, permitindo que você enfileire inúmeros trabalhos do apex ao mesmo tempo, você pode ainda mover a ordem dos processos, obter o status do processamento, abordar o seu processamento e também realizar o agendamento, para que o seu processo seja executado em uma hora determinada por você. Quando usar uma Batch Apex Para tarefas de execução longa com grandes volumes de dados que precisam ser executados em lotes, como manutenção do banco de dados Para tarefas que precisam de resultados de consulta maiores do que as transações regulares permitem Estrutura de uma Batch Apex Uma classe Batch Apex, deve implementar a interface Database.Batchable<X> onde X é […]

Prós e Contras ao uso do Person Account

Quando ouvimos sobre o termo Person Account já nos bate até um certo calafrio, e para que você não tenha nenhum receio ao ouvir este termo, vamos esclarecer o que é, as qualidades e limitações das não tão famosas Contas Pessoais. Se você está pensando em ativar as Person Account (Contas Pessoais) em sua org, aconselho fortemente que leia este post até o final e consulte um MVP da Salesforce antes de tomar esta decisão que pode vir a trazer muitas dores de cabeça. O QUE É CONTA PESSOAL (PERSON ACCOUNT)? Conta pessoal é a fusão dos objetos Conta e Contato a fim lidar com relacionamentos “Business to Consumer” (B2C) que não é tão viável no modelo padrão da Salesforce. Basicamente ao ativar este modo, as Person Account se dão como um novo tipo de registro de conta em sua org, este novo tipo de registro fornece novos campos ao objeto Conta que não são acessíveis a você, ou seja, não são editáveis. Sugiro que de uma lida no material oficial do Salesforce sobre Person Account. PRÓS Diferenciação visual clara entre registros de conta pessoal e registros de conta comercial. Importação de dados simples com campos de contato usando o assistente de importação do […]

Onde foi parar a lixeira no Lightning?

Onde foi parar a lixeira no Lightning? Recentemente fiz uma migração de uma ORG para o Lightning, uma ORG com poucas customizações internas, mas com alguns componentes que deram um certo trabalho, após a migração, uma das primeiras perguntas que surgiu foi exatamente essa, onde foi parar a lixeira no Lightning.  A verdade é que ela não existe no Lightning, e sem previsão dela aparecer por lá, em busca de soluções encontrei várias pessoas reclamando do sumiço da lixeira no Lightning, e alguns indicando até mesmo a utilização de um App Exchange para isso. Voltar para o classic para usar a lixeira e depois retornar para o Lightning com certeza não seria a melhor opção, foi aí que me veio uma ideia brilhante, que vou compartilhar com vocês. Entre as soluções encontrei alguns criando uma VisualForce com um SELECT nos objetos excluídos, ou até mesmo instalando um AppExchange que fazia também exatamente isso, a minha solução foi bem mais simples e eficaz, simplesmente peguei o link da Lixeira no Classic e criei uma Guia para ela no Lightning, e, ualá!!! Lá estava a lixeira no Lightning, claro que sem o visual bonito do Lightning, mas ainda assim 100% funcional. Vamos lá […]

Por que devemos evitar instruções DML e SOQL em Loop

Hoje iremos entender o porque devemos evitar o uso instruções DML e SOQL dentro de laços de iteração no Apex. Como vocês sabem o Salesforce é uma plataforma completamente WEB, ou seja, temos que sempre otimizar o funcionamento para que tenhamos um bom desempenho e sempre proporcionar uma boa experiência ao usuário. Durante esse período de quase 2 anos atuando com desenvolvimento Salesforce me deparei muitas vezes com um “erro” comum e grave por parte de desenvolvedores que é o uso de instruções SOQL e DML dentro de laços ou loops, como preferirem chamar. Você saberia me dizer o por que não devemos adotar essa prática em nossos desenvolvimentos? Caso saiba, parabéns você é uma pessoa que vai deixar o próximo Desenvolvedor da sua organização muito feliz, aos que não sabem, chegou a hora de descobrir. Limitações de “Banco” Salesforce e onde isso se aplica? Dentro do Salesforce temos diversas limitações, e algumas delas são referentes às operações DML e SOQL por transações do Apex. Abaixo uma tabela com as limitações que iremos abordar nesse post: Limitação Quantidade Erro (Exceder o Limite) Number of SOQL queries(Quantidade de operações SOQL que podemos executar em uma transação) 100 Too many SOQL queries: […]