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

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

Oracle SOA Suite 11g 入门实例(二)SOA实例项目介绍及部署

Author: Maolin.Chen

Creation Date: July 7, 2010

Last Updated: September 17, 2010

Document Ref:

Version: 2.1

文档控制更改记录

内容目录

文档控制 ............................................................................................................................. i i 1.SOA范例应用简介 (2)

1.1.FOD简介 (2)

1.2.开发环境搭建 (2)

1.3.WFOD应用概览 (3)

1.4.理解OrderBookingComposite流程 (4)

2.部署并运行范例程序 (7)

2.1.部署FOD应用 (7)

2.2.部署WFOD应用 (19)

2.3.下订单测试 (21)

2.4.启动企业管理器监控订单 (23)

2.5.监控第一个订单 (24)

2.6.监控第二个订单 (27)

2.7.取消部署WFOD (29)

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

未结问题 (30)

已结问题 (30)

1.SOA范例应用简介

从本章开始,我将为大家介绍Oracle官方所提供的SOA范例程序(Fusion Order

Demo),绝大部分内容为官方英文版翻译过来的,删去了一些冗杂的东西,加入我实

践时的一些体会注释。建议学习时,同时也参阅官方原版,可以有助于更好的解决学习

时遇到的问题。

Fusion Order Demo(FOD)是Oracle官方提供的一个学习如何使用Jdeveloper开发

ADF,SOA等相关ORACLE中间件产品的例子程序,主要功能是一个通过WEB界面在

线下订单,然后通过服务端的SOA组件处理订单的应用。它的WEB端主要是使用

ORACLE ADF组件构建的(ADF本文不做过多介绍,有兴趣的同学可以参考官方相关

文档),而服务端是用SOA套件完成的,主要进行订单的处理部分,本文就主要介绍如

何运行和构建这个SOA范例程序。

1.1.FOD简介

FOD这个应用是有一家名为Global Company的虚拟公司运营的,主要分为两个部分,

一部分是WEB前端店面,另一部分是FOD的SOA后台主体。

WEB前端店铺(StoreFront module)模块包含下面两个工程:

StoreFrontUI:提供WEB界面供客户浏览产品、下单、注册、查看订单信息、更新个人

信息等。

StoreFrontService:提供对店铺数据的具体新增、更新操作,提供对客户、产品、订单

的更新的事务支持,简单的说,就是用户做了下单等操作后具体去完成这些任务的模块。

FOD的SOA后台主体(Weblogic Fusion Order Demo)应用包含多个模块,后面我们

将逐一介绍。在后文中我们以WFOD(Weblogic Fusion Order Demo)来指代SOA后

台主体部分。

1.2.开发环境搭建

1.环境搭建请参考《Oracle SOA Suite 11g环境搭建手册for linux》

https://www.doczj.com/doc/8a4182117.html,/Blog/cns!CBA5ADE1DBE72106!564.entry

2.下载FOD例子程序(FusionOrderDemo_R1.zip,不建议使用新版本例子程序,因

尚未发布对应的开发文档):

https://www.doczj.com/doc/8a4182117.html,/otn/java/jdeveloper/111/extensions/FusionOrderDe

mo_R1.zip

3.下载FOD实例英文原版

https://www.doczj.com/doc/8a4182117.html,/docs/cd/E12839_01/integration.1111/e10275/toc.htm

4.下载官方SOA 11g开发员参考手册(十分重要的参考资料)

https://www.doczj.com/doc/8a4182117.html,/docs/cd/E12839_01/integration.1111/e10224.pdf

本系列文档所使用的环境与《Oracle SOA Suite 11g环境搭建手册for linux》中使用的

环境略有差异,但基本不影响操作。本系列文档使用如下环境:

服务器OS:Solaris 10 SPARC

应用服务器:WebLogic 10.3.2

数据库: Oracle XE for Windows

SOA版本:Oracle SOA Suite 11g 11.1.1.2

