Scheduled Apex у Salesforce: Де, коли ? як краще застосовувати?

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 ?деально п?дходить для завдань, як? потр?бно виконувати регулярно або в певний момент часу без участ? користувача. Ось к?лька сценар??в використання:

  1. Оновлення даних Наприклад, ви можете оновлювати застар?л? записи, додавати позначки до об’?кт?в, як? не зм?нювались певний час, або синхрон?зувати дан? з зовн?шн?ми системами.
  2. Автоматизац?я зв?тност? Scheduled Apex може генерувати зв?ти чи агрегован? дан? та надсилати ?х користувачам через email за допомогою Messaging.SingleEmailMessage.
  3. Очищення даних Видалення застар?лих запис?в (наприклад, тимчасових даних чи лог?в) за розкладом.
  4. Пер?одичн? б?знес-процеси Наприклад, розрахунок бонус?в для сп?вроб?тник?в наприк?нц? м?сяця або нагадування кл??нтам про зак?нчення п?дписки.
  5. ?нтеграц?я з зовн?шн?ми системами Якщо потр?бно регулярно отримувати чи в?дправляти дан? до API, Scheduled Apex може стати зручним р?шенням.

Коли краще використовувати Scheduled Apex?

Scheduled Apex варто застосовувати, коли:

  • Задача ма? ч?ткий граф?к виконання (наприклад, щодня о 8:00 або щоп’ятниц?).
  • Обробка не вимага? митт?во? реакц?? на д?? користувача (для цього краще п?д?йде тригер чи Flow).
  • Обсяг даних для обробки не перевищу? л?м?т?в Salesforce (наприклад, до 10 000 запис?в у синхронному запит?).

Однак, якщо вам потр?бна обробка в реальному час? або робота з величезними обсягами даних, варто розглянути альтернативи, так? як Batch Apex (для пакетно? обробки) або Queueable Apex (для асинхронного виконання).

Як краще застосовувати Scheduled Apex?

Щоб максимально ефективно використовувати Scheduled Apex, дотримуйтесь цих рекомендац?й:

  1. Оптим?зуйте запити SOQL Уникайте надм?рних запит?в ? використовуйте умови в WHERE, щоб зменшити обсяг даних. Наприклад:

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.

Переваги та обмеження

Переваги:

  • Простота налаштування через UI або код.
  • Гнучк?сть у плануванн? завдяки CRON-виразам.
  • ?нтеграц?я з ?ншими асинхронними процесами (Batch, Queueable).

Обмеження:

  • Не п?дходить для обробки в реальному час?.
  • Обмеження на к?льк?сть джоб?в (100 активних).
  • Необх?дн?сть враховувати губернаторськ? л?м?ти Salesforce.

Висновок

Scheduled Apex — це потужний ?нструмент для автоматизац?? регулярних завдань у Salesforce. В?н ?деально п?дходить для оновлення даних, генерац?? зв?т?в чи ?нтеграц?й за розкладом. В?д простих завдань, таких як автоматичне прив?тання кл??нт?в з Днем народження, до б?льш складних задач, таких як обробка велико? к?лькост? даних, синхрон?зац?я з ?ншими системами чи виконання пер?одичних оновлень — це все можна реал?зувати за допомогою Scheduled Apex. Завдяки можливост? налаштування частоти виконання, цей ?нструмент дозволя? легко планувати й автоматизувати б?знес-процеси, знижуючи потребу в ручному втручанн? та покращуючи ефективн?сть роботи Salesforce.


要查看或添加评论,请登录

Mykhailo Vdovychenko的更多文章