程序调用嵌套元素

可使用五个嵌套元素中的一个来启动程序:fte:presrcfte:predstfte:postdstfte:postsrcfte:command。 这些嵌套元素指示代理作为其处理过程的一部分来调用外部程序。 必须先确保命令位于运行该命令的代理程序的 agent.properties 文件中由 commandPath 属性指定的位置,然后才能启动程序。

即使每个程序调用元素的名称不同,它们也可共享同一组属性和同一组嵌套元素。 可通过 fte:filecopyfte:filemovefte:command Ant 任务启动程序。

不能从 Connect:Direct® 网桥代理调用程序。

可调用程序的 Ant 任务:

  • fte: filecopy 任务嵌套使用 fte:predstfte:postdstfte:presrcfte:postsrc 嵌套元素的程序调用参数。
  • fte: filemove 任务嵌套使用 fte:predstfte:postdstfte:presrcfte:postsrc 嵌套元素的程序调用参数。
  • fte: call 任务嵌套使用 fte:command 嵌套元素的程序调用参数。

属性

命令
必需。 指定要调用的程序。 要使代理能够运行命令,该命令必须位于代理的 agent.properties 文件中由 commandPath 属性指定的位置。 有关更多信息,请参阅 commandPath MFT 属性command 属性中指定的所有路径信息视为相对于 commandPath 属性指定的位置。 如果 typeexecutable,将期望可执行程序,否则将期望适合于调用类型的脚本。
retrycount
可选。 在程序未返回成功返回码时重试调用程序的次数。 由 command 属性指定的程序最多可调用此数目的次数。 为该属性指定的值必须为非负数。 如果未指定 retrycount 属性,那么将使用缺省值 0。
retrywait
可选。 重新尝试调用程序之前,要等待的秒数。 如果 command 属性指定的程序未返回成功返回码,并且 retrycount 属性指定非零值,那么该参数可确定重试之间等待的时间。 为该属性指定的值必须为非负数。 如果未指定 retrywait 属性,那么将使用缺省值 0。
successrc
可选。 该属性的值用于确定程序调用成功运行的时间。 该表达式用于对命令的进程返回码进行求值。 The value can be composed of one or more expressions combined with a vertical bar character (|) to signify Boolean , or an ampersand (&) character to signify Boolean . 每个表达式可以是以下类型之一:
  • 指示进程返回码和数字间的等同性测试的数字。
  • > 字符为前缀的数字,用于指示数字与进程返回码之间的大于检验。
  • < 字符为前缀的数字,用于指示数字与进程返回码之间的 "小于" 测试。
  • ! 为前缀的数字 字符为前缀的数字,指示该数字和进程返回码间的“不等于”测试。
