Examples for HCL Workload Automation for Z
Provides an overview of the examples available of using the Java™ API for HCL Workload Automation for Z.
The following examples help you to understand how the beans are used in the HCL Workload Automation for Z environment:
Example 1: Adding a workstation to the database
// Create the connection to the server
TWSZConn connection = new TWSZConn();
// Get an instance of the interface ZConnModel
final ZConnModel model = connection.getModelBean();
// Define the workstation properties
String wksName = "CPU1";
String wksDescription = "Added by API";
String wksPrintoutRouting = "SYSOUT";
Workstation wks = new Workstation();
wks.setName(wksName);
wks.setDescription(wksDescription);
wks.setType(WorkstationType.COMPUTER);
wks.setReportingAttribute(WorkstationReportingAttribute.AUTOMATIC);
WorkstationZOSAttributes wksAttr = new WorkstationZOSAttributes();
wksAttr.setDefaultTransportTime(3600);
wksAttr.setDefaultJobDuration(60);
wksAttr.setPrintoutRouting(wksPrintoutRouting);
wksAttr.setStartedTaskSupported(true);
wks.setZosAttributes(wksAttr);
try {
Context context = new Context();
// Add the workstation to the database
model.addTWSObject(wks, context);
}
catch (ConnException e) {
// Do something to recover
}
Example 2: Adding a job stream (application) to the database
// Create the connection to the server
TWSZConn connection = new TWSZConn();
// Get an instance of the interface ZConnModel
final ZConnModel model = connection.getModelBean();
final static Date TODAY =
new Date((System.currentTimeMillis()/86400000L) * 86400000L);
// Define the job stream properties
String jsName = "APPL";
String jsOwnerName = "API";
JobStream js = new JobStream();
js.setName(jsName);
js.setOwnerName(jsOwnerName);
js.setValidFrom(TODAY);
js.setPriority(5);
// Define a JCL job to add to the job stream
String jobName = "1";
String wksName = "CPU1";
String jclName = "MYJCL";
Job jclJob = new Job();
jclJob.setName(jobName);
jclJob.setEstimatedDuration(1000);
jclJob.setPriority(-1);
ZOSJobDefinition jobDef = new ZOSJobDefinition();
jobDef.setFlowTargetKey(new FlowTargetKey(wksName));
jobDef.setTaskType(TaskTypes.ZOS_JOB_TASK);
jobDef.setJclName(jclName);
jclJob.setJobDefinition(jobDef);
// Add the JCL job to the job stream
js.getJobs().add(jclJob);
// Define a Printer job to add to the job stream
jobName = "2";
wksName = "PRNT";
Job printerJob = new Job();
printerJob.setName(jobName);
printerJob.setEstimatedDuration(1000);
printerJob.setPriority(-1);
jobDef = new ZOSJobDefinition();
jobDef.setFlowTargetKey(new FlowTargetKey(wksName));
jobDef.setTaskType(TaskTypes.ZOS_ PRINTER_TASK);
jobDef.setJclName(jclName);
jobDef.setLimitForFeedback(102);
printerJob.setJobDefinition(jobDef);
// Add to the Printer job the dependency from the JCL job
List printerJobDeps = printerJob.getInternalDependencies();
InternalDependency depFromJclJob =
new InternalDependency(null, (JobKey)jclJob.getKey());
printerJobDeps.add(depFromJclJob);
// Add the Printer job to the job stream
js.getJobs().add(printerJob);
try {
Context context = new Context();
// Add the job stream to the database
Example 3: Modifying a job stream (application) in the database
// Create the connection to the server
TWSZConn connection = new TWSZConn();
// Get an instance of the interface ZConnModel
final ZConnModel model = connection.getModelBean();
final static Date TODAY =
new Date((System.currentTimeMillis()/86400000L) * 86400000L);
final static Date TOMORROW =
new Date(((System.currentTimeMillis()/86400000L) * 86400000L) + 86400000L);
final static long HOUR = 3600000;
// Make the job stream key
String jsName = "APPL";
JobStreamKey jsKey = new JobStreamKey(jsName, TODAY, false, false);
try {
Context context = new Context();
// Get the job stream by its key
JobStream js =
(JobStream)model.getTWSObject(JobStream.class, jsKey, false, context);
// Define a run cycle to add to the job stream
String rcName = "RCRULE";
String rcDescription = "Added by API";
RunCycle rcRule = new RunCycle();
rcRule.setName(rcName);
rcRule.setDescription(rcDescription);
rcRule.setType(RunCycleType.RULE);
rcRule.setValidFrom(TODAY);
rcRule.setValidTo(TOMORROW);
rcRule.getTimeRestrictions().setStartOffset(10*HOUR);
rcRule.getTimeRestrictions().setDeadlineOffset(12*HOUR + 24* HOUR);
rcRule.setFreeDaysRule(FreeDaysRule.DO_NOT_SELECT);
rcRule.setICalendar("ADRULE ONLY(001 003) LAST(001 002) DAY(DAY
MONDAY THURSDAY) MONTH(FEBRUARY APRIL JUNE SEPTEMBER NOVEMBER) YEAR ");
// Add the run cycle to the job stream
js.getRunCycles().add(rcRule);
// Modify the job stream in the database
Identifier jsId = model.setTWSObject(js, true, true, context);
}
catch (ConnException e) {
// Do something to recover
}
Example 4: Adding a special resource in the database
// Create the connection to the server
TWSZConn connection = new TWSZConn();
// Get an instance of the interface ZConnModel
final ZConnModel model = connection.getModelBean();
final static long HOUR = 3600000;
// Define the resource properties
String resName = "RES";
String resDescription = "Added by API";
String wksName1 = "CPU1";
String wksName2 = "CPU2";
Resource res = new Resource();
res.setName(resName);
res.setDescription(resDescription);
FlowTargetKey wksKey1 = new FlowTargetKey(wksName1);
FlowTargetKey wksKey2 = new FlowTargetKey(wksName2);
res.getConnectedWorkstationLinks().add(new WorkstationLink(wksKey1));
res.getConnectedWorkstationLinks().add(new WorkstationLink(wksKey2));
ResourceBaseConstraints resCon = new ResourceBaseConstraints();
resCon.setQuantity(30);
resCon.setUsedFor(ResourceUsage.CONTROL);
resCon.setActionOnError(ResourceActionOnError.KEEP);
resCon.setAvailable(YesNoDefaultOption.NO);
res.setDefaultConstraints(resCon);
ResourceAvailabilityInterval resInt =
new ResourceAvailabilityInterval();
resInt.setIntervalValidityDayOfWeek(Calendar.MONDAY);
resInt.setIntervalStartTime(10*HOUR);
resInt.setIntervalEndTime(21*HOUR);
resInt.setQuantity(20);
resInt.setAvailable(YesNoDefaultOption.YES);
res.getResourceAvailabilityIntervals().add(resInt);
try {
Context context = new Context();
// Add the resource to the database
model.addTWSObject(res, context);
}
catch (ConnException e) {
// Do something to recover
}