Фон
Язык программирования Apex предоставляет классы и интерфейсы, которые можно использовать для запуска длительных процессов в фоновом режиме на платформе Salesforce. Вы можете реализовать интерфейс Database.Batchable
в своем классе, который вы хотите запустить как пакетное задание.
Если вы хотите запустить пакетное задание в определенное время в будущем, вам понадобится другой класс, который можно запланировать и запустить пакетное задание. Вы можете реализовать интерфейс System.Schedulable
в своем классе Apex, чтобы запускать его в определенное время с помощью метода System.schedule
. Этот метод принимает три параметра:
- Название работы: Это название работы
- Выражение расписания: сообщает Salesforce, когда запускать задание.
- Планируемый объект: Экземпляр запланированного класса для выполнения.
Сценарий
Часто вы можете столкнуться со сценарием, в котором вам нужно запускать пакетное задание каждые X минут.
Решение
Выражение расписания не поддерживает принятие нескольких значений для части Minutes
. Однако этого можно легко добиться, отправив несколько запланированных заданий для выполнения с разными выражениями расписания, имеющими разные значения минут.
Попробуем понять это с помощью примера. Предположим, вы хотите запускать пакетное задание каждые 15 минут, то есть 4 раза в час. Вам нужно будет отправить 4 разных запланированных задания со следующими выражениями расписания:
- 0 0 * * * ?
- 0 15 * * * ?
- 0 30 * * * ?
- 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.