Фон

Язык программирования Apex предоставляет классы и интерфейсы, которые можно использовать для запуска длительных процессов в фоновом режиме на платформе Salesforce. Вы можете реализовать интерфейс Database.Batchable в своем классе, который вы хотите запустить как пакетное задание.

Если вы хотите запустить пакетное задание в определенное время в будущем, вам понадобится другой класс, который можно запланировать и запустить пакетное задание. Вы можете реализовать интерфейс System.Schedulable в своем классе Apex, чтобы запускать его в определенное время с помощью метода System.schedule. Этот метод принимает три параметра:

  1. Название работы: Это название работы
  2. Выражение расписания: сообщает Salesforce, когда запускать задание.
  3. Планируемый объект: Экземпляр запланированного класса для выполнения.

Сценарий

Часто вы можете столкнуться со сценарием, в котором вам нужно запускать пакетное задание каждые X минут.

Решение

Выражение расписания не поддерживает принятие нескольких значений для части Minutes. Однако этого можно легко добиться, отправив несколько запланированных заданий для выполнения с разными выражениями расписания, имеющими разные значения минут.

Попробуем понять это с помощью примера. Предположим, вы хотите запускать пакетное задание каждые 15 минут, то есть 4 раза в час. Вам нужно будет отправить 4 разных запланированных задания со следующими выражениями расписания:

  1. 0 0 * * * ?
  2. 0 15 * * * ?
  3. 0 30 * * * ?
  4. 0 45 * * * ?
SchedulableClassName obj = new SchedulableClassName();
String exp = '0 0 * * * ?';
System.schedule('ScheduledJob1', exp, obj);
exp = '0 15 * * * ?';
System.schedule('ScheduledJob2', exp, obj);
exp = '0 30 * * * ?';
System.schedule('ScheduledJob3', exp, obj);
exp = '0 45 * * * ?';
System.schedule('ScheduledJob4', exp, obj);

Вы можете использовать ту же логику для запуска задания каждые 10, 20, 30 минут и т. д.

Для получения дополнительной информации о выражениях расписания вы можете обратиться к Документации Salesforce или оставить свой комментарий, если у вас есть какие-либо вопросы. Я постараюсь ответить.

Вы можете связаться со мной в Medium или Twitter, чтобы узнать больше о платформе Salesforce.