fte: call Ant 任务
您可以使用 fte:call 任务来远程调用脚本和程序。
该任务允许您向代理发送 fte:call 请求。 代理通过运行脚本或程序并返回结果来处理该请求。 要调用的命令必须可供代理访问。 确保 agent.properties 文件中的 commandPath 属性值包含要调用的命令的位置。 由命令嵌套元素指定的任何路径信息必须相对于 commandPath 属性指定的位置。 缺省情况下,commandPath 为空,以使代理无法调用任何命令。 有关此属性的更多信息,请参阅 commandPath MFT 属性。
有关 agent.properties 文件的更多信息,请参阅 MFT agent.properties 文件。
属性
- 客服
- 必需。 指定要将 fte:call 请求提交到的代理。 按以下格式指定代理信息:
agentname@qmgrname,其中agentname是代理的名称,qmgrname是该代理直接连接到的队列管理器的名称。 - cmdqm
- 可选。 请求提交到的命令队列管理器。 按以下格式指定此信息:
qmgrname@host@port@channel,其中:qmgrname是队列管理器的名称host是正在运行队列管理器的系统的可选主机名port是队列管理器正在侦听的可选端口号channel是要使用的可选 SVRCONN 通道
host、port或channel信息,那么会使用 command.properties 文件中指定的连接信息。注意: 如果没有为以下对象指定值:- host 变量,使用绑定方式
- port 变量,使用值 1414
- channel 变量, SYSTEM.DEF.SVRCONN 。
但是,不能跳过中间的属性,例如
qmgrname@host@@channel。 例如,您可以具有qmgrname@host,qmgrname@host@port或qmgrname@hostport@@channel。MFT 使用
@定界符拆分给定属性。 根据找到的令牌数,它采用第一个令牌作为 qmgrname,第二个令牌作为 host,第三个令牌作为 port ,最后采用 channel。 - idproperty
- 除非您已指定
outcome为defer,否则可选。 指定传输标识要分配到的属性的名称。 在提交传输请求时会生成传输标识,您可以使用传输标识来跟踪传输进展、诊断传输问题以及取消传输。 - jobname
- 可选。 向 fte:call 请求指定作业名。 您可以使用作业名来创建传输的逻辑组。 使用 fte: uuid Ant 任务 任务来生成伪唯一作业名。 如果您不使用 jobname 属性,那么该任务缺省使用
com.ibm.wmqfte.ant.jobName属性值(如果已设置该属性)。 如果未设置该属性,那么将不存在与 fte:call 请求关联的作业名。 - origuser
- 可选。 指定要与 fte:call 请求相关联的始发用户标识。 如果您不使用 origuser 属性,那么该任务会缺省使用用于运行 Ant 脚本的用户标识。
- outcome
- 可选。 确定在将控制权返回给 Ant 脚本之前,任务是否等待 fte:call 操作完成。 指定以下某个选项:
- await
- 任务在返回之前等待 fte:call 操作完成。 如果将
outcome指定为await,那么idproperty属性为可选。 - defer
- 一旦提交了 fte:call 请求,该任务就会立即返回,并假定稍后将使用 await结果 或 ignore结果 任务来处理调用操作的结果。 如果将
outcome指定为defer,那么idproperty属性是必需的。 - ignore
- 如果 fte:call 操作的结果不重要,那么可以指定值
ignore。 随后,任务会在 fte:call 请求提交之后立即返回,而不会分配任何资源来跟踪命令的结果。 如果将outcome指定为ignore,那么不能指定idproperty属性。
await。 - rcproperty
- 可选。 指定要将 fte:call 请求的结果代码指定给的属性的名称。 结果代码反映 fte:call 请求的总体结果。
指定为嵌套元素的参数
- fte: 命令
- 指定将由代理调用的命令。 您只能将单个
fte:command元素与给定的 fte:call 操作关联。 要调用的命令必须位于代理程序的 agent.properties 文件中的 commandPath 属性所指定的路径上。 - fte:metadata
- 您可以指定要与调用操作关联的元数据。 该元数据记录在由调用操作生成的日志消息中。 您只能将一个元数据块与一个给定传输元素相关联;但是,该块可包含多份元数据。
示例
该示例显示如何在队列管理器 QM1 上运行的 AGENT1 处调用命令。 要调用的命令为脚本 command.sh,该脚本是通过xyz 的单个参数调用的。 命令 command.sh 位于代理程序的 agent.properties 文件中的 commandPath 属性指定的路径上。<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:arg value="xyz"/>
</fte:command>
<fte:metadata>
<fte:entry name="org.foo.accountName" value="BDG3R"/>
</fte:metadata>
</fte:call>