企业管理 > Windchill 导出和导入 > 导入和导出策略、映射规则和冲突消息 > 通过特殊规则映射
  
通过特殊规则映射
可以编写映射规则以应用于一个特定的导出或导入过程,或者一组导出或导入过程。这些规则保存在导入或导出的其中一种或两种类型的 ASCII XML 文件中,这些文件也可以包含控制导入和导出操作的属性:
基于客户端的文件 - 通过在图形用户界面中浏览来选择这些文件。这些映射规则文件可以有任何文件名,并可以位于软件可以访问并读取它们的任何位置。如果与通用文件发生冲突,将以这些文件为准。
通用文件 - 这些文件提供了导入或导出操作的规则。其名称必须以 .xml 结尾。它们位于以下两个位置之一,文件的名称能够表示出各自的功能:
\Windchill\codebase\registry\ixb\export_settings
\Windchill\codebase\registry\ixb\import_settings
设置映射规则文件中属性的方法是编辑这些文件,不能将 xconfmanager 实用程序用于此目的。如果您未通过图形用户界面或在映射文件中设置属性,则使用 xconfmanager 实用程序添加或编辑属性。有关详细信息,请参阅使用 xconfmanager 实用程序
下面两节中将给出两种类型文件的示例。示例之后,将是关于属性和规则的部分,其中还包括规则示例。
映射属性
控制冲突解决的四个源,其优先级顺序如下:
1. “导入”窗口 - “导入”窗口中的“解决可忽视冲突”复选框用于控制 wt.properties 文件中的 wt.ixb.import.overrideConflicts 属性。
该属性将启用文件夹和其他冲突的自动解决方案。如果您未通过图形用户界面或在映射文件中设置属性,则必须使用 xconfmanager 实用程序添加或编辑属性。有关详细信息,请参阅使用 xconfmanager 实用程序
2. 映射规则的基于客户端的文件
3. 映射规则的通用文件
4. wt.properties 文件中的条目
基于客户端的映射规则文件
基于客户端的映射文件中的规则和属性值可控制 Windchill 导出和导入操作。这些规则和值会使 wt.properties 文件或通用映射规则文件中冲突的规则和值无效。<debugProperties> 元素是属性的位置,不是必要的。该元素可以包括 import.parser.validate 属性,当 XML 解析器检测到不一致时,该属性可以使您通过生成的消息来调试导入操作。启用文件夹和其他冲突的自动解决方案的属性在映射文件中显示的名称为 import.overrideConflicts。
在基于客户端的映射文件中,映射规则将出现在 <mappingRules> 元素中。
请注意以下所有示例都有标记值对:
<path>…</path>
此“标记值对”可缩小映射规则适用元素的范围。例如,对于所有 XML 文件 (如 WTPart 和 WTDocument 实例),下列映射规则将标记 <number> 的值从 1 更改为 4。
<COPY_AS>
<tag>number</tag>
<value>1</value>
<newValue>4</newValue>
</COPY_AS>
如果想让前述示例仅应用于 WTPart,可通过在映射规则中指定标记 <path> 及其值来实现:
<COPY_AS>
<tag>number</tag>
<path>WTPart</path>
<value>1</value>
<newValue>4</newValue>
</COPY_AS>
在此例中,尽管 WTDocument 实例的数字是 1,但是对于导入和导出,它的值都仍将是 1,而不是 4。
基于客户端的映射规则文件示例
以下示例显示基于客户端的映射规则文件的语法:
<?xml version="1.0" encoding="UTF-8"?>
<userSettings>
<debugProperties>
import.keepAllFilesInMemory=true
client.log.level=10
import.parser.validate=true
import.default.lifecycleInfo.lifecycleState=RELEASED
import.default.lifecycleInfo.lifecycleTemplateName=Released
Data
import.reposGuidPrefix=77746
logLevel=5
debug.enable=true
mappingRules.log.enable=false
mappingRules.debug.dir=C:\\TUNER_RESU
</debugProperties>
<mappingRules>
<COPY_AS>
<tag>number</tag>
<value>1</value>
<newValue>4</newValue>
</COPY_AS>
<COPY_AS>
<tag>number</tag>
<value>2</value>
<newValue>5</newValue>
</COPY_AS>
<COPY_AS>
<tag>number</tag>
<value>*</value>
<newValue>N-05-*</newValue>
</COPY_AS>
<COPY_AS>
<tag>teamIdentity</tag>
<value>WWWWW*</value>
<newValue>System.Default</newValue>
</COPY_AS>

