Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
如何在映射(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!