Creating new job via script
Posted: Thu Aug 06, 2015 1:57 pm
Hello!
I was wondering if anyone could offer me some insight as to why my script is unable to create a new file and output it into my flow.
Here is the script I have written attempting to do so:
To summarise what the script should actually be doing:
Many thanks,
Dan
I was wondering if anyone could offer me some insight as to why my script is unable to create a new file and output it into my flow.
Here is the script I have written attempting to do so:
Code: Select all
// Is invoked each time a new job arrives in one of the input folders for the flow element.
// The newly arrived job is passed as the second parameter.
function jobArrived( s : Switch, job : Job )
{
}
// Is invoked at regular intervals regardless of whether a new job arrived or not.
// The interval can be modified with s.setTimerInterval().
function timerFired( s : Switch )
{
s.log(3,'Tick.');
var slowInterval = 600; // Number of seconds between unfruitful searches
var fastInterval = 10; // Number of seconds between job yielding searches
var maxLines = 10; // Number of lines to attempt processing before requerying the database
var select1 = "SELECT order_id, line_number, line_id, url " +
"FROM table_name AS tn " +
"LEFT JOIN other_table AS o ON o.id = tn.order_id " +
"WHERE tn.status = 'READY' AND o.status = 'READY' " +
"ORDER BY order_id, tn.line_number;"
var jobLinkDS = new DataSource();
jobLinkDS.connect("JL-DEV");
var selectQuery = new Statement(jobLinkDS);
var updateQuery = new Statement(jobLinkDS);
selectQuery.execute(select1);
var activeOrder = 0;
for (i = 0; i < maxLines; i++) {
if (selectQuery.isRowAvailable()) {
s.setTimerInterval(fastInterval);
selectQuery.fetchRow();
s.log(3,'loop run ' + (i+1));
orderID = selectQuery.getString(0);
lineNum = selectQuery.getString(1);
lineID = selectQuery.getString(2);
URL = selectQuery.getString(3);
if (activeOrder == 0) {
activeOrder = orderID;
} else if (activeOrder != orderID) {
s.log(3, "New Order ID. Restarting.");
return;
}
var newFile = new File(s.createPathWithName("#" + orderID + "-#" + lineID + "(" + lineNum + ").dg"));
s.log(3, newFile.fullName);
var newJob = s.createNewJob(newFile.fullName);
newJob.setPrivateData("orderID", orderID);
newJob.setPrivateData("lineNum", lineNum);
newJob.setPrivateData("lineID", lineID);
newJob.setPrivateData("URL", URL);
newJob.sendToSingle(newFile.fullName);
var update1 = "UPDATE table_name SET status = 'IN SWITCH' WHERE line_id = " + parseInt(lineID,10);
updateQuery.execute(update1);
} else {
s.setTimerInterval(slowInterval);
return;
}
}
}
- Check the database to see if there is a suitable job
- If there is, generate a dummy .dg file and attach relevant information as private data
- Output the file into the flow, where the private data can be actioned upon
Many thanks,
Dan