第2章 ルールを使い始める


ルールを作成するか、クイックスタートを確認して、カスタム MTR ルールの作成を開始できます。

2.1. 最初の XML ルールの作成

このセクションでは、最初の MTR XML ベースのルールを作成してテストするプロセスを説明します。これは、すでに MTR がインストールされていることを前提としています。インストール手順は、CLI ガイドCLI のインストールと実行 を参照してください。

この例では、アプリケーションが <class-loading> 要素を含む jboss-web.xml ファイルの定義を行うインスタンスを検出するルールを記述します。また、コードの移行方法を説明するドキュメントへのリンクを提供します。

ルールのディレクトリー構造の作成

最初のルールと、テストに使用するデータファイルを含むディレクトリー構造を作成します。

$ mkdir -p /home/<USER_NAME>/migration-rules/rules
$ mkdir -p /home/<USER_NAME>/migration-rules/data

このディレクトリー構造は、生成された MTR レポートを保持するためにも使用されます。

ルールをテストするためのデータの作成

  1. /home/<USER_NAME>/migration-rules/data/ サブディレクトリーに jboss-web.xml ファイルを作成します。
  2. 以下の内容にコピーします。

    <!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 4.2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
    <jboss-web>
        <class-loading java2ClassLoadingCompliance="false">
            <loader-repository>
                seam.jboss.org:loader=@projectName@
                <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
            </loader-repository>
        </class-loading>
    </jboss-web>

    ルールの作成

MTR XML ベースのルールは、以下のルールパターンを使用します。

when(condition)
  perform(action)
otherwise(action)

手順

  1. /home/<USER_NAME>/migration-rules/rules/ ディレクトリーで、以下の内容が含まれる JBoss5-web-class-loading.windup.xml という名前のファイルを作成します。

    <?xml version="1.0"?>
    <ruleset id="<UNIQUE_RULESET_ID>"
      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>
          <description>
              <!-- Ruleset Description -->
          </description>
          <dependencies>
              <!-- Ruleset Dependencies -->
          </dependencies>
          <sourceTechnology id="<SOURCE_ID>" versionRange="<SOURCE_VERSION_RANGE>"/>
          <targetTechnology id="<TARGET_ID>" versionRange="<TARGET_VERSION_RANGE>"/>
          <tag>Reviewed-2015-05-01</tag>
      </metadata>
      <rules>
          <rule id="<UNIQUE_RULE_ID>">
            <when>
                <!-- Test for a condition here -->
            </when>
            <perform>
                <!-- Perform an action -->
            </perform>
          </rule>
       </rules>
    </ruleset>
    注記

    XML ファイル名には、.windup.xml 拡張子を含める必要があります。それ以外の場合、MTR は新しいルールを評価しません。

  2. ruleset および rule に一意の識別子を追加します。

    • <UNIQUE_RULESET_ID> を、適切なルールセット ID (例: JBoss5-web-class-loading) に置き換えます。
    • <UNIQUE_RULE_ID> を、適切なルール ID (例: JBoss5-web-class-loading_001) に置き換えます。
  3. 次のルールセットアドオン依存関係を追加します。

    <dependencies>
      <addon id="org.jboss.windup.rules,windup-rules-javaee,3.0.0.Final"/>
      <addon id="org.jboss.windup.rules,windup-rules-java,3.0.0.Final"/>
    </dependencies>
  4. ソースおよびターゲットのテクノロジーを追加します。

    • <SOURCE_ID>eap に置き換えます。
    • <TARGET_ID>eap に置き換えます。
  5. ソースおよびターゲットのテクノロジーバージョンを設定します。

    • <SOURCE_VERSION_RANGE>(4,5) に置き換えます。
    • <TARGET_VERSION_RANGE>(6,) に置き換えます。

    詳細は、Apache Maven version range specification を参照してください。

  6. when 条件を完了します。このルールは XML ファイルの一致をテストするため、ファイルの評価には xmlfile が使用されます。

    jboss-web の子である class-loading 要素と一致するには、xpath 式 jboss-web/class-loading を使用します。

    <when>
        <xmlfile matches="jboss-web/class-loading" />
    </when>
  7. このルールの perform アクションを完了します。

    • 説明的なタイトルと作業レベル 1 を使用して分類を追加します。
    • ヒントに情報メッセージと、移行の詳細を説明するドキュメントへのリンクを提供します。

      <perform>
          <iteration>
              <classification title="JBoss Web Application Descriptor" effort="1"/>
              <hint title="JBoss Web XML class-loading element is no longer valid">
                <message>
                  The class-loading element is no longer valid in the jboss-web.xml file.
                </message>
                <link href="https://access.redhat.com/documentation/ja-JP/JBoss_Enterprise_Application_Platform/6.4/html-single/Migration_Guide/index.html#Create_or_Modify_Files_That_Control_Class_Loading_in_JBoss_Enterprise_Application_Platform_6" title="Create or Modify Files That Control Class Loading in JBoss EAP 6"/>
              </hint>
          </iteration>
      </perform>

