导出 (0) 打印
全部展开

列表映射操作 - 用法和示例

更新时间: 2013年11月

下表列出了 Microsoft Azure BizTalk 服务中提供的列表映射操作:

 

映射操作 说明 参数 输出

创建列表

创建并初始化列表。列表的用途如下:

  • 保留中间数据

  • 使用列表操作(例如 GroupBy)

  • 可用于复杂结构转换

  • 可以包含其他容器映射操作,包括 ForEach 循环和 MapEach 循环。

列表类似于表。一个列表包含一组成员(类似于表中的列)和一组(类似于表中的行)。列表可以分组。

成员名称:添加列表的成员。

成员类型:单击成员名称的类型:“字符串”、“数字”或“布尔值”。

使用“向列表添加项”映射操作可以向列表添加项。

每次在“创建列表”容器中执行映射操作都会促使执行“向列表添加项”。“创建列表”作用域容器中不允许用于创建目标树节点的映射操作(例如 MapEach 和条件性分配)。

向列表添加项

向列表中添加一个项。在“创建列表”映射操作的容器中使用。

最少可以包含 0 个输入参数:

 

输入

“创建列表”中的某个成员,或某个链接。

Condition

按条件向列表添加项的表达式。也可以是“逻辑表达式”映射操作中的链接。

导致将一个项添加到“向列表添加项”映射操作。

选择唯一组

从列表生成组。每个组由选定成员的唯一值标识。为每个组的唯一键选择的成员。

必须有且仅有一个输入参数:

 

输入

必需。“创建列表”映射操作的链接。

成员

必需。指定要包含在输出中的成员。如果指定一个成员,则该列表显示为每个唯一成员值对应一个组。如果指定多个成员,组列表将为“成员”值的每个唯一组合包含一个组。

一个列表,包含基于成员值的单个组或组列表。

选择值

选择列表中的第一个项。如果指定了条件,则选择列表中与该条件匹配的第一个项。

至少需要一个参数:

 

输入

必需。“创建列表”映射操作的链接。

选择列表成员:选择列表中要返回的成员。

可选。按条件从列表中选择项的表达式。

可选。按条件从列表中选择项的表达式。

访问选定列表成员的值并返回该值。

选择条目

筛选列表。

至少需要一个参数:

 

输入

必需。“创建列表”映射操作的链接。也可以添加常数或链接。

成员

可选。指定要包含在输出中的成员。如果未指定成员,将不按成员筛选输出。

Condition

可选。按条件从列表中筛选项的表达式。

返回筛选的输出。

获取项

在 ForEach 或 MapEach 循环中使用。获取当前迭代列表中的项。在循环访问从列表生成的唯一组时,将返回当前组的项。

无输入参数。

返回当前迭代。

排序依据

为列表中的项排序。关键说明:

  • 使用“排序依据”会创建新列表。这不会修改输入列表。仍可以在其他操作中使用输入列表;这些项的顺序不同于“排序依据”映射操作返回的列表中的顺序。

  • 可以指定多个成员。在此情况下,列表中的项将按第一个指定的成员排序。通过比较第二个成员或其后的成员来解析项之间的联系。

note备注
不支持降序。

必须有且仅有一个输入参数:

 

输入

一个链接

创建链接后,选择要排序的成员。

返回按指定的成员排序的列表。

在下面的示例中,All_Employees 列表包含四个成员:Emp_Id、Name、Designation 和 Age。All_Employees 列表包含六个项:

 

Emp_ID 名称 Designation Age

1

开发者

25

2

B

Tester

22

3

C

开发者

26

4

D

Program Manager

32

5

E

Tester

25

6

F

Manager

36

使用 Age 成员:

 

Parameter 输出列表

成员:Age

Group 1 (Age = 25)

 

Emp_ID 名称 Designation Age

1

开发者

25

5

E

Tester

25

Group 2 (Age = 22)

 

Emp_ID 名称 Designation Age

2

B

Tester

22

Group 3 (Age = 26)

 

Emp_ID 名称 Designation Age

3

C

开发者

26

Group 4 (Age = 32)

 

Emp_ID 名称 Designation Age

4

D

Program Manager

32

Group 5 (Age = 36)

 

Emp_ID 名称 Designation Age

6

F

Manager

36

使用 Name 成员并指定条件:

 

Parameter 输出列表

成员:名称

条件:item.Age>25

 

名称

C

使用 Designation 成员:

 

Parameter 输出列表

成员:Designation

 

开发者

使用 Emp_ID、Name 和 Age 成员并指定条件:

 

Parameter 输出列表

成员:Emp_ID

成员:名称

成员:Age

条件:item.Age>25

 

Emp_ID 名称 Age

3

C

26

4

D

32

6

F

36

请考虑以下场景。

