execute method, call System.enqueueJob again to pass work to the next async step — useful for long pipelines without hitting synchronous limits.Job A
waiting
Job B
waiting
Idle — first job not enqueued
public class JobA implements Queueable {
public void execute(QueueableContext ctx) {
// work...
System.enqueueJob(new JobB());
}
}
public class JobB implements Queueable {
public void execute(QueueableContext ctx) {
// next step
}
}Chaining is powerful — monitor depth, errors, and idempotency so a retry does not duplicate side effects.