艰难中前行
首页
联系
管理
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 @ 2006-11-30 16:51
jhtchina
阅读(264)
评论(4)
编辑
收藏
网摘
所属分类:
Biztalk 2006+Work Flow+windows service
发表评论
1163783
回复
引用
查看
#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的
刷新评论列表
刷新页面
返回页首
发表评论
昵称:
[登录]
[注册]
主页:
邮箱:
(仅博主可见)
验证码:
看不清,换一个
评论内容:
登录
注册
[使用Ctrl+Enter键快速提交评论]
0
577972
链接:
切换模板
导航:
网站首页
社区
新闻
博问
闪存
网摘
招聘
找找看
Google搜索
China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关文章:
最新IT新闻:
Twitter无处不在 魔兽世界Twitter发送器插件发布
Firefox 3.5匆忙推出漏洞多 Mozilla本月将更新
预测:Twitter最可能收购的十家公司
网易澄清:与暴雪合资公司仅提供技术支持
杰克逊悼念仪式或成史上最大规模Web活动
相关链接:
MSN:jhtchina@163.com E-mail:jhtchina@163.com
与我联系
发短消息
搜索
文章分类
(203)
.Net 3.0
.Net Mobile(1)
Ajax(1)
Asp.Net(28)
Biztalk 2006+Work Flow+windows service(16)
C#(41)
C++(1)
DataBase学习(22)
Developer Express Inc.NET.v3 开发控件的学习(3)
Enterprise Library Study(1)
IBM.Rational(2)
JavaScript,Html,Css学习(16)
Microsoft .NET Pet Shop 4.0(4)
Oracle 学习(24)
VB.Net(4)
Vs.Net2005(2)
Web Service(1)
XML学习(10)
课程教案(4)
其他(2)
日本项目(1)
设计模式(4)
网络工程(网络系统集成)(1)
英语文章翻译(14)
文章档案
(204)
2009年7月 (1)
2009年6月 (2)
2009年5月 (1)
2009年4月 (5)
2009年3月 (4)
2009年2月 (5)
2008年12月 (1)
2008年11月 (6)
2008年9月 (4)
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
陈洪岗
http://oceanchen.cnblogs.com/
范唯削
姜振宇的网站
同学的站点
索道教育
小马的天空
好友小马
宗瑞朋
微软开发中心
积分与排名
积分 - 111902
排名 - 494
最新评论
1. re: 截取网页生成图片
运行后是空白,什么都没有???? (请问请问)
2. re: sql server 与 Oracle Triggers 对照
这个密码太? (^&^roping)
3. re: 用javascript编写的日期时间输入验证脚本
时间2月份没有验证 (高厦)
4. re: Oracle 发送邮件
一直在找这个存储过程,但是我是个新手 这个发送邮件的过程太长了,如果你能写个简单点的供学习下,逐渐深入就很感谢了 大概实现的就是 标题 今天收入&钱。---from oracle sys... (博鸿)
5. re: oracle 触发器
先收下,支持 (博鸿)
评论排行榜
1. datagrid 删除记录时,删除提示。(8)
2. 一个母亲一生撒的8个谎言(4)
3. 计算机期刊投稿指南(3)
4. WinForm中Component Class、User Control及Custom Control的区别和使用(2)
5. 做饭方法(2)
6. 页面传值的另一种办法(2)
7. 项目打包以前需要删除的文件(2)
8. 关于控制IE页面大小和显示方式 (1)
9. 获得类似QQ的Ctrl+Enter按键操作(1)
10. 限制程序重复执行(1)