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"?> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain.xml job_chain] orders_recoverable = "yes"> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job_chain_node.xml 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"?> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job.xml job] order="yes" stop_on_error="no"> <description> <include file="jobs/[http://www.sos-berlin.com/download/scheduler/jobs/JobSchedulerFTPReceive.xml JobSchedulerFTPReceive.xml]"/> </description> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/script.xml script] language="java" java_class="sos.scheduler.ftp.JobSchedulerFTPReceive"/> </job>
Job: checkSuccessFiles.job.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job.xml job] order="yes" stop_on_error="no"> <description> <include file="jobs/[http://www.sos-berlin.com/download/scheduler/jobs/JobSchedulerExistsFile.xml JobSchedulerExistsFile.xml]"/> </description> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/script.xml script] language="java" java_class="sos.scheduler.file.JobSchedulerExistsFile"/> </job>
Job: processSuccessFiles.job.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/job.xml job] order="yes" stop_on_error="no"> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/script.xml 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"?> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/order.xml order]> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/params.xml params]> <!-- Parameter of the ftpReceive job --> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/param.xml 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=".*"/> <span style="color:green"><param name="ftp_atomic_suffix" value="~"/></span> <!-- 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> <[http://www.sos-berlin.com/doc/en/scheduler.doc/xml/run_time.xml 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.