学习英语
首页
联系
管理
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业务流程文件格式如下:
数据流图显示如下:
上图显示了消息的流程
建立消息:
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)编译,发布
posted on 2006-11-30 16:51
jhtchina
阅读(213)
评论(4)
编辑
收藏
所属分类:
Biztalk 2006+Work Flow+windows service
评论:
#1楼
2006-11-30 17:38 |
chnking
希望能看到更多的文章
回复
引用
查看
#2楼
2006-12-01 12:44 |
chnking
不过我觉得这个转换功能在mapping里应该可以做到
回复
引用
查看
#3楼
[
楼主
] 2006-12-01 12:57 |
jhtchina
这里的例子主要是dll的调用,当然用映射也可以实现这个功能
回复
引用
查看
#4楼
[
楼主
]
2008-04-21 13:41 |
jhtchina
变量是orche内部用的,消息是从orche进来的,或者要发送出orche的
回复
引用
查看
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
博客园首页
新闻频道
社区
小组
博问
网摘
闪存
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2006-12-01 16:22 编辑过
成果网帮您增加网站收入
相关文章:
biztalk 调用dll类库(参考SDK MethodCallSample)
无法定位程序输入点GetRawInputDeviceList于动态链接库user32.dll的处理
ASP.NET AJAX(开发代号Atlas)重要参考资源大收集
C# 动态调用DLL
windows动态链接库:类库,win32dll区别
Delphi调用C#类库
相关链接:
所属分类的其他文章:
开发环境中biztalk项目设置注意事项
biztalk中使用.net class类型的消息
biztalk 常用调试(学习chnking)笔记
用.NET创建Windows服务操作数据库
BizTalk 如何在流程里利用循环拆分消息(学习)
PipeLine 使用Xml Disassemble 完成信封操作
用C#创建Windows服务(Windows Services) <摘抄>
BizTalk中多个子记录映射解决办法
自定义组件代码调试业务流程
BizTalk 2004/2006 Interview questions that every developer must know...
最新IT新闻:
Google十年市值达1500亿美元 创造奇迹
GMail:回过头来支持IE6
Google十年大变样
谷歌十年创新路
十年回顾:Google的互联网经济
MSN:jhtchina@163.com E-mail:jhtchina@163.com
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(34)
给我留言
查看留言
随笔档案
(62)
2008年8月 (1)
2008年7月 (1)
2008年6月 (2)
2008年5月 (1)
2008年4月 (3)
2008年1月 (1)
2007年8月 (2)
2007年7月 (1)
2007年5月 (4)
2006年12月 (2)
2006年11月 (2)
2006年9月 (1)
2006年7月 (1)
2006年6月 (1)
2006年4月 (1)
2006年3月 (4)
2006年2月 (4)
2006年1月 (3)
2005年12月 (3)
2005年11月 (2)
2005年10月 (4)
2005年9月 (1)
2005年7月 (1)
2005年5月 (1)
2005年3月 (2)
2005年2月 (4)
2005年1月 (5)
2004年12月 (4)
文章分类
(173)
.Net 3.0
.Net Mobile(1)
Ajax(1)
Asp.Net(27)
Biztalk 2006+Work Flow+windows service(13)
C#(38)
C++(1)
DataBase学习(21)
Developer Express Inc.NET.v3 开发控件的学习(3)
Enterprise Library Study(1)
IBM.Rational(2)
JavaScript,Html,Css学习(14)
Microsoft .NET Pet Shop 4.0(4)
Oracle 学习(6)
VB.Net(4)
Vs.Net2005(2)
Web Service(1)
XML学习(10)
课程教案(4)
其他(2)
日本项目(1)
设计模式(4)
英语文章翻译(13)
文章档案
(175)
2008年8月 (3)
2008年7月 (9)
2008年6月 (1)
2008年5月 (1)
2008年4月 (3)
2008年3月 (2)
2008年1月 (1)
2007年11月 (2)
2007年10月 (4)
2007年9月 (5)
2007年8月 (3)
2007年7月 (5)
2007年6月 (7)
2007年5月 (13)
2007年3月 (6)
2007年2月 (4)
2007年1月 (3)
2006年12月 (8)
2006年11月 (11)
2006年10月 (1)
2006年9月 (3)
2006年8月 (1)
2006年6月 (1)
2006年5月 (1)
2006年4月 (6)
2006年3月 (9)
2006年2月 (5)
2006年1月 (7)
2005年12月 (8)
2005年11月 (14)
2005年10月 (7)
2005年9月 (1)
2005年8月 (2)
2005年7月 (2)
2005年6月 (3)
2005年3月 (4)
2005年1月 (4)
2004年12月 (5)
相册
儿子的照片
苏州大学
好友的博客
DuDu
LiTao's blogs
LiTao's blogs
xuzhong 的blogs
xuzhong 的blogs
范唯削
好朋友的blogs
姜振宇的网站
同学的站点
小马的天空
好友小马
微软开发中心
积分与排名
积分 - 84047
排名 - 463
最新评论
1. re: FpSpread 应用程序
好心的楼主,您能告诉我FpSpread那套控件在哪里下载的吗?
我现在急用
--WCF群组博客
2. re: PetShop整体架构
你人太好了 有时间可以加我QQ532956638 msn : ruonanxiao@hotmail.com
--老兄
评论排行榜
1. datagrid 删除记录时,删除提示。(8)
2. 项目打包以前需要删除的文件(2)
3. 一个母亲一生撒的8个谎言(2)
4. 页面传值的另一种办法(2)
5. .Net 题目(1)
6. sql server 查询区分大小写(1)
7. 计算机期刊投稿指南(1)
8. 创建一个强名称密钥文件+ 如何在 Visual C# .NET 中将程序集安装到全局程序集缓存中(1)
9. 做饭方法(1)
10. 关于控制IE页面大小和显示方式 (1)