第5章 ルールの上書き
MTA またはカスタム書き込みルールで配布されるコアルールを上書きできます。たとえば、ルールのマッチング条件、作業量、またはヒントテキストを変更する場合があります。これは、元のルールのカスタムコピーを作成し、それをルールのオーバーライドとしてマークして、必要な調整を行うことで行います。この方法と同じ方法でルールを無効にすることもできます。
5.1. ルールの上書き
以下の手順でルールを上書きできます。
上書きするルールが含まれる XML ファイルをカスタムの rules ディレクトリーにコピーします。
カスタムルールは
RHAMT_HOME/rules
、、${user.home}/.rhamt/rules/
、または--userRulesDirectory
コマンドライン引数で指定したディレクトリーのいずれかに配置できます。XML ファイルを編集し、上書きするルールの
<rule>
要素のみを保持します。上書きされていない元の ruleset のルールは、通常通りに実行されることに注意してください。
- 同じルールとルールセット ID を保持するようにしてください。元のルール XML をコピーすると、ID が一致します。
-
ruleset メタデータに
<overrideRules>true</overrideRules>
エントリーを追加します。 必要に応じてルールに合わせて調整を行います。
ルール定義では、すべてを変更することができます。このルールは、元のルール全体をオーバーライドします。
上書きされたルールの例を以下に示します。ruleset メタデータの <overrideRules>true</overrideRules>
要素に注目してください。ルールとルールセット ID は元のルールと一致します。このルールにより、必要な作業がから 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>
<?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 の内容を確認して、新規ルールが使用されていることを確認できます。