65.9K
CodeProject 正在变化。 阅读更多。
Home

设计您的 Biztalk 2006 架构 -第一部分

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.82/5 (7投票s)

2007年4月5日

CPOL

4分钟阅读

viewsIcon

40446

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 中应为“文本”。

从数据库导入数据列表

  1. 从架构节点的“代码列表数据库”浏览按钮中选择您的 mdb 文件(Departments.mdb)。
  2. 在架构节点的“标准”属性中选择“XML”,并在“标准版本”属性中输入“Department”。BizTalk 通过连接“标准”属性中的值和“标准版本”属性的值来查询表。(请注意,上述 Microsoft Access 表名为“Xml_CCDepartments”,请将其重命名为“Xml_Department”)

  3. 选择左侧窗格中的“Department”元素,并从“派生自”属性中选择“Restriction”,您会看到“CodeList”属性将自动启用。
  4. 在“CodeList”属性中,输入“CostCenter”代码“CC001”,然后单击该属性的浏览按钮,将出现一个包含匹配值列表的新窗口,如下所示
  5. 在新窗口中勾选所有复选框以选择所有部门,然后选择“确定”。

  6. 所有选定的值都将导入您的架构,通过选择“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 属性。

© . All rights reserved.