ルール開発ガイド



第1章 はじめに

1.1. ルール開発ガイドについて

本ガイドは、Migration Toolkit for Applications (MTA) ツールのカスタム XML ベースのルールを作成するエンジニア、コンサルタント、およびその他のユーザーを対象としています。

MTA を初めて 使用する場合は、『スタートガイド』 から、アプリケーション機能およびシステム要件の概要を確認することが推奨されます。また、CLI のインストール方法および実行方法が記載されている 『CLI ガイド』を確認することが推奨されます。

MTA ソースコードベースに貢献したり、Java ベースのルールアドオンを提供する場合は、『Core Development Guide』を参照してください。

1.1.1. 本ガイドの RHAMT_HOME の使用

本ガイドでは、RHAMT_HOME 置き換え可能な変数を使用して MTA インストールへのパスを示します。インストールディレクトリーは、MTA ZIP ディストリビューションを抽出した rhamt-cli-4.1.0.Final ディレクトリーです。

本ガイド RHAMT_HOME で遭遇した場合は、必ずこれを MTA インストールへの実際のパスに置き換えるようにしてください。

1.2. MTA ルール

Migration Toolkit for Applications(MTA)には、移行する予定のアプリケーションによって使用される API、テクノロジー、およびアーキテクチャーを分析するルールベースの移行ツールが含まれます。実際、MTA 分析プロセスは MTA ルールを使用して実装されます。MTA は内部でルールを使用して、アーカイブからのファイルの抽出、ファイルの逆コンパイル、ファイルタイプのスキャンと分類、XML およびその他のファイルコンテンツの分析、アプリケーションコードの分析、レポートの作成を行います。

MTA は、ルール実行結果に基づいてデータモデルを構築し、グラフデータベースにコンポーネントデータと関係を格納します。これにより、移行ルールやレポート目的に応じてクエリーおよび更新が可能になります。

MTA ルールでは、以下のルールパターンを使用します。

Copy to Clipboard Toggle word wrap
when(condition)
  perform(action)
otherwise(action)

MTA は、標準の包括的な移行ルールの包括的なセットをそのまま使用できます。アプリケーションにはカスタムライブラリーまたはコンポーネントが含まれる可能性があるため、MTA では独自のルールを作成して、既存のルールセットで対応していない可能性のあるコンポーネントやソフトウェアの使用を特定することができます。

第2章 Getting Started (スタートガイド)

ルールの作成 またはクイックスタートの 確認により、カスタム MTA ルールの作成 を開始することができます

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

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

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

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

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

Copy to Clipboard Toggle word wrap
$ mkdir -p /home/USER_NAME/migration-rules/rules
$ mkdir -p /home/USER_NAME/migration-rules/data

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

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

    Copy to Clipboard Toggle word wrap
    <!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>
ルールの作成

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

Copy to Clipboard Toggle word wrap
when(condition)
  perform(action)
otherwise(action)

ルールセットおよびルールの XML 要素の詳細は、「 XML ルール構造」 を参照してください。構文例の XML ルールの作成に関する詳細は、「基本的な XML ルールの作成」を参照してください。

  1. という名前の /home/USER_NAME/migration-rules/rules/ サブディレクトリーに XML ファイルを作成し JBoss5-web-class-loading.windup.xmlます。以下の内容にコピーします。

    Copy to Clipboard Toggle word wrap
    <?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>
    注記

    MTA は、.windup.xml または .rhamt.xml 拡張子が XML ベースのルールとして識別されるため、必ずこの命名規則を使用してください。使用しない場合は、ルールが評価されません。

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

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

    Copy to Clipboard Toggle word wrap
    <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 バージョン範囲 の指定を参照してください。

  6. when 条件を完了します。

    このルールが XML ファイル内のマッチに対してテストされるため、xmlfile はファイルの評価に使用されます。

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

    Copy to Clipboard Toggle word wrap
    <when>
        <xmlfile matches="jboss-web/class-loading" />
    </when>
  7. このルールに対する perform アクションを完了します。

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

      Copy to Clipboard Toggle word wrap
      <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/en-US/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>

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

Copy to Clipboard Toggle word wrap
<?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/en-US/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>
ルールのインストール

MTA ルールは、ルールを適切なディレクトリーに配置してインストールされます。カスタム ルールを配置することができる場所は、「ルールを MTA に追加 」を参照してください。

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

Copy to Clipboard Toggle word wrap
$ cp /home/USER_NAME/migration-rules/rules/JBoss5-web-class-loading.windup.xml RHAMT_HOME/rules/
ルールのテスト

端末を開き、以下のコマンドを実行して、テストファイルを入力引数として、出力レポートのディレクトリーとして渡します。

Copy to Clipboard Toggle word wrap
$ RHAMT_HOME/bin/rhamt-cli --sourceMode --input /home/USER_NAME/migration-rules/data --output /home/USER_NAME/migration-rules/reports --target eap:6

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

Copy to Clipboard Toggle word wrap
Report created: /home/USER_NAME/migration-rules/reports/index.html
              Access it at this URL: file:///home/USER_NAME/migration-rules/reports/index.html
レポートの確認

レポートを確認して、予想される結果が表示されることを確認します。MTA レポートの詳細は、『MTA 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. メインのページから、data この例にあるアプリケーションまたは入力フォルダーの名前をクリックします。
    2. Application Details レポートリンクをクリックします。
    3. jboss-web.xml リンクをクリックして、ソースレポート を表示します。

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

      図2.2 ルールの一致

      ルールの一致

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

2.2. アプリケーションクイックスタートの Migration Toolkit の確認

Migration Toolkit for Applications クイックスタートは、カスタム Java ベースのルールアドオンおよび XML ルールの作成方法に関する作業例を提供します。カスタムルールを作成する際の開始点として使用することができます。

最新バージョン のクイックスタートの ZIP ファイルをダウンロード できます。または、ソースコードを使用する場合は、プロジェクトリポジトリーを フォークしてクローンを作成 windup-quickstarts できます

各クイックスタートには、そのクイックスタートの手順が含まれる README.adoc ファイルがあります。

最新のクイックスタート ZIP のダウンロード
  1. ブラウザーを開き、https://github.com/windup/windup-quickstarts/releases に移動し ます
  2. 最新のリリースをクリックして ZIP ファイルをローカルファイルシステムにダウンロードします。
fork および Clone the Quickstart GitHub Project

