BizTalk开发系列(七) Hello World2

     之前根据BizTalk的订阅原理,使用BizTalk管理控制台创建了第一个应用程序 Hello World。但是由于控制台的开发功能有限,绝大多数的BizTalk程序都是在集成开发环境Visual Studio下进行的。下面我们在Visual Studio下创建Hello World2程序。其功能是将源消息的两个字段组成第三个字段并保存到目标消息。[效果图如下]

       image
  

  此程序主要是为要熟悉BizTalk相关的开发组件包括:Schema, Mapping , Pipeline, Orchestration的开发。Receive/Send Port的配置等。以下是开发的一些步骤:

  1.创建应用程序

    打开Visual Stuido,依次点击 文件->新建->项目. 在程序名称和路径中填上相应的名称和路径。点击确定创建应用程序

image

  2.创建架构(Schema)

    右击BizTalk项目,依次点击 添加->新建项. 在弹出的对话框中的左侧导航栏中选择Schema文件,在右侧的模板中选择Schema.在名称中选择输入Schema的名称。

   image

 

 

        在打开的Schema编辑器中右击Root.依次点击 Insert Schema Node->Child Field Element.

       image

  依次创建两个子元素,并命名为:para1和para2(元素默认为字符串值)。Schema命名空间按默认值。

  image

 

  按以上方法创建目标Schema.文件名为:TargetSchema.架构视图如下:

     image

2. 创建映射(Map)

   右击BizTalk项目,依次点击 添加->新建项. 在弹出的对话框中的左侧导航栏中选择Map 文件,在右侧的模板中选择Map.在名称中选择输入Map的名称。

image

 

       在打开的编辑器的左侧窗口中点击 Open Source Schema 在打开的对话框中选择BTSHelloWorld2.SourceSchema.在右侧窗口点击Open Destination Schema. 在打开的对话框中选择BTSHelloWorld2.TargetSchema.

image

       打开源与目标架构之后,依下图连接源与目标节点。目标架构的string节点是由para1和para2连接而。在map编辑的工具窗口选择String Concatenate Functoid.

image

3.创建业务流程(Orchestration)

 

   3.1  如前所述。右击BizTalk项目,依次点击 添加->新建项. 在弹出的对话框中的左侧导航栏中选择Orchestration 文件,在右侧的模板中选择Orchestration.在名称中选择输入Orchestration的名称。

   3.2 创建消息。打开Orchestration文件,在Orchestration View窗口中新建两个消息分别为:SourchMsg和TrgetMsg。其类型分别为:BTSHelloWorld2.SourceShema和BTSHelloWorld2.TargetSchema。如果当前编辑环境中没有Orchestration View可以在View->Other Windows->Orchestration View中打开视图

   image

    3.3 创建和配置业务流程

 如图中所示为已经配置完成的流程图形状,实现此流程需要做以下几步。image

  • 从工具栏中选择Receive , Transform , Send 三个形状以图中所示位置排列好。
  • 在Receive形状的属性窗口的消息属性中选择刚才创建的SourceMsg。双击Transform在弹出的窗口中选择已存在映射并  在下拉框中选择BTSHelloWorld.StringMap.在SourceDestination中分别选择SourceMsgTargetMsg。在Send 形状的属性窗口的消息属性中选择刚才创建的TargetMsg
  • 在Receive形状的属性窗口的Active属性选择True.表示活动端口以激活业务流程实例
  • 创建接收端口:从工具栏中选择Port形状,拖放到左侧Port Surface中.在端口配置向导中按照提示分别输入:端口名称端口类型,“从此端口接收消息”“稍后配置”。
  • 创建发送端口:从工具栏中选择Port形状,拖放到右侧Port Surface中.在端口配置向导中按照提示分别输入:端口名称端口类型,“从此端口发送消息”“稍后配置”。

image 

4 创建接收的发送管道(Pipeline)

  4.1 接收管道(Receive Pipeline)

      如前所述。右击BizTalk项目,依次点击 添加->新建项. 在弹出的对话框中的左侧导航栏中选择Pipeline文件,在右侧的模板中选择Receive Pipeline.在名称中选择输入Pipeline的名称。

  打开Receive Pipeline 从工具箱中选择XML disassembler组件,拖放到Disassemble阶段。

      image

    4.2 发送管道(Send Pipeline)

 发送管道的创建方法和接收管道类似,只是在选择模板时选择发送管道。在Pipeline编辑器中选择 XML Assemble组件拖放到Assemble阶段。如下图所示:

image

5. 部署BizTalk项目

    至此BizTalk的项目开发到这里就基本上完成了。可以生成项目文件看有没有错误信息。接下来需要将BizTalk项目部署到BizTalk 主机中。由于BizTalk的程序集需要安装到GAC(全局应用程序缓存)中。所以需要给程序集添加签名。方法是在Visual studio 的命名窗口中输入如下命令:

sn -k e:\projects\btshelloworld2\btshelloworld2.snk

image

  创建应用程序签名之后。在BizTalk应用程序的属性页的Assembly Key File里引用签名。

image

在配置属性的Build窗口里填上应用程序的名称,并验证服务器是否为本机。从别的机器上拷贝的程序需要注意这一点。

