Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. public class MyQueueable1 implements Queueable {
  2.  
  3. Public Static list < Account > acclist = new list < Account > ();
  4. public MyQueueable1() {
  5.  
  6. }
  7. public void execute(QueueableContext context) {
  8.  
  9. System.enqueueJob(new MyQueueable2());
  10. }
  11. //This class is not executing..
  12. public class MyQueueable2 implements Queueable {
  13.  
  14. public MyQueueable2() {
  15.  
  16. }
  17. public void execute(QueueableContext context) {
  18. List < Account > a = [SELECT Id, Name
  19. FROM Account WHERE Id =: acclist];
  20. }
  21. }
  22. }
  23.  
  24. public abstract class ChainedQueueable implements Queueable {
  25.  
  26. private Set<Id> recordIds;
  27.  
  28. public AbstractChainedQueueable(Set<Id> recordIds) {
  29. this.recordIds = recordIds;
  30. }
  31.  
  32. public abstract void processRecord(Id recordId);
  33.  
  34. public abstract ChainedQueueable createJob(Set<Id> ids);
  35.  
  36. public void execute(QueueableContext context) {
  37.  
  38. if (recordIds.size() == 0) {
  39. return;
  40. }
  41.  
  42. Id recordId = getNextInvoiceId();
  43.  
  44. processRecord(recordId);
  45.  
  46. processNextInvoice();
  47. }
  48.  
  49. private void processNextInvoice()
  50. {
  51. enqueueJob(this.recordIds);
  52. }
  53.  
  54. private void enqueueJob(Set<Id> ids) {
  55.  
  56. if (ids.size() == 0) {
  57. return;
  58. }
  59.  
  60. // create next job
  61. AbstractChainedQueueable job = createJob(ids);
  62.  
  63. // queue next job
  64. Id jobId = System.enqueueJob(job);
  65.  
  66. System.debug(jobId);
  67. }
  68.  
  69. public void enqueueJob() {
  70.  
  71. // queue job
  72. Id jobId = System.enqueueJob(this);
  73.  
  74. System.debug(jobId);
  75. }
  76.  
  77. private Id getNextInvoiceId() {
  78.  
  79. // get next record
  80. Id recordId;
  81. for(Id item : recordIds) {
  82. recordId = item;
  83. break;
  84. }
  85.  
  86. // remove recordId
  87. recordIds.remove(recordId);
  88.  
  89. return recordId;
  90. }
  91. }
  92.  
  93. public class ExampleChainedQueueable extends ChainedQueueable {
  94.  
  95. public ExampleChainedQueueable(Set<Id> recordIds) {
  96. super(recordIds);
  97. }
  98.  
  99. public override void processRecord(Id recordId) {
  100. // do work here
  101. }
  102.  
  103. public override ChainedQueueable createJob(Set<Id> ids) {
  104. return new ExampleQueueable(ids);
  105. }
  106. }
  107.  
  108. Set<Id> recordIds = new Set<Id>();
  109. new ExampleChainedQueueable(recordIds).enqueueJob();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement