@Bean public JobExecutionDecider decideIfGoodToContinue() { return new JobExecutionDecider() { int iteration = 0; @Override public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { long postId = 0; try { postId = jobExecution.getExecutionContext().getLong("postId"); } catch (Exception e) { logger.info("FlowExecution Exception: " + e.getMessage()); } long iterations = jobExecution.getJobParameters().getLong("iterations"); if(iteration < iterations) { logger.info("ITERATING... POSTID = " + postId); iteration++; return YES; } else { logger.info("REPEATED 2X's. SKIPPING OPTIONAL STEP"); return NO; } } }; }
/** * @param jobExecution set the job execution * @param stepExecution set the step execution * @return FlowExecutionStatus a status */ public final FlowExecutionStatus decide(final JobExecution jobExecution, final StepExecution stepExecution) { if (jobExecution.getExecutionContext().containsKey(processingModeKey)) { return new FlowExecutionStatus("true"); } else { return new FlowExecutionStatus("false"); } }
/** * @param jobExecution set the job execution * @param stepExecution set the step execution * @return FlowExecutionStatus a status */ public final FlowExecutionStatus decide(final JobExecution jobExecution, final StepExecution stepExecution) { if (jobExecution.getExecutionContext().containsKey(processingModeKey)) { return new FlowExecutionStatus(jobExecution.getExecutionContext().getString(processingModeKey)); } else if(jobExecution.getJobInstance().getJobParameters().getParameters().containsKey(processingModeKey)) { return new FlowExecutionStatus(jobExecution.getJobInstance().getJobParameters().getString(processingModeKey)); }else { return new FlowExecutionStatus(defaultProcessingMode); } }
@Override public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { if (jobExecution.getJobInstance().getJobParameters().getString(jobParameterName) != null) { ExecutionContext executionContext = jobExecution.getExecutionContext(); JobParameters jobParameters = jobExecution.getJobInstance().getJobParameters(); if(jobParameterName.equals("download.taxon")) { setExecutionContext(executionContext,jobParameters,"taxon.txt","org.emonocot.model.Taxon", "http://rs.tdwg.org/dwc/terms/Taxon"); } else if(jobParameterName.equals("download.description")) { setExecutionContext(executionContext,jobParameters,"description.txt","org.emonocot.model.Description", "http://rs.gbif.org/terms/1.0/Description"); } else if(jobParameterName.equals("download.distribution")) { setExecutionContext(executionContext,jobParameters,"distribution.txt","org.emonocot.model.Distribution", "http://rs.gbif.org/terms/1.0/Distribution"); } else if(jobParameterName.equals("download.image")) { setExecutionContext(executionContext,jobParameters,"image.txt","org.emonocot.model.Image", "http://rs.gbif.org/terms/1.0/Image"); } else if(jobParameterName.equals("download.reference")) { setExecutionContext(executionContext,jobParameters,"reference.txt","org.emonocot.model.Reference", "http://rs.gbif.org/terms/1.0/Reference"); } else if(jobParameterName.equals("download.typeAndSpecimen")) { setExecutionContext(executionContext,jobParameters,"typeAndSpecimen.txt","org.emonocot.model.TypeAndSpecimen", "http://rs.gbif.org/terms/1.0/TypesAndSpecimen"); } else if(jobParameterName.equals("download.measurementOrFact")) { setExecutionContext(executionContext,jobParameters,"measurementOrFact.txt","org.emonocot.model.MeasurementOrFact", "http://rs.tdwg.org/dwc/terms/MeasurementOrFact"); } else if(jobParameterName.equals("download.vernacularName")) { setExecutionContext(executionContext,jobParameters,"vernacularName.txt","org.emonocot.model.VernacularName","http://rs.gbif.org/terms/1.0/VernacularName"); } else if(jobParameterName.equals("download.identifier")) { setExecutionContext(executionContext,jobParameters,"identifier.txt","org.emonocot.model.Identifier", "http://rs.gbif.org/terms/1.0/Identifier"); } return new FlowExecutionStatus("true"); } else { return new FlowExecutionStatus("false"); } }
/** * @param jobExecution set the job execution * @param stepExecution set the step execution * @return FlowExecutionStatus a status */ public final FlowExecutionStatus decide(final JobExecution jobExecution, final StepExecution stepExecution) { if(processingModeKey == null && defaultProcessingMode == null) { logger.error("No processing mode was found. Unable to continue", new IllegalArgumentException("A processing mode must exist if specified")); return FlowExecutionStatus.FAILED; } if (jobExecution.getExecutionContext().containsKey(processingModeKey)) { return new FlowExecutionStatus(jobExecution.getExecutionContext().getString(processingModeKey)); } else if(jobExecution.getJobInstance().getJobParameters().getParameters().containsKey(processingModeKey)) { return new FlowExecutionStatus(jobExecution.getJobInstance().getJobParameters().getString(processingModeKey)); }else { return new FlowExecutionStatus(defaultProcessingMode); } }
public final FlowExecutionStatus decide(final JobExecution jobExecution, final StepExecution stepExecution) { if (jobExecution.getExecutionContext().containsKey(processingModeKey)) { return new FlowExecutionStatus(jobExecution.getExecutionContext().getString(processingModeKey)); } else if(jobExecution.getJobParameters().getParameters().containsKey(processingModeKey)) { return new FlowExecutionStatus(jobExecution.getJobParameters().getString(processingModeKey)); } else { return new FlowExecutionStatus(defaultProcessingMode); } }
@Override public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { if (jobExecution.getJobParameters().getString(jobParameterName) != null) { ExecutionContext executionContext = jobExecution.getExecutionContext(); JobParameters jobParameters = jobExecution.getJobParameters(); if(jobParameterName.equals("download.taxon")) { setExecutionContext(executionContext,jobParameters,"taxon.txt","org.emonocot.model.Taxon", "http://rs.tdwg.org/dwc/terms/Taxon"); } else if(jobParameterName.equals("download.description")) { setExecutionContext(executionContext,jobParameters,"description.txt","org.emonocot.model.Description", "http://rs.gbif.org/terms/1.0/Description"); } else if(jobParameterName.equals("download.distribution")) { setExecutionContext(executionContext,jobParameters,"distribution.txt","org.emonocot.model.Distribution", "http://rs.gbif.org/terms/1.0/Distribution"); } else if(jobParameterName.equals("download.image")) { setExecutionContext(executionContext,jobParameters,"image.txt","org.emonocot.model.Image", "http://rs.gbif.org/terms/1.0/Image"); } else if(jobParameterName.equals("download.reference")) { setExecutionContext(executionContext,jobParameters,"reference.txt","org.emonocot.model.Reference", "http://rs.gbif.org/terms/1.0/Reference"); } else if(jobParameterName.equals("download.typeAndSpecimen")) { setExecutionContext(executionContext,jobParameters,"typeAndSpecimen.txt","org.emonocot.model.TypeAndSpecimen", "http://rs.gbif.org/terms/1.0/TypesAndSpecimen"); } else if(jobParameterName.equals("download.measurementOrFact")) { setExecutionContext(executionContext,jobParameters,"measurementOrFact.txt","org.emonocot.model.MeasurementOrFact", "http://rs.tdwg.org/dwc/terms/MeasurementOrFact"); } else if(jobParameterName.equals("download.vernacularName")) { setExecutionContext(executionContext,jobParameters,"vernacularName.txt","org.emonocot.model.VernacularName","http://rs.gbif.org/terms/1.0/VernacularName"); } else if(jobParameterName.equals("download.identifier")) { setExecutionContext(executionContext,jobParameters,"identifier.txt","org.emonocot.model.Identifier", "http://rs.gbif.org/terms/1.0/Identifier"); } return new FlowExecutionStatus("true"); } else { return new FlowExecutionStatus("false"); } }
/** * @param jobExecution set the job execution * @param stepExecution set the step execution * @return FlowExecutionStatus a status */ public final FlowExecutionStatus decide(final JobExecution jobExecution, final StepExecution stepExecution) { if(processingModeKey == null && defaultProcessingMode == null) { logger.error("No processing mode was found. Unable to continue", new IllegalArgumentException("A processing mode must exist if specified")); return FlowExecutionStatus.FAILED; } if (jobExecution.getExecutionContext().containsKey(processingModeKey)) { return new FlowExecutionStatus(jobExecution.getExecutionContext().getString(processingModeKey)); } else if(jobExecution.getJobParameters().getParameters().containsKey(processingModeKey)) { return new FlowExecutionStatus(jobExecution.getJobParameters().getString(processingModeKey)); } else { return new FlowExecutionStatus(defaultProcessingMode); } }
@Override public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { String jobMode = jobExecution.getJobInstance().getJobParameters().getString("jobMode"); if (REPLACE.equalsIgnoreCase(jobMode)) { return new FlowExecutionStatus("erase"); } return FlowExecutionStatus.COMPLETED; }
@Override public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { if (!stepExecution.getExitStatus().equals(ExitStatus.FAILED) && stepExecution.getSkipCount() > 0) { return new FlowExecutionStatus("COMPLETED WITH SKIPS"); } else { return new FlowExecutionStatus(jobExecution.getExitStatus().getExitCode()); } }
@Override public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { String targetFile = jobExecution.getJobParameters().getString("archiveFile"); if (batchService.exists(targetFile)) { return new FlowExecutionStatus("FILE EXISTS"); } else { return new FlowExecutionStatus("NO FILE"); } }
@Override public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { if (stepExecution.getWriteCount() > 0) { return new FlowExecutionStatus("NEXT"); } return FlowExecutionStatus.COMPLETED; }
@Test public void testNextStatus() { // Step 에서 Write 작업이 5번 일어났다면... stepExecution.setWriteCount(5); FlowExecutionStatus status = decider.decide(jobExecution, stepExecution); assertThat(status.getName()).isEqualTo("NEXT"); }
@Test public void testCompletedStatus() { // Step에서 Write 작업이 한번도 일어나지 않았다면... 더 이상 할 일이 없다... stepExecution.setWriteCount(0); FlowExecutionStatus status = decider.decide(jobExecution, stepExecution); assertThat(status).isEqualTo(FlowExecutionStatus.COMPLETED); }
@Override public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { FlowExecutionStatus status = stepExecution.getSkipCount() == 0 ? FlowExecutionStatus.COMPLETED : new FlowExecutionStatus("SKIPPED"); if (log.isTraceEnabled()) log.trace("FlowExecutionStatus를 결정했습니다. FlowExecutionStatus=[{}]", status); return status; }
private String c(FlowExecutionStatus executionStatus) { return executionStatus.getName(); }
protected FlowExecutionStatus searchForParameter(Set<Object> values) { if(values.contains(parameter)) { return new FlowExecutionStatus("parameter"); } return new FlowExecutionStatus("not found"); }
/** * stepExecution의 exitCode를 변경 없이 return */ public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) { return new FlowExecutionStatus(stepExecution.getExitStatus().getExitCode()); }