第 3 章 创建 XML 规则


3.1. XML 规则结构

这部分论述了 XML 规则的基本结构。所有 XML 规则定义为规则集中的元素。如需了解更多详细信息,请参阅 MTR XML 规则模式

3.1.1. Rulesets(规则集)

规则集是一组以特定迁移领域为目标的一个或多个规则。这是 <ruleset> 元素的基本结构。

  • <ruleset id="<UNIQUE_RULESET_ID>">: 将其定义为 MTR 规则集,并将其赋予唯一的规则 ID。

    • <metadata> :有关规则集的元数据。

      • <description> :规则集的描述。
      • <dependencies/> :这个规则集所需的规则附加组件。
      • <sourceTechnology/>: 源技术。
      • <targetTechnology/>: 目标技术。
      • <overrideRules/> : 设置为 true 表示此规则集中的规则使用通过 MTR 分发的核心规则集中的相同 ID 覆盖规则。ruleset id 和 rule id 必须与核心规则集中的规则匹配,否则规则将被忽略。另外,此规则集中的目标技术必须与您为运行分析指定的目标之一匹配。

        默认为 false

    • <rules>:一组单独的规则。

      • <rule id="<UNIQUE_RULE_ID>">: 定义规则并给它赋予一个唯一的 ID。建议将规则 ID 作为规则 ID 的一部分,如 <UNIQUE_RULESET_ID_UNIQUE_RULE_ID>。可以为规则集定义一个或多个规则。

        • <when> :要匹配的条件。
        • <perform>:当规则条件匹配时,要执行的操作。
        • <otherwise> :当规则条件不匹配时,要执行的操作。这个元素采用与 <perform> 元素相同的子元素。
        • <where> :字符串模式定义为参数,可在规则定义其他位置使用。
      • <file-mapping/> :映射到图形类型的扩展。
      • <package-mapping/> :映射软件包模式(regular 表达式)到机构名称。

3.1.2. 预定义的规则

MTR 为常见的迁移要求提供预定义规则。这些核心 MTR 规则位于 MTR 的安装中 <MTR_HOME>/rules/migration-core/

以下是在专有实用程序类上匹配的核心 MTR 规则示例。

<?xml version="1.0"?>
<ruleset xmlns="http://windup.jboss.org/schema/jboss-ruleset" id="weblogic" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">

    <metadata>
        <description>
            This ruleset provides analysis of WebLogic proprietary classes and constructs that may require individual attention when migrating to JBoss EAP 6+.
        </description>
        <dependencies>
            <addon id="org.jboss.windup.rules,windup-rules-javaee,2.0.1.Final" />
            <addon id="org.jboss.windup.rules,windup-rules-java,2.0.0.Final" />
        </dependencies>
        <sourceTechnology id="weblogic" />
        <targetTechnology id="eap" versionRange="[6,)" />
        <tag>reviewed-2015-06-02</tag>
        <tag>weblogic</tag>
    </metadata>
    <rules>
        ...
        <rule id="weblogic-02000">
            <when>
                <javaclass references="weblogic.utils.StringUtils.{*}" />
            </when>
            <perform>
                <hint title="WebLogic StringUtils usage" effort="1" category-id="mandatory">
                    <message>Replace with the `StringUtils` class from Apache Commons.</message>
                    <link href="https://commons.apache.org/proper/commons-lang/" title="Apache Commons Lang" />
                    <tag>weblogic</tag>
                </hint>
            </perform>
        </rule>
        ...
    </rules>
</ruleset>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.