在有的时候BizTalk的功能不足以实现某些逻辑处理或某些复杂的逻辑处理被放在了DLL中的时候,就需要BizTalk能够调用DLL,并使用其中的方法。
1.在流程中调用DLL,并在DLL中进行消息的处理:
新建解决方案:BizTalkUseDLL
右键盘BizTalkUseDLL添加新建工程:TestClassLibrary
右键盘BizTalkUseDLL添加新建工程:BizTalkTestDllProject
在TestClassLibrary的class1的代码如下:
在TestClassLibrary的属性里进行如下设置:
生成TestClassLibrary
在BizTalkTestDllProject对TestClassLibrary进行引用
进行biztalk部分编程:
在BizTalkTestDllProject添加消息:
然后新建立一个流程:
1.为建立的流程创建两个消息,使用的消息类型都是"Schema1"即可:
1.接受一个消息 (Message1)
2.原样输出消息 (Message1)
3.调用DLL 将 Message1 作为参数传入 生成Message2 传出 (Message1 --〉 Message2)
代码:
部署项目 , 配置测试端口 ,并将TestClassLibrary的DLL放到C:\WINDOWS\assembly 里
测试项目 :
1 输入:
2 输出1:
3 输出2:
OK 全部搞定
1.在流程中调用DLL,并在DLL中进行消息的处理:
新建解决方案:BizTalkUseDLL
右键盘BizTalkUseDLL添加新建工程:TestClassLibrary
右键盘BizTalkUseDLL添加新建工程:BizTalkTestDllProject
在TestClassLibrary的class1的代码如下:
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.Xml;
5
6namespace 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
2using System.Collections.Generic;
3using System.Text;
4using System.Xml;
5
6namespace 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
在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>
<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>
<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>
<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>
<a>b_0</a>
<b>a_0</b>
</ns0:Root>
OK 全部搞定