“累计”Functoid
概述
累积 functoid 将一系列值减少到单个值,例如求和、串联字符串或平均值。
所有 累积 functoid 都接受两个输入参数:
要累积的值。 此值是所有 Cumulative functoid 的数值,但需要字符串值的 Cumulative Concatenate functoid 除外。 该值是一个链接,通常来自 Field Attribute、 Field Element 或 Record 节点 (,其 Mixed 属性设置为 True) 。
注意
如果架构树中的上级 Record 节点均未循环,则不需要使用 Cumulative functoid。
累计值的作用域。 该参数可选。 此参数表示要累计的指定值之间必须具有的紧密相关性。
下表显示了作用域参数的值及其作用:
作用域参数值 | 效果 |
---|---|
0(零) | 累计整个实例消息的值。 默认值。 |
1(一) | 累计具有同一父元素的元素或属性的值。 |
2 | 累计具有同一祖父元素的元素或属性的值。 |
3 或更大 | 累计按照前面的模式逐渐增大的作用域(曾祖父、高曾祖父等)的元素或属性的值。 |
示例
使用 累积 functoid 的示例可能是对采购订单的成本求和。 下面列出了一个示例采购订单的代码:
<ns0:PurchaseOrder xmlns:ns0="http://CumulativeFunctoid.PurchaseOrder">
<From>Kevin F. Browne</From>
<To>Northwind Traders</To>
<LineItems>
<Item>
<Product>Laptop Computer</Product>
<Description>Thin profile laptop</Description>
<Price>1999.95</Price>
<Quantity>1</Quantity>
</Item>
<Item>
<Product>Monitor Swipes</Product>
<Description>Disposable monitor swipes</Description>
<Price>3.95</Price>
<Quantity>10</Quantity>
</Item>
</LineItems>
</ns0:PurchaseOrder>
当然,Item 记录的 Max Occurs 属性将不受限制。 这表示项记录循环,BizTalk 映射器将此记录编译为循环。
下图显示了使用 乘法 函数和 累积总和 functoid 聚合传入采购订单中的项记录并在 “POTotal ”字段中输出结果的映射:
该映射将生成以下输出,其中包含前面的数据,以及默认的作用域参数值,即 0(零):
<ns0:SummedPO xmlns:ns0="http://CumulativeFunctoid.SummedPO">
<From>Kevin F. Browne</From>
<To>Northwind Traders</To>
<POTotal>2039.45</POTotal>
</ns0:SummedPO>
在此示例中,LineItems 记录下的所有项记录都参与累积 - 范围参数的默认值指示在整个邮件中累积值。 “ 价格” 和“ 数量” 字段将发送到 乘法 函数。 乘法函数的输出将成为累积总和 functoid 的输入。 累积总和 functoid 的输出是在输入采购订单中遍历项记录时累积的值。
注意
输入的累计聚合发生在输入链接所源自的父记录中。 即使 Cumulative functoid 从另一个 functoid 获取其输入,累积聚合也会在输入链接到 functoid 的父记录上发生,该链接充当 Cumulative functoid 的输入。
将作用域参数更改为 1(一)并略微修改输出架构后,生成的输出如下所示:
<ns0:SummedPO xmlns:ns0="http://CumulativeFunctoid.SummedPO">
<From>Kevin F. Browne</From>
<To>Northwind Traders</To>
<ItemTotal>1999.95</ItemTotal>
<ItemTotal>39.5</ItemTotal>
</ns0:SummedPO>
将作用域参数设置为 1(一)表示累计具有同一父级的元素或属性的值。 此处的 “价格 ”和“ 数量 ”字段将 “Item ”作为父项,以便 functoid 对每个单独 项的值进行求和。
如果作用域参数为 2,则该 functoid 将累计具有同一祖父级的元素或属性的值。 “价格”和“数量”字段的祖父母是 LineItems 记录。 由于实例消息中只有一条 LineItems 记录,因此结果与使用默认值相同:
<ns0:SummedPO xmlns:ns0="http://CumulativeFunctoid.SummedPO">
<From>Kevin F. Browne</From>
<To>Northwind Traders</To>
<POTotal>2039.45</POTotal>
</ns0:SummedPO>
注意
除累积 字符串 functoid 之外,累积 functoid () 忽略非数值输入。 例如,输入值“三”将被忽略。
Cumulative Average、Cumulative Minimum 和 Cumulative Maximum functoid 的行为与累积总和 functoid 类似。 累积字符串连接字符串,而不是聚合数值。
可用的 functoid
累积 functoid 为:
- 累计平均
- 累计连接
- 累计最大
- 累计最小
- 累计和
有关这些 functoid 的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考。
另请参阅
- 如何将基本 Functoid 添加到映射
- UI 指南中的累积 Functoid 参考和开发人员 API 命名空间参考