第3章 XML ルールの作成
3.1. XML ルール構造
このセクションでは、XML ルールの基本構造を説明します。すべての XML ルールは、rulesets 内の要素として定義されます。詳細は、MTR XML ルールスキーマ を参照してください。
3.1.1. Rulesets
ルールセットとは、特定の移行領域をターゲットとする 1 つ以上のルールのグループです。これは <ruleset>
要素の基本構造です。
<ruleset id="<UNIQUE_RULESET_ID>">: これを MTR ルールセットとして定義し、一意のルールセット ID を指定します。
<metadata>: ルールセットに関するメタデータ。
- <description>: ルールセットの説明。
- <dependencies/>: このルールセットで必要なルールアドオン。
- <sourceTechnology/>: ソーステクノロジー。
- <targetTechnology/>: ターゲットテクノロジー。
<overrideRules/>:
true
に設定した場合は、MTR で配布されるコアルールセットと同じ ID で、このルールセットのルールを上書きします。ルールセット ID とルール ID の両方がコアルールセット内のルールと一致する必要があり、ルールは無視されます。さらに、このルールセットのターゲットテクノロジーは、分析を実行するために指定したターゲットの 1 つと一致させる必要があります。デフォルトは
false
です。
<rules>: 個々のルールのセット。
<rule id="<UNIQUE_RULE_ID>"> ルールを定義して、一意の ID を指定します。ルール ID の一部としてルールセット ID を含めることが推奨されます (例:
<UNIQUE_RULESET_ID_UNIQUE_RULE_ID>
)。ルールセットには 1 つ以上のルールを定義できます。- <when>: 照合する条件。
- <perform>: ルール条件が一致したときに実行されるアクション。
-
<otherwise>: ルール条件が一致しない場合に実行されるアクション。この要素は、
<perform>
要素と同じ子要素を取ります。 - <where>: パラメーターとして定義される文字列パターン。このパターンは、ルール定義の他の場所で使用できます。
- <file-mapping/>: エクステンションをグラフタイプにマップします。
- <package-mapping/>: パッケージパターン (正規表現) から組織名にマッピングします。
3.1.2. 事前定義されたルール
MTR は、一般的な移行要件に事前定義されたルールを提供します。これらのコア MTR ルールは、MTR インストールの <MTR_HOME>/rules/migration-core/
にあります。
以下は、プロプライエタリーユーティリティークラスで一致するコア MTR ルールの例になります。
<?xml version="1.0"?> <ruleset xmlns="http://windup.jboss.org/schema/jboss-ruleset" id="weblogic" 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> <description> This ruleset provides analysis of WebLogic proprietary classes and constructs that may require individual attention when migrating to JBoss EAP 6+. </description> <dependencies> <addon id="org.jboss.windup.rules,windup-rules-javaee,2.0.1.Final" /> <addon id="org.jboss.windup.rules,windup-rules-java,2.0.0.Final" /> </dependencies> <sourceTechnology id="weblogic" /> <targetTechnology id="eap" versionRange="[6,)" /> <tag>reviewed-2015-06-02</tag> <tag>weblogic</tag> </metadata> <rules> ... <rule id="weblogic-02000"> <when> <javaclass references="weblogic.utils.StringUtils.{*}" /> </when> <perform> <hint title="WebLogic StringUtils usage" effort="1" category-id="mandatory"> <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>