第 4 章 覆盖规则
您可以通过 MTA 或自定义规则覆盖分发的核心规则。例如,您可以更改规则的匹配条件、工作或提示文本。这可以通过复制原始规则,将其标记为规则覆盖,并进行必要的调整。
您可以通过创建一个带有空 <rule> 元素的 <rule> 覆盖来禁用规则。
4.1. 覆盖一个规则 复制链接链接已复制到粘贴板!
您可以覆盖内核或自定义规则。
流程
复制包含您要覆盖的规则的 XML 文件到自定义规则目录。
自定义规则可以放置在
<MTA_HOME>/rules,${user.home}/.mta/rules/中,或由--userRulesDirectory命令行参数指定的目录。编辑 XML 文件,使其只包含您要覆盖的规则的
<rule>元素。注意新规则集中未被新规则集覆盖的规则会正常运行。
- 确保保留相同的规则和规则集 ID。当您复制原始规则 XML 时,这将确保 ID 相匹配。
- 确保覆盖规则集中的目标技术与您为运行分析指定的目标之一匹配。
-
将
<overrideRules>true</overrideRules>元素添加到 ruleset 元数据。 更新规则定义。
您可以更改规则定义中的任何内容。新规则覆盖其整个原始规则。
以下规则覆盖示例将 weblogic 规则集中的 weblogic-02000 规则 的工作量 从 1 改为 3:
规则覆盖定义示例
<?xml version="1.0"?>
<ruleset id="weblogic"
xmlns="http://windup.jboss.org/schema/jboss-ruleset"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
<metadata>
...
<overrideRules>true</overrideRules>
</metadata>
<rules>
<rule id="weblogic-02000" xmlns="http://windup.jboss.org/schema/jboss-ruleset">
<when>
<javaclass references="weblogic.utils.StringUtils.{*}"/>
</when>
<perform>
<hint effort="3" category-id="mandatory" title="WebLogic StringUtils Usage">
<message>Replace with the StringUtils class from Apache Commons.</message>
<link href="https://commons.apache.org/proper/commons-lang/" title="Apache Commons Lang"/>
<tag>weblogic</tag>
</hint>
</perform>
</rule>
</rules>
</ruleset>
当您运行 MTA 时,该规则会用相同的规则 ID 覆盖原始规则。您可以通过查看 Rule Provider Executions Overview 的内容来验证已使用的新规则。