“添加适配器元数据”向导中的架构类别
概述
注意
本主题仅适用于实现 IStaticAdapterConfig 接口的静态适配器。
适配器可以使用数千个架构中的任何一个来转换数据,然后再将其传递给BizTalk Server。 向某个 BizTalk 项目添加元数据时,使用“添加适配器元数据”向导可以从与适配器交互的所有架构的列表中选择所需架构。
在示例文件适配器中,CategorySchema.xml 文件是一个架构实例,它与适配器框架的 BiztalkAdapterFramework.xsd 文件一起用于填充服务架构的树视图组织。 BizTalkAdapterFramework.xsd 文件位于 \Program Files (x86) \Microsoft BizTalk Server <VERSION>Developer Tools 文件夹中。
应该创建此文件,以便按照对您的解决方案直观明了的方式来组织架构。 CategorySchema.xml 中的现有类别仅作为示例,向您演示您可以在自己的树中执行的操作。 这些类别与示例适配器所传递的数据没有任何特别的关联。 架构的组织方式对特定于应用程序的适配器尤为重要,适配器中可能包含成千上万的不同架构。 对于特定于传输的适配器,不必使用树视图组织。
下图显示了“添加适配器元数据向导 ”中的“选择要导入的服务 ”页。
“添加适配器元数据”向导中的架构类别树视图
示例 XML
下面的代码显示 CategorySchema.xml 文件:
<?xml version="1.0" encoding="utf-8" ?>
<CategoryTree>
<DisplayName>Services Organization</DisplayName>
<DisplayDescription>An organization of application services</DisplayDescription>
<CategoryTreeNode>
<DisplayName>Health Care</DisplayName>
<Description>Services under Health Care</Description>
<CategoryTreeNode>
<DisplayName>Administrative</DisplayName>
<Description>Administrative Health Care Services</Description>
<ServiceTreeNode>
<DisplayName>Eligibility</DisplayName>
<Description>Eligibility Verification Transactions</Description>
<WSDLReference>ANSI X 12 270</WSDLReference>
</ServiceTreeNode>
</CategoryTreeNode>
</CategoryTreeNode>
<CategoryTreeNode>
<DisplayName>Manufacturing</DisplayName>
<Description>Manufacturing Services</Description>
<CategoryTreeNode>
<DisplayName>Inventory</DisplayName>
<Description>Inventory Services</Description>
<ServiceTreeNode>
<DisplayName>Requisition</DisplayName>
<Description>Requisition</Description>
<WSDLReference>RequisitionService</WSDLReference>
</ServiceTreeNode>
</CategoryTreeNode>
</CategoryTreeNode>
</CategoryTree>
此架构实例中存在下列节点类型:
CategoryTree。 系统信息模型的顶级结构。 包含零个或多个 CategoryTreeNode、ExpandableCategoryTreeNode 和 ServiceTreeNode 节点。
CategoryTreeNode。 包含零个或多个 CategoryTreeNode 和 ServiceTreeNode 节点。 使用用户界面中显示为文件夹的 CategoryTreeNode (UI) 对一组相关服务进行分组。 通常,它包含要显示的服务的显示名称和说明。 如果子节点数较少,适配器可能会使用 CategoryTreeNode。
ExpandableCategoryTreeNode。 展开时动态填充的叶节点。 ExpandableCategoryTreeNode 用作占位符,并在 UI 中显示为文件夹。 这可用于延迟使用子元素填充类别节点,直到用户单击以展开该节点。 如果某个类别包含大量子节点,则适配器可能会使用 ExpandableCategoryTreeNode。
ServiceTreeNode。 ServiceTreeNode 在 UI 中显示为文档或叶节点,并表示 Web 服务描述语言 (WSDL) 文件。
当用户单击文件夹以展开节点时,适配器框架在适配器上调用 IStaticAdapterConfig.GetServiceOrganization 方法,并将节点的名称作为 NodeIdentifier 属性的值传递。 适配器应返回一个 CategoryTree,其中包含要在 ExpandableCategoryTreeNode 下添加的子节点。 适配器框架将 ExpandableCategoryTreeNode 替换为 CategoryTreeNode,并将返回的 CategoryTree 的子级添加到其中。
注意
在对 IStaticAdapterConfig.GetServiceOrganization 的初始调用中,适配器框架为节点标识符传递 null。 这会告知适配器返回根级 CategoryTree。
下面是从 BiztalkAdapterFramework.xsd 文件中提取的类别树架构。 添加适配器元数据向导将其用作主干树,用于填充 XML 文件中的特定应用程序依赖实体。 在我们的示例中,该文件是 CategorySchema.xml 文件。
<!-- Service Organization Tree schema used by Add Adapter Wizard -->
<xs:element name="CategoryTree" type="CategoryTree" />
<xs:complexType name="CategoryTree">
<xs:sequence>
<xs:element name="DisplayName" type="xs:string" />
<xs:element name="DisplayDescription" type="xs:string" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="ExpandableCategoryTreeNode" type="ExpandableCategoryTreeNode" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="CategoryTreeNode" type="CategoryTreeNode" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ServiceTreeNode" type="ServiceTreeNode" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ExpandableCategoryTreeNode">
<xs:sequence>
<xs:element name="DisplayName" type="xs:string" />
<xs:element name="Description" type="xs:string" />
</xs:sequence>
<xs:attribute name="NodeIdentifier" type="xs:string" use="required"></xs:attribute>
</xs:complexType>
<xs:complexType name="CategoryTreeNode">
<xs:sequence>
<xs:element name="DisplayName" type="xs:string" />
<xs:element name="Description" type="xs:string" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="ExpandableCategoryTreeNode" type="ExpandableCategoryTreeNode" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="CategoryTreeNode" type="CategoryTreeNode" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ServiceTreeNode" type="ServiceTreeNode" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceTreeNode">
<xs:sequence>
<xs:element name="DisplayName" type="xs:string" />
<xs:element name="Description" type="xs:string" />
<xs:element name="WSDLReference" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
修改 CategorySchema.xml 文件后,重新生成 AdapterManagement 项目,然后运行“添加适配器元数据向导”,以确保 CategorySchema.xml 中表示的树正确显示。
有关运行“添加适配器元数据向导”的信息,请参阅 UI 指南和开发人员 API 命名空间参考中的“添加适配器元数据向导”对话框。