' P '

whatever I will forget

非同期 Apex の監視

監視を行うには

  • 設定 → Apexジョブ

ApexSyncJobの照会

AsyncApexJob jobInfo = [SELECT Status, NumberOfErrors
    FROM AsyncApexJob WHERE Id = :jobID];

スケジュール済みジョブの監視

  • SOQL
CronTrigger ct = [SELECT TimesTriggered, NextFireTime FROM CronTrigger WHERE Id = :jobID];
global class DoAwesomeStuff implements Schedulable {
    global void execute(SchedulableContext sc) {
        // some awesome code
        CronTrigger ct = [SELECT TimesTriggered, NextFireTime FROM CronTrigger WHERE Id = :sc.getTriggerId()];
    }
}
  • CronTrigger レコードに関連付けられている CronJobDetail レコードからジョブの名前と種別を取得する
CronTrigger job = [SELECT Id, CronJobDetail.Id, CronJobDetail.Name, CronJobDetail.JobType FROM CronTrigger ORDER BY CreatedDate DESC LIMIT 1];
  • CronJobDetail を直接照会して、ジョブの名前と種別を取得する
CronJobDetail ctd = [SELECT Id, Name, JobType FROM CronJobDetail WHERE Id = :job.CronJobDetail.Id];
  • すべての Apex スケジュール済みジョブの合計件数を取得する (他の種別のすべてのスケジュール済みジョブを除く)
SELECT COUNT() FROM CronTrigger WHERE CronJobDetail.JobType = '7