BizTalk Server 2010 - 使用 WCF Service [ 下篇 ]
上一篇我们使用图形化的业务流程设计器根据业务需求编排出了我们需要的流程,并根据流程中每一步所需消息创建了消息变量,在这一篇我们将完成后续的工作,为流程配置发送和接收端口,并对流程中每一个控件进行配置。
配置业务流程控件属性
1. 双击LoanApplication_to_LoanServiceRequest转换控件,在转换配置界面中设置转换源和转换目标,将转换源设置为msgLoanApplication,转换目标设置为消息msgLoanServiceRequest.parameters。
2. 勾选复选框单击“确定”即启动BizTalk映射器,并单击确定按钮。
3. 点击确定后,BizTalk会自动创建基于两个消息之间的映射文件,我们可以在这里把贷款申请的请求消息转换为LonesomePine服务的请求消息,通过图形化界面来创建映射关系,如下图所示:
4. 在创建好映射关系后,我们关掉这个映射文件,回到流程设计器界面当中,按1-3步骤配置另一个转换控件CreateFinalLoanDocument,将它的转换源设置为msgLoanServiceResponse.parameters 和 msgLoanApplication,将转换目标设置为msgFinalLoanDocument,点击确定启动BizTalk映射器,我们在这个BizTalk为我们自动创建出来的映射文件上添加额外的两页,并将这两页与原有的一页分别命名为RESP、LA、LA_AI,在这三页中创建我们的映射关系。[注]:在这里我们可以将多个Schema作为源架构或目标架构。在这个例子中,根据业务需求,我们拖了2个Schema当作源架构,最终生成的贷款文件需要的信息是原始贷款申请表格和贷款审批服务传回的响应信息两者的集合,因此在这里需要2个Schema作为源架构。
5. 创建了映射关系后,我们需要确定流程中接收和发送消息的消息类型,右键点击接收或发送控件,选择属性,更改其消息类型,详细的设置如下:
6. 在判定控件中,我们需要对传来的消息msgFinalLoanDocument中的审批结果进行判断, 根据Approved和Denied对消息进行路由。其具体操作是,双击判定控件当中的Approved条件,打开表达式编辑器,在里面键入表达式msgFinalLoanDocument.Loan.Status == "Approved",之后点击确定,这样,当传来的消息中贷款申请的状态如果是Approved的,则它将被路由到左侧的消息中并通过发送端口发送出去,否则走右侧的分支进行处理。
不必担心复杂的表达式书写错误的情况,在表达式编辑器中也内置了像Visual Studio中智能提醒的功能,它能够最大限度地帮助我们提升开发的效率与准确率。
7. 到这里,我们已经完成了流程的业务处理,下面要做的是配置相应的接收端口和发送端口,其具体操作是,在端口图面(没打错字,中文版上就是这么翻译的,囧)上点击右键选择新建配置端口,每个端口的配置信息如下表所示。
以其中比较复杂的双向端口CallLoanService举例来说明一下如何新建配置端口。
8. 按照上述方法配置好四个端口,配置后的结果如下图所示。
部署、配置并测试业务流程
目前为止我们的业务流程已经全部设计完成了,现在我们需要将它进行部署,并在BizTalk管理中配置物理通信端口。在这个例子中,我们需要调用一个外部的web service服务,因此我们会使用WCF-WSHttp适配器来配置物理端口。
1. 编译并部署业务流程。在解决方案资源管理器中,右键点击解决方案“ConsumeService“并选择部署解决方案。
2. 提示部署成功之后,我们打开BizTalk Server 管理。打开方法点击开始->所有程序->Microsoft BizTalk Server 2010->BizTalk Server 管理。打开之后依次展开BizTalk Server 管理->BizTalk Group->应用程序->ConsumeService。
3. 在ConsumeService中为流程创建1个物理接收端口和2个物理发送端口,在这里我们还可以通过导入XML的配置文件来对物理端口进行配置。右键点击ConsumeService应用程序,选择配置,打开配置应用程序的界面,选择LoanProcessingClient流程,并将主机更改为BizTalkServerApplication。之后按照下图所示为流程中的逻辑端口配置相应的物理端口。
目前,CallLoanService逻辑端口的下拉框里没有所对应的物理端口可以绑定。
配置WCF-WSHttp适配器
1. 在CallLoanService逻辑端口的下拉框中选择新建发送端口。
2. 点击配置之后进入WCF-WSHttp传输属性界面,在地址(URI)(U)处填入Web service的地址,并将如下SOAP操作头填入到操作的文本框当中。
3. 点击确定后,我们将接收管道设置为XMLReceive并点击确定完成适配器的配置。
测试业务流程
1. 右键点击ConsumeService应用程序,选择启动。
2. 我们模拟发起一个贷款申请的消息命名为LoanApp1,并将这个消息转化为XML格式的文件,详细内容如下图所示。
3. 将LoanApp1这个消息扔到名为~In的文件夹当中,这个文件夹被流程的一个接收端口绑定,当接收到消息后,会触发我们设计好的流程,流程处理完消息后会自动通过发送端口发送到~Out文件夹当中,并自动为消息文件命名。
我们打开这个处理后的消息,可以看到,这个消息已经被业务流程所处理,并通过WCF适配器调用Web service对该消息进行了审批处理,被审批的消息最终发送到了~Out文件夹下。
4. 是不是很好玩儿啊?我们发起一个新的贷款申请再测一下,将消息LoanApp2扔到~In文件夹下,触发业务流程并对其进行审批处理,看看这次的贷款申请能不能审批通过呢?
5. 很不幸,经过我们设计出来的业务流程处理之后,第二次的贷款申请被拒了,是不是很有成就感啊,哈哈~
OK~,第二篇主要介绍了如何设计一个业务流程,并在流程中通过适配器来调用外部的Web services服务,有收获吗?有问题吗?欢迎各位给我留言,大家一起交流,下篇见~