Entendendo a utilização de variáveis estáticas na plataforma Salesforce
Em publicações anteriores, demonstramos algumas vantagens e discutimos formas de contornar determinadas limitações da plataforma Salesforce. O assunto de hoje explora uma característica técnica específica da programação na linguagem da plataforma, com o objetivo de orientar desenvolvedores desta poderosa ferramenta na nuvem para evitar comportamentos inesperados envolvendo a utilização de variáveis estáticas.
O conceito de variáveis estáticas dentro da linguagem Apex, do Salesforce, é bem similar ao de conhecidas linguagens de programação, como Java e C#. Em Apex não é possível utilizar classes estáticas, mas é possível haver métodos, variáveis e trechos de inicialização de código estáticos. Ao contrário dos métodos e variáveis de objetos, que estão associados a instâncias específicas de uma classe, os métodos e variáveis estáticos estão associados à classe inteira, de forma que todas as instâncias compartilham o mesmo valor de uma variável estática desta classe.
Uma importante diferença para os desenvolvedores acostumados com Java, C# ou outras linguagens tradicionais é que, em Apex, uma variável é estática somente dentro do escopo de uma transação. Isso faz sentido considerando que os recursos de servidor do Salesforce estão na nuvem e são compartilhados entre milhares de usuários. Caso as variáveis não fossem desalocadas ao final de cada transação, a má utilização das variáveis estáticas por diferentes desenvolvedores poderiam gerar problemas de memória na plataforma. Assim, uma variável marcada com o modificador “static” não é realmente “estática” através do servidor ou da organização inteira, pois ela é reiniciada nos limites da transação.
Um exemplo: se uma ação do usuário causar operações DML (exemplo: inserção ou atualização de registros) na mesma transação, um mesmo trigger pode ser disparado várias vezes. Neste caso, o uso de uma variável estática poderia evitar que uma mesma operação fosse feita mais de uma vez na mesma transação cada vez que o trigger fosse disparado, pois o valor da variável estática iria persistir durante toda a transação. Diferentes triggers também podem comunicar entre si lendo e atualizando o valor de variáveis estáticas.
O exemplo acima pode ser ilustrado pelo trecho de código abaixo:
public class MinhaClasse { //Variável estática: public static boolean primeiraVez = true; //Método não-estático (de objeto): public void fazerAlgo(){ //… } } |
Trigger:
trigger T on Account (after insert, after update) {
if (MinhaClasse.primeiraVez) { MinhaClasse m = new MinhaClasse(); m.fazerAlgo(); MinhaClasse.primeiraVez = false; } } |
Se você tem alguma dúvida sobre implantação ou customização do Salesforce, entre em contato com a gente!
Sumário
Referências:
Apex Workbook: https://resources.docs.salesforce.com/sfdc/pdf/apex_workbook.pdf
Force.com Apex Code Developer’s Guide: https://resources.docs.salesforce.com/196/latest/en-us/sfdc/pdf/salesforce_apex_language_reference.pdf
Por: Daniel Duarte e Jéssica Saliba
Produtos Digitais
Confira outros artigos
FinOps: a ponte entre inovação tecnológica e sustentabilidade financeira nas organizações
Nos últimos anos, o FinOps tem se destacado como uma força vital na interseção entre o departamento financeiro e a TI, principalmente no que diz respeito à gestão de recursos em ambientes de nuvem. Essa solução nasceu da necessidade de alinhar os objetivos financeiros e operacionais das empresas, a fim de criar uma ponte sólida […]
Produtos Digitais
Desenvolvimento Android x iOS: 10 recomendações para o desenvolvimento produtivo
Entre agosto de 2022 e junho de 2023, o mercado de aplicativos móveis experimentou um crescimento notável, projetando um aumento anual de 13,4% até 2030, alcançando um mercado estimado em US$ 187,58 bilhões. E, certamente, a tendência é que essa expansão continue exponencialmente nos próximos anos. Portanto, agora é a hora de explorar as oportunidades […]
Produtos Digitais
Desenvolvimento Mobile ou Web: a integração de dispositivos para uma experiência omnichannel
Em 1977, Ken Olsen, fundador da DEC – Digital Equipment Corporation –, proferiu a frase “There is no reason anyone would want a computer in their home” (em tradução livre: “Não há motivo para alguém querer um computador em sua casa”). Já em 2007, a Apple confirmou que Olsen estava equivocado ao apresentar o primeiro […]
Produtos Digitais