Salesforce Apex - gatilhos

Salesforce Apex - gatilhos

No Salesforce, a validação dos dados antes/depois da inserção é muito importante e deve ser levada em consideração. Na maioria dos cenários, depois de inserir os dados no objeto Salesforce, algumas manipulação de dados precisam acontecer e inserções/exclusões/atualizações erradas precisam ser validadas e manuseadas. Para conseguir isso, o Salesforce introduziu um script de ápice conhecido como "gatilho". Mergulhe rapidamente no guia que lida com eventos de gatilho, variáveis ​​de contexto, tipos e cenários com exemplos em tempo real.

Gatilho do ápice

No Salesforce, o Trigger é um código de ápice (.apt) que disparam antes ou depois das instâncias de manipulação de dados. Com base no evento especificado no gatilho, ele dispara sobre objetos especificados no Salesforce. Além disso, podemos especificar os contextos que nos ajudam a acessar os contextos de tempo de execução. Isso nos ajuda a evitar ações indesejadas/desnecessárias em objetos no Salesforce. Digamos, no objeto da conta, precisamos atualizar apenas o telefone quando a "indústria" é "agricultura".

Gatilho eventos

Como já discutimos, um gatilho antes ou depois das operações da DML ocorrem. Existem três operações de DML que ocorrem no objeto Salesforce.

  1. Se você deseja que o gatilho dispare antes da inserção do registro, você pode usar o evento de gatilho "antes da inserção".
  2. Se você deseja que o gatilho dispare após a inserção do registro, você pode usar o evento de gatilho "After Insert".
  3. Se você deseja que o gatilho dispare antes da atualização do registro, pode usar o evento de gatilho "Antes da atualização".
  4. Se você deseja que o gatilho dispare após a atualização do registro, você pode usar o evento de gatilho "After Update".
  5. Se você deseja que o gatilho dispare antes da exclusão de registro, você pode usar o evento de gatilho "antes de excluir".
  6. Se você deseja que o gatilho dispare após a exclusão de registro, você pode usar o evento de gatilho "após excluir".

Mais um evento de gatilho que pode ser disparado depois que a desleixamento é "depois de não.

Tipos de gatilho

Basicamente, existem dois tipos de gatilhos: o gatilho "antes" e o gatilho "depois".

  1. Antes do gatilho - Ele dispara quando um registro é inserido, atualizado ou excluído. Usamos esse gatilho para validar ou atualizar os registros antes de salvá -lo no banco de dados (objeto Salesforce), se queremos definir a "indústria de contas" como "bancário" se "classificação de conta" não for nulo.
  1. Após o gatilho - Ele dispara quando outro registro é atualizado/excluído com base no registro existente se quisermos criar um novo "contato" depois que a "conta" é criada ou atualizada a partir dele.

Acionar variáveis ​​de contexto

É importante ver qual cenário de gatilho foi demitido. Precisamos rastrear em qual contexto de gatilho o gatilho é disparado. Todas as variáveis ​​de contexto de gatilho retornam true se o gatilho for demitido por causa desse evento. Vamos olhar para eles um por um.

1. isinsert:.

Exemplo: Criando contato quando "conta" é criada.

2. isupdate: Se o gatilho for disparado devido a um evento DML de atualização, o ISUPDATE se tornará verdadeiro.

Exemplo: Se o "nome da conta" não for nulo, preencha a "receita anual".

3. ISDELETE: Se o gatilho for disparado devido a um evento DML de exclusão, o ISDELETE se tornará verdadeiro.

Exemplo: Os registros da conta são incapazes de excluir se a "classificação da conta" estiver "quente".

4. isundElete: Se o gatilho for disparado devido a um evento DML não selecionado, o ISUNDELETE se tornará verdadeiro.

Exemplo: Os registros da conta são recuperados da lixeira do Salesforce.

Sintaxe do gatilho:

Podemos criar um script de ápice que dispara com base em instâncias DML usando a palavra -chave "gatilho" seguida pelo nome do gatilho. Ele pergunta sobre qual objeto Salesforce faz o gatilho deve acontecer durante a criação do próprio script de ápice. Todos os eventos de gatilho são especificados após o objeto Salesforce.

trigger trigger_name em salesforce_object_api (trigger_events)
declarações…

Configuração do ambiente

1. Vá para o "Console do desenvolvedor" e vá para o arquivo "Selecionar novo". Em seguida, escolha "Apice Trigger".

2. Ele pergunta o nome do script e o objeto Salesforce, de modo que o gatilho seja disparado neste objeto. Clique em "Enviar" para criar um novo gatilho de ápice.

Cenário 1: antes da inserção

Quando a conta é criada com a indústria de "educação", disparamos um gatilho que atribui o campo "Tipo" ao "parceiro de tecnologia" [objeto - conta].

