第 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>