你要将 All_Employees 列表连接到 MapEach 循环映射操作。这会导致迭代 MapEach 正文六次。若要访问 All_Employees 列表中的每个项,请使用“获取项”映射操作。在此情况下,“获取项”映射操作将返回包含单个项的列表。这个项是当前的迭代变量。然后,可以使用“选择值”映射操作(不带条件)来选择此项的特定成员。

使用 Age 成员:

 

Parameter 输出列表

成员:Age

 

Emp_ID 名称 Designation Age

2

E

Tester

22

1

开发者

25

5

B

Tester

25

3

C

开发者

26

4

D

Program Manager

32

6

F

Manager

36

使用 Designation 和 Age 成员:

 

Parameter 输出列表

成员:Designation

成员:Age

 

Emp_ID 名称 Designation Age

1

开发者

25

3

C

开发者

26

6

F

Manager

36

4

D

Program Manager

32

2

E

Tester

22

5

B

Tester

25

将“创建列表”添加到转换设计图面后,将创建一个作用域容器。添加到该容器的所有映射操作将在该循环容器的作用域中执行。

有关作用域容器中的操作的详细信息,请参阅在循环中使用作用域

BizTalk 服务可让你配置错误的处理方式,以及空节点或 null 节点的处理方式。可以配置以下列表映射操作的错误处理行为:

  • 向列表添加项

  • 选择值

  • 选择条目

步骤:

  1. 在 Visual Studio 中打开 BizTalk 服务项目BizTalk 服务项目项目。

  2. 双击某个转换 (.trfm) 以打开转换设计器。

  3. 在转换工具栏中,单击“设置”

“错误处理”选项卡

“错误处理”选项卡中,以下列表映射操作具有两个“行为”选项:

  • 向列表添加项

    • 使映射失败:将会中止整个转换。由于转换是在管道中执行的,因此,将在该管道中发生错误,然后将该错误发回到发送消息的客户端。

    • 不要将项添加到列表中:如果映射操作失败,则不将项添加到输出的列表中。

  • 选择值

    • 使映射失败:将会中止整个转换。由于转换是在管道中执行的,因此,将在该管道中发生错误,然后将该错误发送到发送消息的客户端。

    • 基于输出类型输出 Null/零/False:如果映射操作失败,则基于输出类型返回 Null/零/False 作为输出。

  • 选择条目

    • 使映射失败:将会中止整个转换。由于转换是在管道中执行的,因此,将在该管道中发生错误,然后将该错误发回到发送消息的客户端。

    • 输出空列表:如果映射操作失败,则返回空列表作为输出。

“Null/空数据处理”选项卡

“Null/空数据处理”选项卡中有三个选项:

  • 在累计操作中考虑空节点:默认情况下未选中此选项。未选中时,将不在迭代中包含空节点。选中时,将在迭代中包含所有节点,包括空节点。

    示例:某个文档包含 10 个 <record> 节点,其中三个 <record> 节点是空的。如果未选中“在迭代中考虑空节点”,映射操作将返回值 7。如果选中“在迭代中考虑空节点”,映射操作将返回值 10。

  • 在迭代中考虑空节点:默认情况下未选中此选项。未选中时,将不在迭代中包含空节点。选中时,将在迭代中包含所有节点,包括空节点。

    示例:某个文档包含 10 个 <record> 节点,其中三个 <record> 节点是空的。如果未选中“在迭代中考虑空节点”,映射操作将迭代非空节点七次。因此,将在目标中生成七个 <record> 节点。如果选中“在迭代中考虑空节点”,映射操作将迭代所有节点(包括空节点)10 次。因此,将在目标中生成 10 个 <record> 节点。

  • 目标节点生成:如果配置为考虑空节点,可以选择在输出中生成空节点,或者不在输出中生成空节点。具体而言:

    • 不生成空节点:默认选项。

    • 生成空节点

    示例:某个文档包含 10 个 <record> 节点,其中三个 <record> 节点是空的。如果未选中“在累计操作中考虑空节点”“在迭代中考虑空节点”,映射操作将迭代非空节点七次。因此,将在目标中生成七个 <record> 节点。如果选中“在迭代中考虑空节点”,映射操作将迭代所有节点(包括空节点)10 次。因此,将在目标中生成 10 个 <record> 节点。

如果在将输入分配到“向列表添加项”操作之后填充“创建列表”映射操作,“向列表添加项”映射操作将返回错误。例如:

  1. “创建列表”映射操作添加到设计图面。

  2. “创建列表”内部添加“向列表添加项”映射操作。

  3. 将输入链接添加到“向列表添加项”

  4. “创建列表”中添加成员值。

在此方案中,会将输入链接添加到“向列表添加项”。然后,将一个成员值添加到“创建列表”。当你执行此操作时,“向列表添加项”操作将显示错误:

“标签为 <名称> 的‘向列表添加项’操作应添加 1 个成员。”

若要解决此行为,请删除“向列表添加项”的输入链接,然后重新绘制链接。

另请参阅

显示:
© 2014 Microsoft