当前位置:文档之家› Oracle SOA Suite 11g入门实例(四)

Oracle SOA Suite 11g入门实例(四)

Oracle SOA Suite 11g 入门实例(四)创建OrderBookingComposite组合

Author: Maolin.Chen

Creation Date: August 4, 2010

Last Updated: September 17, 2010

Document Ref:

Version: 1.0

文档控制更改记录

内容目录

文档控制 ............................................................................................................................. i i 1.前言 .. (2)

1.1.关于OrderBookingComposite组合 (2)

1.2.创建OrderBookingComposite的方法 (4)

2.创建OrderBookingComposite工程 (5)

2.1.任务1:创建OrderBookingComposite工程 (5)

2.2.任务2:创建InternalWarehouse.xsd模式文件 (5)

2.3.任务3:创建OrderProcessor BPEL流程 (8)

2.4.任务4:添加ADF业务组件服务运行时库 (9)

2.5.关于OrderProcessor流程 (9)

3.未结与已结问题 (12)

未结问题 (12)

已结问题 (12)

1.前言

本章开始我们创建OrderBookingComposite组合。

1.1.关于OrderBookingComposite组合

我们在《Oracle SOA Suite 11g入门实例(二)》中介绍了OrderBookingComposite的

作用,下面我们看看它SOA组合编辑器(SOA Composite Editor)里的样子。

在左边的泳道(swimlane),我们可以看到两个图标,代表两个本组合暴露给外部的服

务端口,也就是说外部应用程序只能通过这两个端口调用本组合:

暴露的服务说明

orderprocessor_client_ep 本服务提供一个入口通向OrderProcessor BPEL流程,是

处理来自前端店面模块的电子订单的主要通道。UpdateOrderStatus_ep 本服务提供通向UpdateOrderStatus调解器的入口。

在编辑器的中间部分包含了OrderBookingComposite使用到服务组件:

服务组件类型说明

ApprovalHumanTask 人工任务本组件实现领导审批订单。

EvaluatePreferredSup plierRule 决策服务本组件根据报价选择一个报价较低的供

应商(在后文本例的实现过程中,我们

不使用本组件)

FulfillOrder 调解器本组件将订单信息发往USPSShipment

文件适配器或FulfillmentBatch JMS适

配器

InternalWarehouseSer vice BPEL 本服务提供一个delivery date (与

PartnerSupplierMediator所使用的外部

供应商竞争)。本流程教大家如何在

BPEL里调用一个异步流程。

OrderPendingEvent 调解器本组件订阅了一个名为

NewOrderSubmitted的事件,这个事件

来自StoreFrontService的ADF业务组

件,该事件包含了订单ID。本组件捕获

了这个事件,转换之后传送订单ID到

OrderProcessor BPEL流程。OrderProcessor BPEL 本组件接收订单ID信息,处理订单并且

协调各种服务以完成订单。

OrderUpdateEventMe diator 调解器本组件订阅了OrderUpdateEvent事件,

该事件来自UpdateOrderStatus调解器。

本组件转换事件并且把订单ID从

OrderProcessor BPEL流程传递到

StoreFrontService。

PartnerSupplierMediat

or

调解器获取外部供应商报价。

RequiresApprovalRule 决策服务

(Buisiness

Rule)

判断是否需要领导人工审批

UpdateOrderStatus 调解器抛出OrderUpdateEvent事件。本组件转

换订单ID和状态并将他们传递给Order

Processor BPEL流程。OrderUpdate

EventMediator捕获该事件。

在编辑器的右边部分包含了OrderBookingComposite引用到的外部服务。

服务组件类型说明

Web Service 同步型的服务,提供信用卡验证功能。

CreditCardAuthorizati

on

StoreFrontService Web Service 同步型的服务,提供客户信息。

FulfillmentBatch JMS适配器本适配器提供一个JMS队列来存储所有

的需要履行的订单信息。本服务将订单

信息写入指定的JMS队列。

PartnerSupplierService Web Service 异步型服务,提供报价信息。

