@RequestMapping(value = "/{stepExecutionId}/progress", method = RequestMethod.GET)
	@ResponseStatus(HttpStatus.OK)
	public StepExecutionProgressInfoResource progress(@PathVariable long jobExecutionId,
			@PathVariable long stepExecutionId) {
		try {
			StepExecution stepExecution = jobService.getStepExecution(jobExecutionId, stepExecutionId);
			String stepName = stepExecution.getStepName();
			if (stepName.contains(":partition")) {
				// assume we want to compare all partitions
				stepName = stepName.replaceAll("(:partition).*", "$1*");
			}
			String jobName = stepExecution.getJobExecution().getJobInstance().getJobName();
			StepExecutionHistory stepExecutionHistory = computeHistory(jobName, stepName);
			return progressInfoResourceAssembler.toResource(new StepExecutionProgressInfo(stepExecution,
					stepExecutionHistory));
		}
		catch (org.springframework.batch.admin.service.NoSuchStepExecutionException e) {
			throw new NoSuchStepExecutionException(stepExecutionId);
		}
		catch (org.springframework.batch.core.launch.NoSuchJobExecutionException e) {
			throw new NoSuchJobExecutionException(jobExecutionId);
		}
	}
Get the step execution progress for the given jobExecutions step.

@param jobExecutionId Id of the {@link JobExecution}, must not be null
@param stepExecutionId Id of the {@link StepExecution}, must not be null
@return {@link StepExecutionInfoResource} that has the progress info on the given {@link StepExecution}.
@throws NoSuchJobExecutionException Thrown if the respective {@link JobExecution} does not exist
@throws NoSuchStepExecutionException Thrown if the respective {@link StepExecution} does not exist
spring-xd-dirt/src/main/java/org/springframework/xd/dirt/rest/BatchStepExecutionsController.java