ルール開発ガイド
第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 ルールでは、以下のルールパターンを使用します。
when(condition) perform(action) otherwise(action)
when(condition)
perform(action)
otherwise(action)
MTA は、標準の包括的な移行ルールの包括的なセットをそのまま使用できます。アプリケーションにはカスタムライブラリーまたはコンポーネントが含まれる可能性があるため、MTA では独自のルールを作成して、既存のルールセットで対応していない可能性のあるコンポーネントやソフトウェアの使用を特定することができます。
第2章 Getting Started (スタートガイド)
ルールの作成 またはクイックスタートの 確認により、カスタム MTA ルールの作成 を開始することができます。
2.1. 最初の XML ルールの作成
本セクションでは、最初の MTA XML ベースのルールを作成してテストするプロセスを説明します。これは、すでに MTA がインストールされていることを前提としています。インストール手順は、『CLI ガイド』を参照してください。
この例では、アプリケーションが <class-loading>
要素を含む jboss-web.xml
ファイルを定義し、コードの移行方法を記述するドキュメントへのリンクを提供するためのルールを作成します。
ルールのディレクトリー構造の作成
最初のルールと、テストに使用するデータファイルを含むディレクトリー構造を作成します。
mkdir -p /home/USER_NAME/migration-rules/rules mkdir -p /home/USER_NAME/migration-rules/data
$ mkdir -p /home/USER_NAME/migration-rules/rules
$ mkdir -p /home/USER_NAME/migration-rules/data
このディレクトリー構造は、生成された MTA レポートを保持するためにも使用されます。
ルールをテストするためのデータの作成
-
/home/USER_NAME/migration-rules/data/
サブディレクトリーにjboss-web.xml
ファイルを作成します。 以下の内容にコピーします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <!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>
<!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 ベースのルールは、以下のルールパターンを使用します。
when(condition) perform(action) otherwise(action)
when(condition)
perform(action)
otherwise(action)
ルールセットおよびルールの XML 要素の詳細は、「 XML ルール構造」 を参照してください。構文例の XML ルールの作成に関する詳細は、「基本的な XML ルールの作成」を参照してください。
という名前の
/home/USER_NAME/migration-rules/rules/
サブディレクトリーに XML ファイルを作成しJBoss5-web-class-loading.windup.xml
ます。以下の内容にコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <?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 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 ベースのルールとして識別されるため、必ずこの命名規則を使用してください。使用しない場合は、ルールが評価されません。ruleset および rule の一意の識別子を追加します。
-
を適切なルールセット ID に
UNIQUE_RULESET_ID
置き換えます(例:)JBoss5-web-class-loading
。 -
を適切なルール ID に
UNIQUE_RULE_ID
置き換えます(例:)JBoss5-web-class-loading_001
。
-
を適切なルールセット ID に
以下の ruleset アドオン依存関係を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <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>
<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>
ソースおよびターゲットテクノロジーを追加します。
-
を
SOURCE_ID
に置き換えeap
ます。 -
を
TARGET_ID
に置き換えeap
ます。
-
を
ソースおよびターゲットのテクノロジーバージョンを設定します。
-
を
SOURCE_VERSION_RANGE
に置き換え(4,5)
ます。 -
を
TARGET_VERSION_RANGE
に置き換え[6,)
ます。
この構文のヘルプは、Apache Maven バージョン範囲 の指定を参照してください。
-
を
when
条件を完了します。このルールが XML ファイル内のマッチに対してテストされるため、
xmlfile
はファイルの評価に使用されます。子
class-loading
要素の要素と一致するにはjboss-web
、xpath 式を使用しjboss-web/class-loading
ます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <when> <xmlfile matches="jboss-web/class-loading" /> </when>
<when> <xmlfile matches="jboss-web/class-loading" /> </when>
このルールに対する
perform
アクションを完了します。-
タイトルの説明と作業量で分類を追加し
1
ます。 ヒントに情報メッセージと、移行の詳細を説明するドキュメントへのリンクを提供します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <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>
<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>
-
タイトルの説明と作業量で分類を追加し
ルールは完了し、以下の例のようになるはずです。
<?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>
<?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/
ディレクトリーにコピーします。
cp /home/USER_NAME/migration-rules/rules/JBoss5-web-class-loading.windup.xml RHAMT_HOME/rules/
$ cp /home/USER_NAME/migration-rules/rules/JBoss5-web-class-loading.windup.xml RHAMT_HOME/rules/
ルールのテスト
端末を開き、以下のコマンドを実行して、テストファイルを入力引数として、出力レポートのディレクトリーとして渡します。
RHAMT_HOME/bin/rhamt-cli --sourceMode --input /home/USER_NAME/migration-rules/data --output /home/USER_NAME/migration-rules/reports --target eap:6
$ RHAMT_HOME/bin/rhamt-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
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 ガイド』の「レポート の確認 」セクションを参照してください。
-
Web ブラウザー
/home/USER_NAME/migration-rules/reports/index.html
でを開きます。 ルールが実行されていることを確認します。
- 主な編集ページから、Rule providers execution overview リンクをクリックし、Rule Providers Execution Overview を開きます。
JBoss5-web-class-loading_001
ルールを見つけ 、Status? とそのCondition met
Result? がであることを確認しsuccess
ます。図2.1 テストルール実行
ルールがテストデータで一致していることを確認します。
-
メインのページから、
data
この例にあるアプリケーションまたは入力フォルダーの名前をクリックします。 - Application Details レポートリンクをクリックします。
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 のダウンロード
- ブラウザーを開き、https://github.com/windup/windup-quickstarts/releases に移動し ます。
- 最新のリリースをクリックして ZIP ファイルをローカルファイルシステムにダウンロードします。
fork および Clone the Quickstart GitHub Project
git
クライアントがマシンにインストールされている。
-
Migration Toolkit for Applications quickstart GitHub ページの
Fork
リンクをクリックし、独自の Git でプロジェクトを作成します。フォークによって作成されたフォークされた GitHub リポジトリー URL は、のようになりますhttps://github.com/YOUR_USER_NAME/windup-quickstarts.git
。 アプリケーションクイックスタートリポジトリーの Migration Toolkit for Applications のクローンをローカルファイルシステムにクローンします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow git clone https://github.com/YOUR_USER_NAME/windup-quickstarts.git
$ git clone https://github.com/YOUR_USER_NAME/windup-quickstarts.git
これにより、ローカルファイルシステムに
windup-quickstarts
ディレクトリーが作成され、準備されます。新規作成されたディレクトリーに移動します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd windup-quickstarts/
$ cd windup-quickstarts/
最新のコード更新を取得できるようにするには、リモートリポジトリーを追加して元のフォークした
upstream
リポジトリーへの変更をすべて取得できるようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow git remote add upstream https://github.com/windup/windup-quickstarts.git
$ git remote add upstream https://github.com/windup/windup-quickstarts.git
upstream
リポジトリーから最新のファイルを取得します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow git fetch upstream
$ 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 つ以上のルールを定義できます。-
<when>: 照合する条件。で許可される要素の詳細な説明は、「 Condition 構文
<when>
」を参照してください。 -
<perform>: ルール条件が一致したときに実行されるアクション。で許可される要素の詳細な説明は、「 アクション構文の実行
<perform>
」を参照してください。 -
<otherwise>: ルール条件が一致しない場合に実行されるアクション。この要素は、要素と同じ子
<perform>
要素を取ります。 - <where>: パラメーターとして定義される文字列パターン。このパターンは、ルール定義の他の場所で使用できます。詳細は、「 構文の場所」を参照 してください。
-
<when>: 照合する条件。で許可される要素の詳細な説明は、「 Condition 構文
- <file-mapping/>: 拡張機能をグラフタイプにマップします。
- <package-mapping/>: パッケージパターン (正規表現) から組織名にマッピングします。
3.1.2. 事前定義されたルール
MTA は、一般的な移行要件に事前定義されたルールを提供します。これらのコア MTA ルールは、の MTA インストールにあり RHAMT_HOME/rules/migration-core/
ます。
以下は、プロプライエタリーユーティリティークラスで一致するコア MTA ルールの例になります。
<?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>
<?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 ルールは 条件 と アクション で構成され、以下のルールパターンを使用します。
when(condition) perform(action) otherwise(action)
when(condition)
perform(action)
otherwise(action)
以下の内容で、XML ルールの基本的な構文であるファイルを作成します。
MTA XML ルールファイルは .windup.xml
または .rhamt.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> <!-- 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>
<?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>
<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>
<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 パッケージに対してテストするルールの例です。
<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>
<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 | 一致するパッケージまたはクラス名。ワイルドカード文字を使用できます。この属性は必須です。 注記
パフォーマンス上の理由から、ワイルドカード文字を使用して参照を開始しないでください。たとえば、の references="weblogic.apache.xml.{*}"
|
matchesSource | STRING | 一致する正確な正規表現。これは、ハードコーディングされた文字列を区別する場合に便利です。この属性は必須です。 matchesSource="log4j.logger"
|
as | VARIABLE_NAME |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule"
|
from | VARIABLE_NAME |
from="MyEjbRule"
|
in | PATH_FILTER | この正規表現 (regex) の命名パターンに一致する入力ファイルをフィルターします。ワイルドカード文字を使用できます。 in="{*}File1"
|
3.3.1.1.2.2. <javaclass> はサポートされていません要素
子要素 | 説明 |
---|---|
<location> | 参照が Java クラスで見つかった場所。場所は、アノテーション、フィールドおよび変数宣言、インポート、およびメソッドを参照できます。有効な値の完全なリストは、TypeReferenceLocation の JavaDoc を参照してください。 <location>IMPORT</location>
|
<annotation-literal> | アノテーション内のリテラル値に一致します。
以下の例では、と一致してい <javaclass references="org.package.MyAnnotation"> <location>ANNOTATION</location> <annotation-literal name="myvalue" pattern="test"/> </javaclass>
この場合、はアノテーション( |
<annotation-type> | 特定のアノテーションタイプで一致します。アノテーション要素に対して照合されるサブ条件を指定できます。
以下の例は、にアノテーションが付けられた <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> | アノテーション内の配列の項目で一致します。配列インデックスが指定されていない場合は、配列内の任意のアイテムに適用されると条件が一致します。この要素と照合するサブ条件を指定できます。
以下の例では、と一致してい <javaclass references="org.package.MyAnnotation" > <location>ANNOTATION</location> <annotation-list name="mylist"> <annotation-literal pattern="two"/> </annotation-list> </javaclass>
この場合、はアノテーション( |
3.3.1.2. <xmlfile> Syntax
3.3.1.2.1. Summary
<xmlfile>
要素を使用して XML ファイルの情報を検索します。<xmlfile>
条件の詳細は、XmlFile JavaDoc を参照し て ください。
以下は、XML ファイルをテストするルールの例です。
<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>
<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 ファイル条件で一致します。 matches="/w:web-app/w:resource-ref/w:res-auth[text() = 'Container']"
|
xpathResultMatch | XPATH_RESULT_STRING | 指定の正規表現に一致する結果を返します。 <xmlfile matches="//foo/text()" xpathResultMatch="Text from foo."/>
|
as | VARIABLE_NAME |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule"
|
in | PATH_FILTER | この正規表現 (regex) の命名パターンに一致する入力ファイルをフィルターを設定するのに使用されます。ワイルドカード文字を使用できます。 in="{*}File1"
|
from | VARIABLE_NAME |
from="MyEjbRule"
|
public-id | PUBLIC_ID | DTD public-id 正規表現。 public-id="public"
|
3.3.1.2.2.2. <xmlfile> matches
カスタム関数
matches
属性は、ルール変数スタックにマッチした値を設定するなど、有用な副次的影響を持つ複数の組み込みカスタム F を使用できます。
機能 | 説明 |
---|---|
| XPath 式を文字列と照合します。MTA パラメーター化プレースホルダーが含まれている可能性があります。 matches="windup:matches(//foo/@class, '{javaclassname}'"
これは、 |
3.3.1.2.2.3. <xmlfile> 等号要素
子要素 | 説明 |
---|---|
<namespace> |
XML ファイルで参照される名前空間。この要素には <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 依存関係バージョンを確認するルールの例になります。
<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>
<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> |
プロジェクト依存関係に対する |
3.3.1.3.2.3. <artifact> 要素の属性
属性名 | タイプ | 説明 |
---|---|---|
groupId | PROJECT_GROUP_ID |
依存関係 |
artifactId | PROJECT_ARTIFACT_ID |
依存関係 |
fromVersion | FROM_VERSION |
アーティファクトの下位バージョンバインドを指定します。例: |
toVersion | TO_VERSION |
アーティファクトの上位バージョンバインドを指定します。例: |
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 |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule"
|
from | VARIABLE_NAME |
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 |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule"
|
from | VARIABLE_NAME |
たとえば、以下のようになります。 from="MyEjbRule"
|
3.3.1.6. <has-hint> Syntax
3.3.1.6.1. Summary
<has-hint>
要素を使用して、ファイルまたは行にヒントがすでに関連付けられているかどうかをテストします。これは主に、ヒントがすでに存在する場合に起動を防止するため、また他の条件が適用されない場合のデフォルト実行のルールを実装するために使用されます。<has-hint>
条件の理解を深めるには、HasHint クラスの JavaDoc を参照し て ください。
以下は、IBM JMS 宛先メッセージのヒントが存在するかどうかを確認し、含まれていない場合にそれを含めるルールの例です。
<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>
<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
パッケージが見つかったかどうかを判断するためにテストするルールの例です。
<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>
<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 |
検索に使用するモデルのタイプ。これは有効なモデルにすることができますが、を使用してアーカイブを |
as | VARIABLE_NAME |
ルールに割り当てられた変数名。これにより、後で処理した参照として使用できるようになります。以下の as="MyEjbRule"
|
from | VARIABLE_NAME |
from="MyEjbRule"
|
3.3.1.8.2.2. <graph-query> プロパティー
プロパティー名 | タイプ | 説明 |
---|---|---|
name | String |
選択したモデル内で照合する属性の名前。ファイルベースのモデルを使用する場合は、に一致させることが推奨され |
type | property-type |
予想されるプロパティーのタイプ( |
searchType | property-search-type |
条件の一致方法を定義します。に設定すると |
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 アプリケーションデプロイメント記述子ファイルとして分類するルールの例です。
<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>
<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 | このリソースに指定されたタイトル。この属性は必須です。 title="JBoss Seam Components"
|
effort | BYTE | このリソースに割り当てられた作業量レベル。 effort="2"
|
category-id | STRING |
で定義され category-id="mandatory"
|
of | VARIABLE_NAME | 指定の参照用に新しい分類を作成します。 of="MySeamRule"
|
3.3.2.1.3. <classification> はサポートされていません要素
子要素 | 説明 |
---|---|
<link> | 詳細情報のリンク URI およびテキストタイトルを提供します。 <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> | 分類に関する追加のカスタム情報を提供します。 <tag>Seam3</tag>
|
<description> | このリソースの説明 <description>JBoss Seam components must be replaced</description>
|
3.3.2.2. <link> Syntax
3.3.2.2.1. Summary
<link>
要素は分類またはヒントで使用され、情報コンテンツへのリンクを提供します。<link>
アクションの理解を深めるには、Link クラスの JavaDoc を参照してください。
以下は、追加情報へのリンクを作成するルールの例です。
<rule id="SeamToCDIRules_2fmb"> <when> <javaclass references="org.jboss.seam.{*}" as="default"/> </when> <perform> <iteration> <classification title="SEAM Component" effort="1"> <link href="http://www.seamframework.org/Seam3/Seam2ToSeam3MigrationNotes" title="Seam 2 to Seam 3 Migration Notes"/> <link href="http://docs.jboss.org/weld/reference/latest/en-US/html/example.html" title="JSF Web Application Example"/> <link href="http://docs.jboss.org/weld/reference/latest/en-US/html/contexts.html" title="JBoss Context Documentation"/> <link href="http://www.andygibson.net/blog/tutorial/cdi-conversations-part-2/" title="CDI Conversations Blog Post"/> </classification> </iteration> </perform> </rule>
<rule id="SeamToCDIRules_2fmb">
<when>
<javaclass references="org.jboss.seam.{*}" as="default"/>
</when>
<perform>
<iteration>
<classification title="SEAM Component" effort="1">
<link href="http://www.seamframework.org/Seam3/Seam2ToSeam3MigrationNotes" title="Seam 2 to Seam 3 Migration Notes"/>
<link href="http://docs.jboss.org/weld/reference/latest/en-US/html/example.html" title="JSF Web Application Example"/>
<link href="http://docs.jboss.org/weld/reference/latest/en-US/html/contexts.html" title="JBoss Context Documentation"/>
<link href="http://www.andygibson.net/blog/tutorial/cdi-conversations-part-2/" title="CDI Conversations Blog Post"/>
</classification>
</iteration>
</perform>
</rule>
3.3.2.2.2. <link> 要素の属性
属性名 | タイプ | 説明 |
---|---|---|
href | URI | 参照リンクの URI。 href="https://access.redhat.com/articles/1249423"
|
title | STRING | リンクのタイトル。 title="Migrate WebLogic Proprietary Servlet Annotations"
|
3.3.2.3. <hint> Syntax
3.3.2.3.1. Summary
<hint>
要素は、コードのセクションの移行方法に関するヒントまたはインライン情報を提供するために使用されます。<hint>
アクションの理解を深めるには、Hint クラスの JavaDoc を参照してください。
以下は、ヒントを作成するルールの例です。
<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>
<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 | 指定された文字列を使用してこのヒントを入力します。この属性は必須です。 title="JBoss Seam Component Hint"
|
category-id | STRING |
で定義され category-id="mandatory"
|
in | VARIABLE_NAME | 指定された変数によって解決される FileLocationModel に新しいヒントを作成します。 in="Foo"
|
effort | BYTE | このリソースに割り当てられた作業量レベル。 effort="2"
|
3.3.2.3.3. <hint> 等号要素
子要素 | 説明 |
---|---|
<message> | 移行ヒントを記述するメッセージ。 <message>EJB 2.0 is deprecated</message>
|
<link> | 情報コンテンツへのリンクを特定または分類します。詳細は、<link> Syntax のセクション を参照してください。 <link href="http://docs.oracle.com/javaee/6/api/" title="Java Platform, Enterprise Edition 6 API Specification" />
|
<tag> |
このカスタムタグを定義し <tag>Needs review</tag>
|
<quickfix> | には、ルール条件が満たされる際に迅速な修正を実行するために Eclipse プラグインによって使用される情報が含まれます。 <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 アクションを定義するルールの例です。
<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>
<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 のタイトルを設定します。この属性は必須です。 title="XSLT Transformed Output"
|
of | STRING | 指定の参照の変換を新たに作成します。 of="testVariable_instance"
|
extension | STRING | この XSLTTransformation の拡張を設定します。この属性は必須です。 extension="-result.html"
|
template | STRING | XML テンプレートを設定します。この属性は必須です。 template="simpleXSLT.xsl"
|
effort | BYTE | 変換に必要な作業量レベル。 |
3.3.2.4.3. <xslt> はサポートされていません要素
子要素 | 説明 |
---|---|
<xslt-parameter> | XSLTTransformation パラメーターをプロパティー値のペアとして指定 <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 を参照してください。
以下は、行項目メッセージを作成するルールの例です。
<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>
<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 | 行項目メッセージ。 message="Proprietary code found."
|
3.3.2.5. <iteration> Syntax
3.3.2.5.1. Summary
<iteration>
要素は、ルール内に定義される暗黙的または明示的な変数で繰り返し処理されるように指定します。<iteration>
アクションの理解の詳細は、「 JavaDoc for the Iteration class」を参照してください。
以下は、反復を実行するルールの例です。
<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>
<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 で特定された条件を繰り返します。 over="jboss-app"
|
3.3.2.5.3. <iteration> 等号要素
子要素 | 説明 |
---|---|
<iteration> |
子要素には、アクション、、、 |
3.3.3. Syntax の場所
XML ルールの他の要素で使用する、一致するパターンを指定するパラメーターを定義できます。これにより、複雑なマッチング式のパターンを単純化することができます。
<where>
要素を使用してパラメーターを定義します。param
属性を使用してパラメーター名を指定し、<matches>
要素を使用してパターンを指定します。このパラメーターは、構文を使用して、ルール定義の別の場所で参照でき {PARAM_NAME}
ます。
完全な XML ルールスキーマは http://windup.jboss.org/schema/windup-jboss-ruleset.xsd にあります。
以下のルール例では、パターンを指定する subpackage
という名前のパラメーターを定義し (activeio|activemq)
ます。
<rule id="generic-catchall-00600"> <when> <javaclass references="org.apache.{subpackage}.{*}"> </javaclass> </when> <perform> ... </perform> <where param="subpackage"> <matches pattern="(activeio|activemq)" /> </where> </rule>
<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 ルールをテストします。
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
$ 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
以下の結果が表示されるはずです。
Report created: OUTPUT_REPORT_DIRECTORY/index.html Access it at this URL: file:///OUTPUT_REPORT_DIRECTORY/index.html
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. ルールの上書き
以下の手順でルールを上書きできます。
上書きするルールが含まれる 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 の内容を確認して、新規ルールが使用されていることを確認できます。
5.2. ルールの無効化
ルールを無効にするには、上記と同じ手順に従ってルールをオーバーライドします。ただし、空の <rule>
要素を指定します。
<?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>
<?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
フィールドを使用するようにカスタムルールを更新することが推奨されます。
カスタムカテゴリーの追加
-
にあるルールカテゴリーファイルを編集し
RHAMT_HOME/rules/migration-core/core.windup.categories.xml
ます。 新しい
<category>
要素を追加し、以下のフィールドに入力します。-
id
: MTA ルールがカテゴリーを参照するために使用する ID。 -
priority
: 他のカテゴリーと比較されるソート優先度です。値が最も低いカテゴリーが最初に表示されます。 -
name
: カテゴリーの表示名。 description
: カテゴリーの使用方法の説明。カスタムルールカテゴリーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <?xml version="1.0"?> <categories> ... <category id="custom-category" priority="20000"> <name>Custom Category</name> <description>This is a custom category.</description> </category> </categories>
<?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
値を使用します。
カスタムルールカテゴリーを使用したルールの例
<rule id="rule-id"> <when> ... </when> <perform> <hint title="Rule Title" effort="1" category-id="custom-category"> <message>Hint message.</message> </hint> </perform> </rule>
<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 上のカスタムカテゴリー

付録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 で提供されます。
ルールは、ターゲットプラットフォームおよび機能でグループ化されます。新しいルールを作成する場合は、必要なルールと似たルールを見つけ、これを開始テンプレートとして使用すると便利です。
新しいルールは継続的に追加されるため、頻繁に更新を確認することをお勧めします。
A.2.2. 重要なリンク
- MTA Javadoc: http://windup.github.io/windup/docs/latest/javadoc
- MTA フォーク: https://developer.jboss.org/en/windup
MTA JIRA 問題トラッカー
- MTA メーリングリスト: jboss-migration-feedback@redhat.com
- MTA on Twitter: @JBossWindup
-
MTA IRC チャネル: Server FreeNode(
irc.freenode.net
)、チャネル#windup
(transcript)
改訂日時: 2020-10-18 19:17:19 AEST