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

简单Mapping测试

  • 验证Map

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

  • 测试Map

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

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

高级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#。

内联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"菜单。

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

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

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

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以方便测试。当然开发就麻烦点。

BizTalk开发系列(四) 深入Map测试的更多相关文章

  1. BizTalk 开发系列(四十一) BizTalk 2010 BAM 安装手记

    使用64位系统可以支持更大的内存,现在服务器基本上都使用64位系统.微软从Windows Server 2008 R2开始服务器版的操作系统也只支持64位了,不过对于像BizTalk这种“繁杂的东西” ...

  2. BizTalk 开发系列(四十二) 为BizTalk应用程序打包不同的环境Binding

    我们在使用微软或者其他公司提供的BizTalk应用程序MSI包的时候经常会有一个目标环境的选择选项.该选项可以在不同的环境下使用不同的绑定(BizTalk应用程序配置)感觉很高级. 其实这个非常的简单 ...

  3. BizTalk 开发系列(四十) BizTalk WCF-SQL Adapter读取SQL Service Broker消息

    SQL Service Broker 是在SQL Server 2005中新增的功能.Service Broker 为 SQL Server 提供队列和可靠的消息传递,可以可用来建立以异步消息为基础的 ...

  4. BizTalk开发系列(二十二) 开发自定义Map Functoid

    尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作,但仍可能会遇到需要其他方法的情况.<BizTalk开发系列 Map扩展开发>介绍了通过使用自定义 XSL ...

  5. BizTalk开发系列(三十三)BizTalk之Excel终极解决方案

    Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapte ...

  6. BizTalk开发系列(二十八) MSMQ 适配器

    MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间 中的任一 ...

  7. BizTalk开发系列(十八) 使用信封拆分数据库消息

    之前写了一篇的<BizTalk开发系列(十七) 信封架构(Envelop)> 是关于信封架构及其拆装原理的,都是理论性的内容.信封在BizTalk开发过程中最常用的应该是在读取SQL Se ...

  8. S5PV210开发系列四_uCGUI的移植

    S5PV210开发系列四 uCGUI的移植 象棋小子          1048272975 GUI(图形用户界面)极大地方便了非专业用户的使用,用户无需记忆大量的命令,取而代之的是能够通过窗体.菜单 ...

  9. 转:arcgis api for js入门开发系列四地图查询

    原文地址:arcgis api for js入门开发系列四地图查询 arcgis for js的地图查询方式,一般来说,总共有三种查询方式:FindTask.IdentifyTask.QueryTas ...

随机推荐

  1. Python与Hack之window下运行带参数的Python脚本,实现一个简单的端口扫描器

    1.前提是:windows已经配置好Python的环境变量: 2.进入cmd命令行模式: **输入python命令,检测是否环境配置好:显示这样说明配置环境变量没问题 **用cd命令进入Python脚 ...

  2. 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量

    Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...

  3. javascript document.compatMode属性

    文档模式在开发中貌似很少用到,最常见的是就是在获取页面宽高的时候,比如文档宽高,可见区域宽高等. IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在Stand ...

  4. HDU4511 小明系列故事——女友的考验(AC自动机 + DP)

    题目大概说有平面有n个点,从1点出发走到n点,每一步只能走到序号比当前更大的点且走的序列不能包含给定的m个序列中的任何一个,问1走到n的最短路. 用m个序列建个AC自动机,后缀包含整个序列的结点标记一 ...

  5. ASP.NET MVC5 + EF6 入门教程 (5) Model和Entity Framework

    一.创建Model MVC中的Model是用来给View提供显示数据的对象. 这里我们首先创建一个Model对象. 在解决方案资源管理器中右键点击Models文件夹,选择添加->类.添加一个名为 ...

  6. WPF ComboBox Binding

    public ConnectionViewModel { private readonly CollectionView _phonebookEntries; private string _phon ...

  7. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 H. Hashing

    H. Hashing time limit per test 1 second memory limit per test 512 megabytes input standard input out ...

  8. hdu 1312 Red and Black

    Problem Description There is a rectangular room, covered with square tiles. Each tile is colored eit ...

  9. BZOJ4515: [Sdoi2016]游戏

    Description Alice 和 Bob 在玩一个游戏. 游戏在一棵有 n 个点的树上进行.最初,每个点上都只有一个数字,那个数字是 123456789123456789. 有时,Alice 会 ...

  10. BZOJ1565: [NOI2009]植物大战僵尸

    Description Input Output 仅包含一个整数,表示可以获得的最大能源收入.注意,你也可以选择不进行任何攻击,这样能源收入为0. Sample Input 3 2 10 0 20 0 ...