Requirements-based job scheduling
Batch provides both implicit and explicit job scheduling requirements, which match against endpoints based on an application name.
Implicit requirement matching
An implicit scheduling requirement determines which applications a job runs. In Java™ Platform, Enterprise Edition (Java EE) applications, the application name of all Java EE applications installed in the scheduling domain is known through the product configuration, because all Java EE applications are installed into this environment through product administrative interfaces.
For batch utility applications, this information cannot be assumed. By default the information is unavailable, since batch utility applications are installed outside the control of product administrative interfaces. For these applications, the batch administrator can optionally enable application-name based endpoint selection for particular nodes by setting the grid.apps node custom property.
if any node published grid.apps then
attempt to match job using app names
if there is a match then
if job has required-capabilities then
candidate-nodes= $(apply required-capabilities to the set of nodes that have
matching apps)
else
candidate-nodes= $(nodes that have matching apps)
endif
else (no match based on grid.apps)
if job has required-capabilities then
candidate-nodes= $(apply required-capabilities to all nodes)
else
candidate-nodes= $(all nodes)
endif
endif
else (no nodes publish grid.apps)
if job has required-capabilities then
candidate-nodes= $(apply required-capabilities to all nodes)
else
candidate-nodes= $(all nodes)
endif
endif
Java EE type applications always use application name
matching during endpoint selection.Explicit requirement matching
- Node custom properties
- Node metadata properties. For example, com.ibm.websphere.xdProductVersion
- Node name and node host name
Requirements matching precedence
Implicit and explicit matching work together to determine eligible endpoints. For Java EE type jobs, the implicit requirement, application name, is treated as an additional required capability; it is logically appended with any explicitly specified requirements.
For batch utility jobs, an application name is a conditional requirement that applies only for batch utility nodes that advertise their installed applications through the grid.apps property. The batch utility jobs for which no application name match exists and that do not specify explicit requirements are eligible for dispatch to any batch utility node that does not advertise its applications.