System.AbortJob无法正常工作?

时间:2016-07-07 22:06:47

标签: salesforce apex

我正在试图找出如何使System.AbortJob()实际工作。我的假设(可能是错误的)是当我将当前jobId传递给System.AbortJob()时,作业将在那里停止并中止。这是我的测试不起作用,因为我看到System.debug()出现在我的日志中。

执行执行匿名:

queueableTest tst = new queueableTest();
System.enqueueJob(tst);

Queueable class:

public class queueableTest implements Queueable {

    public static void execute(QueueableContext Context)
    {
        ID jobID = Context.getJobId();
        System.AbortJob(jobID);
        shouldntExecute();
    }


    public static void shouldntExecute()
    {
        System.debug('Why is this executing?');        
    }

}

非常感谢任何帮助/反馈!

1 个答案:

答案 0 :(得分:3)

System.abortJob()调用仅在执行上下文完成后生效。由于您从要中止的相同上下文中调用abortJob,因此当它生效时,您的代码已经完成执行,这使得System.abortJob()调用无关紧要。

如果您要中止当前作业,则需要使用return;System.assert(false, 'Aborting');在第一种情况下,您的作业将以“已完成”状态终止,并且第二种情况是'失败'状态。抛出异常也会产生相同的结果。