public void addJobIdBatch(String jobId) { ArrayList<String> list = new ArrayList<String>(); list.add(jobId); addJobIdBatch(list); }
public void addJobIdBatch(String jobId) { ArrayList<String> list = new ArrayList<String>(); list.add(jobId); addJobIdBatch(list); }
/** * numJobsToAcquire >= numJobsAcquired >= numJobsFailedToLock must hold */ protected AcquiredJobs buildAcquiredJobs(int numJobsToAcquire, int numJobsAcquired, int numJobsFailedToLock) { AcquiredJobs acquiredJobs = new AcquiredJobs(numJobsToAcquire); for (int i = 0; i < numJobsAcquired; i++) { acquiredJobs.addJobIdBatch(Arrays.asList(Integer.toString(i))); } for (int i = 0; i < numJobsFailedToLock; i++) { acquiredJobs.removeJobId(Integer.toString(i)); } return acquiredJobs; }
public AcquiredJobs execute(CommandContext commandContext) { acquiredJobs = new AcquiredJobs(numJobsToAcquire); List<JobEntity> jobs = commandContext .getJobManager() .findNextJobsToExecute(new Page(0, numJobsToAcquire)); Map<String, List<String>> exclusiveJobsByProcessInstance = new HashMap<String, List<String>>(); for (JobEntity job : jobs) { lockJob(job); if(job.isExclusive()) { List<String> list = exclusiveJobsByProcessInstance.get(job.getProcessInstanceId()); if (list == null) { list = new ArrayList<String>(); exclusiveJobsByProcessInstance.put(job.getProcessInstanceId(), list); } list.add(job.getId()); } else { acquiredJobs.addJobIdBatch(job.getId()); } } for (List<String> jobIds : exclusiveJobsByProcessInstance.values()) { acquiredJobs.addJobIdBatch(jobIds); } // register an OptimisticLockingListener which is notified about jobs which cannot be acquired. // the listener removes them from the list of acquired jobs. commandContext .getDbEntityManager() .registerOptimisticLockingListener(this); return acquiredJobs; }
public AcquiredJobs execute(CommandContext commandContext) { acquiredJobs = new AcquiredJobs(numJobsToAcquire); List<JobEntity> jobs = commandContext .getJobManager() .findNextJobsToExecute(new Page(0, numJobsToAcquire)); Map<String, List<String>> exclusiveJobsByProcessInstance = new HashMap<String, List<String>>(); for (JobEntity job : jobs) { lockJob(job); if(job.isExclusive()) { List<String> list = exclusiveJobsByProcessInstance.get(job.getProcessInstanceId()); if (list == null) { list = new ArrayList<String>(); exclusiveJobsByProcessInstance.put(job.getProcessInstanceId(), list); } list.add(job.getId()); } else { acquiredJobs.addJobIdBatch(job.getId()); } } for (List<String> jobIds : exclusiveJobsByProcessInstance.values()) { acquiredJobs.addJobIdBatch(jobIds); } // register an OptimisticLockingListener which is notified about jobs which cannot be acquired. // the listener removes them from the list of acquired jobs. commandContext .getDbEntityManager() .registerOptimisticLockingListener(this); return acquiredJobs; }
public void testAcquiredJobs() { List<String> firstBatch = new ArrayList<String>(Arrays.asList("a", "b", "c")); List<String> secondBatch = new ArrayList<String>(Arrays.asList("d", "e", "f")); List<String> thirdBatch = new ArrayList<String>(Arrays.asList("g")); AcquiredJobs acquiredJobs = new AcquiredJobs(0); acquiredJobs.addJobIdBatch(firstBatch); acquiredJobs.addJobIdBatch(secondBatch); acquiredJobs.addJobIdBatch(thirdBatch); assertEquals(firstBatch, acquiredJobs.getJobIdBatches().get(0)); assertEquals(secondBatch, acquiredJobs.getJobIdBatches().get(1)); assertEquals(thirdBatch, acquiredJobs.getJobIdBatches().get(2)); acquiredJobs.removeJobId("a"); assertEquals(Arrays.asList("b", "c"), acquiredJobs.getJobIdBatches().get(0)); assertEquals(secondBatch, acquiredJobs.getJobIdBatches().get(1)); assertEquals(thirdBatch, acquiredJobs.getJobIdBatches().get(2)); assertEquals(3, acquiredJobs.getJobIdBatches().size()); acquiredJobs.removeJobId("g"); assertEquals(2, acquiredJobs.getJobIdBatches().size()); } }
public void addJobIdBatch(String jobId) { ArrayList<String> list = new ArrayList<String>(); list.add(jobId); addJobIdBatch(list); }
/** * numJobsToAcquire >= numJobsAcquired >= numJobsFailedToLock must hold */ protected AcquiredJobs buildAcquiredJobs(int numJobsToAcquire, int numJobsAcquired, int numJobsFailedToLock) { AcquiredJobs acquiredJobs = new AcquiredJobs(numJobsToAcquire); for (int i = 0; i < numJobsAcquired; i++) { acquiredJobs.addJobIdBatch(Arrays.asList(Integer.toString(i))); } for (int i = 0; i < numJobsFailedToLock; i++) { acquiredJobs.removeJobId(Integer.toString(i)); } return acquiredJobs; }
public AcquiredJobs execute(CommandContext commandContext) { acquiredJobs = new AcquiredJobs(numJobsToAcquire); List<JobEntity> jobs = commandContext .getJobManager() .findNextJobsToExecute(new Page(0, numJobsToAcquire)); Map<String, List<String>> exclusiveJobsByProcessInstance = new HashMap<String, List<String>>(); for (JobEntity job : jobs) { lockJob(job); if(job.isExclusive()) { List<String> list = exclusiveJobsByProcessInstance.get(job.getProcessInstanceId()); if (list == null) { list = new ArrayList<String>(); exclusiveJobsByProcessInstance.put(job.getProcessInstanceId(), list); } list.add(job.getId()); } else { acquiredJobs.addJobIdBatch(job.getId()); } } for (List<String> jobIds : exclusiveJobsByProcessInstance.values()) { acquiredJobs.addJobIdBatch(jobIds); } // register an OptimisticLockingListener which is notified about jobs which cannot be acquired. // the listener removes them from the list of acquired jobs. commandContext .getDbEntityManager() .registerOptimisticLockingListener(this); return acquiredJobs; }
public void testAcquiredJobs() { List<String> firstBatch = new ArrayList<String>(Arrays.asList("a", "b", "c")); List<String> secondBatch = new ArrayList<String>(Arrays.asList("d", "e", "f")); List<String> thirdBatch = new ArrayList<String>(Arrays.asList("g")); AcquiredJobs acquiredJobs = new AcquiredJobs(0); acquiredJobs.addJobIdBatch(firstBatch); acquiredJobs.addJobIdBatch(secondBatch); acquiredJobs.addJobIdBatch(thirdBatch); assertEquals(firstBatch, acquiredJobs.getJobIdBatches().get(0)); assertEquals(secondBatch, acquiredJobs.getJobIdBatches().get(1)); assertEquals(thirdBatch, acquiredJobs.getJobIdBatches().get(2)); acquiredJobs.removeJobId("a"); assertEquals(Arrays.asList("b", "c"), acquiredJobs.getJobIdBatches().get(0)); assertEquals(secondBatch, acquiredJobs.getJobIdBatches().get(1)); assertEquals(thirdBatch, acquiredJobs.getJobIdBatches().get(2)); assertEquals(3, acquiredJobs.getJobIdBatches().size()); acquiredJobs.removeJobId("g"); assertEquals(2, acquiredJobs.getJobIdBatches().size()); } }