RCU版本:11.1.1.2

Jdeveloper : 11.1.1.1

服务器主机名:sp-eump-cms

服务器AdminServer端口:7801

服务器soa_server1端口:8801

服务器bam_server1端口:9801

将例子程序解压到本地磁盘某个目录下(如D:\FOD),本文以

DEMO_DOWNLOAD_HOME指代这个目录,与此同时,本文以MY_FOD_HOME

指代你的开发根目录,必要时,我们会从DEMO_DOWNLOAD_HOME复制文件到

DEMO_DOWNLOAD_HOME。

1.3.WFOD应用概览

1. 打开Oracle Jdeveloper

2. 点击File > Open,选择DEMO_DOWNLOAD_HOME/CompositeServices,接着

选择WebLogicFusionOrderDemo.jws. Click Open.

WebLogicFusionOrderDemo应用里的工程:

工程描述

B2BX12OrderGateway 本工程包含一个关于Oracle B2B的组合应用,不在本

文讨论范围内。

BamOrderBookingComposite 本工程是OrderBookingComposite工程的扩展版,它

使用Oracle BAM adapter 和Oracle BAM sensors

传送活动数据到Oracle BAM 仪表盘,本工程不在本

文讨论范围内。

Bin 构建项目的ant脚本,同时也包含JMS模板。

CreditCardAuthorization 为OrderBookingComposite工程提供信用卡验证服

务。

OrderApprovalHumanTask 为OrderBookingComposite工程提供待办审批界面

OrderBookingComposite WFOD应用的主体工程,处理来自前端WEB应用产生

的订单。

OrderSDOComposite 模拟前端WEB店面模块的StoreFrontService服务,仅

用于测试WFOD目的,如果你成功部署了并一直运行

着WEB前端店铺(StoreFront module)模块,可以

不必理会这个工程。

PartnerSupplierComposite 这个工程是一个BPEL流程,提供一个关于供应商报价

信息的服务给OrderBookingComposite工程。

点击Application菜单,关闭。

1.4.理解OrderBookingComposite流程

11g里的组合(Composite)就是指将多种技术组件(如Bpel,Mediator等)组装起

来,打包成一个SOA应用。后面我们可以看到,SOA组合将各种技术组件分组并用特定

的方式将它们联系起来。

OrderBookingComposite是WFOD的主要工程,负责处理Global Company公司的订单。他用到了如下组件:

●Oracle Mediator

●Oracle BPEL Process Manager

●Oracle Human Workflow (使用人工工作流)

●Oracle Business Rules

●Oracle Messaging Service

OrderBookingComposite工程的核心是OrderProcessor BPEL流程,由它来协调各个服务组件基于决策服务(Business Rules)选取合适的供应商来履行订单。

下图是OrderBookingComposite工程的流程概览,紧接着是该组合如何一步步处理订单的介绍。

当一个新的客户在Global Company公司的WEB店面(storefront UI)上注册了帐号之后,客户端就将新客户的信息发送到一个处理客户信息的服务上去,这个服务就叫StoreFrontService,StoreFrontService随后就保存客户的信息到数据库,然后这个客户就可以在店面上浏览并添加商品到他的购物车里,然后下订单。

当客户提交了一个订单后,下面的事情发生了:

1. Oracle ADF Business Component组件将订单信息写入数据库,并且使用事件传输网络(EDN,Event Delivery Network)组件触发一个名为NewOrderSubmitted的

事件(event),这个事件的包含的主要数据就是订单ID(order ID)。

2. 因为OrderPendingEvent 调解器(Mediator)订阅了NewOrderSubmitted事件,EDN组件随后就通知了OrderPendingEvent调解器有新订单,并且将事件参数传到调解器。

3. OrderPendingEvent调解器接收到订单后就把订单ID路由到OrderProcessor BPEL流程。

4. OrderProcessor BPEL流程根据订单ID从数据库取出订单,用的是一个绑定实体活动(bind entity activity)绑定了ADF业务组件StoreFrontService服务。

