biztalk 调用dll类库(参考SDK MethodCallSample)

在biztalk2006 进行设计的时候,经常需要调用.Net 生成的类库
本例实现如下功能:
输入xml:
< ns0:Root  xmlns:ns0 ="http://test112.InputSchema" >
  
< fld1 > 10 </ fld1 >
  
< fld2 > 10 </ fld2 >
  
< fld3 > Add </ fld3 >
</ ns0:Root >
输出xml:
<? xml version="1.0" encoding="utf-8" ?>
< Root  xmlns ="http://test112.OutputSchema" >
  
< Result  xmlns ="" > 20 </ Result >
</ Root >
当fld3="Add"的时候Result=fld1+fld2,当fld3="Sub" 的时候 Result=fld1-fld2
使用的类库定义如下:
using  System;
using  System.Xml; 


namespace  MathLibrary_test112
{
    
/// <summary>
    
/// Summary description for Class1.
    
/// </summary>
    
/// 

    [Serializable]
    
public class MathHelper
    
{
        
public MathHelper()
        
{
        }


        
public int Add(int a, int b)
        
{
            
return a + b;
        }


        
public int Subtract(int a, int b)
        
{
            
return a - b;
        }

    }


    
public class Helper
    
{
        
private Helper() { }
        
public static XmlDocument ConstructDoc(int iSum)
        
{
            XmlDocument doc 
= new System.Xml.XmlDocument();
            doc.LoadXml(
"<Root xmlns=\"http://test112.OutputSchema\"><Result xmlns=\"\">" + iSum.ToString() + "</Result></Root>");
            
//<ns0:Root xmlns:ns0="http://test112.OutputSchema">
            return doc;

        }

    }

}

其中有3个地方需要注意
(1) [Serializable] 这里是实例化MathHelper,便于biztalk 流程图变量对他的引用
(2)
doc.LoadXml( " <Root xmlns=\ " http: // test112.OutputSchema\"><Result xmlns=\"\">" + iSum.ToString() + "</Result></Root>");
注意输出的命名空间
(3)AssemblyInfo.cs文件中增加
[assembly: AssemblyKeyFile( @" F:\shhai project\biztalk\Orchestrations\MethodCall\MethodCallSample\MethodCall.snk " )]
对密钥的引用


下面这个例子就是对dll类库的调用事例
1 建立Test112 biztalk空项目
2 建立构架文件InputSchema.xsd和OutputSchema.xsd其中格式 如上面xml所示,其中InputSchema.fld1,InputSchema.fld2,InputSchema.fld3要升级为可分辨字段;
InputSchema.fld1,InputSchema.fld2是int类型,InputSchema.fld3 是string类型
OutputSchema.Result也要升级为可分辨字段,类型是int类型
3建立业务流程文件 MethodCallService.odx
4引用已经编译的dll文件 MathLibrary_test112.dll
5业务流程文件格式如下:
biztalk 调用dll类库(参考SDK MethodCallSample)_第1张图片

数据流图显示如下:
biztalk 调用dll类库(参考SDK MethodCallSample)_第2张图片
上图显示了消息的流程

建立消息:
mIncoming  消息类型test112.InputSchema
mOutgoing 消息类型test112.OutputSchema
建立变量:
iResult   类型int32 默认是0
iVar1     类型int32 默认是0
iVar2     类型int32 默认是0
iVar3     类型string 默认是"0"
mathVar 类型MathLibrary_test112.MathHelper(类库里面 [Serializable]的类)
各个结点(从上向下)定义如下:
(1)Receive_1接收形状:消息mIncoming
(2)Assign Variables表达式形状:
iVar1  = mIncoming.fld1;
iVar2 
= mIncoming.fld2; 
iVar3 
= mIncoming.fld3;
mathVar 
= new  MathLibrary_test112.MathHelper();
(3)Decide_1判定表达式的3个定义:
Check if the operation is Add判定1:iVar3 == "Add"
Check if the Operation is Subtract判定2:iVar3 == "Sub"
Else:没有代码
(4)Check if the operation is Add判定1里面Call Add Method表达式形状代码
iResult = mathVar.Add(iVar1,iVar2);
(5)Check if the Operation is Subtract判定2里面Call Subtract Method表达式代码
iResult = mathVar.Subtract(iVar1,iVar2);
(6)中止形状Terminate_1里面"ERROR";
(7)Expression_2表达式代码:System.Diagnostics.Debug.WriteLine(iResult);
(8)构造消息形状ConstructMessage_1消息mOutgoing用来构造输出的消息
(9)消息赋值形状MessageAssignment_1编写代码mOutgoing=MathLibrary_test112.Helper.ConstructDoc(iResult);
(10)发送形状Send_1 消息mOutgoing
(11)激活Receive_1形状

(12)然后参考:
http://www.cnblogs.com/jhtchina/archive/2006/11/03/549302.html
或者把dll文件拷贝到
D:\Microsoft BizTalk Server 2006\Developer Tools
或者修改配置文件BTSNTSvc.exe.config,把dll拷贝到指定的目录下面
(13)建立发送,接收端口
(14)编译,发布

你可能感兴趣的:(method)