git クライアントがマシンにインストールされている。

  1. Migration Toolkit for Applications quickstart GitHub ページの Fork リンクをクリックし、独自の Git でプロジェクトを作成します。フォークによって作成されたフォークされた GitHub リポジトリー URL は、のようになります https://github.com/YOUR_USER_NAME/windup-quickstarts.git
  2. アプリケーションクイックスタートリポジトリーの Migration Toolkit for Applications のクローンをローカルファイルシステムにクローンします。

    Copy to Clipboard Toggle word wrap
    $ git clone https://github.com/YOUR_USER_NAME/windup-quickstarts.git
  3. これにより、ローカルファイルシステムに windup-quickstarts ディレクトリーが作成され、準備されます。新規作成されたディレクトリーに移動します。以下に例を示します。

    Copy to Clipboard Toggle word wrap
    $ cd windup-quickstarts/
  4. 最新のコード更新を取得できるようにするには、リモートリポジトリーを追加して元のフォークした upstream リポジトリーへの変更をすべて取得できるようにします。

    Copy to Clipboard Toggle word wrap
    $ git remote add upstream https://github.com/windup/windup-quickstarts.git
  5. upstream リポジトリーから最新のファイルを取得します。

    Copy to Clipboard Toggle word wrap
    $ git fetch upstream

第3章 XML ルールの作成

3.1. XML ルールの構造

本セクションでは、XML ルールの基本構造を説明します。すべての XML ルールは、rulesets 内の要素として定義されます。詳細は、「MTA XML rule schema」を参照してください。

3.1.1. ルールセット

ルールセットとは、特定の移行領域をターゲットとする 1 つ以上のルールのグループです。これは <ruleset> 要素の基本的な構造です。

  • <ruleset id="UNIQUE_RULESET_ID">: これを MTA ルールセットとして定義し、固有のルールセット ID を指定します。

    • <metadata>: ルールセットに関するメタデータ。

      • <description>: ルールセットの説明。
      • <dependencies/>: このルールセットで必要なルールアドオンです。
      • <sourceTechnology/>: ソーステクノロジー。
      • <targetTechnology/>: ターゲットテクノロジー。
      • <overrideRules/>: MTA で配布されるコアルールセットの同じ ID で、この ruleset のルールがオーバーライドされることを true 示します。ルールセット ID とルール id の両方がコアルールセット内のルールと一致する必要があり、ルールは無視されます。デフォルト false はです。
    • <rules>: 個々のルールのセット。

      • <rule id="UNIQUE_RULE_ID">: ルールを定義し、固有の ID を指定します。ルール ID の一部としてルールセット ID を含めることが推奨されます(例:) UNIQUE_RULESET_ID_UNIQUE_RULE_ID。ルールセットには 1 つ以上のルールを定義できます。

      • <file-mapping/>: 拡張機能をグラフタイプにマップします。
      • <package-mapping/>: パッケージパターン (正規表現) から組織名にマッピングします。

3.1.2. 事前定義されたルール

MTA は、一般的な移行要件に事前定義されたルールを提供します。これらのコア MTA ルールは、の MTA インストールにあり RHAMT_HOME/rules/migration-core/ます。

以下は、プロプライエタリーユーティリティークラスで一致するコア MTA ルールの例になります。

Copy to Clipboard Toggle word wrap
<?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>

3.2. 基本的な XML ルールの作成

本セクションでは、MTA XML ルールを作成する方法を説明します。これは、すでに MTA がインストールされていることを前提としています。インストール手順は、MTA の『CLI ガイド』を参照してください。

3.2.1. 基本的な XML ルールテンプレートの作成

MTA XML ルールは 条件アクション で構成され、以下のルールパターンを使用します。

Copy to Clipboard Toggle word wrap
when(condition)
  perform(action)
otherwise(action)

以下の内容で、XML ルールの基本的な構文であるファイルを作成します。

重要

MTA XML ルールファイルは .windup.xml または .rhamt.xml エクステンションを使用する必要があります。使用しないと、ルールは評価されません。

Copy to Clipboard Toggle word wrap
<?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>
        <!-- Metadata about the rule including a description,
             source technology, target technology, and any
             add-on dependencies -->
    </metadata>
    <rules>
        <rule id="unique-ruleset-id-01000">
            <when>
                <!-- Test a condition... -->
            </when>
            <perform>
                <!-- Perform this action when condition is satisfied -->
            </perform>
            <otherwise>
                <!-- Perform this action when condition is not satisfied -->
            </otherwise>
        </rule>
    <rules>
</ruleset>

3.2.2. ルールセットメタデータの作成

XML ruleset metadata 要素は、説明、ソースおよびターゲットテクノロジー、アドオンの依存関係などのルールセットに関する追加情報を提供します。メタデータによりタグの指定が可能になり、ルールセットに関する追加情報を提供できます。ruleset メタデータの詳細は、「 XML rule structure」を参照してください

ルールの例 <metadata>

Copy to Clipboard Toggle word wrap
<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>
                This is the description.
        </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" versionRange="(10,12]"/>
        <sourceTechnology id="ejb" versionRange="(2,3]"/>
        <targetTechnology id="eap" versionRange="(5,6]"/>
        <targetTechnology id="ejb" versionRange="(2,3]"/>
        <tag>require-stateless</tag>
        <tag>require-nofilesystem-io</tag>
        <executeAfter>AfterRulesetId</executeAfter>
        <executeBefore>BeforeRulesetId</executeBefore>
    </metadata>
    <rules>
         ...
    </rules>
</ruleset>

3.2.3. ルールの作成

個々のルールは <rules> 要素に含まれ、条件と アクションを実行する 際 に 1 つ以上のルールで構成されます。

有効なルール構文は、「XML rule schema」を参照してください。

3.2.3.1. 条件条件のルールの作成

条件の XML ルール <when> 要素のテスト。以下は有効な <when> 条件の一覧です。

要素説明

<and>

標準の論理 and 演算子。

<filecontent>

ファイル内の文字列またはテキスト (プロパティーファイルなど) を検索します。

<file-mapping>

内部に保存されているファイルモデルにファイル名を定義します。

<javaclass>

Java クラスで一致のテスト。

<javaclass-ignore>

検出の処理で無視する javaclass を除外します。

<not>

標準の論理 not 演算子。

<or>

標準の論理 or 演算子。

<package-mapping>

組織またはライブラリーにパッケージ名を定義します。

<project>

依存関係などのプロジェクトの特性をテストします。

<true>

常に一致します。

<xmlfile>

XML ファイルで一致をテストします。

特定の構文は、Java クラス、XML ファイル、プロジェクト、またはファイルコンテンツを評価するルールを作成するかどうかによって異なります。これは、「 Condition 構文」で詳細に説明されてい ます。