5. BPEL流程实例化一个StoreFrontService,将订单ID传递给它,然后取出客户相关信息。下面这些会被取出,并会被后面的流程所用到:

●客户ID(Customer ID)

●客户订购的产品

●客户信用卡信息

●送货地址

6. BPEL流程随后发送待付款总金额,信用卡类型,信用卡帐号到CreditCardAuthorizationService服务,以验证客户的信用是否有效。

如果信用卡无效,BPEL流程取消这个订单。

如果信用卡有效,BPEL流程发送订单到RequiresApprovalRule决策服务组件以判断这个订单是否需要领导审批。

7. RequiresApprovalRule决策服务组件评估是否需要领导审批,超过2000元的订单会被送交领导审批。

8. 对于需要领导审批的订单,BPEL流程调用ApprovalHumanTask人工工作流组件给领导创建一条待办任务,让领导决定审批或者拒绝这个订单。

9. 如果订单审批通过,BPEL流程同时发送订单信息到下面两个供应商获取报价:

内部供应商——使用位于OrderBookingComposite工程的InternalWarehouse Service BPEL流程。

外部供应商——使用PartnerSupplierMediator调解器(mediator),调用位于PartnerSupplierComposite工程的ExternalPartnerSupplier流程。

10. 两个供应商反馈他们的报价信息,随后BPEL流程发送报价信息到EvaluatePreferredSupplierRule决策服务。

11. EvaluatePreferredSupplierRule决策服务从报价信息中选取较低的报价。

12. BPEL流程调用FulfillOrder调解器(mediator),执行以下操作:

●保存订单到一个临时的队列并且传送到订单履行系统(外围系统,不必深究)。

●发送订单信息到USPS快递公司。

13. 一旦订单被履行,BPEL流程就会把订单状态设为完成(Complete)。

14. BPEL流程调用NotificationService服务,给客户发送一封关于订单的EMAIL。

15. 当订单完成后,OrderPendingEvent调解器(Mediator)就触发订单完成事件

(OrderCompleted),该事件可被其他组件订阅。

个人观点:Oracle SOA 套件中决策服务组件(business rule)功能非常鸡肋(简单的业务规则我们可以直接在BPEL中实现,复杂的规则我们可以使用JAVA或

PLSQL等实现),在笔者接触到的SOA项目中,均未使用此组件。

2.部署并运行范例程序

本章我们介绍如何部署FOD应用,并且下一个订单,然后监控订单被WFOD处理的过程。

在进行本章任务之前,确保第一章的环境配置工作已经成功完成。

2.1.部署FOD应用

2.1.1 任务1:安装FOD数据库模式对象(即创建FOD的数据库表、视图等对象)

1. 启动Oralce Jdeveloper 11g,点击File > Open.

2. 在Open对话框,浏览至DEMO_DOWNLOAD_HOME/Infrastructure并且选择

Infrastructure.jws。点击Open。

3. 接着可能会弹出对话框,询问是否需要版本迁移(Migrate),点击Yes

4. 在Application Navigator里,展开MasterBuildScript > Resources, 然后双击

build.properties。

5. 在编辑器里,根据你的环境修改如下属性:

不建议更改除以下属性以外的属性。

属性值

jdeveloper.home JDEVLOPER的根目录,如

D:/Oracle/Middleware/jdeveloper

jdbc.urlBase 数据库URL,如:

jdbc:oracle:thin:@foddb-server

jdbc.port 数据库端口号,如1521

jdbc.sid 数据库SID,如ORCL、XE

db.adminUser 数据库高权限用户,如:SYSTEM

db.demoUser.tablespace FOD用户所使用的表空间,如: USERS

6.点击,File>Save。

7.在Application Navigator里选择Resources节点,右键单击build.xml文件,选

择Run Ant Target > buildAll。

8.此时会弹出对话框要求输入数据库管理员帐号(即在build.properties配置的

adminUser)的密码,输入之。然后脚本便会自动创建数据库用户FOD,以及

