在有的时候BizTalk的功能不足以实现某些逻辑处理或某些复杂的逻辑处理被放在了DLL中的时候,就需要BizTalk能够调用DLL,并使用其中的方法。
1.在流程中调用DLL,并在DLL中进行消息的处理:
新建解决方案:BizTalkUseDLL
右键盘BizTalkUseDLL添加新建工程:TestClassLibrary
右键盘BizTalkUseDLL添加新建工程:BizTalkTestDllProject
在TestClassLibrary的class1的代码如下:
在TestClassLibrary的属性里进行如下设置:
![]()
生成TestClassLibrary
在BizTalkTestDllProject对TestClassLibrary进行引用
进行biztalk部分编程:
在BizTalkTestDllProject添加消息:
![]()
<?xml version="1.0" encoding="utf-16" ?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://BizTalkTestDllProject.Schema1" targetNamespace="http://BizTalkTestDllProject.Schema1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="a" type="xs:string" />
<xs:element name="b" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
然后新建立一个流程:
1.为建立的流程创建两个消息,使用的消息类型都是"Schema1"即可:
1.接受一个消息 (Message1)
2.原样输出消息 (Message1)
3.调用DLL 将 Message1 作为参数传入 生成Message2 传出 (Message1 --〉 Message2)
代码:
Message_2 = TestClassLibrary.Class1.methodXML(Message_1);
4.输出转化完的消息 (Message2)
![]()
部署项目 , 配置测试端口 ,并将TestClassLibrary的DLL放到C:\WINDOWS\assembly 里
测试项目 :
1 输入:
<ns0:Root xmlns:ns0="http://BizTalkTestDllProject.Schema1">
<a>a_0</a>
<b>b_0</b>
</ns0:Root>
2 输出1:
<?xml version="1.0" encoding="utf-8"?><ns0:Root xmlns:ns0="http://BizTalkTestDllProject.Schema1">
<a>a_0</a>
<b>b_0</b>
</ns0:Root>
3 输出2:
<?xml version="1.0" encoding="utf-8"?><ns0:Root xmlns:ns0="http://BizTalkTestDllProject.Schema1">
<a>b_0</a>
<b>a_0</b>
</ns0:Root>
OK 全部搞定
1.在流程中调用DLL,并在DLL中进行消息的处理:
新建解决方案:BizTalkUseDLL
右键盘BizTalkUseDLL添加新建工程:TestClassLibrary
右键盘BizTalkUseDLL添加新建工程:BizTalkTestDllProject
在TestClassLibrary的class1的代码如下:
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4
using System.Xml;
5![]()
6
namespace TestClassLibrary
7
{
8
public class Class1
9
{
10
public static XmlDocument methodXML(XmlDocument xd)
11
{
12
XmlDocument xd1 = new XmlDocument();
13
xd1.InnerXml = xd.InnerXml;
14
string temp = xd1.ChildNodes[0].ChildNodes[0].InnerText;
15
xd1.ChildNodes[0].ChildNodes[0].InnerText = xd1.ChildNodes[0].ChildNodes[1].InnerText;
16
xd1.ChildNodes[0].ChildNodes[1].InnerText = temp;
17
return xd1;
18
}
19
}
20
}
21![]()
using System;2
using System.Collections.Generic;3
using System.Text;4
using System.Xml;5

6
namespace TestClassLibrary7
{8
public class Class19
{10
public static XmlDocument methodXML(XmlDocument xd)11
{12
XmlDocument xd1 = new XmlDocument();13
xd1.InnerXml = xd.InnerXml;14
string temp = xd1.ChildNodes[0].ChildNodes[0].InnerText;15
xd1.ChildNodes[0].ChildNodes[0].InnerText = xd1.ChildNodes[0].ChildNodes[1].InnerText;16
xd1.ChildNodes[0].ChildNodes[1].InnerText = temp;17
return xd1;18
}19
}20
}21

在TestClassLibrary的属性里进行如下设置:

生成TestClassLibrary
在BizTalkTestDllProject对TestClassLibrary进行引用
进行biztalk部分编程:
在BizTalkTestDllProject添加消息:

<?xml version="1.0" encoding="utf-16" ?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://BizTalkTestDllProject.Schema1" targetNamespace="http://BizTalkTestDllProject.Schema1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="a" type="xs:string" />
<xs:element name="b" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>然后新建立一个流程:
1.为建立的流程创建两个消息,使用的消息类型都是"Schema1"即可:
1.接受一个消息 (Message1)
2.原样输出消息 (Message1)
3.调用DLL 将 Message1 作为参数传入 生成Message2 传出 (Message1 --〉 Message2)
代码:
Message_2 = TestClassLibrary.Class1.methodXML(Message_1);
部署项目 , 配置测试端口 ,并将TestClassLibrary的DLL放到C:\WINDOWS\assembly 里
测试项目 :
1 输入:
<ns0:Root xmlns:ns0="http://BizTalkTestDllProject.Schema1">
<a>a_0</a>
<b>b_0</b>
</ns0:Root>2 输出1:
<?xml version="1.0" encoding="utf-8"?><ns0:Root xmlns:ns0="http://BizTalkTestDllProject.Schema1">
<a>a_0</a>
<b>b_0</b>
</ns0:Root>3 输出2:
<?xml version="1.0" encoding="utf-8"?><ns0:Root xmlns:ns0="http://BizTalkTestDllProject.Schema1">
<a>b_0</a>
<b>a_0</b>
</ns0:Root>OK 全部搞定


浙公网安备 33010602011771号