了解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!