gatilho antes_insert por conta (antes da inserção)
para (conta de conta_iter: gatilho.Novo)
// Verifique se a indústria é 'educação'
if (account_iter.Indústria == 'educação')
// defina o tipo como 'parceiro de tecnologia'
conta_iter.Tipo = 'parceiro de tecnologia';


“Primeiro, iteramos os registros da conta e verificamos se o setor é“ educação ”ou não. Se for "educação", atribuímos o "parceiro de tecnologia" ao campo "Tipo".

Caso de teste:

Vá para a guia "Contas" do lançador de aplicativos e crie uma conta com a indústria como "educação". Verifique se o campo "Tipo" é preenchido com "parceiro de tecnologia" ou não.

Ao clicar em "Salvar", você pode ver que o "tipo" é criado com "parceiro de tecnologia".

Cenário 2: após a inserção e após a atualização

Quando a conta é criada com a classificação "quente", disparamos um gatilho que cria um contato com "ContactName" como "conta-linuxhint-conta", "título" como "gerente" e "departamento" como "vendas" [objeto - Conta].

Trigger após_insert_trigger por conta (após a inserção, após a atualização)
Lista contact_list = new List ();
// itera através dos registros da conta
para (conta de conta_obj: gatilho.novo)
if (account_obj.Classificação == 'Warm')
// Crie novo objeto de contato
Contato cont_obj = new contact ();
// atribui os valores a três campos
cont_obj.LastName = 'Linuxhint-conta';
cont_obj.Title = 'gerente';
cont_obj.Departamento = 'vendas';
// Adicione esses três campos à lista
lista de contatos.add (cont_obj);

// Insira no objeto de contato
insira contact_list;

Primeiro, criamos uma lista do tipo "contato" e iteramos o objeto "conta". Dentro do loop "for", verificamos se a "classificação da conta" é "quente" ou não. Se for "quente", criamos "contato" e atribuímos três campos com os valores e adicionamos esse objeto à lista de contatos (declarada anteriormente). Finalmente, inserimos esses três campos no objeto "contato" usando o inserir DML.

Caso de teste:

Vá para a guia "Contas" do lançador de aplicativos e crie uma conta com a "classificação" como "quente". Verifique se o registro de contato é criado com três campos especificados.

Ao clicar em "Salvar", você pode ver que o "contato" é criado com três campos. Vá para a guia "Contatos".

Podemos ver que três campos são criados. Vá para a guia "Detalhes" para ver os campos.

Cenário 3: antes da atualização

Quando a campanha é atualizada com o tipo de "conferência", disparamos um gatilho que atualiza o campo "Status" para "Concluído" [Campanha de Objetos].

gatilho antes_update_trigger na campanha (antes da atualização)
Para (campanha Campaign_iter: Trigger.Novo)
// Verifique se o tipo é 'conferência'
if (camping_iter.Tipo == 'conferência')
// Atualize o status para 'concluído'
campanha_iter.Status = 'concluído';


Primeiro, iteramos os registros da campanha e verificamos se o "tipo" é "conferência" ou não. Se for "conferência", atualizamos o campo "Status" para "concluído".

Caso de teste:

Vá para a guia "Campanhas" do lançador de aplicativos e abra qualquer registro existente.

Este registro é do tipo "webinar" e seu status é "planejado". Agora, edite este registro atualizando o tipo para “conferência”.

Podemos ver que o "status" é atualizado para "concluído".

Cenário 4: Exclua (antes)

Quando tentamos excluir os registros do objeto de campanha quando o status é "concluído" ou o tipo é "conferência", lançamos um erro de modo que não possamos excluir os registros. Exibimos o erro usando o método adderror () [objeto - campanha].

gatilho delete_trigger na campanha (antes de excluir)
para (Campanha Camp_iter: Trigger.velho)
// Verifique se o status == 'concluído' ou tipo == 'conferência'
if (Camp_iter.Status == 'concluído' || Camp_iter.Tipo == 'conferência')
// Especifique a mensagem de erro.
Camp_iter.adderror ('Você não pode excluir este registro se o status == concluído ou tipo == Conferência.');


Caso de teste:

Vá para a guia "Campanhas" do lançador de aplicativos e abra qualquer registro existente com o status "concluído" ou com o tipo "conferência".

Clique em "Excluir" no menu suspenso à direita.

Podemos ver que o erro é lançado e não é excluído.

Conclusão

Trigger é um script de ápice que dispara antes ou depois das instâncias de manipulação de dados. Com base no evento especificado no gatilho, ele dispara sobre objetos especificados no Salesforce. Aprendemos os quatro cenários diferentes para disparar o gatilho na inserção, atualização e exclusão com diferentes exemplos em diferentes objetos. Aqui, utilizamos os objetos de conta, contato e campanha para demonstração. Você pode seguir os mesmos exemplos em seus objetos personalizados.