Scheduled Apex у Salesforce: Де, коли ? як краще застосовувати?
Salesforce — це потужна платформа, яка дозволя? автоматизувати б?знес-процеси, але ?нод? виника? потреба виконувати певн? операц?? за розкладом. Саме тут на сцену виходить Scheduled Apex — ?нструмент, який дозволя? запускати Apex-код у визначений час або за регулярним граф?ком. У ц?й статт? ми розглянемо, що таке Scheduled Apex, коли його варто використовувати, а також як правильно його застосовувати.
Що таке Scheduled Apex?
Scheduled Apex — це механ?зм у Salesforce, який дозволя? розробникам планувати виконання коду Apex у певний час або з певною пер?одичн?стю (наприклад, щогодини, щодня, щотижня чи щом?сяця).
Для цього використову?ться ?нтерфейс Schedulable, який реал?зу?ться в клас? Apex. П?сля створення такого класу його можна запланувати через ?нтерфейс Salesforce або програмно через System.schedule.
Приклад простого класу Scheduled Apex:
global class UpdateOldAccountsJob implements Schedulable {
global void execute(SchedulableContext sc) {
List<Account> accounts = [SELECT Id, Name, Description
FROM Account
WHERE LastModifiedDate < LAST_N_DAYS:30];
if (accounts != null && !accounts.isEmpty()) {
for (Account acc : accounts) {
acc.Description = 'Updated via Scheduled Apex';
}
update accounts;
}
}
}
Щоб запланувати цей клас, наприклад, на щоденне виконання о 2-й годин? ноч?, можна скористатися наступним кодом у Anonymous Window:
String cronExp = '0 0 2 * * ?'; // Щодня о 02:00
System.schedule('Daily Account Update', cronExp, new MyScheduledJob());
Тут cronExp — це CRON-вираз, який визнача? розклад.
Де застосовувати Scheduled Apex?
Scheduled Apex ?деально п?дходить для завдань, як? потр?бно виконувати регулярно або в певний момент часу без участ? користувача. Ось к?лька сценар??в використання:
Коли краще використовувати Scheduled Apex?
Scheduled Apex варто застосовувати, коли:
Однак, якщо вам потр?бна обробка в реальному час? або робота з величезними обсягами даних, варто розглянути альтернативи, так? як Batch Apex (для пакетно? обробки) або Queueable Apex (для асинхронного виконання).
Як краще застосовувати Scheduled Apex?
Щоб максимально ефективно використовувати Scheduled Apex, дотримуйтесь цих рекомендац?й:
List<Contact> contacts = [SELECT Id, Email FROM Contact WHERE Email != null LIMIT 5000];
2. Використовуйте Batch Apex для великих обсяг?в даних Якщо потр?бно обробити б?льше 10 000 запис?в, запускайте Batch Apex ?з Scheduled Apex:
global class ScheduleBatch implements Schedulable {
global void execute(SchedulableContext sc) {
Database.executeBatch(new MyBatchClass());
}
}
3. Додавайте логування Створюйте записи в кастомному об’?кт? для в?дстеження виконання задач. Це допоможе д?агностувати проблеми.
4. Тестуйте розклад Перед запуском у продакшен? перев?рте CRON-вираз на правильн?сть за допомогою ?нструмент?в, таких як crontab.guru.
5. Уникайте конфл?кт?в Переконайтетесь, що к?лька Scheduled Apex-джоб?в не запускаються одночасно, якщо вони працюють ?з тими самими даними, щоб уникнути блокувань (record locking).
6. Мон?торте л?м?ти Salesforce дозволя? запланувати до 100 активних джоб?в одночасно. Сл?дкуйте за цим у Setup > Apex Jobs.
Переваги та обмеження
Переваги:
Обмеження:
Висновок
Scheduled Apex — це потужний ?нструмент для автоматизац?? регулярних завдань у Salesforce. В?н ?деально п?дходить для оновлення даних, генерац?? зв?т?в чи ?нтеграц?й за розкладом. В?д простих завдань, таких як автоматичне прив?тання кл??нт?в з Днем народження, до б?льш складних задач, таких як обробка велико? к?лькост? даних, синхрон?зац?я з ?ншими системами чи виконання пер?одичних оновлень — це все можна реал?зувати за допомогою Scheduled Apex. Завдяки можливост? налаштування частоти виконання, цей ?нструмент дозволя? легко планувати й автоматизувати б?знес-процеси, знижуючи потребу в ручному втручанн? та покращуючи ефективн?сть роботи Salesforce.