• BizTalk开发系列(四) 深入Map测试


    更多内容请查看:BizTalk动手实验系列目录

                          BizTalk 开发系列

          在BizTalk的开发过程中XML消息间的映射是一个很重要的内容。如果只是一般的从源节点的值复制到目标节点的话,BizTalk项目提供的MAP测试和验证就已经可以满足需求了。但是很多时候需要在映射的过程中进行复杂的处理。比如节点值的组合运算等。幸好Visual Studio提供了对XSLT的测试功能。在BizTalk的开发过程中可以借助此功能做到Map的"单步"调试。下面我们分别看一下Map的简单测试与高级测试。

    简单Mapping测试

    • 验证Map

          右击选择Validate可以在“输出”窗口,查看到关于Map的验证信息。

    • 测试Map

         右击Test map,Visual Studio会自动生成Map 的源消息,在输出窗口查看到关于Map的测试信息。

    image

             如果要用自定义的消息做测试实例的话。可以右击选择属性,在属性窗口的TestMap Input Instalce 和 TestMap Output Instance分别输入相应文件的路径。

    clip_image002

    高级Mapping测试

            在实际的开发过程中,经常需要对Map做一些自定义的开发。为此BizTalk 的Map编辑器提供了Script Functoid,支持C#.NET, JScript.NET, Visual Basic.NET, 可扩展样式表语言转换 (XSLT), XSLT 调用模板。如果使用“简单测试”的话,调试这些脚本就会很麻烦。因为有时我们需要知道输入参数和输出参数的值,脚本的执行情况等信息。以帮助我们改进脚本。

           如果您有做过验证Map的时候,您会发现在输出窗口会提示生成了相应的XSLT文件(注:XSLT是一种转换语言)。 Visual Stuido可以支持XLST的调试。我们就下面Sample,讲一下如何使用Map生成的XSLT文件去测试Map.(注意:对XSLT文件的修改不会应用到相应的Map文件中)

          如下图所示,我们在Map中使用自定义脚本:内联XSLT和C#。

    clip_image003

    内联XSLT的脚本代码

    <xsl:if test="MainRecord/SubRecord/@AttributeA = 'AttriA'">
    <FieldB>
    <xsl:value-of select="MainRecord/SubRecord/@AttributeA" />
    </FieldB>
    </xsl:>

    内联C#的脚本代码

    public string MyConcat(string param)
    {
    return param.Trim();
    }

    1.右击Map文件,点击“验证”

    2.在输出窗口中按住Ctrl, 点击后缀为 XSL的文件。

    3.在打开的文件上右击"查看源码"

    4.此时我们可以发现在XSL编辑器的左边可以设置断点,并且菜单上多了一个"XML"菜单。

    clip_image004

    5.在属性中设置好XSLT的输入和输出文件

    clip_image005

    6.点击"调试XSLT" 就可以单步调试XSLT,在右边的输出文件窗口还可以实时的看到轮换的效果。

    image

    7.在监视栏可以输出变量的信息,运行到Template的时候还可以直接输入Xpath查询语句验证输出。同时鼠标移到选取字段的时候还可以看到当前变量或语句的值。

    clip_image007

           XSLT中的脚本支持是微软对XSLT语言进行了扩展增加了<msxsl:script>元素,所有自定义脚本生成的时候都会在此节点,如下面的代码。

    <msxsl:script language="C#" implements-prefix="userCSharp"><![CDATA[
    public string MyConcat(string param1, string param2)
    {
    return param1+param2;
    }
    ]]></msxsl:script>

          有了以上的测试方法我们就可以很方便的找到Map中的Bug,但是对于外部程序集的测试的时候,只能通过"简单测试"的Test Map方法进行, 因为Map将对程序集、类和方法的引用放置在与生成的样式表相关联的扩展对象文件中,并在运行时才对其进行调用。因此您可以编写自定义内联Functoid以方便测试。当然开发就麻烦点。

  • 相关阅读:
    iOS 字体
    接口继承和实现继承的区别
    实验楼实验——LINUX基础入门
    试看看能不能发布
    mysql binlog恢复
    percona
    ssh2 php扩展
    sphinx
    ngios
    socketlog
  • 原文地址:https://www.cnblogs.com/cbcye/p/1292129.html
Copyright © 2020-2023  润新知