记录未使用BizTalk映射逻辑OR运算符进行映射

时间:2013-09-09 10:18:42

标签: biztalk biztalk-2009 biztalk-mapper

我陷入了这个问题。

我有两个输入字段

1)外部注释

2)内部注释

我想将它们映射到目标节点“评论”

如果

外部笔记即将来临(做贴图)

内部笔记即将来临(做贴图)

两个filds即将来临(做映射)

没有字段即将来临(不要映射)

我执行了以下任务:

1)如果节点即将到来,检查逻辑是否存在。

2)使用Equal fuctoid确认该值是否为真。 Logical existance = true - >传递给OR运算符

3)对两个字段执行逻辑OR的逻辑OR。

4)值映射以设置值。

enter image description here

此逻辑适用于以下情况:

a)InternalNotes来(映射成功)

b)两个值(inter& exter)都来了(Mapped Successfully)

c)外部笔记来了(未映射)

我已经尝试了很多,但没有得到任何为什么没有映射这个外部值。

请帮帮我。

由于


以下应该是以下输入消息的输出:

输入1:

<InternalNotes>
<Value>Internal notes value</Value>
</InternalNotes>

输出1:

<Comments>
<Name>Comments</Name>
<Operation>Append</Operation>
<Value>Internal notes value</Value>
</Comments>

输入2:

<ExternalNotes>
<Value>External notes value</Value>
</ExternalNotes>

输出2:

<Comments>
<Name>Comments</Name>
<Operation>Append</Operation>
<Value>External notes value</Value>
</Comments>

输入3:

  <ExternalNotes>
    <Value>External notes value</Value>
    </ExternalNotes>
  <InternalNotes>
    <Value>Internal notes value</Value>
    </InternalNotes>

输出3:

 <Comments>
    <Name>Comments</Name>
    <Operation>Append</Operation>
    <Value>External notes value .
           Internal Notes value
    </Value>
   </Comments>

2 个答案:

答案 0 :(得分:0)

看起来您的地图有效,尝试删除Equality functoids,只需将Existance直接映射到LogicalOr。

P.S。如果我没有得到您的想法,请提供您的输入示例和预期输出。

答案 1 :(得分:0)

如果您使用xslt - look here将地图转换为xslt,则这是一个简单的映射。

例如:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

   <xsl:output method="xml" indent="yes"/>

   <xsl:template match="/xml">
      <xsl:if test="InternalNotes or ExternalNotes">
         <!-- . and newline delimiter if both elements present, else none -->
         <xsl:variable name="delimiter">
            <xsl:if test="InternalNotes and ExternalNotes">.&#10;</xsl:if>
         </xsl:variable>
         <Comments>
            <Name>Comments</Name>
            <Operation>Append</Operation>
            <Value>
               <xsl:value-of select="concat(InternalNotes/Value/text(), 
                    $delimiter, ExternalNotes/Value/text())"/>
            </Value>
         </Comments>
      </xsl:if>
   </xsl:template>
</xsl:stylesheet>

这将转换以下内容:

<xml>
   <ExternalNotes>
      <Value>External notes value</Value>
   </ExternalNotes>
   <InternalNotes>
      <Value>Internal notes value</Value>
   </InternalNotes>
</xml>

对此:

<?xml version="1.0" encoding="utf-8"?>
<Comments>
  <Name>Comments</Name>
  <Operation>Append</Operation>
  <Value>Internal notes value.
External notes value</Value>
</Comments>

你没有提到没有匹配的输出应该是什么,但你显然至少需要一个根元素。我确信更优雅的xslt解决方案是可能的,但你明白了这一点:)