FOD的数据库表、包、触发器等。

待Apache Ant – Log窗口出现如下信息后,对象创建完成。

buildAll:

BUILD SUCCESSFUL

Total time: nn minutes nn seconds

有时候脚本会报错,仔细查看错误原因,笔者就遇到过由于SQL文件中出现乱

码导致执行失败的情况。

2.1.2 任务2:部署店面模块(Store Front Module)

我们通过Store Front Module应用中的StoreFrontUI工程里的home.jspx页面来下订单。StoreFrontUI工程使用JSF作为展示层技术,并且并且通过ORACLE ADF模型层来与StoreFrontService工程中的ADF业务组件进行交互。如果没有学习过ADF相关知识,上述内容听起来较难理解,不过这个不是本文重点,我们不需要关心他如何实现的,只需把他当一个普通的J2EE应用程序运行起来就OK了。

你不需要注册账号登录就可以浏览商品,但是如果你要下订单,必须注册并登录。以下是内置的几个账号,我们使用ngreenbe来下订单。

要部署Store Front module:

1.选择File > Open。

2.在Open对话框,浏览至DEMO_DOWNLOAD_HOME/StoreFrontModule 并且

选择StoreFrontModule.jws. 点击Open.

3. 如遇迁移对话框,点击Yes.

4. 在Application Navigator里, 展开StoreFrontService > Application Sources >

oracle.fodemo.storefront > store > service,右键StoreServiceAM 并且选择Configurations。

5. 在Manage Configurations 对话框, 从Names列表中选择StoreServiceAMLocal,点击Edit,更改Connection Type为JDBC DataSource, DataSource Name为

java:comp/env/jdbc/FODDS

同样的方法更改StoreServiceAMLocalWeb,

切换到Properties,更改fod.application.issoaenabled属性值为true.这样FOD就开启了SOA功能,即FOD应用产生的订单会传送到WFOD进行处理。

点击OK。

6.展开StoreFrontService > Application Sources >

oracle.fodemo.storefront >lookups, 右键LookupServiceAM >Configeration.

7.在Names列表中选中LookupServiceAMLocal,点击Edit. 更改Connection Type为

JDBC DataSource, DataSource Name为java:comp/env/jdbc/FODDS. 同样的方法更改LookupServiceAMShared的Connection Type。

8. 在Application Resources 里展开Connections>Database ,右键FOD > Properties ,

录入你的数据库连接信息(前面我们已经创建了一个FOD 默认的数据库用户:fod ,

密码是fusion),点击Test Connection,成功后点击OK。

9.重新编译两个工程:

10.接下来我们在WEBLOGIC控制台里给soa_server1新增一个JDBC数据源:JNDI名称

为:jdbc/FODDS 。

a)登录http://sp-eump-cms:7801/console(针对自己环境修改服务器名和端口号)

b)在域结构中选择服务>JDBC>数据源,

c)在右边的页面中选择新建,名称输入FODDS,JNDI名称为jdbc/FODDS ,

其他保持默认。下一步,弹出关于XA事务的提示,直接点击下一步。

d)在连接属性页面,输入数据库连接信息,下一步

e)点击测试配置,成功后,下一步,在选择目标页面勾选soa_server1,点击完

11.部署Store Front module:

点击Application menu(StroreFrontModule应用右边的下拉菜单按钮), 选择Deploy > StoreFrontModule_SDOServices > to sp-eump-cms.这里,我们先建立了一个应用服务器连接sp-eump-cms,指向SOA服务器。详见环境搭建手册。

点击选择soa_server1,点击OK.

观察部署日志,确保部署成功完成,如遇MDS对话框,直接点击确定,下同。

12.选择Application menu, 选择Deploy > StoreFrontModule >to

sp-eump-cms

a)选择soa_server1,下一步

b)完成。检查部署日志,确保部署成功。

完成后,访问

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