设计您的 Biztalk 2006 架构 -第一部分
Biztalk 架构设计的入门指南
引言
创建架构就是定义数据结构,类似于在数据库中创建表。架构设计对于集成项目起着至关重要的作用。在本系列文章中,我计划通过在 BizTalk 2006 中提供更多示例和图片来逐步讲解 XML 架构设计。
基本示例
为了给您一个更常见的场景,我将以下所示的 XML 作为基本示例。从这里,我们将探索每个示例中的变化。
<ns0:Employees xmlns:ns0="http://CyclicSubs.XmlSchemaEmployee">
<Employee ID="ID_0">
<Name>Name_0</Name>
<Age>Age_0</Age>
<Department>Finance</Department>
</Employee>
</ns0:Employees>
上述示例是公司员工的记录,包含 ID、姓名、年龄和部门。
合格的 XML
要从架构生成合格的 XML 实例,需要更改架构和字段级别的某些属性。
架构级别合格属性
您的系统接收或目标系统期望所有属性都标有命名空间的 XML 消息,请按如下所示设计您的架构。
选择左侧窗格上的“架构”节点,并将“属性表单默认值”属性标记为“合格”(默认情况下为“不合格”),您的架构实例输出将如下所示
XML 输出
<ns0:Employees xmlns:ns0="http://CyclicSubs.XmlSchemaEmployee">
<Employee ns0:ID="ID_0">
<Name>Name_0</Name>
<Age>Age_0</Age>
<Department>Finance</Department>
</Employee>
</ns0:Employees>
**注意**:整个架构属性字段将附加“ns0”命名空间(标记为粗体),在我们的示例中,“ID”是整个架构中唯一的属性。
架构级别合格记录/元素
您的系统接收或目标系统期望所有元素都标有命名空间的 XML 消息,请按如下所示设计您的架构。
选择左侧窗格上的“架构”节点,并将“元素表单默认值”属性标记为“合格”(默认情况下为“不合格”),将“属性表单默认值”属性重置回“默认”,您的架构实例输出将如下所示
XML 输出
<ns0:Employees xmlns:ns0="http://CyclicSubs.XmlSchemaEmployee">
<ns0:Employee ID="ID_0">
<ns0:Name>Name_0</ns0:Name>
<ns0:Age>Age_0</ns0:Age>
<ns0:Department>Finance</ns0:Department>
</ns0:Employee>
</ns0:Employees>
**注意**:整个架构元素字段将附加“ns0”命名空间(标记为粗体),在我们的示例中,Name、Age 和 Employee 是整个架构中的字段元素。记录“Employee”是如何附加 ns0 的?在 BizTalk 术语中,“Employee”是记录,但 W3C 标准将其视为**复杂元素**。
单个合格属性/元素
我们能否只将特定元素/属性设置为合格?是的,这是可能的。在左侧窗格中选择特定的元素/属性,并将“表单”属性标记为“合格”。
**注意**:在上面的示例中,“Employee”记录下的“Name”元素被标记为“合格”。
XML 输出
<ns0:Employees xmlns:ns0="http://CyclicSubs.XmlSchemaEmployee">
<Employee ID="ID_0">
<ns0:Name>Name_0</ns0:Name>
<Age>Age_0</Age>
</Employee>
</ns0:Employees>
属性/元素的默认值和固定值
默认值
假设您收到来自人力资源部门的员工消息,其中包含 Department 元素,该元素可以为空。但在 BizTalk 中,您可能希望将这些员工处理为“未知部门”。这可以通过将“Department”元素的**默认值**属性设置为“UnknownDepartment”来轻松完成。
XML 输出
<ns0:Employees xmlns:ns0="http://CyclicSubs.XmlSchemaEmployee">
<Employee ID="ID_0">
<Name>Name_0</Name>
<Age>Age_0</Age>
<Department>UnknownDepartment</Department>
</Employee>
</ns0:Employees>
固定值
以上述场景为例,这里您只处理 IT 部门员工的消息,因此无论您收到的 Department 值为“财务”还是“服务台”,您的场景都必须将其处理为“IT 部门”。这可以通过将 Department 元素的“固定”值设置为“IT Department”来完成。
XML 输出
<ns0:Employees xmlns:ns0="http://CyclicSubs.XmlSchemaEmployee">
<Employee ID="ID_0">
<Name>Name_0</Name>
<Age>Age_0</Age>
<Department>IT Department</Department>
</Employee>
</ns0:Employees>
空元素的动态值分配可以使用 Functoid 在映射中完成。
文档类型属性
文档类型属性用于 EDI 等适配器,通常在 XML 或平面文件架构中不考虑。BRE 使用文档类型属性来识别完全限定名称。
文档版本
这可用于存储您的架构版本号。
代码列表数据库
您正在为处理成本中心“CC001”下所有部门的员工报销开发一个架构;您需要限制所有不属于“CC001”的其他部门。假设 CC001 大约有 100 个部门,您可以手动在 Department 元素的枚举集合中输入所有部门名称。
否则,您可以从 Microsoft Access 表中导入部门集合,如下所示。
列名应为 Code、Value 和 Desc,所有列的数据类型在 Microsoft Access 中应为“文本”。
从数据库导入数据列表
- 从架构节点的“代码列表数据库”浏览按钮中选择您的 mdb 文件(Departments.mdb)。
- 在架构节点的“标准”属性中选择“XML”,并在“标准版本”属性中输入“Department”。BizTalk 通过连接“标准”属性中的值和“标准版本”属性的值来查询表。(请注意,上述 Microsoft Access 表名为“Xml_CCDepartments”,请将其重命名为“Xml_Department”)
- 选择左侧窗格中的“Department”元素,并从“派生自”属性中选择“Restriction”,您会看到“CodeList”属性将自动启用。
- 在“CodeList”属性中,输入“CostCenter”代码“CC001”,然后单击该属性的浏览按钮,将出现一个包含匹配值列表的新窗口,如下所示
- 在新窗口中勾选所有复选框以选择所有部门,然后选择“确定”。
- 所有选定的值都将导入您的架构,通过选择“Department”字段的“Enumeration”属性来确保所有内容都已导入。
这是显示枚举中部门名称的示例实例。
XML 输出
<ns0:Employees xmlns:ns0="http://CyclicSubs.XmlSchemaEmployee">
<Employee ID="ID_0">
<Name>Name_0</Name>
<Age>Age_0</Age>
<Department>Finance</Department>
</Employee>
</ns0:Employees>
历史
这是架构设计系列的第一篇文章。让我们在下一篇文章中查看 Group Max、Min occurrence 属性。