Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The Managed Jobs PHP web interface provides a textarea for this, while in the Job Scheduler Object Editor (JOE), only an input field is available.
PHP converts the textarea hexadecimal because a newline cannot be written in an XML attribute (see also Why_have_the_command_parameter_of_some_jobs_a_hexadecimal_coded_value%3F).
If you want to use the job with multiple statements without the Managed Jobs, then the statements must should be changed hexadecimal or you use as newline.

The following is an example of a job chain in which the statements are converted before launchingcommand contains two statements separated by .

The job chain launchDB.job_chain.xml:

Code Block
 <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain.xml job_chain] orders_recoverable="yes" visible="yes">
     <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="prepare" job="prepareStatements" next_state="launch"  error_state="error"/>
     <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml job_chain_node] state="launch"  job="launchDB"          next_state="success" error_state="error"/>
     <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job<job_chain_node.xml job_chain_node] state="success"/>
     <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job<job_chain_node.xml job_chain_node] state="error"/>
 </job_chain>

...

Code Block
 <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/order.xml order] title="update MY_TABLE">
     <params>
         <param name="statement_newline" value="__x0A__"/>
   command"      <param name="statements"        value="update MY_TABLE set a='foo' where b='bar';__x0A__&#10;commit;"/>
     </params>
     <run_time/>
 </order>

The first job prepareStatements.job.xml:
It reads order parameter statements and statement_newline, replaces statement_newline to a real newline, converts statements hexadecimal and writes the result in the command parameter.

Code Block

 <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job.xml job] order="yes" stop_on_error="no" title="set command param hexadecimal">
     <script language="javascript">
         <![CDATA[
 function spooler_process()\{
   spooler_log.info(spooler_job.name + " tries to set command parameter.")
   var orderParams = spooler_task.order.params;  
   var stmts       = orderParams.value("statements");
   var sep         = orderParams.value("statement_newline");
   spooler_log.info("param statements = " + stmts);
   spooler_log.info("param statement_newline = " + sep);
   stmts           = stmts.split(sep).join("\n").bin2hex();
   orderParams.set_var("command", stmts);
   spooler_log.info("param command = " + orderParams.value("command"));  
   return true;
 \}
 
 String.prototype.bin2hex = function() \{
   var hex     = "";
   var str     = this;  
   var sLength = this.length;
   for( var i = 0; i < sLength; i++ ) \{ 
     hex += str.charCodeAt(i).toString(16).replace(/^([\da-f])$/,"0$1");
   \}
   return hex;
 \}
         ]]>
     </script>
     <run_time/>
 </job>

The second job launchDB.job.xml:
It executes the statements.

...