image

 养成良好的习惯,配置解决方案的配置将程序的部署选择上。这对于较大的BizTalk开发有帮助。通过解决方案部署Visual Studio会判断程序之间的关系先后部署。

 

 

image

 配置完之后右击解决方案。选择部署解决方案即可。

6. 配置和启动应用程序。

 应用程序部署完之后,就可以在BizTalk管理控制台上看到相应的程序。右击该程序,选择配置。在配置应用程序页中分别为程序配置主机接收端口发送端口

image 

 6.1 创建接收端口

  由于接收端口稍微复杂一点。所以我们以创建接收端口为例。发送端口可参照接收端口的做法创建。首先在应用程序配置页的接收物理端口的下拉框中选择新建接收端口。在弹出的对话框中输入接收端口名称。在左边的导航栏中选择接收位置。在接收位置对话框中输入名称。接收管道选择自定义的接收管道名称(发送端口则选择自定义发送管道名称)类型选择FILE. 点击Config。在弹出的FILE传输对话框中输入接收位置

 image

  配置向导会显示相应完成的部分。都配置好之后,点击确定即可。

 image

 6.2 启动应用程序

  右击应用程序点击启动。在弹出的对话框中再次点击启动。

7. 测试程序

 BizTalk程序部署完成了。那下一步就是需要测试程序。测试程序需要源数据,这个源数据不需要我们手动创建。我们可以借助Schema编辑器的生成实例功能生成源数据。右击SourceSchema.选择Generate Instance

 image

  在Visual Studio的输出窗口中可以查看到生成文件的地址,打开文件并更改相应的内容。(如果想指定输出文件的路径。可以右击SourceSchema选择属性在对话框中的输出文件里填上文件的路径即可。)

<ns0:Root xmlns:ns0="http://BTSHelloWorld2.SourceSchema">
<para1>Hello </para1>
<para2> World!</para2>
</ns0:Root>

 在配置的输出位置我们可以看到相应的输出文件。

image

 

8.总结

 至此我们完成了整个程序的开发。此Sample涵盖了Schema, Map, Pipeline, Orchestration的开发。BizTalk应用程序的部署及配置等。希望以此都够让你对BizTalk的开发有个大概的了解。

posted on 2008-09-24 01:44 Gary Zhang 阅读(1756) 评论(22) 编辑 收藏

评论

#1楼  回复 引用   

测试的时候发现文件从In里消失,就再没从Out出来过。
后来设置了一下SendPort里的filter就可以了。
2009-03-06 13:12 | abinchen

#2楼  回复 引用   

为什么我出来的xml跟放进去的一模一样?我完全按这个步骤做的,检查了好几遍,没有哪里漏掉没做啊。
2009-03-06 14:35 | abinchen

#3楼  回复 引用   

原来是两个管道漏设了。。。
2009-03-06 14:59 | abinchen

#4楼  回复 引用 查看   

--引用--------------------------------------------------
abinchen: 测试的时候发现文件从In里消失,就再没从Out出来过。
后来设置了一下SendPort里的filter就可以了。
--------------------------------------------------------

指定了receive pipeline就不需要再设置filter,否则BTS会把源报文复制到目标地
2009-05-06 16:10 | Mohammed      

#5楼  回复 引用 查看   

在biztalk server 中配置send port 时总时提示“can't store transport type data for send port to config store. Access denied.”, 不知道是哪一步出了问题。在Visual Studio中编译和部署时有一些warning,如下
Warning 1 The dependency 'Microsoft.BizTalk.CachingService' could not be found.
Warning 2 The dependency 'Microsoft.BizTalk.DBAccessor' could not be found.
Warning 3 The dependency 'Microsoft.BizTalk.Tracing' could not be found.
Warning 4 The dependency 'Microsoft.BizTalk.Component.Utilities' could not be found.
Warning 5 The dependency 'Microsoft.BizTalk.Bam.EventObservation' could not be found.
Warning 6 The dependency 'Microsoft.BizTalk.Streaming' could not be found.
Warning 7 The dependency 'Microsoft.BizTalk.XPathReader' could not be found.
Warning 8 Double-click here to show/hide compiler links. C:\songmei\project\hello world2\hello world2\StringMap.btm
deploy时会出现如下warning:
Warning 9 Schema "hello_world2.TargetSchema, hello world2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8061a5bec6df1da7" and a previously deployed schema "" have the same target namespace "http://hello_world2.TargetSchema". Target namespaces should be unique.

Warning 10 Schema "hello_world2.SourceSchema, hello world2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8061a5bec6df1da7" and a previously deployed schema "" have the same target namespace "http://hello_world2.SourceSchema". Target namespaces should be unique.

Warning 11 Schema "hello_world2.TargetSchema, hello world2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8061a5bec6df1da7" and a previously deployed schema "" have the same target namespace "http://hello_world2.TargetSchema". Target namespaces should be unique.

Warning 12 Schema "hello_world2.SourceSchema, hello world2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8061a5bec6df1da7" and a previously deployed schema "" have the same target namespace "http://hello_world2.SourceSchema". Target namespaces should be unique.

