[BTS]WSS+InfoPath+BizTalk 案例
[BTS]WSS+InfoPath+BizTalk 案例
一.目的
通过本文的学习,将带你进入BizTalk与WSS进行整合,完成一次简单的工作流程开发过程。了解BizTalk流程开发的基本过程,了解WSS+InfoPath的应用,了解InfoPath的使用方法,熟悉BizTalk WSS Adapter的使用方法。二.背景
1.名词解释
WSSWindows SharePoint Services 是一个用来创建能够实现信息共享和文档协作的Web站点的引擎,从而有助于提高个人和团队的生产力。它是Microsoft Windows Server™ 2003中所提供的信息工作者体系结构的重要组成部分, 为Microsoft Office System和其他的桌面应用程序提供了附加的功能,并能够作为应用程序开发的平台。
InfoPath
InfoPath 2003—Office System 中的新产品—是一个功能强大的程序,它使团队和公司能够通过丰富、动态的表单,高效地收集他们所需的信息。因为 InfoPath 支持使用任何客户定义架构的行业标准的可扩展标记语言 (XML),所以可以在整个企业内和在业务进程之间轻松重用收集到的信息。XML 支持使 InfoPath 用户可以在公司间和业务进程间共享信息,以获得更大的业务影响。
BizTalk
Schema, Pipeline, Adapter, Orchestration, Mapping, Rule, BAM
2.运行环境
Server :windows 2003 server sp2 , sql server 2005, BizTalk 2006 , IIS , WSS2.0, Office 2003
Client :
Windows XP , Office 2003
三.需求分析
1.处理流程
如果非常详细的写,可以写一份《软件需求说明书》了,这里只把最关键的流程图放在这里。![Biztalk,InfoPath,SPS](https://www.cnblogs.com/images/cnblogs_com/xuzhong/BizTalk_Samples/Adapter_WSS/WorkFlow.png)
2.数据定义
采购订单:订单号,填写人,采购产品名称,采购数量,单价,备注,时间查看生产计划:订单号,产品名称,数量,备注
完成的订单:订单号,填写人,采购产品名称,采购数量,单价,总价,备注
取货表单:订单号,填写人,采购产品名称,采购数量,单价,备注,填写时间,完成时间
3.规则定义
如果订单中产品数量大于50件时,需要通知生产厂家进行生产后,将生产后的产品直接发给销售代理。4.要求
全部数据保存在WSS的文档库中即可。四.程序开发
很多BizTalk初学者与我当初一样,不知如何下手,其实,biztalk开发与一般的程序开发基本一样,只是使用的工具不同而已。
与程序开发一样,首先要明确用户需求,从用户需求中找到可以流程化的东西。然后确认用户现有系统中可以提供的接口有哪些,这也是为EAI做准备,缺的接口就找人或自己开发好。biztalk是基于消息的,所以,要根据需求中确定的数据定义来定义流程中要使用到的消息体(schema),以及明确消息之间的关系(map)。根据与各接口对接的方式,选择不同的adapter进行连接。根据业务流程的定义,就可以很快的把Orchestration画好。最后几步当然是部署、测试。
1.消息定义
注意:如果为了后面用到数据有效果验证,以及InfoPath自动生成控件,请为每一个Field设置正确的数据类型。
客户订单
生产计划(用state标记生产结束)
取货单
2. 升级属性
目的:.................................
创建Order的属性定义
属性定义(取关键性字段)
升级消息中对应的字段
其他几个消息也按同样规则定义好相应的属性。
3. 在WSS上建好对应的文档库
4. 使用InfoPath定制表单
点击保存后,选择发布
最完点击完成。
重复上面的步骤,完成其它两个Form表单的设计及发部。
5. 开发流程
根据前面的需求,定制Orchestration。
注意,这里用到了相关性概念(会在以后介绍),先按1,2,3顺序操作。
6. 部署、配置
RcvOrderPort 配置
SndProducePort 配置
RcvProduceResponsePort 配置
SndGoodsPort 配置
五. 测试
新建一个订单
理论上可以按原流程设计走通。
但当前进行测试时发现流程中有逻辑上的问题;
1. 发送到Produce_Form中后,又有一接收端口从这里取数据,这个地方有点问题,觉得应该再增加一个Form用来存ProduceResponse,然后从这个FormList中取数据。
2. 由于定义的Produce_XML的FinishTime类型是xs:datetime,所以生成的InfoPath表单无法打开从SndProducePort发过来的xml,因为这时FinishTime无值。InfoPath会发出警告。
所以整合流程只走通了count < 50 的那部分。
六. 总结
本次实验虽然没有完全成功,但主要是为了介绍一下biztalk + infopath + sps 的一个开发方法,希望能从这个案例中明确使用biztalk进行开发的整体步骤。
下一回会重点研究一下BAM在本流程中的应用,以及InfoPath的相关开技术。