public Job createJob(String name, Map<String, String> properties) {
		Assert.hasText(name, "Job name is required");
		Assert.notNull(properties, "Job properties are required");

		String definition = properties.get("definition");
		Assert.hasText(definition, "Job properties requires a 'definition' property");
		if (ComposedJobUtil.isComposedJobDefinition(definition)){
			definition = ComposedJobUtil.getComposedJobModuleName(name) + 
				ComposedJobUtil.getDefinitionParameters(definition);
		}

		List<ModuleDescriptor> descriptors = parser.parse(name, definition, ParsingContext.job);
		Assert.isTrue(descriptors.size() == 1);
		return new Job.Builder()
				.setName(name)
				.setDeploymentProperties(
						DeploymentPropertiesFormat.parseDeploymentProperties(properties.get("deploymentProperties")))
				.setModuleDescriptor(descriptors.get(0)).build();
	}
Create a new instance of {@link Job} for the given name and
properties. The properties should at minimum contain the following
entries:
<table>
  <tr>
    <th>definition</th>
    <td>DSL definition for job</td>
  </tr>
  <tr>
    <th>deploymentProperties</th>
    <td>Deployment properties for job</td>
  </tr>
</table>

@param name        job name
@param properties  properties for job
@return new {@code Job} domain model instance
spring-xd-dirt/src/main/java/org/springframework/xd/dirt/job/JobFactory.java