Biztalk映射程序表循环逻辑映射
我有一个循环节点NationaryDet,它持有多个当前前国籍或公民身份(CurrentNatCit)。我需要确保当前国籍映射的所有国家/地区值都映射到国籍节点,当前公民身份映射到公民身份节点,所有以前的国籍/公民身份都映射到其他国籍/其他公民身份(公民身份只允许一条记录,它是节点)。有什么想法吗 源样本Biztalk映射程序表循环逻辑映射,biztalk,biztalk2006r2,biztalk-mapper,Biztalk,Biztalk2006r2,Biztalk Mapper,我有一个循环节点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>
国籍
现在的
英国
公民身份
现在的
荷兰
国籍
前者的
巴西
公民身份
前者的
美国
国籍
现在的
澳大利亚
公民身份
现在的
新西兰
国籍
前者的
阿根廷
公民身份
前者的
德国
然后你的地图会像这样
我将解释突出显示的形状,其余的遵循相同的模式。从上到下,从左到右
<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>