XML 构建器如何操作?
XML 构建器使用任一物理文件或内存中的可使用外部组件自动构建的 XML 数据;在这两种情况下,输入 XML 数据都基于 XMLBuilderDiagram XML 模式定义文件。对于基于 XML 构建器的逻辑示意图模板,与该逻辑示意图模板相关联的逻辑示意图要素类的名称必须与为 <FeatureClassName> 项所指定的值相匹配,这些项与输入 XML 数据中的每个 NodeFeature 类型、LinkFeature 类型和 SubLinkFeature 类型相关。
XML 构建器生成过程
如果基于 XML 构建器生成逻辑示意图,则构建器会填充逻辑示意图要素类 - 也就是说,构建器会按照以下方式创建逻辑示意图中所需的逻辑示意图要素:
- 对于输入 XML 数据中的每个 NodeFeature、LinkFeature、NodeOnLinkFeature 和 SubLinkFeature 项目,构建器会验证逻辑示意图模板中是否存在其名称与为此要素类的 <FeatureClassName> 标签所指定的值相匹配的逻辑示意图要素类。
如果逻辑示意图模板具有这样的逻辑示意图要素类,则构建器会创建与内存中的 XML 项相关联的逻辑示意图要素、将所有输入 XML 标签中的值导入到所需的逻辑示意图属性中以及初始化拓扑和几何。
- 如果为相关的逻辑示意图模板指定了逻辑示意图规则,则会对在内存中构建的所有逻辑示意图要素执行这些规则。
- 如果存在为逻辑示意图模板配置的默认逻辑示意图布局算法,则会执行此算法,并且会相应地更新内存中的所有逻辑示意图要素的几何。
- 生成过程启动之后,内存中的所有逻辑示意图要素都将保存在逻辑示意图数据集的逻辑示意图要素类中。
- 创建的所有逻辑示意图要素都从逻辑示意图要素类中进行查询,并会显示逻辑示意图。
在逻辑示意图的生存时间内(也就是在从逻辑示意图数据集中将其删除之前),可随时将这些要素
- 重新打开
- 编辑、布局和保存
- 根据输入 XML 数据的已更新版本进行更新以使所做更改能在逻辑示意图上显示
基于 XML 构建器的逻辑示意图模板还可以生成混合逻辑示意图,这些混合逻辑示意图包含来自 XML 数据的逻辑示意图要素,以及来自可在任何类型数据库中进行操作的自定义查询的逻辑示意图要素。在这种情况下,在生成过程中存在如下中间步骤:
- 具有被配置为在构建逻辑示意图时启动的自定义查询(也就是说,查询具有“生成/更新时进行查询”评估模式)的逻辑示意图要素类仅在执行规则之前进行处理。
- 具有被配置为在加载逻辑示意图时启动的自定义查询(也就是说,查询具有“开始编辑时进行查询”评估模式)的逻辑示意图要素类仅在执行规则之后进行处理。
- 如果对 XML 构建器的属性进行配置,则可以启用名为自动创建逻辑示意图要素类的特殊运行模式。当启用此模式时,XML 构建器能够处理在 XML 数据中发现的所有 NodeFeature、LinkFeature、NodeOnLinkFeature 和 SubLinkFeature 项目,即使在生成时期不存在其名称与在输入 XML 数据中为相关 <FeatureClassName> 项目所指定的值相匹配的逻辑示意图要素类。在此模式下运行时,构建器会在填充逻辑示意图模板的缺失逻辑示意图要素类之前自动创建这些要素类。
- 还可以配置在逻辑示意图要素类(此要素类与逻辑示意图模板相关联)的名称和那些在输入 XML 数据中的项目值之间的对应关系(当二者并不准确匹配时)。
相应的 XML 标签/逻辑示意图要素类字段
以下表格显示了在处理期间,输入 XML 数据中各个可能的标签所对应的逻辑示意图要素类的字段。以粗体形式显示的标签和字段名称是输入 XML 数据中的必选信息:
- 任意类型的 XFeature 的信息
任意 XFeature 类型的相应 XML 标签/逻辑示意图要素类字段输入 XML 数据中的标签
逻辑示意图要素类中受影响的字段
<ExternalUniqueID>
SCHEMATICTID
<DatasourceName>
DATASOURCEID
<UCID>
UCID
<UOID>
UOID
<USID>
USID
<RelatedContainerID>
RELATIONOBJECTID 和 RELATIONCLASSID
- NodeFeature 项目的特定信息
NodeFeature 类型的相应 XML 标签/逻辑示意图要素类字段输入 XML 数据中的标签
逻辑示意图要素类中受影响的字段
<InitialX>
INITIALX
<InitialY>
INITIALY
- LinkFeature 项目的特定信息
任意 LinkFeature 类型的相应 XML 标签/逻辑示意图要素类字段输入 XML 数据中的标签
逻辑示意图要素类中受影响的字段
<FromNode>
FROMTID
<ToNode>
TOTID
<Vertices>
SHAPE
- NodeOnLinkFeature 项目的特定信息
NodeOnLinkFeature 类型的相应 XML 标签/逻辑示意图要素类字段输入 XML 数据中的标签
逻辑示意图要素类中受影响的字段
<InitialPosition>
INITIALPOSITION
<ReferenceLink>
REFERENCELINK
- SubLinkFeature 项目的特定信息
任意 SubLinkFeature 类型的相应 XML 标签/逻辑示意图要素类字段输入 XML 数据中的标签
逻辑示意图要素类中受影响的字段
<FromNode>
FROMTID
<ToNode>
TOTID
<ReferenceLink>
REFERENCELINK
- <PropertySetProperty> 标签中的数据
对于 <PropertySetProperty> 标签中的数据,情况一:在逻辑示意图要素类中已经存在字段名称与输入 XML 数据中的 <Key> 值相匹配的字段,并且相关的 <Value> 被存储在该字段中;或者情况二:<Value> 被存储在 <Key> 属性集的属性中(此属性是在处理过程中在 PROPERTYSET 字段中创建的)。