<COPY_AS>
<tag>folderPath</tag>
<value>*</value>
<newValue>/Administrator/NEW-FOLDER-22</newValue>
</COPY_AS>
<IGNORE_PARENT>
<tag>filename</tag>
<path>content</path>
<value>EngineReq</value>
</IGNORE_PARENT>

</mappingRules>
</userSettings>
通用映射规则文件示例
以下示例显示通用映射规则文件的语法。在此类文件中,不存在 <mappingRules><debugProperties> 元素。文件中较前面的属性不是必要的,它们是 wt.properties 文件中属性的重复。如果通用映射文件中的规则和属性值与 wt.properties 文件中的条目发生冲突,以前者为准。但是,基于客户端的映射文件中的冲突值会使通用映射文件中的规则和属性值无效。
import.keepAllFilesInMemory=true
client.log.level=10
import.parser.validate=true
import.default.lifecycleInfo.lifecycleState=RELEASED
import.default.lifecycleInfo.lifecycleTemplateName=Released
Data
import.reposGuidPrefix=77746
logLevel=5
debug.enable=true
mappingRules.log.enable=false
mappingRules.debug.dir=C:\\TUNER_RESU
<COPY_AS>
<tag>number</tag>
<value>*</value>
<newValue>444-@@</newValue>
</COPY_AS>
<IGNORE_MASTER>
<path>content</path>
<tag>filename</tag>
<value>EngineReq</value>
</IGNORE_MASTER>
映射规则文件中的属性
前面的示例说明了如何将属性放到映射规则文件中。“Windchill 导出和导入”一节将介绍可以用来控制 Windchill 导入的属性。设置映射规则文件中属性的方法是编辑这些文件,不能将 xconfmanager 实用程序用于此目的。如果您未通过图形用户界面或在映射文件中设置属性,则使用 xconfmanager 实用程序添加或编辑属性。
有关详细信息,请参阅使用 xconfmanager 实用程序
不要映射 MCAD 文档的数字属性
Windchill 数据库中的 MCAD 文档的数字属性是与文档的 Creo Parametric 文件名相同的字符串。如果通过映射规则或通过更改本地磁盘上的对象更改 MCAD 文档的数字属性,则将生成与引用它的装配文件不兼容的数据。试图通过复原回原始信息来修复数字更改将不会成功,因为软件将把检入重新命名的对象的尝试视为试图复制现有对象。
关于映射规则
每个映射规则都是映射规则文件中的一个 XML 元素。每个映射规则元素 (指定复制的元素除外) 都至少有两个子元素:<tag><value>。这两个子元素决定该规则是否适用于导入或导出的 XML 文件中的任何给定元素。如果文件中的多个规则都可以应用于导入或导出的文件中的元素,则只适用第一个规则。
以下示例显示了规则的类型以及如何将它们应用于各种属性。要处理未在以下示例中出现的属性,您需要了解 XML 并读取要映射的 XML 文件。
COPY 元素
默认情况下,源 XML 文件中的所有元素都将被复制到生成的 XML 文件中,因此不必指定一个规则来规定复制时不进行更改。如果有任何规则指定的操作并非复制元素,则复制不会发生,且由该规则控制元素的结果。规则中指定复制的唯一元素是 COPY,它没有子元素。
COPY_AS 元素
使用 COPY_AS 元素的规则可从源 XML 文件更改元素,并将更改后的元素放到生成的 XML 文件中。除了 <tag><value> 子元素,还需要 <newValue> 子元素。以下示例显示了可能的语法:
将对象的视图 "Source_View" 映射到视图 "Local_View"
<COPY_AS>
<tag>view</tag>
<value>Source_View</value>
<newValue>Local_View</newValue>
</COPY_AS>
将任意对象的视图映射到视图 "LOCAL_VIEW"
<COPY_AS>
<tag>view</tag>
<value>*</value>
<newValue>Local_View</newValue>
</COPY_AS>
将对象的数字属性 "2222" 映射到数字 "LOCAL_2222"
<COPY_AS>
<tag>number</tag>
<value>2222</value>
<newValue>Local_2222</newValue>
</COPY_AS>
将任意对象的数字属性映射到用前缀 "From_Site_AAA_" 和相同数字构建的数字
本示例显示将 From_Site_AAA 附加到任意编号。例如,编号 2222 将映射到生成文件中的 From_Site_AAA_2222。
<COPY_AS>
<tag>number</tag>
<value>*</value>
<newValue>From_Site_AAA_*</newValue>
</COPY_AS>
将对象的版本 "A" 映射到版本 "B"
<COPY_AS>
<tag>versionInfo/versionId</tag>
<value>A</value>
<newValue>B</newValue>
</COPY_AS>
将任意对象的版本映射到版本 "A",并将任意小版本映射到小版本 "1"
<COPY_AS>
<tag>versionInfo/iterationId</tag>
<value>*</value>
<newValue>1</newValue>
</COPY_AS>
将以 "MyTeam" 开始的任何对象的团队映射到默认团队
<COPY_AS>
<tag>teamIdentity</tag>
<value>MyTeam*</value>
<newValue>System.Default</newValue>
</COPY_AS>
将任意对象的文件夹映射到 "Administrator/NewFolder"
<COPY_AS>
<tag>folderPath</tag>
<value>*</value>
<newValue>/Administrator/NewFolder</newValue>
</COPY_AS>
将 "Marketing" 文件夹的子文件夹中的对象映射到 "Publications" 文件夹下的相同子文件夹
<COPY_AS>
<tag>folderPath</tag>
<value>/Marketing/*</value>
<newValue>/Publications/*</newValue>
</COPY_AS>
文件夹映射规则中的新旧值字符串中出现的星号 (*) 将导致在星号的位置创建新文件夹。这些新文件夹会复制星号位置已存在的旧路径中的文件夹。以下是这些映射规则的最常见的语法:
<COPY_AS>
<tag>folderPath</tag>
<value>PrefixOld*SuffixOld</value>
<newValue>PrefixNew*SuffixNew</newValue>
</COPY_AS>
任何来自 PrefixOld、SuffixOld、PrefixNew 或 SuffixNew 的字符串都可能是空字符串。
IGNORE 元素
使用 IGNORE 元素的规则可以从生成的 XML 文件中排除源 XML 文件中的元素。<tag><value>子元素是必需的。以下是可能的语法:
从生成的 XML 文件中排除生命周期状态信息
<IGNORE>
<tag>lifecycleState</tag>
<value>*</value>
</IGNORE>
IGNORE_PARENT 元素
使用 IGNORE_PARENT 元素的规则将排除源 XML 文件中的父元素,以及生成的 XML 文件中该父元素的所有子元素。<tag><value>子元素是必需的。通常,<path> 元素是可选的。以下是可能的语法:
从可重用属性载体 (如 WTPart) 中排除可重用属性值指定的价格
<IGNORE_PARENT>
<tag>ibaPath</tag>
<path>WTPart</path>
<value>Price/iba</value>
</IGNORE_PARENT>
在前述示例中,如果删除下列行,将排除所有 XML 文件中的具有 <ibaPath>Price</ibaPath> 的所有父元素。
<path>WTPart</path>