例如: >2&<7&!5|0|14 解释为以下成功的返回码:0、3、4、6 和 14。 所有其他返回码都解释为不成功。 如果未指定 successrc 属性,那么将使用缺省值 0。 这表示当且仅当该命令返回码为 0 时,才会“判定”该命令运行成功。
类型
可选。 该属性的值指定正在调用的程序的类型。 指定以下某个选项:
executable
该任务调用可执行程序。 可使用 arg 嵌套元素指定其他自变量。 可在 commandPath 上访问该程序,并在适用情况下具有执行许可权集。 只要指定 shell 程序 (例如, shell 脚本文件的第一行是: #!/bin/sh) ,就可以调用 UNIX 脚本。 写入 stderr 或 stdout 的命令输出将发送到调用的 Managed File Transfer 日志。 然而,数据输出量受代理配置的限制。 缺省值为 10KB 数据,但可使用代理属性 maxCommandOutput 覆盖此缺省值。
antscript
该任务使用 fteAnt 命令运行指定的 Ant 脚本。 可使用 property 嵌套元素指定属性。 可以使用 target 嵌套元素指定 Ant 目标。 应该可以在 commandPath上访问 Ant 脚本。 写入 stderr 或 stdout 的 Ant 输出将发送到调用的 Managed File Transfer 日志。 然而,数据输出量受代理配置的限制。 缺省值为 10KB 数据,但可使用代理属性 maxCommandOutput 覆盖此缺省值。
[z/OS]jcl
jcl 仅在 z/OS® 上受支持,并运行指定的 z/OS JCL 脚本。 JCL 作为作业提交且需要有作业卡。 成功提交作业时,写入 Managed File Transfer 日志的 JCL 命令输出包含以下文本 :JOB job_name(job_id) ,其中:
  • job_name 是 JCL 中的作业卡所标识的作业的名称。
  • job_idz/OS 系统生成的作业标识。
如果不能成功提交作业,那么 JCL 脚本命令将失败并将指出失败原因(例如,不存在任何作业卡)的消息写入日志中。 要了解是否成功运行或完成该作业,请使用系统服务,如 SDSF。 Managed File Transfer 不提供信息,因为它只提交作业; 然后系统确定何时运行作业以及如何显示作业输出。 由于将 JCL 脚本提交为批处理作业,因此不建议为 presrcpredst 嵌套元素指定 jcl,因为您只知道已成功提交该作业,但不知道该作业是否在传输开始前成功运行直至完成。 jcl 类型的嵌套元素均无效。
以下示例显示了 JCL 作业:
//MYJOB JOB
//*
//MYJOB EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=H
//SYSUT1 DD DSN=FRED.DEMO.TXT,DISP=SHR
//SYSUT2 DD DSN=BOB.DEMO.TXT,DISP=(NEW,CATLG),
// RECFM=VB,LRECL=133,BLKSIZE=2048,
// SPACE=(TRK,(30,5),RLSE)
//SYSIN DD DUMMY 

指定为嵌套元素的参数

fte:arg
只有在 type 属性值为 executable 时才有效。 使用嵌套 fte:arg 元素,为作为程序调用的一部分而调用的程序指定自变量。 程序自变量以遇到 fte:arg 元素的顺序从 fte:arg 元素指定的值构建。 您可以选择指定零个或更多的 fte:arg 元素作为程序调用的嵌套元素。
fte:property
只有在 type 属性值为 antscript 时才有效。 使用嵌套 fte:property 元素的 namevalue 属性将 "名称/值" 对传入 Ant 脚本。 您可以选择指定零个或更多的 fte:property 元素作为程序调用的嵌套元素。
fte:target
只有在 type 属性值为 antscript 时才有效。 在 Ant 脚本中指定要调用的目标。 您可以选择指定零个或更多的 fte:target 元素作为程序调用的嵌套元素。

Arg 属性

必需。 要传递到正在调用的程序的自变量的值。

属性

名称
必需。 要传递到 Ant 脚本的属性的名称。
必需。 要与传递到 Ant 脚本的属性名称相关联的值。

示例

此示例显示了作为 fte: filecopy 任务的一部分指定的 fte:postsrc 程序调用。 程序调用适用于名为 post.sh 的程序,并且提供了 /home/fteuser2/file.bin. 的单个自变量
<fte:filecopy 
cmdqm="qm0@localhost@1414@SYSTEM.DEF.SVRCONN" 
 src=agent1@qm1 dst="agent2@qm2"
 rcproperty="copy.result">                    
<fte:filespec srcfilespec="/home/fteuser1/file.bin" dstfile="/home/fteuser2/file.bin"/>
<fte:postsrc command="post.sh" successrc=1 >         
	<fte:arg value="/home/fteuser2/file.bin"/>
</fte:postsrc>
</fte:filecopy>
此示例显示将 fte:command 程序调用指定为 fte: call 任务的一部分。 程序调用针对名为 command.sh 的可执行文件进行,该文件未传递任何命令行自变量。 如果 command.sh 未返回成功返回码 1,那么会在 30 秒后重试该命令。
<fte:call 
cmdqm="qm0@localhost@1414@SYSTEM.DEF.SVRCONN"
 agent="agent1@qm1" 
 rcproperty="call.rc" 
 origuser="bob" 
 jobname="${job.id}">                
<fte:command command="command.sh" successrc=1 retrycount="5" retrywait="30"/>		
</fte:call>
此示例显示将 fte:command 程序调用指定为 fte: call 任务的一部分。 程序调用用于名为 script.xmlAnt 脚本中的复制和压缩目标,该脚本传递了两个属性。
<fte:call 
cmdqm="qm0@localhost@1414@SYSTEM.DEF.SVRCONN"
 agent="agent1@qm1" 
 rcproperty="call.rc" 
 origuser="bob" 
 jobname="${job.id}">                
<fte:command command="script.xml" type="antscript">
  <property name="src" value="AGENT5@QM5"/>
  <property name="dst" value="AGENT3@QM3"/>
  <target name="copy"/>	
  <target name="compress"/>
</fte:command>	
</fte:call>