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
![Produtos digitais: implantação e operação](/_next/image?url=https%3A%2F%2Fwww.cms.dtidigital.com.br%2Fwp-content%2Fuploads%2F2024%2F06%2FProdutos-digitais-implantacao-e-operacao.webp&w=1024&q=75)
Produtos digitais: entregas contínuas com IA
Nas últimas semanas, lançamos uma série de artigos sobre o uso de inteligência artificial no processo de construção de produtos digitais. Neles, apresentamos alguns aceleradores que a dti tem utilizado para potencializar a eficiência dos times. Abordamos a fase de concepção do produto, as atividades de gestão e design, o desenvolvimento do software e a […]
Produtos Digitais
![Inteligência Artificial: acelerando o design e gestão de produtos digitais. Computador com códigos coloridos](/_next/image?url=https%3A%2F%2Fwww.cms.dtidigital.com.br%2Fwp-content%2Fuploads%2F2024%2F05%2Fshutterstock_2284126663-_1_-scaled.webp&w=1024&q=75)
Inteligência Artificial: acelerando o design e gestão de produtos digitais
Como aproveitar o melhor da Inteligência Artificial Generativa para gerar mais valor? Essa tem sido uma pergunta recorrente no mercado conforme as empresas buscam entender e adotar a tecnologia. Embora existam muitas dúvidas e hipóteses não comprovadas, parece ser consenso que os avanços na Inteligência Artificial impactarão significativamente muitas profissões. No relatório The economic potencial […]
Produtos Digitais
![IA Generativa: acelerando a concepção de produtos digitais. Foto de quadro com post-it e gráficos, numa ideação para conceber o produto](/_next/image?url=https%3A%2F%2Fwww.cms.dtidigital.com.br%2Fwp-content%2Fuploads%2F2024%2F05%2Fjanela-planejamento0.webp&w=1024&q=75)
IA Generativa: acelerando a concepção de produtos digitais
Como as empresas podem responder às crescentes demandas por produtividade e eficiência em um mundo digital em constante mudança? O período pandêmico acelerou a digitalização de várias empresas e agora o desafio é outro. Entramos em uma era de incertezas, na qual não há mais espaço para desperdícios ou prolongados ciclos de entrega de software. […]
Produtos Digitais