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 通道
如果省略命令队列管理器的 hostportchannel 信息,那么会使用 command.properties 文件中指定的连接信息。
注意: 如果没有为以下对象指定值:
  • host 变量,使用绑定方式
  • port 变量,使用值 1414
  • channel 变量, SYSTEM.DEF.SVRCONN 。
请参阅 MFT command.properties 文件 以获取更多信息。

但是,不能跳过中间的属性,例如 qmgrname@host@@channel。 例如,您可以具有 qmgrname@hostqmgrname@host@portqmgrname@hostport@@channel

MFT 使用 @ 定界符拆分给定属性。 根据找到的令牌数,它采用第一个令牌作为 qmgrname,第二个令牌作为 host,第三个令牌作为 port ,最后采用 channel

有关更多信息,请参阅 MFT command.properties 文件
您可以使用 com.ibm.wmqfte.propertySet 属性指定要使用的 command.properties 文件。 有关更多信息,请参阅 com.ibm.wmqfte.propertySet
如果您不使用 cmdqm 属性,那么该任务会缺省使用 com.ibm.wmqfte.ant.commandQueueManager 属性(如果已设置该属性)。 如果未设置 com.ibm.wmqfte.ant.commandQueueManager 属性,会尝试连接至 command.properties 文件中定义的缺省队列管理器。 com.ibm.wmqfte.ant.commandQueueManager 属性的格式与 cmdqm 属性的相同,即 qmgrname@host@port@channel
idproperty
除非您已指定 outcomedefer,否则可选。 指定传输标识要分配到的属性的名称。 在提交传输请求时会生成传输标识,您可以使用传输标识来跟踪传输进展、诊断传输问题以及取消传输。
如果您还指定了 ignoreoutcome 属性,那么不能指定该属性。 但是,如果您已将 outcome 属性指定为 defer,那么还必须指定 idproperty
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 属性。
如果您不指定 outcome 属性,那么该任务会缺省使用值 await
rcproperty
可选。 指定要将 fte:call 请求的结果代码指定给的属性的名称。 结果代码反映 fte:call 请求的总体结果。
如果您已将 outcome 属性指定为 ignoredefer,那么无法指定该属性。 然而,如果将 outcome 指定为 await,那么必须指定 rcproperty

指定为嵌套元素的参数

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>