BizTalk functoid获取最新日期?

时间:2016-02-22 21:01:54

标签: datetime biztalk biztalk-2013 biztalk-mapper

我有一个包含子元素cType,cDate的模式。 在地图中,我有一个循环functoid,可以显示cType =' registration'中的所有元素,这一切都正常。

我还想在同一张地图上添加一个functoid,在过滤掉'注册'类型,然后只映射具有最新日期的那个。

我看到有一个Max functoid,但我猜这不适合约会。

有人能指出我在正确的方向吗?

1 个答案:

答案 0 :(得分:0)

是Max和Cumulative Max functoid仅用于数值而不是日期。

您有两种选择。将其写为自定义XSLT,或根据How to get Min and max date in the map

使用如下所示的一堆functoid

enter image description here

  1. 日期 functoid
  2. 使用下面显示的代码的脚本 functoid,输入cDate和Date functoid
  3. 具有常数值注册等于 functoid并输入cType
  4. 输入Equal和脚本功能的值映射 functoid
  5. 输入值映射functoid的累积最大值 functoid
  6. Equal functoid输入累积最大值和脚本功能
  7. 一个 Functoid,输入两个相同的functoid。
  8. 脚本功能中的代码

    public int DateDiff(DateTime cDate, DateTime today)
    {
        return (cDate - today).Days;
    }
    

    基本上,如果cType =注册并且日期是最大注册日期,请将其映射到。

    输入

    <ns0:Registrations xmlns:ns0="http://Scratch.Registration">
      <Registration>
        <cType>registration</cType>
        <cDate>1999-05-31</cDate>
      </Registration>
      <Registration>
        <cType>registration</cType>
        <cDate>2016-05-31</cDate>
      </Registration>
      <Registration>
        <cType>not</cType>
        <cDate>2016-08-31</cDate>
      </Registration>
    </ns0:Registrations>
    

    输出

    <ns0:Registrations xmlns:ns0="http://Scratch.Registration">
        <Registration>
            <cType>registration</cType>
            <cDate>2016-05-31</cDate>
        </Registration>
    </ns0:Registrations>