3.2.3.2. ルール実行アクションの作成

XML rule <perform> 要素は、条件が満たされるとアクションを実行します。ルールのこのセクションで許可される操作には、アプリケーションリソースの分類、移行手順に関するインラインヒント、移行情報へのリンク、プロジェクトのライン項目レポートが含まれます。以下は有効な <perform> アクションの一覧です。

要素説明

<classification>

この操作により、ファイル全体に適用されるメタデータが追加されます。たとえば、Java クラスが JMS メッセージリスナーの場合、タイトル「JMS Message Listener」で分類を追加することがあります。ファイル全体に適用される情報は、ここで行われます。また、作業レベルを設定すると、その情報がファイル全体に適用されます。

<hint>

この操作により、ファイル内の行にメタデータが追加されます。これにより、コードのセクションを移行するヒントまたはインライン情報が提供されます。

<iteration>

これは、ルール内で定義される暗黙的な変数または明示的な変数を繰り返し処理することを指定します。

<lineitem>

これにより、アプリケーションの概要ページに表示されるハイレベルなメッセージが表示されます。

<link>

これにより、移行タスクの詳細情報を提供する追加情報またはドキュメントへの HTML リンクが提供されます。

<xslt>

これは、XML ファイルの変換方法を指定します。

構文の詳細は「 アクション構文の実行」を参照してください

3.3. XML ルールの構文

3.3.1. 条件構文

ルールの when 一部として許可される条件は GraphOperation を拡張する必要があり、現在、Java クラス、XML ファイル、プロジェクト、およびファイルコンテンツの評価が含まれ ます。XML ルールは Java ベースのルールアドオンの後にモデル化されるため、関連する Java クラスの JavaDocs へのリンクは、その動作をよりよく理解するために提供されます。

完全な XML ルールスキーマは http://windup.jboss.org/schema/windup-jboss-ruleset.xsd にあります。

以下のセクションでは、より一般的な XML when ルール条件を説明します。

デフォルトでは、複数の when ルール条件が指定されている場合は、ルールが一致できるようすべての条件を満たす必要があります。

3.3.1.1. <javaclass> Syntax
3.3.1.1.1. Summary

<javaclass> 要素を使用して、Java クラスに関連するインポート、メソッド、変数宣言、アノテーション、クラス実装、およびその他の項目を検索します。<javaclass> 条件をより理解するには、JavaClass クラスの JavaDoc を参照してください。

以下は、個別の Apache XML パッケージに対してテストするルールの例です。

