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ている場合には正規表現を使用できます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat, Inc.