在biztalk2006 进行设计的时候,经常需要调用.Net 生成的类库
本例实现如下功能:
输入xml:
使用的类库定义如下:
(1) [Serializable] 这里是实例化MathHelper,便于biztalk 流程图变量对他的引用
(2)
(3)AssemblyInfo.cs文件中增加
下面这个例子就是对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业务流程文件格式如下:
数据流图显示如下:
上图显示了消息的流程
建立消息:
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表达式形状:
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)编译,发布
本例实现如下功能:
输入xml:
<ns0:Root xmlns:ns0="http://test112.InputSchema">
<fld1>10</fld1>
<fld2>10</fld2>
<fld3>Add</fld3>
</ns0:Root>
输出xml:<fld1>10</fld1>
<fld2>10</fld2>
<fld3>Add</fld3>
</ns0:Root>
<?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<Root xmlns="http://test112.OutputSchema">
<Result xmlns="">20</Result>
</Root>
使用的类库定义如下:
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个地方需要注意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;
}
}
}
(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业务流程文件格式如下:
数据流图显示如下:
上图显示了消息的流程
建立消息:
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个定义:iVar2 =mIncoming.fld2;
iVar3 =mIncoming.fld3;
mathVar =new MathLibrary_test112.MathHelper();
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)编译,发布