Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Biztalk映射程序表循环逻辑映射_Biztalk_Biztalk2006r2_Biztalk Mapper - Fatal编程技术网

Biztalk映射程序表循环逻辑映射

Biztalk映射程序表循环逻辑映射,biztalk,biztalk2006r2,biztalk-mapper,Biztalk,Biztalk2006r2,Biztalk Mapper,我有一个循环节点NationaryDet,它持有多个当前前国籍或公民身份(CurrentNatCit)。我需要确保当前国籍映射的所有国家/地区值都映射到国籍节点,当前公民身份映射到公民身份节点,所有以前的国籍/公民身份都映射到其他国籍/其他公民身份(公民身份只允许一条记录,它是节点)。有什么想法吗 源样本 国籍/公民身份 现任/前任 英国 国籍/公民身份 现任/前任 英国 目的地样品 国籍/现任 国籍/现任 国籍/现任 公民身份/当前 公民身份/当前 公民身份/当前 国籍/前任 国籍/前任

我有一个循环节点NationaryDet,它持有多个当前前国籍或公民身份(CurrentNatCit)。我需要确保当前国籍映射的所有国家/地区值都映射到国籍节点,当前公民身份映射到公民身份节点,所有以前的国籍/公民身份都映射到其他国籍/其他公民身份(公民身份只允许一条记录,它是节点)。有什么想法吗

源样本

国籍/公民身份
现任/前任
英国
国籍/公民身份
现任/前任
英国
目的地样品

国籍/现任
国籍/现任
国籍/现任
公民身份/当前
公民身份/当前
公民身份/当前
国籍/前任
国籍/前任
国籍/前任
国籍/前

目前,我们已经使用了前面提到的循环functoid u和大量的equals和&’来允许这种映射。对于TYPE=citizensity和STATUS=FORMER的两个不同父节点的节点,我一直在计算。有什么想法吗?

从你的问题和样本中,你不清楚你到底想要什么

但您可能需要的模式如下。添加同时指向单例节点和重复节点的循环functoid。添加一个迭代functoid,该functoid指向第二个固定值为1的“等于”functoid和“大于”functoid,并分别映射到单例节点和重复节点。将源字段映射到这两个字段

问题更改后更新。

假设您有以下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>

国籍
现在的
英国
公民身份
现在的
荷兰
国籍
前者的
巴西
公民身份
前者的
美国
国籍
现在的
澳大利亚
公民身份
现在的
新西兰
国籍
前者的
阿根廷
公民身份
前者的
德国
然后你的地图会像这样

我将解释突出显示的形状,其余的遵循相同的模式。从上到下,从左到右

  • 链接到NatCit和其他NatCit并链接到国籍的循环functoid
  • 链接到NatCit\Type和value的相等functoid
  • 链接到NatCit\Status和value CURRENT的相等functoid
  • 链接到OtherNatCit\Type和value的相等functoid
  • 链接到OtherNatCit\Status和value CURRENT的相等functoid
  • 与NatCit的两个相等functoid对齐的AND functoid
  • 与OtherNatCit的两个相等functoid对齐的AND functoid
  • 一个值映射functoid链接到和,从NatCit和NatCit\Country到Person1\national
  • 一个值映射functoid链接到和从OtherNatCit和OtherNatCit\国家/地区转到Person1\公民身份
  • 然后,我复制了第一组,将国籍更改为公民身份,并链接到相同的输入字段,但将值映射的输出放入公民身份

    然后,我复制了第一个组,并将当前组更改为前者,并链接到相同的输入字段,但将值映射的输出放置到OtherNational\National

    然后,我复制了第二个组(具有公民身份),并将当前组更改为前者,并链接到相同的输入字段,但将值映射的输出放到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>
    
    
    英国
    澳大利亚
    荷兰
    新西兰
    巴西
    阿根廷
    美国
    德国
    
    @Dijkgraff感谢您的回复,并为问题的澄清表示歉意。我的问题是,源类型可以是国籍或公民身份,所以如果第一个条目是公民身份(1),第二个条目是国籍,这将打破地图?谢谢@Dijkgraff,有一些更新迫使我改变,所以现在我回来了。更新了线程,希望看看是否可以跨不同的父节点实现您的解决方案(迭代)。我已更新了答案,以反映您更改的问题。这一个不使用迭代。@Dijkgraff这正是我的样子,虽然在2006年你不能有好的选择等等。。。lol和我将重复的源节点链接到同一个循环functoid,而不是重复的源节点,这有区别吗?我遇到的一个突出问题是,最后一个节点OtherCitizensity必须只包含一个结果,这被证明是困难的,因为循环functoid似乎导致了这方面的问题,并且仅为Citizenship类型实现计数和限制。是的,如果链接到同一个循环functoid,则会有差异。这基本上意味着它将在一个循环中迭代它们,并且在映射值之前必须满足所有逻辑条件。由于不同的目标字段具有不同的条件,因此每个目标字段都需要一个循环functoid。您的输入数据结构没有强制执行OtherCitizensity只是一次出现,因此尝试让映射强制执行这一点是不可能的。
    <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>
    
    <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>