使用变量替换定制 MFT 资源监视器任务
在满足活动资源监视器的触发条件时,会调用已定义的任务。 除了每次使用相同的目标代理或相同的目标文件名调用传输或命令任务之外,您还可以在运行时修改任务定义。 可通过将变量名插入到任务定义 XML 中来实现此目的。 在监视器确定已满足触发条件并且任务定义包含变量名时,将用变量值替换变量名,然后调用任务。
用于替换的变量只能用于正触发条件。 只有 match 和 fileSize 触发条件会使得变量被替换。 如果使用了 noMatch 条件,并且任务定义中存在替换变量名称,那么不会调用任务,并且监视器会产生返回码 110 和错误消息BFGDM0060E.
如果受监视的资源是队列
可以在任务 XML 定义中替换要从受监视队列中读取的第一条消息中的任何 IBM® MQ 消息属性的值。
用户定义的消息属性的前缀为 usr.,但在变量名中不包含此前缀。 变量名前面必须加美元符号 ($) 字符并用花括号 {} 括起来。
例如,${destFileName} 将替换为要从源队列读取的第一条消息的 usr.destFileName 消息属性的值。 有关更多信息,请参阅 MFT 从源队列上的消息读取的 MQ 消息属性 和 监视队列并使用变量替换。
outputN.log):BFGDM0113W: Trigger failure for <monitor name> for reason BFGDM0060E: A monitor task could
not complete as a variable substitution <variable name> was not present.If moderate or verbose resource monitor logging is enabled for the monitor, the monitor writes the following message to the resource monitor event log of the agent (resmoneventN.log):BFGDM0060E: A monitor task could not complete as a variable substitution
<variable name> was not present.
有关资源监视器日志记录的更多信息,请参阅 日志记录 MFT 资源监视器 。
${AGENTNAME} 将替换为资源监视器代理的名称。| 变量 | 描述 |
|---|---|
| AGENTNAME | 资源监视器代理的名称。 |
| queueName | 正在监视的队列的名称。 |
| ENCODING | 队列上第一条消息或组中第一条消息的字符编码。 |
| MESSAGEID | 队列上第一条消息或组中第一条消息的 IBM MQ 消息标识。 |
| GROUPID | 组的 IBM MQ 组标识或消息标识 (如果仅找到一条消息)。 只有在监视整个组时才会设置此变量。 |
| CurrentTimeStamp | 基于触发监视器的本地时间的时间戳记。 此时间戳记值对于代理是唯一的。 |
| CurrentTimeStampUTC | 基于触发监视器的 UTC 时区中的时间的时间戳记。 此时间戳记值对于代理是唯一的。 |
如果受监视资源是目录
| 变量 | 描述 |
|---|---|
| FilePath | 触发器文件的完整路径名。 |
| FileName | 触发器的文件名部分。 |
| LastModifiedTime | 上次修改触发器文件的时间。 该时间表示为用于运行代理的时区的本地时间,采用 ISO 8601 时间格式。 |
| LastModifiedDate | 上次修改触发器文件的日期。 该日期表示为用于运行代理的时区的本地日期,采用 ISO 8601 日期格式。 |
| LastModifiedTimeUTC | 上次修改触发器文件的时间。 该时间表示为已转换为 UTC 时区的本地时间,采用 ISO 8601 时间格式。 |
| LastModifiedDateUTC | 上次修改触发器文件的日期。 该日期表示为已转换为 UTC 时区的本地日期,采用 ISO 8601 日期格式。 |
| AgentName | 资源监视器代理的名称。 |
| CurrentTimeStamp | 基于触发监视器的本地时间的时间戳记。 此时间戳记值对于代理是唯一的。 |
| CurrentTimeStampUTC | 基于触发监视器的 UTC 时区中的时间的时间戳记。 此时间戳记值对于代理是唯一的。 |
如果受监视资源是触发器文件
| 变量 | 描述 |
|---|---|
| contentSource | 源文件的完整路径名。 |
| contentDestination | 目标文件的完整路径名。 |
变量名称必须以美元符号 ($) 字符开头,并括在花括号 {} 中。例如, ${FilePath} 将替换为匹配触发器文件的标准文件路径。
- 标记
- 用于替换的标记索引(左侧从 1 开始,右侧从 -1 开始)
- 分隔符
- 用于标记变量值的单个字符。 缺省值是 UNIX 平台上的正斜杠字符 (/) 或 Windows 平台上的反斜杠字符 (\) ,但分隔符可以是变量值中可能出现的任何有效字符。
如果在变量名中指定了分隔符关键字,那么会根据分隔符将变量值分割为标记。
分配给标记关键字的值将用作索引,以选择用于替换变量名的标记。 令牌索引相对于变量中的第一个字符,并且以 1 开头。 如果未指定 token 关键字,那么将插入整个变量。
采用不区分大小写的方式处理用于替换消息 XML 中代理名称的任何值。 所有 Managed File Transfer Agent 名称都是大写。 如果用值 Paris 替换消息 XML 中的代理属性,那么会将该值解释为对代理 PARIS 的引用。