You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

If you use the JobSchedulerFTPReceive job in a job chain, then you have often the situation that the successor job wants to know which files have been transferred successfully.
The documentation of the JobSchedulerFTPReceive.xml job describes that the job generates the parameter ftp_result_filenames and ftp_result_filepaths where the successfully transferred files are listed.

Unfortunately, this feature is buggy. Both parameters are always empty.

Workaround:
You can insert the JobSchedulerExistsFile job as first successor job into the job chain.

Job Chain: ftpReceive.job_chain.xml

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <job_chain  orders_recoverable = "yes">
    <job_chain_node state       = "receive"
                      job         = "ftpReceive"
                      next_state  = "check"
                      error_state = "error"/>
 
    <job_chain_node   state       = "check"
                      job         = "checkSuccessFiles"
                      next_state  = "process"
                      error_state = "error"/>
 
    <job_chain_node   state       = "process"
                      job         = "processSuccessFiles"
                      next_state  = "success"
                      error_state = "error"/>
 
    <job_chain_node   state       = "success"/>
    <job_chain_node   state       = "error"/>
 </job_chain>
 

Job: ftpReceive.job.xml

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <job order="yes" stop_on_error="no">
    <description>
       <include file="jobs/[http://www.sos-berlin.com/download/scheduler/jobs/JobSchedulerFTPReceive.xml JobSchedulerFTPReceive.xml]"/>
    </description>
    <script language="java" java_class="sos.scheduler.ftp.JobSchedulerFTPReceive"/>
 </job>

Job: checkSuccessFiles.job.xml

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <job order="yes" stop_on_error="no">
    <description>
       <include file="jobs/[http://www.sos-berlin.com/download/scheduler/jobs/JobSchedulerExistsFile.xml JobSchedulerExistsFile.xml]"/>
    </description>
    <script language="java" java_class="sos.scheduler.file.JobSchedulerExistsFile"/>
 </job>

Job: processSuccessFiles.job.xml

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <job order="yes" stop_on_error="no">
    <script language="shell">
        <![CDATA[
 # here you can do somethimg with the result set
 echo "FTP RESULT FILES = $SCHEDULER_PARAM_SCHEDULER_SOSFILEOPERATIONS_RESULTSET"
        ]]>
    </script>
 </job>

Order: ftpReceive,test.order.xml

 <?xml version="1.0" encoding="ISO-8859-1"?>
 <order>
    <params>
 
       <!-- Parameter of the ftpReceive job -->
       <param   name="ftp_host"          value="ServerA"/>
       <param   name="ftp_port"          value="22"/>
       <param   name="ftp_protocol"      value="sftp"/>
       <param   name="ftp_user"          value="my_user"/>
       <param   name="ftp_password"      value="my_pass"/>
       <param   name="ssh_auth_method"   value="password"/>
       <param   name="ftp_remote_dir"    value="/ftp_out"/>
       <param   name="ftp_local_dir"     value="/home/my_user/ftp_in"/>
       <param   name="ftp_file_spec"     value=".*"/>
       <param   name="ftp_atomic_suffix" value="~"/>
 
       <!-- Parameter of the fileExists job -->
       <param   name="file"              value="/home/my_user/ftp_in"/>
       <span style="color:green"><param   name="file_spec"         value="[^~]$"/></span>
 
    </params>
    <run_time/>
 </order>

NOTICE:

The parameter ftp_atomic_suffix is set with "~".

Only successfully transferred files are renamed at the target to its original filename without the "~" at the end.

The file_spec parameter of the check looks for all files without a "~" at the end.

 

  • No labels