Biztalk映射器表循环逻辑映射

粉扑TMD

我有一个循环节点NationalityDet,该节点拥有多个当前的先前国籍或公民身份(CurrentNatCit),我需要确保当前国籍地图的所有“国家/地区”值都转到该国籍节点,并且“当前公民身份”已映射到“公民身份”节点,所有以前的国籍/公民身份均映射到OtherNationality / OtherCitizenship(仅允许将一条记录作为节点的一项记录)。有任何想法吗?

来源样本

<NationalityDet>
   <NatCit>
      <Type>NATIONALITY/CITIZENSHIP</Type>
      <Status>CURRENT/FORMER</Status>
      <Country>UK</Country>
   </NatCit>
   <OtherNatCit>
      <Type>NATIONALITY/CITIZENSHIP</Type>
      <Status>CURRENT/FORMER</Status>
      <Country>UK</Country>
   </OtherNatCit>
</NationalityDet>

目的地样本

<Person>
   <Person1>
      <Nationality>NATIONALITY/CURRENT</Nationality>
      <Nationality>NATIONALITY/CURRENT</Nationality>
      <Nationality>NATIONALITY/CURRENT</Nationality>
      <Citizenship>CITIZENSHIP/CURRENT</Citizenship>
      <Citizenship>CITIZENSHIP/CURRENT</Citizenship>
      <Citizenship>CITIZENSHIP/CURRENT</Citizenship>
      <OtherNationality>
         <Nationality>NATIONALITY/FORMER</Nationality>
         <Nationality>NATIONALITY/FORMER</Nationality>
         <Nationality>NATIONALITY/FORMER</Nationality>
      </OtherNationality>
      <OtherCitizenship>CITIZENSHIP/FORMER</OtherCitizenship>
   </Person1>
</Person>

目前已经使用了您提到的循环函子和一些等于和&的数字来进行此映射。我被困在计算来自两个不同父节点的TYPE = CITIZENSHIP和STATUS = FORMER的OtherCitizenship的节点。有什么想法吗?

迪格格拉夫

从您的问题和示例中还不清楚您要映射到什么位置。

但是您可能需要的模式如下。添加一个循环的functoid,它既可以到达单例节点又可以到达重复节点。添加一个迭代函子,该函子的等价函子和大于函子的函数都具有第二个固定值1,并分别映射到单例和重复节点。将源字段映射到两个字段。

在此处输入图片说明

问题更改后更新。

因此,假设您具有以下XML

<NationalityDet>
    <NatCit>
        <Type>NATIONALITY</Type>
        <Status>CURRENT</Status>
        <Country>UK</Country>
    </NatCit>
    <NatCit>
        <Type>CITIZENSHIP</Type>
        <Status>CURRENT</Status>
        <Country>Netherlands</Country>
    </NatCit>
    <NatCit>
        <Type>NATIONALITY</Type>
        <Status>FORMER</Status>
        <Country>Brazil</Country>
    </NatCit>   
    <NatCit>
        <Type>CITIZENSHIP</Type>
        <Status>FORMER</Status>
        <Country>USA</Country>
    </NatCit>      
    <OtherNatCit>
        <Type>NATIONALITY</Type>
        <Status>CURRENT</Status>
        <Country>Australia</Country>
    </OtherNatCit>
    <OtherNatCit>
        <Type>CITIZENSHIP</Type>
        <Status>CURRENT</Status>
        <Country>New Zealand</Country>
    </OtherNatCit>
    <OtherNatCit>
        <Type>NATIONALITY</Type>
        <Status>FORMER</Status>
        <Country>Argentina</Country>
    </OtherNatCit>
    <OtherNatCit>
        <Type>CITIZENSHIP</Type>
        <Status>FORMER</Status>
        <Country>Germany</Country>
    </OtherNatCit>
</NationalityDet>

然后您的地图将如下所示。

然后您的地图将如下所示

I will explain the highlighted shapes, the rest follow the same pattern. From top to bottom, left to right.

  1. An looping functoid linked to both NatCit and OtherNatCit and linked to Nationality.
  2. An equal functoid linked to NatCit\Type and value NATIONALITY
  3. An equal functoid linked to NatCit\Status and value CURRENT
  4. An equal functoid linked to OtherNatCit\Type and value NATIONALITY
  5. An equal functoid linked to OtherNatCit\Status and value CURRENT
  6. An AND functoid lined to the two equal functoids of NatCit
  7. An AND functoid lined to the two equal functoids of OtherNatCit
  8. A Value mapping functoid linked to the AND from NatCit and NatCit\Country going to Person1\Nationality.
  9. A Value mapping functoid linked to the AND from OtherNatCit and OtherNatCit\Country going to Person1\Citizenship.

然后,我复制了第一组,并将NATIONALITY更改为CITIZENSHIP,并链接到相同的输入字段,但是将值映射的输出放置为Citizenship。

然后,我复制了第一组并将CURRENT更改为FORMER并链接到相同的输入字段,但是将值映射的输出放置到OtherNationality \ Nationality。

然后,我复制了第二组(具有CITIZENSHIP)并将CURRENT更改为FORMER并链接到相同的输入字段,但是将值映射的输出放置到OtherCitenship。

以下是输出。

<Person>
    <Person1>
        <Nationality>UK</Nationality>
        <Nationality>Australia</Nationality>
        <Citizenship>Netherlands</Citizenship>
        <Citizenship>New Zealand</Citizenship>
        <OtherNationality>
            <Nationality>Brazil</Nationality>
            <Nationality>Argentina</Nationality>
        </OtherNationality>
        <OtherCitizenship>USA</OtherCitizenship>
        <OtherCitizenship>Germany</OtherCitizenship>
    </Person1>
</Person>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章