NotificationService Web Service 同步服务,提供一个ORACLE消息服务

(Oracle Messaging Service)以通知客

户订单的信息。

USPSShipment 文件适配器本适配器使用USPS(美国邮政局)配送

订单。

1.2.创建OrderBookingComposite的方法

当我们创建一个复杂的组合的时候,可以选择如下方法:

●自上而下:您分析您的业务流程,并确定需要哪里活动(activities)来支持你的流

程。当创建一个组合的时候,你在SOA 组合编辑器定义你所有的SOA组件。你先

创建所有的服务,然后创建BPEL流程,将他们引用起来。

●自下而上:您先分析现有的应用和资产以确定他们是否可以被用作服务。当你创建

BPEL流程的同时,你根据实际需要创建服务。这种方法适合应付多变的业务需求。

本教程中,我们使用自下而上的方法。

2.创建OrderBookingComposite工程

根据SOA标准所推崇的构建SOA的方式,我们应该首先构建数据交换的格式,也就是

XSD文件,然后才利用XSD构建SOA的具体应用。

2.1.任务1:创建OrderBookingComposite工程

1.在Application Navigator中右键WebLogicFusionOrderDemo应用名,并且选择

New Project。弹出New Gallery对话框。

2.在Categories树型节点上,选择SOA Tier。

3.在Items列表中选择SOA Project。

4.点击OK。弹出Create SOA Project对话框。

5.输入如下值:

属性值

Project Name OrderBookingComposite

Directory 保持默认

Project Technologies SOA

6.NEXT。

7.在Configure SOA Settings页,从Composite Template列表中选择Composite

With BPEL。

8.点击Finish。弹出Create BPEL Process对话框。

2.2.任务2:创建InternalWarehouse.xsd模式文件

首先我们来看一下我们要创建的XSD文件完成之后是什么样子:

1.右键OrderBookingComposite工程下的xsd目录,选择New,弹出New Gallery 对

话框。

2.选择All Technologies选项卡,依次选择General>XML,在Items中选择XML

Schema。

3.在弹出的Create XML Schema对话框中输入:

属性值

File Name InternalWarehouse.xsd

Directory 保持默认

4.点击OK。

5.在打开的InternalWarehouse.xsd标签页中,点击击targetNamespace后面的值,将

https://www.doczj.com/doc/153828302.html,修改为

https://www.doczj.com/doc/153828302.html,/ns/InternalWarehouse

6.创建WarehouseRequest元素:

a)点击exampleElement节点,重命名为WarehouseRequest。

b)右键WarehouseRequest节点,选择Insert inside

element-WarehouseRequest > sequence。

c)右键新产生的sequence节点,选择Insert inside element-sequence>

element。

d)点击新产生的element1节点,重命名为orderId。

e)右键orderId节点,选择Set Type,在列表中选择xsd:string。

7.创建WarehouseResponse元素:

a)右键根节点,选择Insert inside schema > element。

b)点击新产生的element1节点,重命名为WarehouseResponse

c)右键WarehouseResponse节点,选择Insert inside

element-WarehouseResponse> sequence。

d)右键新产生的sequence节点,选择Insert inside element-sequence>

element。

e)点击新产生的element1节点,重命名为warehouse

f)右键warehouse节点,选择Set Type,在列表中选择xsd:string

g)重复步骤d, 右键新产生的sequence节点,选择Insert inside

element-sequence> element。

h)点击新产生的element1节点,重命名为deliveryDate

i)右键deliveryDate节点,选择Set Type,在列表中选择xsd:date

j)重复步骤d, 右键新产生的sequence节点,选择Insert inside element-sequence> element。

k)点击新产生的element1节点,重命名为orderTotal

l)右键orderTotal节点,选择Set Type,在列表中选择xsd:double

8.创建SelectedWarehouse元素:

a)右键根节点,选择Insert inside schema > element。

b)点击新产生的element1节点,重命名为SelectedWarehouse

c)右键SelectedWarehouse节点,选择Set Type,在列表中选择xsd:string

9.创建WarehouseList元素:

