程序调用嵌套元素
可使用五个嵌套元素中的一个来启动程序:fte:presrc、fte:predst、fte:postdst、fte:postsrc 和 fte:command。 这些嵌套元素指示代理作为其处理过程的一部分来调用外部程序。 必须先确保命令位于运行该命令的代理程序的 agent.properties 文件中由 commandPath 属性指定的位置,然后才能启动程序。
即使每个程序调用元素的名称不同,它们也可共享同一组属性和同一组嵌套元素。 可通过 fte:filecopy、fte:filemove 和 fte:command Ant 任务启动程序。
不能从 Connect:Direct® 网桥代理调用程序。
可调用程序的 Ant 任务:
- fte: filecopy 任务嵌套使用
fte:predst,fte:postdst,fte:presrc和fte:postsrc嵌套元素的程序调用参数。 - fte: filemove 任务嵌套使用
fte:predst,fte:postdst,fte:presrc和fte:postsrc嵌套元素的程序调用参数。 - fte: call 任务嵌套使用
fte:command嵌套元素的程序调用参数。
属性
- 命令
- 必需。 指定要调用的程序。 要使代理能够运行命令,该命令必须位于代理的 agent.properties 文件中由 commandPath 属性指定的位置。 有关更多信息,请参阅 commandPath MFT 属性。
command属性中指定的所有路径信息视为相对于 commandPath 属性指定的位置。 如果type为executable,将期望可执行程序,否则将期望适合于调用类型的脚本。 - 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 覆盖此缺省值。
jcl- 值
jcl仅在 z/OS® 上受支持,并运行指定的 z/OS JCL 脚本。 JCL 作为作业提交且需要有作业卡。 成功提交作业时,写入 Managed File Transfer 日志的 JCL 命令输出包含以下文本 :JOB job_name(job_id) ,其中:- job_name 是 JCL 中的作业卡所标识的作业的名称。
- job_id 是 z/OS 系统生成的作业标识。
presrc或predst嵌套元素指定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元素的name和value属性将 "名称/值" 对传入 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.xml的 Ant 脚本中的复制和压缩目标,该脚本传递了两个属性。<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>