“累计”Functoid

概述

累积 functoid 将一系列值减少到单个值,例如求和、串联字符串或平均值。

所有 累积 functoid 都接受两个输入参数:

  1. 要累积的值。 此值是所有 Cumulative functoid 的数值,但需要字符串值的 Cumulative Concatenate functoid 除外。 该值是一个链接,通常来自 Field AttributeField ElementRecord 节点 (,其 Mixed 属性设置为 True) 。

    注意

    如果架构树中的上级 Record 节点均未循环,则不需要使用 Cumulative functoid。

  2. 累计值的作用域。 该参数可选。 此参数表示要累计的指定值之间必须具有的紧密相关性。

    下表显示了作用域参数的值及其作用:

作用域参数值 效果
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 ”字段中输出结果的映射:

显示累积和 functoid 使用情况的地图。

该映射将生成以下输出,其中包含前面的数据,以及默认的作用域参数值,即 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 AverageCumulative MinimumCumulative Maximum functoid 的行为与累积总和 functoid 类似。 累积字符串连接字符串,而不是聚合数值。

可用的 functoid

累积 functoid 为:

  • 累计平均
  • 累计连接
  • 累计最大
  • 累计最小
  • 累计和

有关这些 functoid 的详细信息,请参阅 UI 指南和开发人员 API 命名空间参考

另请参阅