记录计数functoid返回非展平目标消息的聚合计数

时间:2011-10-20 11:45:31

标签: biztalk biztalk-2009

我尝试使用记录计数 functoid将记录本身出现0的子记录的数量映射到无限制的消息,每条记录包含一个包含子数量的字段记录:

root+                           +root
    |                           |
    +foo+                   +foo+
        |                   |
        +bar+ -RecordCount- barcount
            |
            +xyz

但是,我当前的地图汇总了所有bar条记录的计数,并在每个foo\barcount中返回。

示例来源消息

<root>
    <foo>
        <Id>1</Id>
        <bar>
            <xyz />
        </bar>
        <bar>
            <xyz />
        </bar>
    </foo>
    <foo>
        <Id>2</Id>
        <bar>
            <xyz />
        </bar>
        <bar>
            <xyz />
        </bar>
    </foo>
</root>

...结果是

<root>
    <foo>
        <Id>1</Id>
        <barcount>4</barcount>
    </foo>
    <foo>
        <Id>2</Id>
        <barcount>4</barcount>
    </foo>
</root>

...而我预计

<root>
    <foo>
        <Id>1</Id>
        <barcount>2</barcount>
    </foo>
    <foo>
        <Id>2</Id>
        <barcount>2</barcount>
    </foo>
</root>

1 个答案:

答案 0 :(得分:0)

我通过使用调用XSLT模板脚本 functoid替换记录计数 functoid解决了这个问题。

XSLT模板如下所示:

<xsl:template name="CountMyBar">
    <xsl:param name="fooId" />
    <xsl:element name="barcount">
        <xsl:value-of select="count(//foo[Id=$fooId]/bar)" />
    </xsl:element>
</xsl:template>

脚本functoid的输入是来自Id的{​​{1}}字段。