在代码中使用biztalk类库建立Message和Part

原创 2007年09月28日 14:32:00

(2007-9-25日更新)

 

 

Biztalk消息是由一个消息上下文和零或多个部分组成,部分中又能且只能有一个部分别标识为正文部分。

本文介绍使用biztalk本身的类库如何通过代码建立消息和消息的部分。

一、  建立消息的接口

有两个接口用来建立和管理消息:

l         IBaseMessageFactory Interface

Namespace: Microsoft.BizTalk.Message.Interop

Assembly: Microsoft.BizTalk.Pipeline (in microsoft.biztalk.pipeline.dll)

l         IBTMessageAgentFactory Interface(继承自IBaseMessageFactory

Namespace: Microsoft.BizTalk.Agent.Interop

Assembly: Microsoft.Biztalk.Interop.Agent (in Microsoft.Biztalk.Interop.Agent.dll)

二、  建立消息过程

1、 新建消息

使用IbaseMessageFactoryIBTMessageAgentFactory)接口的CreateMessage方法新建一个消息:

Microsoft.BizTalk.Message.Interop.IBaseMessage IbaseMessageFactory. CreateMessage()

l         IbaseMessage Interface

Namespace: Microsoft.BizTalk.Message.Interop

Assembly: Microsoft.BizTalk.Pipeline (in microsoft.biztalk.pipeline.dll)

2、 升级属性、写入属性

消息建立后,可以给这个消息写入或者升级属性。

2.1.        写入属性

使用消息的Write方法写入Property fieldsDistinguished fields的属性,Property fields属性的名称空间在属性架构中定义,Distinguished fields的属性名称空间使用公共的名称空间:http://schemas.microsoft.com/BizTalk/2003/btsDistinguishedFields

IBaseMessage.Write(string strName, string strNameSpace, object obj)

strName -- 属性名

strNameSpace -- 属性名称空间

obj -- 属性值

2.2.        升级属性

使用消息的Promote方法升级Property fields属性需要升级的属性(Distinguished fields的属性不能Promote

IBaseMessage.Promote(string strName, string strNameSpace, object obj)

strName -- 属性名

strNameSpace -- 属性名称空间

obj -- 属性值

3、 给消息添加消息的部分

使用IbaseMessageFactoryIBTMessageAgentFactory)接口的CreateMessagePart方法新建一个消息部分:

Microsoft.BizTalk.Message.Interop.IbaseMessagePart IbaseMessageFactory. CreateMessagePart ()

l         IbaseMessagePart Interface

Namespace: Microsoft.BizTalk.Message.Interop

Assembly: Microsoft.BizTalk.Pipeline (in microsoft.biztalk.pipeline.dll)

 

建立了消息部分后需要把消息部分的数据加入到消息,消息部分的数据可以是xml格式的消息,可以是任意类型的对象。但是这些类型的数据都必须转换为Stream类型的数据加入到消息部分。消息部分的数据通过消息部分的Data属性赋给消息部分:

Stream Data { get; set; }

Data属性是Stream类型的,所以消息部分的数据不管是xml类型的,还是其他类型的对象都要序列化为一个流才能加入到消息部分。Dotnet框架提供了三种序列化的类:

BinaryFormatter

SoapFormatter

XmlSerializer

因为BinaryFormatterSoapFormatter类序列化的类必须是标识了[Serializable]属性的类,而XmlDocument类是没有[Serializable]属性标识的,所以一般在biztalk中使用XmlSerializer序列化xml类型的消息,用BinaryFormatter序列化其他类型的消息。

BinaryFormatter.Serialize(Stream serializationStream, object graph)

XmlSerializer. Serialize (Stream serializationStream, Object graph)

graph为需要序列化的对象

serializationStream为序列化后Stream保存的对象,一般为MemoryStream

 

同样可以使用序列化类的反序列化方法把序列化的Stream反序列化为原来的对象:

(原来的类型)BinaryFormatter.Deserialize(Stream serializationStream)

(XmlDocument)XmlSerializer. Deserialize(Stream serializationStream)

 

生成消息部分的Stream后,通过给消息部分的Data属性赋值加入到消息部分。

之后再通过消息的AddPart方法把完整的消息部分对象加入到消息对象中:

IbaseMessage.AddPart(string partName, IBaseMessagePart part, bool bBody);

partName为部分的名称

part为消息部分对象

bBody为表示这个部分是否是消息的正文部分

 

消息中可以使用AddPart方法增加多个消息部分,但是其中只能有一个为正文部分,也可以一个正文部分都没有。

 

基础类库:String类 Part1

java.lang.String

11. JAVA常用类库 Part 3 (Math类、Random类、NumberFormat类、BigInteger类和BigDecimal类) ----- 学习笔记

 11.6 Math类         Math类是数学操作类,提供了一些列的数学操作方法,包括求绝对值、三角函数等等,在Math类中提供的一切方法都是静态方法,所以直接由类名名称调用即可,下...

11. JAVA常用类库 Part 5 (正则表达式、定时调度、本章要点) ----- 学习笔记

 11.16 正则表达式           11.16.1 认识正则表达式           11.16.2 Pattern类和Matcher类           1...

11. JAVA常用类库 Part 4 (对象克隆技术clone、Arrays类、Comparable接口、比较器Comparator、观察者设计模式) ----- 学习笔记

 11.11 对象克隆技术 clone 11.12 Arrays类 11.13 Comparable接口           11.13.1 比较器的基本应用  ...

编写更少量的代码:使用apache commons工具类库

编写更少量的代码:使用apache commons工具类库  Commons-configuration    Commons-FileUpload   Commons ...

编写更少量的代码:使用apache commons工具类库

编写更少量的代码:使用apache commons工具类库  Commons-configuration    Commons-FileUpload   Common...

iOS代码技巧之ASIHttpRequest类库的使用及Json解析(以解析中国天气网天气预报为例)

摘要 第三方类库ASIhttpRequest的使用,用于iOS的网络请求,与JsonKit一起使用,可以很方便的进行网络数据请求与解析。 为了说明方法的使用,这里以解析天气预报为例 iOS天气预...

BizTalk Server 2010 - 使用 WCF Service [ 上篇 ]

概述 第二篇我们稍微提升一点难度,介绍一下BizTalk当中的WCF(Windows Communication Foundation)适配器,该适配器共分为两种:接收适配器和发送适配器。使用WC...

asp使用CDO.Message发送邮件详细代码集合

 发送文本Email: 1 2 Set myMail=CreateObject("CDO.Message") ...
  • kirawoo
  • kirawoo
  • 2017年07月06日 14:25
  • 388
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在代码中使用biztalk类库建立Message和Part
举报原因:
原因补充:

(最多只允许输入30个字)