a)右键根节点,选择Insert inside schema > element。

b)点击新产生的element1节点,重命名为WarehouseList

c)右键WarehouseList节点,选择Insert inside element-WarehouseList>

sequence。

d)右键新产生的sequence节点,选择Insert inside element-sequence>

element。

e)右键新产生的element1节点,选择Toggle Reference。

f)点击element1,在下拉列表中选择WarehouseResponse

g)在右下角element-Property Inspector面板中输入:

属性值

MaxOccurs unbounded

minOccurs 0

10.点击File>Save All。

2.3.任务3:创建OrderProcessor BPEL流程

1.在Create BPEL Process对话框中,输入如下值:

属性值

Name OrderProcessor

Namespace http://www.globalcompany.example.

com/ns/OrderBookingService

Template Asynchronous BPEL Process

Expose as a SOAP

选中此项,暴露本流程为SOAP服务

service

2.在Input域:

a)在Input域,点击Browse Input Elements按钮。弹出Type Chooser对话框。

b)在Type Chooser对话框中,展开Project Schema Files >

InternalWarehouse.xsd并且选择WarehouseRequest,单击OK。

3.在Create BPEL Process对话框中,从InternalWarehouse.xsd中选择元素作为输出:

a)在Output域,点击Browse Output Elements。弹出Type Chooser对话框。

b)展开Project Schema Files > InternalWarehouse.xsd并且选择

WarehouseResponse,点击OK。

4.在Create BPEL Process,点击OK。

5.点击Save All。

2.4.任务4:添加ADF业务组件服务运行时库

1.在Application Navigator里,右键OrderBookingComposite选择Project

Properties。

2.选择Libraries and Classpath,并且从Libraries and Classpath页理点击Add

Library。

3.在Add Library对话框,选择BC4J Service Runtime,并且点击OK。

4.在Libraries and Classpath页,点击OK。

2.5.关于OrderProcessor流程

OrderProcessor流程是WFOD的主要流程。它在适当的时机调用适当的服务。比如,它

调用CreditAuthorizationService服务来验证客户的信用卡是否有效,如果有效,则调用

内部和外部的仓库服务获取报价。

OrderProcessor工程是一个大工程。本章先做一个大致介绍,然后在后面的章节我们再

分两章对每个部分如何创建做一个详细的介绍。

OrderProcessor流程的主要“块”

块类型说明

receiveInput Receive activity 本活动从请求里接收订单ID

Scope_RetrieveOrder Scope 本范域(作用域,范围)的作用是从数

据库获取订单信息。它使用了一个BIND

活动指向ADF业务组件提供订单数据。

Scope_ RetrieveCustomerFor Order Scope 本范域通过调用StoreFrontService服务

获取客户信息。

Scope_ CheckApprovalLimit Scope 本范域作用如下:

初始化RequiresApproval决策服务,判

断是否需要领导审批。

对于需要领导审批的,初始化一个

ApprovalHumanTask人工任务让领导

审批,若审批通过,流程继续,若审批

被拒绝,流程抛出错误,不再执行。

对于不需要审批的,流程继续。

Scope_RetrieveQuotes Scope 本范域发送订单信息到两个供应商,获

取报价信息。

Scope_ SelectPreferredSuppl ier Scope 本范域初始化SelectPreferredSupplier

决策服务选择一个低价的供应商

Scope_FulfillOrder Scope 本范域调用FulfillOrder调解器组件,决

定订单的配送方法。

Scope_ UpdateStatusToCompl ete Scope 本范域分配一个最终的状态“完成”给

订单

Scope_ NotifyCustomerofCo mpletion Scope 本范域使用ORACLE消息服务(Oracle

User Messaging Service)给客户发送订

单完成的邮件。

callbackClient Invoke activity 回调客户端,通知客户端流程执行完毕

至此,本章内容介绍完毕。有任何意见或建议请致信:chenmaolin88@https://www.doczj.com/doc/153828302.html,

3.未结与已结问题未结问题

已结问题

相关主题
文本预览
相关文档 最新文档