能否使用 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,则作业已经中止。
我有一个函数在 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,则作业已经中止。