可以使用全局节点创建可重用的数据类型——结构的组成部分——可以在整个架构中任何适合该结构的地方使用。 只能使用作为 Schema 节点直接子级的节点来创建全局类型。
还可以使用不是 架构 节点直接后代的节点的数据类型创建循环引用。 这对于表示架构中的递归结构非常有用。
本主题提供各种类型的全局节点的分步说明,以及如何引用它们来使用这些节点。
创建全局声明
可以使用记录、字段或属性创建全局类型。 从记录创建的全局类型只能用于记录,从字段创建的类型只能用于字段,属性类型只能用于属性。 以下过程介绍如何定义和使用全局声明。
从节点创建全局声明
- 选择要全局可用的记录、字段属性或字段元素节点。 
- 在 “属性” 窗口中,在“ 数据结构类型” 列表中键入一个名称,该名称将用作复杂类型的全局名称,然后按 Enter。 
创建全局定义的序列组节点、选择组节点或“所有组”节点
- 选择要在其中插入全局定义的群组节点的记录节点。 
- 在 BizTalk 菜单上,指向 “插入架构节点”,然后根据需要单击“ 序列组”、“ 选择组”或“ 所有组”。 
- 在新插入的组中创建结构。 例如,插入 Record 或 Field Element 节点以表示组节点中的数据结构。 - 注释 - 序列组、 选择组和 所有组 节点只能包含对应于 XML 元素的节点,因此不能包含 字段属性 节点。 
- 选择在步骤 2 中插入的组节点。 
- 在“属性”窗口中,单击“ 组引用”,在值字段中键入名称,然后按 Enter。 - 通过在 组引用 属性中提供名称,你有全局定义的组节点,之后可以将其他组节点与此全局定义的类型(结构)相关联。 
创建全局定义的属性组节点
- 选择要在其中插入全局定义的属性组节点的记录节点。 
- 在 BizTalk 菜单上,指向 “插入架构节点”,然后单击“ 属性组”。 - 这会将 属性组 节点添加到所选 记录 节点中的子节点的末尾。 
- 将相应的 字段属性 或 属性组 节点添加到 属性组。 
- (可选)如果要重命名 属性组 节点,请选择 “属性组 ”节点,并将其 “组引用 ”属性更改为所选的新名称。 - 属性组始终是全局的,并从其使用点进行引用。 
使用已全局定义的类型或组
- 选择要为其使用全局定义类型的节点。 
- 在“属性”窗口中,从 数据类型类型 属性(记录 节点)、 数据类型 属性(字段元素 和 字段属性 节点)的下拉列表中选择全局定义的类型,或 组引用 (序列组、 选择组、 所有组和 属性组 节点)。 有关这些属性的更多详细信息,请参阅 UI 指南和开发人员 API 命名空间参考。 - 注释 - 对全局定义的类型或组的后续更改可以在显示全局定义类型或组的任何架构位置进行。 这些更改将在所有相关位置生效,您在任意单个位置进行这些更改时即可应用。 - 创建全局声明后,无法在单个步骤中删除它。 但是,可以使用“ 清理全局数据类型 ”对话框在保存架构时使用以下过程将其删除。 
删除全局声明
- 删除使用此全局类型或组的所有节点,或指定要在所有这些节点中使用的其他类型或组,或者指定一些组合。 有关删除节点的分步说明,请参阅 “删除节点”。 
- 保存规范后,将显示“ 清理全局数据类型 ”对话框。 选择要从规范中完全删除的全局声明,然后单击“ 确定”。 - 注释 - 每次保存具有未使用的数据类型的架构时,都会显示“ 清理全局数据类型 ”对话框。 如果未显示此对话框,则所有数据类型都用于架构中的某个位置,或者自打开架构以来尚未修改架构(在后一种情况下,它可能仍包含以前保留的未使用的数据类型)。 
创建对另一个节点的循环引用
可以创建对节点的循环引用来表示递归架构元素。 为此,你可以通过创建一个由封闭记录定义类型的节点来实现。 例如,假设一个实例消息包装在任意数量的信封中,其结构相同。 使用循环引用,可以创建定义此类实例消息的架构。
创建循环引用
- 选择要为其创建递归引用的 记录 节点。 这是表示递归结构顶部的节点。 
- 在“属性”窗口中,验证 数据结构类型 是否具有值。 - 验证 记录 节点是否具有与其关联的命名类型是必要的,因为当某个类型包含自身时会定义递归结构。 类型只能通过嵌套使用命名全局类型来包含自身。 
- 选择子 记录 节点或插入子 记录 节点。 
- 对于子 记录 节点,在“属性”窗口中的 “数据结构类型” 列表中,选择步骤 2 中标识的数据结构。 
重要
- 重复节点的 Min Occurs 属性必须设置为零(0)。 将其设置为一个 (1) 会导致无限循环。 
- 如果导入包含递归元素的架构,BizTalk 编辑器不会自动检查以确保递归元素有效。