2011年5月28日星期六

SOASuite_033:SOA Suite 11g 开发指南之十二:使用EDN处理事件

开发运行环境:JDeveloper 11.1.1.5 + SOA Suite 11.1.1.5。

Event Driven Network (EDN)是Oracle SOA Suite 11g中的高级特性,它可以帮助我们处理事件。
过去,事件的生产者和消费者往往通过JMS来管理和配置信息,你需要了解JMS的工作原理,创建Factory,Queue,Topic等对象,然后编写代码“生产或消费”事件,比较繁琐。
有了EDN以后,事件处理变得非常简单:你无需理解和配置JMS就可以“生产和消费”事件。

实际情况中,考虑到订单的信息入口可能是多个,我们可以使用EDN作为订单的一个新入口。

应用设计如下:


重要步骤说明:
1.增加一个Meditor,作为订单的另一个入口。

2.该Meditor上定义了一个订阅事件:NewPO。


3.发布事件到Meditor上
(1)执行 setDomainEnv.cmd,设置CLASSPATH变量。
(2)配置发布脚本:publish.cmd,脚本内容如下:
set DB_USER=bj_soainfra
set DB_PASSWD=welcome1
set DB_CONN=localhost:1521:XE
set JAVA_HOME=C:\Oracle\Java\jdk1.6.0_25
set PATH=%JAVA_HOME%\bin;%PATH%
set ORACLE_HOME=C:\Oracle\Middleware\Oracle_SOA1
set EVENTFILE=%1

java oracle.integration.platform.blocks.event.SendEvent -dbconn %DB_CONN% -dbuser %DB_USER% -dbpass %DB_PASSWD% -event %EVENTFILE%

(3)运行发布命令: publish ..\input\new_po_event.xml。其中,new_po_event.xml 内容如下:
<business-event xmlns:ns1="http://schemas.oracle.com/events/edl/POEvents" xmlns="http://oracle.com/fabric/businessEvent">
<name>ns1:NewPO</name>
<id>e4196227-806c-4680-a6b4-6f8df931b3f3</id>
<content>
<PurchaseOrder xmlns="http://xmlns.oracle.com/ns/order">
<CustID>1111</CustID>
<ID>33412</ID>
<productName>Sony Bluray DVD Player</productName>
<itemType>Electronics</itemType>
<price>350</price>
<quantity>5</quantity>
<status>Initial</status>
<ccType>Mastercard</ccType>
<ccNumber>1234-1234-1234-1234</ccNumber>
</PurchaseOrder>
</content>
</business-event>

4.测试。在EM上如果看到订单是从ReceiveNewPO进入的,就说明成功了。


5.启示:我们可以利用EDN批量发布事件到SOA应用。

Project 下载:LabF POProcessing.7z

没有评论: