zoukankan      html  css  js  c++  java
  • BizTalk Server 2010 使用 WCF Service [ 中篇 ]

    设计一个业务流程与WCF服务交互

    在上篇,我们已经通过WCF适配器获取到了外部服务(演示中是Web service)的元数据,并导入到了我们的BizTalk项目中。通过BizTalk,可以将来自外部这些异构系统当中的服务重新进行流程的编排,根据我们的业务需求进行设计,搭建面向服务的架构体系(SOA)。

    下面来介绍一下将要在演示中创建的这个流程的步骤:

    1. 从外部接收一个贷款申请的消息,将消息命名为msgLoanApplication;
    2. 将接收到的消息进行转换,转换为LonesomePine服务能够接收的请求消息类型,将转换后的消息命名为msgLoanServiceRequest;
    3. 发送转换后的消息至外部的LonesomePine服务,该服务会根据SSN的值来计算信用卡积分并进行贷款申请的审批;
    4. LonesomePine服务将审批的结果作为响应消息发送回给流程,将该响应消息命名为msgLoanServiceResponse;
    5. 接收到服务的返回值后,会创建出一个新的消息,它包含来自服务的响应消息以及贷款申请表中的基本信息,并将这个新消息命名为msgFinalLoanDocument;
    6. 最终将是一个包含全部贷款申请所需要的信息及批复状态的消息,这个消息可以被其他系统或业务人员订阅,根据这个消息去处理相应的业务。

    1. 在解决方案资源管理器中,双击ConsumeService.Orchestrations下的LoanProcessing.odx,当前这个业务流程是空的。

    9_thumb12

    2. 从上图中我们不仅能看到BizTalk有一个图形化的业务流程设计界面,并且还提供了左侧工具箱当中的众多业务流程组件,通过这些组件,我们可以设计出基于BPEL4WS标准并超过这个标准的流程,BPEL4WS在这里不多做介绍,就是一个业务流程的标准,基于这个标准设计出来的流程我们认为它是符合规范并且可用的,BizTalk这些内置的业务流程组件都是基于这个标准研发出来的,所以我在这里能够很自信的说,用BizTalk设计出来的业务流程一定是基于BPEL4WS这个标准的。我们在这里添加如下几个业务流程组件,我会通过表格的方式来描述组件名称及其放置的位置,看不懂表格不必担心自己的智商,下面还会有相应的截图大笑

    组件命名
    接收Get LoanApplication
    转换Create Service Request Message
    发送Send LoanForEvaluation
    接收Get EvaluatedLoan
    构造消息Create Final Loan Document
    转换CreateFinalLoanDocument
    判定Is Loan Pre Approved
    发送Send Approved Loan
    发送Send Denied Loan
    10_thumb[15]
    3. 编排好的流程如上图所示,是不是很有意思?就像搭积木一样,使用图形化的工具按照我们自己的需求去设计业务流程。设计好之后,设置一个流程发起节点,点击最顶端的接收组件,在属性窗口中,将激活设置为True

    创建业务流程中的消息变量

    在业务流程中我们需要处理消息,这些消息通过接收端口接收过来,或是通过发送端口将消息发送出去,无论是哪种方式,消息在流程中都需要得到实例化,并进行相应的处理,下面将介绍在流程中创建消息变量,我们可以把一个流程文件(.odx)理解成一个流程模板,将来上线之后成百上千个实例都将跑在我们设计的这个模板上。因此在这里创建的消息,并不特指某一个消息实例,而是一个流程模板中的消息变量。

    1. 在业务流程视图中,右键消息->新建消息

    11_thumb[10]

    2. 在属性窗口的标示符中键入msgFinalLoanDocument,并将消息类型中选择架构节点-> <从引用的程序集中选择…>->引用->ConsumeServices.Schema->FinalLoanDocument->确定

    12_thumb[9]

    在这里创建的msgFinalLoanDocument消息包含原始的贷款请求内容和批复状态,这个消息我们可以认为它是流程的输出结果。

    3. 重复上述步骤再创建一个消息,命名为msgLoanApplication,消息类型为ConsumeService.Schemas.LoanApplication。这个消息是流程触发时接收到的初始消息,是银行的客户发起的一个贷款请求消息。

    4. 创建另一个消息命名为msgLoanServiceRequest,选择该消息类型多部分消息类型->ConsumeService.Orchestrations.LoanProcessingService_IsApproved_InputMessage

    13_thumb[10]

    这个消息用来请求一个外部的名为LonesomePine 的Web services服务,该消息会包含来自原始贷款申请中重要的详细信息,该信息中的数据将是LonesomePine 服务用来决定贷款审批是否通过的判断条件。

    5. 按此方法创建最后一个消息变量,命名为msgLoanServiceResponse,选择该消息类型多部分消息类型->ConsumeService.Orchestrations.LoanProcessingService_IsApproved_OutputMessage。这个消息将从LonesomePine服务收到一个批复的响应消息。

  • 相关阅读:
    PRML 读书记录
    What’s the difference between Taxonomies and Ontologies? Ask Dr. Search
    C#中IP地址转换为数值的方法
    [转]读《简约至上》有感 及我的支语片言
    读《一名毕业生的程序员之路》有感
    [转载]温故知新 javascript 正则表达式
    [转]jQuery 1.9 移除了 $.browser 的替代方法
    QQ网盘首页,这样也能上线!做产品的人是白痴啊!
    [转]P3P解决cookie存取的跨域问题
    【转】跨浏览器“复制到粘贴板”JavaScript代码
  • 原文地址:https://www.cnblogs.com/hainange/p/6153613.html
Copyright © 2011-2022 走看看