Date: Fri, 29 Mar 2024 09:15:19 +0000 (UTC) Message-ID: <1851003732.12663.1711703719774@change.sos-berlin.com> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_12662_1916717908.1711703719773" ------=_Part_12662_1916717908.1711703719773 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
We assume that we have a persistent order which is stored in ./con=
fig/live/my/jobChain,template.order.xml
.
We want to add an order to the job chain /some/jobChain
by a =
standalone job.
In the following example we use the <show_order ... what=3D"payload"/= > command to get the order parameters.
<?xm= l version=3D"1.0" encoding=3D"ISO-8859-1"?>=20 =20 <job> <params> <param name=3D"orderTemplateFilename" value=3D"/my/jobChain,te= mplate.order.xml"/> <param name=3D"addOrderToJobChain" value=3D"/some/jobChain"/&g= t; </params> =20 <script language=3D"javascript"> <![CDATA[ =20 function spooler_process() { =20 //read parameter which has a filename of the template *.order.xml as v= alue var orderTemplateFilename =3D spooler_task.params.value('orderTem= plateFilename'); =20 //read parameter of a job chain path on which an order will be added var addOrderToJobChain =3D spooler_task.params.value('addOrder= ToJobChain'); =20 var orderTemplateParamsElement =3D getOrderParamsElement(orderTemplate= Filename); =20 //1.Option: using spooler.execute_xml to add order var xmlCommand =3D '<add_order job_chain=3D"'+addOr= derToJobChain+'" at=3D"now">'+orderTemplateParamsElement +'</add_orde= r>'; var answer =3D spooler.execute_xml(xmlCommand); spooler_log.info("XML Command: " + xmlCommand); spooler_log.info("Answer: " + answer); =20 //2.Option: using add_order method on a job chain object var jobChain =3D spooler.job_chain( addOrderToJobChain ); var order =3D spooler.create_order(); order.at =3D 'now'; order.params.xml =3D orderTemplateParamsElement||'<params/>'= ; jobChain.add_order(order); =20 return false; } =20 =20 /** * @param Filename of an order * @return String <params> element of JobScheduler answer from <sh= ow_order ...> command */ function getOrderParamsElement(orderFilename) { =20 //remove extension of order filename and split, so that job_chain=3Dor= derFilenames[0] and orderID=3DorderFilenames[1] var orderFilenames =3D orderFilename.replace( /\.order\.xml$/, "").spl= it(','); =20 //execute <show_order .../> command with what=3D"payload" to get= the parameters var xmlCommand =3D '<show_order job_chain=3D"'+orderFilenames[0= ]+'" order=3D"'+orderFilenames[1]+'" what=3D"payload"/>'; var answer =3D spooler.execute_xml( xmlCommand ); var paramsElement =3D ""; =20 //match not empty params element var paramsElementMatch =3D answer.match(/<params[^>]*>.+<\= /params>/); if(paramsElementMatch) { paramsElement =3D paramsElementMatch[0]; //remove attributes in params element paramsElement =3D paramsElement.replace(/(<params)[^>]*(>= ;.+<\/params>)/,"$1$2"); } =20 spooler_log.info("XML Command: " + xmlCommand); spooler_log.info("Answer: " + answer); spooler_log.info("Params Element: " + paramsElement); =20 return paramsElement; } ]]> </script> =20 <run_time /> </job>
The second option above is better because you can modify the parameters = in a simple way:
//2= .Option: using add_order method on a job chain object var jobChain =3D spooler.job_chain( addOrderToJobChain ); var order =3D spooler.create_order(); order.at =3D 'now'; order.params.xml =3D orderTemplateParamsElement||'<params/>'= ; order.params.set_var('hello', 'world'); jobChain.add_order(order);