ルールは完了し、以下の例のようになるはずです。

<?xml version="1.0"?>
<ruleset id="JBoss5-web-class-loading"
    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>
        <description>
            This ruleset looks for the class-loading element in a jboss-web.xml file, which is no longer valid in JBoss EAP 6
        </description>
         <dependencies>
            <addon id="org.jboss.windup.rules,windup-rules-javaee,3.0.0.Final"/>
            <addon id="org.jboss.windup.rules,windup-rules-java,3.0.0.Final"/>
        </dependencies>
        <sourceTechnology id="eap" versionRange="(4,5)"/>
        <targetTechnology id="eap" versionRange="[6,)"/>
    </metadata>
    <rules>
        <rule id="JBoss5-web-class-loading_001">
            <when>
                <xmlfile matches="jboss-web/class-loading" />
            </when>
            <perform>
                <iteration>
                    <classification title="JBoss Web Application Descriptor" effort="1"/>
                    <hint title="JBoss Web XML class-loading element is no longer valid">
                      <message>
                        The class-loading element is no longer valid in the jboss-web.xml file.
                      </message>
                      <link href="https://access.redhat.com/documentation/ja-JP/JBoss_Enterprise_Application_Platform/6.4/html-single/Migration_Guide/index.html#Create_or_Modify_Files_That_Control_Class_Loading_in_JBoss_Enterprise_Application_Platform_6" title="Create or modify files that control class loading in JBoss EAP 6"/>
                    </hint>
                </iteration>
            </perform>
        </rule>
     </rules>
</ruleset>

ルールのインストール

MTR ルールは、ルールを適切なディレクトリーに配置してインストールされます。

JBoss5-web-class-loading.windup.xml ファイルを <MTR_HOME>/rules/ ディレクトリーにコピーします。

$ cp /home/<USER_NAME>/migration-rules/rules/JBoss5-web-class-loading.windup.xml <MTR_HOME>/rules/

ルールのテスト

ターミナルを開き、次のコマンドを実行して、テストファイルを入力引数および出力レポートのディレクトリーとして渡します。

$ <MTR_HOME>/bin/windup-cli --sourceMode --input /home/<USER_NAME>/migration-rules/data --output /home/<USER_NAME>/migration-rules/reports --target eap:6

以下の結果が表示されるはずです。

Report created: /home/<USER_NAME>/migration-rules/reports/index.html
              Access it at this URL: file:///home/<USER_NAME>/migration-rules/reports/index.html

レポートの確認

レポートを確認して、予想される結果が表示されることを確認します。MTR レポートの詳細は、MTR CLI ガイドレポートの確認 セクションを参照してください。

  1. Web ブラウザーで /home/<USER_NAME>/migration-rules/reports/index.html を開きます。
  2. ルールが正常に実行されたことを確認します。

    1. 主な編集ページから、Rule providers execution overview リンクをクリックし、Rule Providers Execution Overview を開きます。
    2. JBoss5-web-class-loading_001 ルールを探して、Status?Condition met で、Result?success であることを確認します。

      図2.1 テストルール実行

      テストルール実行
  3. ルールがテストデータと一致していることを確認します。

    1. メインの発行ページから、この例の データ であるアプリケーションまたは入力フォルダーの名前をクリックします。
    2. Application Details レポートリンクをクリックします。
    3. jboss-web.xml リンクをクリックして、ソースレポート を表示します。

      <class-loading> 行が強調表示されており、カスタムルールからのヒントがインラインで表示されます。

      図2.2 ルール一致

      ルール一致

      ファイルの上部には、一致するルールの分類が表示されます。リンクアイコンを使用すると、そのルールの詳細を表示できます。この例では、jboss-web.xml ファイルが 1 つのストーリーポイントを生成した別のルール (JBoss web application descriptor (jboss-web.xml)) と一致することに注意してください。このストーリーポイントは、カスタムルールから 1 つのストーリーポイントと組み合わせて、このファイルの合計部分を 2 にまとめます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.