Copy to Clipboard Toggle word wrap
<rule id="weblogic-03000">
    <when>
        <javaclass references="weblogic.apache.xml.{*}" />
    </when>
    <perform>
        <hint title="WebLogic Specific Apache XML Package" effort="1" category-id="mandatory">
            <message>
                Code using this package should be replaced with code using the org.apache.xml package from [Apache
                Xerces](http://xerces.apache.org/).
            </message>
        </hint>
    </perform>
</rule>
3.3.1.1.2. <javaclass> 要素の構築
3.3.1.1.2.1. <javaclass> 要素属性
属性名タイプ説明

references

CLASS_NAME

一致するパッケージまたはクラス名。ワイルドカード文字を使用できます。この属性は必須です。

注記

パフォーマンス上の理由から、ワイルドカード文字を使用して参照を開始しないでください。たとえば、の weblogic.apache.xml.{*} 代わりにを使用し {web}.apache.xml.{*}ます。

Copy to Clipboard Toggle word wrap
references="weblogic.apache.xml.{*}"

matchesSource

STRING

一致する正確な正規表現。これは、ハードコーディングされた文字列を区別する場合に便利です。この属性は必須です。

Copy to Clipboard Toggle word wrap
matchesSource="log4j.logger"

as

VARIABLE_NAME

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

Copy to Clipboard Toggle word wrap
as="MyEjbRule"

from

VARIABLE_NAME

as VARIABLE_NAME で特定された以前の検索からフィルターされた結果を使用して、検索クエリーを開始します。

Copy to Clipboard Toggle word wrap
from="MyEjbRule"

in

PATH_FILTER

この正規表現 (regex) の命名パターンに一致する入力ファイルをフィルターします。ワイルドカード文字を使用できます。

Copy to Clipboard Toggle word wrap
in="{*}File1"
3.3.1.1.2.2. <javaclass> はサポートされていません要素
子要素説明

<location>

参照が Java クラスで見つかった場所。場所は、アノテーション、フィールドおよび変数宣言、インポート、およびメソッドを参照できます。有効な値の完全なリストは、TypeReferenceLocation の JavaDoc を参照してください。

Copy to Clipboard Toggle word wrap
<location>IMPORT</location>

<annotation-literal>

アノテーション内のリテラル値に一致します。

以下の例では、と一致してい @MyAnnotation(myvalue="test")ます。

Copy to Clipboard Toggle word wrap
<javaclass references="org.package.MyAnnotation">
    <location>ANNOTATION</location>
    <annotation-literal name="myvalue" pattern="test"/>
</javaclass>

この場合、はアノテーション(@MyAnnotation)を <javaclass> 参照するため、最上位のアノテーションフィルターは name 属性を指定 <annotation-literal> する必要があります。アノテーションが付けられたクラスを <javaclass> 参照する場合、使用される最上位のアノテーションフィルターはになり <annotation-type>ます。

<annotation-type>

特定のアノテーションタイプで一致します。アノテーション要素に対して照合されるサブ条件を指定できます。

以下の例は、にアノテーションが付けられた Calendar フィールド宣言に一致してい @MyAnnotation(myvalue="test")ます。

Copy to Clipboard Toggle word wrap
<javaclass references="java.util.Calendar">
    <location>FIELD_DECLARATION</location>
    <annotation-type pattern="org.package.MyAnnotation">
        <annotation-literal name="myvalue" pattern="test"/>
    </annotation-type>
</javaclass>

<annotation-list>

アノテーション内の配列の項目で一致します。配列インデックスが指定されていない場合は、配列内の任意のアイテムに適用されると条件が一致します。この要素と照合するサブ条件を指定できます。

以下の例では、と一致してい @MyAnnotation(mylist={"one","two"})ます。

Copy to Clipboard Toggle word wrap
<javaclass references="org.package.MyAnnotation" >
    <location>ANNOTATION</location>
    <annotation-list name="mylist">
        <annotation-literal pattern="two"/>
    </annotation-list>
</javaclass>

この場合、はアノテーション(@MyAnnotation)を <javaclass> 参照するため、最上位のアノテーションフィルターは name 属性を指定 <annotation-list> する必要があります。アノテーションが付けられたクラスを <javaclass> 参照する場合、使用される最上位のアノテーションフィルターはになり <annotation-type>ます。

3.3.1.2. <xmlfile> Syntax
3.3.1.2.1. Summary

<xmlfile> 要素を使用して XML ファイルの情報を検索します。<xmlfile> 条件の詳細は、XmlFile JavaDoc を参照し ください。

以下は、XML ファイルをテストするルールの例です。

Copy to Clipboard Toggle word wrap
<rule id="UNIQUE_RULE_ID">
    <when>
        <xmlfile matches="/w:web-app/w:resource-ref/w:res-auth[text() = 'Container']">
            <namespace prefix="w" uri="http://java.sun.com/xml/ns/javaee"/>
        </xmlfile>
    </when>
    <perform>
        <hint title="Title for Hint from XML">
            <message>Container Auth</message>
        </hint>
        <xslt description="Example XSLT Conversion" extension="-converted-example.xml"
              template="/exampleconversion.xsl"/>
    </perform>
</rule>
3.3.1.2.2. <xmlfile> 要素の構築
3.3.1.2.2.1. <xmlfile> 要素属性
属性名タイプ説明

matches

XPATH

XML ファイル条件で一致します。

Copy to Clipboard Toggle word wrap
matches="/w:web-app/w:resource-ref/w:res-auth[text() = 'Container']"

xpathResultMatch

XPATH_RESULT_STRING

指定の正規表現に一致する結果を返します。

Copy to Clipboard Toggle word wrap
<xmlfile matches="//foo/text()"
  xpathResultMatch="Text from foo."/>

as

VARIABLE_NAME

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

Copy to Clipboard Toggle word wrap
as="MyEjbRule"

in

PATH_FILTER

この正規表現 (regex) の命名パターンに一致する入力ファイルをフィルターを設定するのに使用されます。ワイルドカード文字を使用できます。

Copy to Clipboard Toggle word wrap
in="{*}File1"

from

VARIABLE_NAME

as VARIABLE_NAME で特定された以前の検索からフィルターされた結果を使用して、検索クエリーを開始します。

Copy to Clipboard Toggle word wrap
from="MyEjbRule"

public-id

PUBLIC_ID

DTD public-id 正規表現。

Copy to Clipboard Toggle word wrap
public-id="public"
3.3.1.2.2.2. <xmlfile> matches カスタム関数

matches 属性は、ルール変数スタックにマッチした値を設定するなど、有用な副次的影響を持つ複数の組み込みカスタム F を使用できます。

機能説明

windup:matches()

XPath 式を文字列と照合します。MTA パラメーター化プレースホルダーが含まれている可能性があります。

Copy to Clipboard Toggle word wrap
matches="windup:matches(//foo/@class, '{javaclassname}'"

これは、class 属性を持つすべての <foo/> 要素に一致し、その値を反復するたびに javaclassname パラメーターに保存します。

3.3.1.2.2.3. <xmlfile> 等号要素
子要素説明

<namespace>

XML ファイルで参照される名前空間。この要素には prefix、およびという 2 つのオプション属性が含まれます uri

Copy to Clipboard Toggle word wrap
<namespace prefix="abc" uri="http://maven.apache.org/POM/4.0.0"/>
3.3.1.3. <project> Syntax
3.3.1.3.1. Summary

<project> 要素を使用してプロジェクトの特性の Maven POM ファイルをクエリーします。<project> 条件の詳細は、プロジェクトクラスの JavaDoc を参照して ください。

以下は、2.0.0.Final と 2.2.0.Final の間で JUnit 依存関係バージョンを確認するルールの例になります。

Copy to Clipboard Toggle word wrap
<rule id="UNIQUE_RULE_ID">
    <when>
        <project>
            <artifact groupId="junit" artifactId="junit" fromVersion="2.0.0.Final" toVersion="2.2.0.Final"/>
        </project>
    </when>
    <perform>
        <lineitem message="The project uses junit with the version between 2.0.0.Final and 2.2.0.Final"/>
    </perform>
</rule>
3.3.1.3.2. <project> 要素の構築
3.3.1.3.2.1. <project> 要素の属性

<project> 要素は、プロジェクトの Maven POM ファイルと照合するために使用されます。この条件を使用して、プロジェクトの依存関係をクエリーできます。属性自体はありません。

3.3.1.3.2.2. <project> 等号要素
子要素説明

<artifact>

プロジェクト依存関係に対する <project> クエリーに使用されるサブ条件。<artifact> 要素の属性は以下に記載されています。

3.3.1.3.2.3. <artifact> 要素の属性
属性名タイプ説明

groupId

PROJECT_GROUP_ID

依存関係 <groupId> のプロジェクトと一致します。

artifactId

PROJECT_ARTIFACT_ID

依存関係 <artifactId> のプロジェクトと一致します。

fromVersion

FROM_VERSION

アーティファクトの下位バージョンバインドを指定します。例: 2.0.0.Final

toVersion

TO_VERSION

アーティファクトの上位バージョンバインドを指定します。例: 2.2.0.Final

3.3.1.4. <filecontent> Syntax
3.3.1.4.1. Summary

<filecontent> 要素を使用してファイル内で文字列またはテキストを見つけます(プロパティーファイルの行など)。<filecontent> 条件の詳細は、FileContent クラスの JavaDoc を参照し ください。

3.3.1.4.2. <filecontent> 要素の構築
3.3.1.4.2.1. <filecontent> 要素属性
属性名タイプ説明

pattern

String

指定されたパラメーター化された文字列に対してファイルの内容を一致させます。この属性は必須です。

filename

String

提供されるパラメーター化された文字列に対してファイル名を一致させます。

as

VARIABLE_NAME

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

Copy to Clipboard Toggle word wrap
as="MyEjbRule"

from

VARIABLE_NAME

as VARIABLE_NAME で特定された以前の検索からフィルターされた結果を使用して、検索クエリーを開始します。

Copy to Clipboard Toggle word wrap
from="MyEjbRule"
3.3.1.5. <file> Syntax
3.3.1.5.1. Summary

<file> 要素を使用して、ファイルなど、特定の名前を持つファイルが存在することを確認し ibm-webservices-ext.xmi ます。<file> 条件の詳細は、File クラスの JavaDoc を参照してください。

3.3.1.5.2. <file> 要素の構築
3.3.1.5.2.1. <file> 要素の属性
属性名タイプ説明

filename

String

提供されるパラメーター化された文字列に対してファイル名を一致させます。この属性は必須です。

as

VARIABLE_NAME

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

Copy to Clipboard Toggle word wrap
as="MyEjbRule"

from

VARIABLE_NAME

as VARIABLE_NAME で特定された以前の検索からフィルターされた結果を使用して、検索クエリーを開始します。

たとえば、以下のようになります。

Copy to Clipboard Toggle word wrap
from="MyEjbRule"
3.3.1.6. <has-hint> Syntax
3.3.1.6.1. Summary

<has-hint> 要素を使用して、ファイルまたは行にヒントがすでに関連付けられているかどうかをテストします。これは主に、ヒントがすでに存在する場合に起動を防止するため、また他の条件が適用されない場合のデフォルト実行のルールを実装するために使用されます。<has-hint> 条件の理解を深めるには、HasHint クラスの JavaDoc を参照し ください。

以下は、IBM JMS 宛先メッセージのヒントが存在するかどうかを確認し、含まれていない場合にそれを含めるルールの例です。

Copy to Clipboard Toggle word wrap
<rule id="websphere-jms-eap7-03000">
  <when>
    <javaclass references="{package}.{prefix}{type}Message" />
  </when>
  <perform>
    <iteration>
      <when>
        <not>
          <has-hint />
        </not>
      </when>
      <perform>
        <hint title="IBM JMS destination message" effort="1" category-id="mandatory">
          <message>
            JMS `{package}.{prefix}{type}Message` messages represent the actual data passed through JMS destinations. This reference should be
            replaced with the Java EE standard API `javax.jms.{type}Message`.
          </message>
          <link href="https://docs.oracle.com/javaee/7/tutorial/jms-concepts003.htm#sthref2271" title="Java EE 7 JMS Tutorial - Message API" />
          <tag>jms</tag>
          <tag>websphere</tag>
        </hint>
      </perform>
    </iteration>
  </perform>
  <where param="type">
    <matches pattern="(Text|Stream|Object|Map|Bytes)?" />
  </where>
  <where param="prefix">
    <matches pattern="(JMS|MQe|MQ)" />
  </where>
  <where param="package">
    <matches pattern="com.ibm(\..*)?\.jms" />
  </where>
</rule>
3.3.1.6.2. <has-hint> の作成

<has-hint> 要素は、ファイルまたは行にヒントが存在するかどうかを判断するために使用されます。子要素はありません。

3.3.1.6.2.1. <has-hint> 要素属性
属性名タイプ説明

message

String

ヒントを提供されたメッセージ文字列と照合できるようにする任意の引数。

3.3.1.7. <has-classification> Syntax
3.3.1.7.1. Summary

<has-classification> 要素を使用して、ファイルまたは行に分類があるかどうかをテストします。これは主に、分類がすでに存在する場合に起動を防止するため、また他の条件が適用されない場合のデフォルト実行のルールを実装するために使用されます。<has-classification> 条件の理解を深めるには、HasClassification クラスの JavaDoc を参照し ください。

3.3.1.7.2. <has-classification> の作成

has-classification 要素は、指定された分類が存在するかどうかを判断するために使用されます。子要素はありません。

3.3.1.7.2.1. <has-classification> 要素属性
属性名タイプ説明

title

String

分類と照合する任意のタイトル。

3.3.1.8. <graph-query> Syntax
3.3.1.8.1. Summary

<graph-query> 要素を使用して、生成されたグラフで任意の要素を検索します。この要素は、主に特定のアーカイブを検索するために使用されます。<graph-query> 条件の詳細は、QueryHandler クラスの JavaDoc を参照し ください。

以下は、ehcache パッケージが見つかったかどうかを判断するためにテストするルールの例です。

Copy to Clipboard Toggle word wrap
<rule id="embedded-cache-libraries-01000">
    <when>
        <graph-query discriminator="JarArchiveModel">
            <property name="fileName" searchType="regex">.*ehcache.*\.jar$</property>
        </graph-query>
    </when>
    <perform>
        <classification title="Caching - Ehcache embedded library" category-id="cloud-mandatory" effort="5">
            <description>
                The application embeds an Ehcache library.

                Cloud readiness issue as potential state information that is not persisted to a backing service.
            </description>
        </classification>
        <technology-tag level="INFORMATIONAL">Ehcache (embedded)</technology-tag>
    </perform>
</rule>
3.3.1.8.2. <graph-query> の作成
3.3.1.8.2.1. <graph-query> 要素属性
属性名タイプ説明

discriminator

MODEL_TYPE

検索に使用するモデルのタイプ。これは有効なモデルにすることができますが、を使用してアーカイブを JarArchiveModel 調べることが推奨されます。この属性は必須です。

as

VARIABLE_NAME

ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の from 属性を参照してください。

Copy to Clipboard Toggle word wrap
as="MyEjbRule"

from

VARIABLE_NAME

as VARIABLE_NAME で特定された以前の検索からフィルターされた結果を使用して、検索クエリーを開始します。

Copy to Clipboard Toggle word wrap
from="MyEjbRule"
3.3.1.8.2.2. <graph-query> プロパティー
プロパティー名タイプ説明

name

String

選択したモデル内で照合する属性の名前。ファイルベースのモデルを使用する場合は、に一致させることが推奨され fileNameます。この属性は必須です。

type

property-type

予想されるプロパティーのタイプ( STRING またはのいずれか)を定義し BOOLEANます。

searchType

property-search-type

条件の一致方法を定義します。に設定すると equals、完全に一致する必要があります。を使用し regexている場合には正規表現を使用できます。

3.3.2. アクション構文の実行

ルールの perform セクションで利用できる操作には、アプリケーションリソースの分類、移行手順に関するインラインヒント、移行情報へのリンク、プロジェクトのラインアイテムレポートが含まれます。XML ルールは Java ベースのルールアドオンの後にモデル化されるため、関連する Java クラスの JavaDocs へのリンクは、その動作をよりよく理解するために提供されます。

完全な XML ルールスキーマは http://windup.jboss.org/schema/windup-jboss-ruleset.xsd にあります。

次のセクションでは、より一般的な XML ルール実行アクションを説明します。

3.3.2.1. <classification> Syntax
3.3.2.1.1. Summary

<classification> 要素は、ルールに一致するアプリケーションリソースを特定または分類するために使用されます。これは、レポートに表示されるタイトル、作業レベル、およびリソースの分類の移行方法に関する追加情報へのリンクも提供します。<classification> アクションの理解を深めるには、Classification クラスの JavaDoc を参照してください。

以下は、リソースを WebLogic EAR アプリケーションデプロイメント記述子ファイルとして分類するルールの例です。

Copy to Clipboard Toggle word wrap
<rule id="XmlWebLogicRules_10vvyf">
    <when>
        <xmlfile as="default" matches="/*[local-name()='weblogic-application']"></xmlfile>
    </when>
    <perform>
        <iteration>
            <classification title="Weblogic EAR Application Descriptor" effort="3"/>
        </iteration>
    </perform>
</rule>
3.3.2.1.2. <classification> 要素属性
属性名タイプ説明

title

STRING

このリソースに指定されたタイトル。この属性は必須です。

Copy to Clipboard Toggle word wrap
title="JBoss Seam Components"

effort

BYTE

このリソースに割り当てられた作業量レベル。

Copy to Clipboard Toggle word wrap
effort="2"

category-id

STRING

で定義され RHAMT_HOME/rules/migration-core/core.windup.categories.xmlたカテゴリーへの参照。デフォルトのカテゴリーは mandatory、、optional、およびです potential

Copy to Clipboard Toggle word wrap
category-id="mandatory"

of

VARIABLE_NAME

指定の参照用に新しい分類を作成します。

Copy to Clipboard Toggle word wrap
of="MySeamRule"
3.3.2.1.3. <classification> はサポートされていません要素
子要素説明

<link>

詳細情報のリンク URI およびテキストタイトルを提供します。

Copy to Clipboard Toggle word wrap
<classification title="Websphere Startup Service" effort="4">
   <link href="http://docs.oracle.com/javaee/6/api/javax/ejb/Singleton.html" title="EJB3.1 Singleton Bean"/>
   <link href="http://docs.oracle.com/javaee/6/api/javax/ejb/Startup.html" title="EJB3.1 Startup Bean"/>
</classification>

<tag>

分類に関する追加のカスタム情報を提供します。

Copy to Clipboard Toggle word wrap
<tag>Seam3</tag>

<description>

このリソースの説明

Copy to Clipboard Toggle word wrap
<description>JBoss Seam components must be replaced</description>
3.3.2.3. <hint> Syntax
3.3.2.3.1. Summary

<hint> 要素は、コードのセクションの移行方法に関するヒントまたはインライン情報を提供するために使用されます。<hint> アクションの理解を深めるには、Hint クラスの JavaDoc を参照してください。

以下は、ヒントを作成するルールの例です。

Copy to Clipboard Toggle word wrap
<rule id="WebLogicWebServiceRules_8jyqn">
    <when>
        <javaclass references="weblogic.wsee.connection.transport.http.HttpTransportInfo.setUsername({*})" as="default">
            <location>METHOD</location>
        </javaclass>
    </when>
    <perform>
        <iteration>
            <hint title="Proprietary web-service" category-id="mandatory" effort="3">
                <message>Replace proprietary web-service authentication with JAX-WS standards.</message>
                <link href="http://java-x.blogspot.com/2009/03/invoking-web-services-through-proxy.html" title="JAX-WS Proxy Password Example"/>
            </hint>
        </iteration>
    </perform>
</rule>
3.3.2.3.2. <hint> 要素の属性
属性名タイプ説明

title

STRING

指定された文字列を使用してこのヒントを入力します。この属性は必須です。

Copy to Clipboard Toggle word wrap
title="JBoss Seam Component Hint"

category-id

STRING

で定義され RHAMT_HOME/rules/migration-core/core.windup.categories.xmlたカテゴリーへの参照。デフォルトのカテゴリーは mandatory、、optional、およびです potential

Copy to Clipboard Toggle word wrap
category-id="mandatory"

in

VARIABLE_NAME

指定された変数によって解決される FileLocationModel に新しいヒントを作成します。

Copy to Clipboard Toggle word wrap
in="Foo"

effort

BYTE

このリソースに割り当てられた作業量レベル。

Copy to Clipboard Toggle word wrap
effort="2"
3.3.2.3.3. <hint> 等号要素
子要素説明

<message>

移行ヒントを記述するメッセージ。

Copy to Clipboard Toggle word wrap
<message>EJB 2.0 is deprecated</message>

<link>

情報コンテンツへのリンクを特定または分類します。詳細は、<link> Syntax のセクション を参照してください。

Copy to Clipboard Toggle word wrap
<link href="http://docs.oracle.com/javaee/6/api/" title="Java Platform, Enterprise Edition 6
API Specification" />

<tag>

このカスタムタグを定義し hintます。

Copy to Clipboard Toggle word wrap
<tag>Needs review</tag>

<quickfix>

には、ルール条件が満たされる際に迅速な修正を実行するために Eclipse プラグインによって使用される情報が含まれます。

Copy to Clipboard Toggle word wrap
<quickfix name="slink-qf" type="REPLACE">
    <replacement>h:link</replacement>
    <search>s:link</search>
</quickfix>
3.3.2.4. <xslt> Syntax
3.3.2.4.1. Summary

<xslt> 要素は XML ファイルの変換方法を指定します。<xslt> アクションの理解を深めるには、TTransformation クラスの JavaDoc を参照し ください。

以下は、XSLT アクションを定義するルールの例です。

Copy to Clipboard Toggle word wrap
<rule id="XmlWebLogicRules_6bcvk">
    <when>
        <xmlfile as="default" matches="/weblogic-ejb-jar"/>
    </when>
    <perform>
        <iteration>
            <classification title="Weblogic EJB XML" effort="3"/>
            <xslt title="JBoss EJB Descriptor (Windup-Generated)" template="transformations/xslt/weblogic-ejb-to-jboss.xsl" extension="-jboss.xml"/>
        </iteration>
    </perform>
</rule>
3.3.2.4.2. <xslt> 要素属性
属性名タイプ説明

title

STRING

レポート内のこの XSLTTransformation のタイトルを設定します。この属性は必須です。

Copy to Clipboard Toggle word wrap
title="XSLT Transformed Output"

of

STRING

指定の参照の変換を新たに作成します。

Copy to Clipboard Toggle word wrap
of="testVariable_instance"

extension

STRING

この XSLTTransformation の拡張を設定します。この属性は必須です。

Copy to Clipboard Toggle word wrap
extension="-result.html"

template

STRING

XML テンプレートを設定します。この属性は必須です。

Copy to Clipboard Toggle word wrap
template="simpleXSLT.xsl"

effort

BYTE

変換に必要な作業量レベル。

3.3.2.4.3. <xslt> はサポートされていません要素
子要素説明

<xslt-parameter>

XSLTTransformation パラメーターをプロパティー値のペアとして指定

Copy to Clipboard Toggle word wrap
<xslt-parameter property="title" value="EJB Transformation"/>
3.3.2.4.3.1. <lineitem> Syntax
3.3.2.4.4. Summary

<lineitem> 要素は、非推奨となったライブラリーを置き換える必要や、クラスローディングの問題を解決する必要がある場合など、アプリケーションの一般的な移行要件を提供するために使用されます。この情報は、プロジェクトまたはアプリケーションの概要ページに表示されます。<lineitem> アクションの理解を深めるには、LineItem クラスの JavaDoc を参照してください。

以下は、行項目メッセージを作成するルールの例です。

Copy to Clipboard Toggle word wrap
<rule id="weblogic_servlet_annotation_1000">
    <when>
        <javaclass references="weblogic.servlet.annotation.WLServlet" as="default">
            <location>ANNOTATION</location>
        </javaclass>
    </when>
    <perform>
        <hint effort="1">
            <message>Replace the proprietary WebLogic @WLServlet annotation with the Java EE 6 standard @WebServlet annotation.</message>
            <link href="https://access.redhat.com/articles/1249423" title="Migrate WebLogic Proprietary Servlet Annotations" />
            <lineitem message="Proprietary WebLogic @WLServlet annotation found in file."/>
        </hint>
    </perform>
</rule>
3.3.2.4.5. <lineitem> 要素属性
属性名タイプ説明

message

STRING

行項目メッセージ。

Copy to Clipboard Toggle word wrap
message="Proprietary code found."
3.3.2.5. <iteration> Syntax
3.3.2.5.1. Summary

<iteration> 要素は、ルール内に定義される暗黙的または明示的な変数で繰り返し処理されるように指定します。<iteration> アクションの理解の詳細は、「 JavaDoc for the Iteration class」を参照してください。

以下は、反復を実行するルールの例です。

Copy to Clipboard Toggle word wrap
<rule id="jboss-eap5-xml-19000">
    <when>
        <xmlfile as="jboss-app" matches="/jboss-app"/>
        <xmlfile as="jboss-app-no-DTD" matches="/jboss-app" public-id=""/>
    </when>
    <perform>
        <iteration over="jboss-app">
            <classification title="JBoss application Descriptor" effort="5"/>
        </iteration>
        <iteration over="jboss-app-no-DTD">
            <classification title="JBoss application descriptor with missing DTD" effort="5"/>
        </iteration>
        <iteration over="jboss-app-no-DTD">
            <xslt title="JBoss application descriptor - JBoss 5 (Windup-generated)" template="transformations/xslt/jboss-app-to-jboss5.xsl" extension="-jboss5.xml"/>
        </iteration>
    </perform>
</rule>
3.3.2.5.2. <iteration> 要素属性
属性名タイプ説明

over

VARIABLE_NAME

この VARIABLE_NAME で特定された条件を繰り返します。

Copy to Clipboard Toggle word wrap
over="jboss-app"
3.3.2.5.3. <iteration> 等号要素
子要素説明

<iteration>

子要素には、アクション、、、iteration classification hint xslt lineitem、およびとともに when 条件が含まれ otherwiseます。

3.3.3. Syntax の場所

XML ルールの他の要素で使用する、一致するパターンを指定するパラメーターを定義できます。これにより、複雑なマッチング式のパターンを単純化することができます。

<where> 要素を使用してパラメーターを定義します。param 属性を使用してパラメーター名を指定し、<matches> 要素を使用してパターンを指定します。このパラメーターは、構文を使用して、ルール定義の別の場所で参照でき {PARAM_NAME}ます。

完全な XML ルールスキーマは http://windup.jboss.org/schema/windup-jboss-ruleset.xsd にあります。

以下のルール例では、パターンを指定する subpackage という名前のパラメーターを定義し (activeio|activemq)ます。

Copy to Clipboard Toggle word wrap
<rule id="generic-catchall-00600">
  <when>
    <javaclass references="org.apache.{subpackage}.{*}">
    </javaclass>
  </when>
  <perform>
    ...
  </perform>
  <where param="subpackage">
    <matches pattern="(activeio|activemq)" />
  </where>
</rule>

で定義 subpackage したパターンは、<javaclass> references 属性で置き換えられます。これにより、ルールが org.apache.activeio.* および org.apache.activemq.* パッケージで照合されます。

第4章 XML ルールのテスト

4.1. アプリケーションの Migration Toolkit へのルールの追加

Migration Toolkit for Applications ルールは、ルールを適切な MTA ディレクトリーにコピーしてインストールされます。MTA は、.windup.xml またはで終わるファイルであり、以下の場所 .rhamt.xmlにあるルールをスキャンします。

  • MTA コマンドラインで --userRulesDirectory 引数で指定したディレクトリー。
  • RHAMT_HOME/rules/ ディレクトリーは、アプリケーション実行ファイル用の Migration Toolkit をインストールして実行するディレクトリー RHAMT_HOME です。
  • ${user.home}/.rhamt/rules/ ディレクトリー。このディレクトリーは、初めて MTA により作成され、ルール、アドオン、および MTA ログが含まれます。

    注記

    Windows の場合、このディレクトリーは \Documents and Settings\USER_NAME\.rhamt\rules\ またはになり \Users\USER_NAME\.rhamt\rules\ます。

4.2. XML ルールのテスト

ターミナルで MTA を実行して、アプリケーションファイルに対して XML ルールをテストします。

Copy to Clipboard Toggle word wrap
$ RHAMT_HOME/bin/rhamt-cli [--sourceMode] --input INPUT_ARCHIVE_OR_FOLDER --output OUTPUT_REPORT_DIRECTORY --target TARGET_TECHNOLOGY --packages PACKAGE_1 PACKAGE_2 PACKAGE_N

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

Copy to Clipboard Toggle word wrap
Report created: OUTPUT_REPORT_DIRECTORY/index.html
              Access it at this URL: file:///OUTPUT_REPORT_DIRECTORY/index.html

MTA の実行方法のその他の例は、Migration Toolkit for Applications の 『CLI ガイド』に記載されています。

第5章 ルールの上書き

MTA またはカスタム書き込みルールで配布されるコアルールを上書きできます。たとえば、ルールのマッチング条件、作業量、またはヒントテキストを変更する場合があります。これは、元のルールのカスタムコピーを作成し、それをルールのオーバーライドとしてマークして、必要な調整を行うことで行います。この方法と同じ方法でルールを無効にすることもできます。

5.1. ルールの上書き

以下の手順でルールを上書きできます。

  1. 上書きするルールが含まれる XML ファイルをカスタムの rules ディレクトリーにコピーします。

    カスタムルールは RHAMT_HOME/rules、、${user.home}/.rhamt/rules/、または --userRulesDirectory コマンドライン引数で指定したディレクトリーのいずれかに配置できます。

  2. XML ファイルを編集し、上書きするルールの <rule> 要素のみを保持します。

    上書きされていない元の ruleset のルールは、通常通りに実行されることに注意してください。

  3. 同じルールとルールセット ID を保持するようにしてください。元のルール XML をコピーすると、ID が一致します。
  4. ruleset メタデータに <overrideRules>true</overrideRules> エントリーを追加します。
  5. 必要に応じてルールに合わせて調整を行います。

    ルール定義では、すべてを変更することができます。このルールは、元のルール全体をオーバーライドします。

上書きされたルールの例を以下に示します。ruleset メタデータの <overrideRules>true</overrideRules> 要素に注目してください。ルールとルールセット ID は元のルールと一致します。このルールにより、必要な作業がから 1 に変わり 3ます。

Copy to Clipboard Toggle word wrap
<?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 の内容を確認して、新規ルールが使用されていることを確認できます。

5.2. ルールの無効化

ルールを無効にするには、上記と同じ手順に従ってルールをオーバーライドします。ただし、空の <rule> 要素を指定します。

Copy to Clipboard Toggle word wrap
<?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">
            <!-- Empty so that the original rule is disabled -->
        </rule>
    </rules>
</ruleset>

第6章 カスタムルールカテゴリーの使用

MTA ルールの severity フィールドの概念を置き換える新しいカテゴリーフィールドが MTA 3.0 に追加されました。デフォルトのカテゴリーは、mandatory、、optionalおよびの severity フィールドで利用可能でした potential。ただし、独自のカスタムルールカテゴリーを追加し、それらに MTA ルールを割り当てる ことができるように なりました。

重要

MTA はレガシーフィールドを使用するルールを処理できますが、新しい severity category-id フィールドを使用するようにカスタムルールを更新することが推奨されます。

カスタムカテゴリーの追加

  1. にあるルールカテゴリーファイルを編集し RHAMT_HOME/rules/migration-core/core.windup.categories.xmlます。
  2. 新しい <category> 要素を追加し、以下のフィールドに入力します。

    • id: MTA ルールがカテゴリーを参照するために使用する ID。
    • priority: 他のカテゴリーと比較されるソート優先度です。値が最も低いカテゴリーが最初に表示されます。
    • name: カテゴリーの表示名。
    • description: カテゴリーの使用方法の説明。

      カスタムルールカテゴリーの例

      Copy to Clipboard Toggle word wrap
      <?xml version="1.0"?>
      <categories>
          ...
          <category id="custom-category" priority="20000">
              <name>Custom Category</name>
              <description>This is a custom category.</description>
          </category>
      </categories>

これで、このカテゴリーは MTA ルールで参照できるようになりました。

カスタムカテゴリーへのルールの割り当て

MTA ルールで、ルールの category-id フィールドでカスタムカテゴリーの id 値を使用します。

カスタムルールカテゴリーを使用したルールの例

Copy to Clipboard Toggle word wrap
<rule id="rule-id">
    <when>
        ...
    </when>
    <perform>
        <hint title="Rule Title" effort="1" category-id="custom-category">
            <message>Hint message.</message>
        </hint>
    </perform>
 </rule>

これで MTA を実行し、このルールの条件が満たされると、このルールによって識別されるインシデントがカスタムカテゴリーを使用します。カスタムカテゴリーは、Dashboard や Issues レポートなどの MTA レポートに表示されます。

図6.1 Dashboard 上のカスタムカテゴリー

Dashboard のカスタムルールカテゴリー

付録A リファレンス資料

A.1. ルールのポイント

A.1.1. ポイントとは何ですか?

ストーリーポイント は、アジャイルソフトウェア開発で一般的に使用される抽象メトリクスで、機能や変更を実装するのに必要な 作業量 を予測します。

MTC(Migration Toolkit for Applications)は、特定のアプリケーションコンストラクトを移行するために必要な作業レベルを表現し、アプリケーションを全体として表します。必ずしも工数に変換される訳ではありませんが、この値はタスク全体で一貫性を持たせる必要があります。

A.1.2. ルールでのポイントの推定方法

ルールのストーリーポイントの作業レベルを見積もることは複雑です。以下は、ルールに必要な作業レベルを見積もる際に MTA が使用する一般的なガイドラインです。

作業レベルストーリーポイント説明

Information

0

移行の優先度が非常に低いか、優先度のない情報警告。

Trivial

1

移行は、些細な変更または単純なライブラリースワップであり、API の変更はないか、最小限となります。

Complex

3

移行タスクに必要な変更は複雑ですが、解決策が文書化されています。

Redesign

5

移行タスクでは、API が大幅に変更され、再設計または完全なライブラリーの変更が必要になります。

Rearchitecture

7

移行には、コンポーネントまたはサブシステムの完全な再アーカイブが必要です。

Unknown

13

移行ソリューションは不明なため、完全な再書き込みが必要になる場合があります。

A.1.3. タスクの影響

作業量レベルに加えて、移行タスクを分類してタスクの重大度を示すことができます。以下のカテゴリーは、タスクを完了する必要があるか、または延期される必要があるかを示します。

必須
移行を成功させるには、タスクを完了する必要があります。変更が行われないと、生成されるアプリケーションはビルドまたは実行に成功しません。たとえば、ターゲットプラットフォームでサポートされないプロプライエタリー API の置き換え例が含まれます。
任意
移行タスクが完了しない場合、アプリケーションは機能しますが、結果が最適ではない可能性があります。移行時に変更が行われない場合には、移行の完了直後にスケジュールすることが推奨されます。これには、EJB 2.x コードの EJB 3 へのアップグレードが挙げられます。

タスクの分類に関する詳細は、「カスタムルールカテゴリーの使用」を参照してください。

A.2. 関連資料

A.2.1. 既存の MTA XML ルールの確認

MTA XML ベースのルールは、、GitHub の https://github.com/windup/windup-rulesets/tree/master/rules-reviewed にあります。

ローカルマシンに MTA rulesets リポジトリーをフォークしてクローン する方法は、Wiki で提供されます。

ルールは、ターゲットプラットフォームおよび機能でグループ化されます。新しいルールを作成する場合は、必要なルールと似たルールを見つけ、これを開始テンプレートとして使用すると便利です。

新しいルールは継続的に追加されるため、頻繁に更新を確認することをお勧めします。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.