Warning 13 If any of the assemblies were previously loaded by a Host Instance, it may be necessary to restart the Host Instance for changes to take effect.
本人刚刚开始学习biztalk,请大家多多指教。谢谢!
2009-09-18 09:50 | ivy_song      

#6楼[楼主]  回复 引用 查看   

@ivy_song
你的当前帐记可能不是BizTalk相关运行组的成员,请使用BizTalk运行帐户登录系统并做配置。
另外你程序的schema所使用的命名空间#根节点的唯一标识已经使用了。需要更换Schema命名空间
2009-09-18 10:12 | Gary Zhang      

#7楼  回复 引用 查看   

我测试HelloWorld2程序。项目生成时报错如下:

请帮忙解决!

谢谢!
2009-12-09 11:59 | shao      

#8楼  回复 引用 查看   

找到原因了!

映射文件引用错了!
2009-12-09 15:30 | shao      

#9楼  回复 引用 查看   

Hi 前辈,
这个实验我做好了,有一些小的总结,也不知道想的是不是正确。
Orchestration 与 Send Port的注意点:
我们写了一个Orchestration,它的第一个Receive 的Active必须设置为True,其实这就相当与启动一个Orchestration,当Orchestration执行到Send的时候有两个注意点:
1. Send Port自身会根据Filter的条件到BizTalk Server中订阅数据,订阅到了之后它会输出到指定位置。
2. 对于Orchestration而言,当process执行到Send 的地方,Orchestration根本就不会去用Filter的条件到BizTalk Server中去订阅数据,从某个意义上说
Send 起作用的只是 -> pipeline -> send port,其它的没有任何意义。
对于开发而言,建议Orchestration的Send port的Filter不要有任何的条件,省得多出几个输出文件郁闷。
2010-03-10 16:48 | 香槟      

#10楼[楼主]  回复 引用 查看   

@香槟
这个关键是要看实际的业务需求。另外发布与订阅是BizTalk的核心之一。充分认识这个之后设计起来就会更灵活。
2010-03-12 12:56 | Gary Zhang      

#11楼  回复 引用 查看   

不错 对于一个初学者来说 这文好 我按着做了一次 感觉有点上手了
2010-11-22 17:41 | unkown      

#12楼  回复 引用 查看   

我按照这个例子做的,就是那个签名在部署时拒绝访问,我在安装biztalk时新建了一个账户,现在windows用的不是新建的那个用户,问题是不是在这儿啊?
2011-10-08 10:43 | andyliuxiaobo      

#13楼  回复 引用 查看   

我昨天又重装了biztalk,安装时使用了目前在用的windows用户,可是还是报出同样的错误(就是那个签名在部署时拒绝访问),请问还可能其他的什么错误呢?急求帮助
2011-10-09 10:46 | andyliuxiaobo      

#14楼[楼主]  回复 引用 查看   

@andyliuxiaobo
签名在部署时拒绝访问,换个签名呢?
2011-10-09 11:22 | Gary Zhang      

#15楼[楼主]  回复 引用 查看   

@andyliuxiaobo
有问题可以进群说QQ:7276643
2011-10-09 11:23 | Gary Zhang      

#16楼  回复 引用 查看   



这是那个错误提示。
2011-10-09 11:31 | andyliuxiaobo      

#17楼  回复 引用 查看   

@Gary Zhang
我换过了,就是这个命令“sn -k e:\projects\btshelloworld2\btshelloworld2.snk” 生成的,那个群已经满了、
2011-10-09 13:05 | andyliuxiaobo      

#18楼  回复 引用 查看   


现在我在一台服务器上开发biztalk,在安装时碰到这样的错误,请问这是什么意思啊,求助,在配置是我用的administrator这个账户
2011-10-09 17:23 | andyliuxiaobo      

#19楼[楼主]  回复 引用 查看   

@andyliuxiaobo
你机器是不是加入域了?退出域再重新安装吧。
2011-10-09 17:33 | Gary Zhang      

#20楼  回复 引用 查看   

是加入了域,好的,我试试,谢谢大哥帮忙啊,还有你上面给的那个QQ群满了,没有加上,能加你的QQ吗
2011-10-09 17:37 | andyliuxiaobo      

#21楼  回复 引用 查看   

用biztalk 2010 按步骤create, 仔细检查了设置 都没问题, 但测试时folder In里的文件是消失了, 但Out 里确总是没有输出文件。不知什么原因, 望楼主指点。。。
2011-11-11 10:47 | redtitan      

#22楼[楼主]  回复 引用 查看   

一般是接收管道选择错了。应该选择XMLReceive
2011-11-21 15:23 | Gary Zhang      

导航

公告


本Blog所有内容,若无特殊说明,均为原创。如需转载,请注明作者和出处,且保证内容完整!如有其他用途,请联系作者: cbcye@live.com













昵称:Gary Zhang
园龄:4年1个月
粉丝:63
关注:2

我的标签

随笔分类(89)

随笔档案(117)

BizTalk资源

IBM Learning Resource

积分与排名

  • 积分 - 128953
  • 排名 - 773

最新评论

阅读排行榜