能否使用 CronTrigger 作业 ID 来确定作业是否已中止或无效?

Can a CronTrigger Job ID be used to determine if a job had been aborted or is invalid?

我有一个函数在 Apex class 中作为重新安排逻辑的一部分被调用,它实现了实现 System.Schedulable。

@TestVisible private void reschedule(CronTrigger me, ISchedulable item, MySchedulableContext myCtx) {
        try {
            System.abortJob(me.Id);
        } catch(Exception e) {
            System.debug('Unable to abort the job');
        }
        String newTrigger = item.getNextTriggerString(myCtx);
        if (newTrigger != null && newTrigger.length() > 0) {
            try {
                System.schedule(me.CronJobDetail.Name+ '-' + System.currentTimeMillis(), newTrigger, this);
            } catch(Exception e) {
                System.debug('Unable to start the job');
            }

        }
    }

我如何知道我要中止的作业是否尚未中止,或者我要开始的作业是否尚未开始?是的,try/catch 会处理错误,但我想更好地理解这一点

您可以查询 AsyncApexJob 对象以获取作业的状态。

你可以这样做:

SELECT Id, Status, JobItemsProcessed, TotalJobItems, NumberOfErrors
FROM AsyncApexJob WHERE ID = :jobId

如果您愿意,请查看状态。可用状态如下:

  • 持有
  • 排队
  • 准备中
  • 处理中
  • 已中止
  • 完成
  • 失败

因此,如果状态为 Aborted,则作业已经中止。