Introdução aos exemplos da Apex em lote +

partilhe este artigo…

Introdução

Para cenários de negócios que exigem a plataforma de processar mais de 50000 registros, Lote Apex vem para o resgate. O lote Apex facilita o processamento assíncrono dos registros em múltiplos lotes ou blocos e é simples de implementar para um desenvolvedor.O lote Apex implementa a base de dados.interface batchable. A interface tem métodos Start(), Execute() e Finish() que devem ser implementados na classe Apex lote.

  1. Startmethod: método Start é um ponto de coleta para os registros a serem processados no método execute do lote apex
  2. método Execute: O processamento real de registros ocorre no método execute.
  3. método de acabamento: Os métodos de acabamento podem ter ações de processamento de trabalho postar como enviar os e-mails ou também pode ser usado para acorrentar outra classe de lote.

Agendamento Lote Apex

Método 1: Utilizar OOTB Programação Apex funcionalidade

Passos:

  1. Clique em programa de Configuração e de pesquisa para a Apex Classes na caixa de procura rápida.
  2. clique no botão Agenda Apex no painel superior.

3. Preencha as informações na página de registro Apex escalonar e salve. A classe apex deve ser a classe Scheduler que implementa o método executebatch (lote).

excerto de código para a classe Scheduler:

global class AccBatchScheduleClass implements Schedulable { global void execute(SchedulableContext ctx) { AccBatchApex batch = new AccBatchApex(); database.executebatch(batch); }}

Método 2: invocar a classe de lote através da Apex escalonável:

a classe Apex deve ser criada, a qual deverá implementar a apex escalonável. A apex escalonável deve implementar o sistema.Método de escalonamento () para colocar a apex em lote na fila de execução. sistema.O método Schedule () espera três argumentos: o nome da tarefa, a expressão de Cron para a programação em lote e o nome da classe em lote.

Apex escalonável por amostragem:

fase de teste da API

com o início da versão 29 da API.0 e depois, uma classe de lote pode ser acorrentado a outra classe de lote. Chaining of batch apex kickstarts the execution of the chained batch class once the execution of the base batch class is finished. No máximo, apenas 5 trabalhos em lote podem ser acorrentados um ao outro. O excerto do código de exemplo para acorrentar a Apex do lote é ilustrado abaixo:

exemplo da Apex do lote

caso de Utilização: preencher o estado de facturação como Califórnia para todas as contas com o país como EUA e sem informações do Estado de facturação.

Concepção Da Solução: A org tem mais de 50K registros que precisam ser desnatado para as informações de Estado de faturação em falta, de modo que escrever a Apex lote é a solução ideal. Também gatilhos, fluxos de trabalho, construtores de processos etc. vai precisar de uma operação DML para disparar para que estas soluções não se encaixem para atender a exigência de Negócio.

as coisas a recordar

  • até 5 tarefas em lote podem ser colocadas em fila de espera ou activas simultaneamente.
  • o número máximo de execuções do método de Apex por período de 24 horas é 250.000, ou o número de licenças de usuário em sua org multiplicado por 200-o que for maior.
  • a maximum of 50 million records can be returned in the QueryLocator object. Se mais de 50 milhões de registros forem retornados, o trabalho em lote é imediatamente terminado e marcado como fracassado.
  • se o startmetod da classe do lote retorna um QueryLocator,o parâmetro de escopo opcional do executeBatch pode ter um valor máximo de 2.000.
  • se o método de início da classe do lote devolve um iterável, o valor do parâmetro de âmbito não tem limite superior.
  • os métodos de início, execução e acabamento podem implementar até 100 callouts cada. Implemente as permissões para activar as chamadas a partir da apex do lote.
  • os métodos declarados como futuros não podem ser chamados a partir de uma classe Apex do lote.
  • todos os métodos da classe devem ser definidos como globais ou públicos.

Optimizing Your Implementation

  • Batch Apex jobs run faster when the startmethod returns a QueryLocator object that doesn’t include related records via a subquery. Evitar subqueries de relacionamento em um QueryLocator permite que as tarefas de lote para executar usando uma implementação mais rápida e chunked.
  • para assegurar a execução rápida das tarefas em lote, minimizar os tempos de chamada do serviço Web e as consultas de afinação utilizadas no seu código Apex de lote.
  • para cada 10.000 AsyncApexJobrecords, Apex cria um registro AsyncApexJob do tipo BatchApexWorker para uso interno. Ao consultar todas as AsyncApexJob registros, recomendamos que você filtre os registros do tipo BatchApexWorker usando o JobType
  • Para uma partilha de recálculo, recomendamos que o método execute excluir e, em seguida, recriar todas as Apex gerenciado compartilhamento de registros do lote. Este processo garante que o compartilhamento é preciso e completo.
  • utilize os métodos de ensaio startTest e stopTest em torno do método executeBatch para garantir que termina antes de continuar o seu teste.

You might also like

Deixe uma resposta

O seu endereço de email não será publicado.