了解BizTalk Server 2004(九)
如何在映射(Map)中调用一个外部的程序集(Assembly)?
Assembly是一个 dll 文件,可能包含要在 BizTalk 应用程序中使用的资源,如业务流程、管道、架构、映射以及其他非特定于 BizTalk Server 的资源。在BizTalk的映射中,可以通过Scripting功能模块来调用一个外部的程序集。以下是一个标准的实现该功能的流程:
1,Schemas
在项目文件中,首先建立两个架构文件作为随后映射文件的源和目的,分别命名为OrderItems.xsd和Purchase.xsd,其具体架构如下:
OrderItems.xsd
Order
- OrderID
- Description
- Unit
- UnitID
- Description
- TotalUnits (xs:int)
- Price (xs:int)Purchase.xsd
Purchase
- OrderID
- Description
- Unit
- Description
- Units
- Price
- Total (xs:int)
2, Map
在项目中,建立一个映射文件,命名为OrderItemstoPurchasemap.btm,源文件为OrderItems.xsd, 目标文件为Purchase.xsd。建立以下映射关系:
Order.OrderID ---- Purchase.OrderID
Order.Description --- Purchase.Description
Order.Unit.TotalUnits --- Purchase.Unit.Units
Order.Unit.Price --- Purchase.Unit.Price
3. Scripting Functoid
在映射文件编辑中,从Advanced Functoids中选出Scripting模块,然后再源架构中选择Order.Unit.TotalUnits和Order.Unit.Price,分别拖至Scripting模块。
4. Class Library
在方案中建立一个名为TestClass.cs的Visual C#的项目文件,代码为下:
using System;
namespace BizTalkLink
{
public class TestClass
{
public TestClass()
{}
public int calculateTotal(int unit, int price)
{
int total;total=(unit * price);
return total;
}
}
}
5. Strong Name Key
现在我们需要为Class Library建立一个强名称密钥文件, 在Visual Studio .Net Tool中,使用以下命令生成一个名为Test.snk的密钥文件:
sn -k Test.snk
Build Solution -> 绑定以上密钥文件 -> 重新Build Solution
6. gacutil
全局程序集缓存 (global assembly cache, GAC)是BizTalk Server 上的组容器,用于存储部署到该组的配置数据库的相同程序集。
使用gacutil命令将上面的TestClass.dll放入GAC中,命令如下:
gacutil /if TestClass.dll
在BizTalk项目文件中添加一个该DLL的新的引用。
7. 在前面建立的映射文件中,选择Scripting Functoid的属性,在Script Type属性中,选择External Assembly, 选择前面建立的Class Library文件,选择对应的Script Class和Script method. 把目标架构中的Total字段与Scripting功能模块连线。
8. 完成以上步骤后,还需要验证外部程序集的版本号(Version number)和公钥符(Public key token):
-
- 右键点击OrderItemstoPurchasemap.btm, 选择Open with->HTML/XML Editor,然后选择打开;
- 如果你的文档没有正确格式化,你会看到XML格式,选择View->Toolbars->HTML Editor;
- 在HTML编辑器中移动鼠标,你会看到一个格式化文档的图标,点击该图标。
- 滚动到<ScripterCode>;
- 检查Version number 和Public Key Token(右边的区域);
- 在Windows Folder中打开Assembly Folder, 选择externalassembly的属性;
- Copy 并 Replace对应的BTM文件中的Version和Token
- 保存BTM文件并测试映射文件
It's finished!