2011年5月28日星期六

SOASuite_034:SOA Suite 11g 开发指南之十三:使用SDO 访问与操作数据

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

本实验的内容如下:
(1)在SOA中使用SDO(Service Data Object)访问与操作数据库中的数据。
(2)使用ADF BC创建符合SDO标准的服务:访问数据与更新数据。

重要步骤说明:

1. 创建Customers表
sqlplus soademo/soademo @create_customers_table.sql

CREATE TABLE CUSTOMERS
(
CUSTOMER_ID VARCHAR2(10) NOT NULL PRIMARY KEY,
CUSTOMER_NAME VARCHAR2(255) NOT NULL,
LAST_ORDER_NUMBER VARCHAR2(4000),
LAST_ORDER_AMOUNT NUMBER(10,2)
);

INSERT INTO CUSTOMERS VALUES ('1111', 'Test Customer', NULL, NULL);

COMMIT;

2. 创建CustomerSDO Project 时,选择ADF Business Components。


3. 在AM中创建Service Interface时,选择所有Basic Operations。
创建Service Interface是为了把AM中的服务(这里就是CustomView1上的所有Basic Operation),以WebService的方式暴露出来。


4. 修改CustomerSDOService Configuration的Datasource为jdbc/soademoDatabase。


5. 设置应用默认的Configuration为CustomerSDOService。


6. 修改Java EE Application名称。


7. 创建Deployment Profile,选择类型:Business Components Service Interface。
选择Business Components Service Interface,是为了把AM中的服务(这里就是CustomView1上的所有Basic Operation),以WebService的方式发布。


8. 修改EAR 名称,Enterprise Application Name。


9. 创建WebService Reference,WSDL地址来自于刚刚发布的CustomerSDOService。


10. customer-app应用的访问URL:http://localhost:7001/customer-app/CustomerSDOService。
在这里可以测试,也可以找到该WebService的WSDL地址。


11. 在SOA应用中加入CustomerSDOService
成功发布CustomerSDOService后,就可以在SOA应用中调用该服务了。

12. 创建Entity Variable,其类型为customersViewSDO。
为了能够在BPEL中使用SDO对象,需要创建Entity Variable。


12. 设置partner link 为CustomerSDOService。


13. 将刚创建的Entity Variable中的CustomerId与Input变量中CustomerId做关联绑定。
绑定后,当进入ApproveLargeOrder后,自动会根据传入的CustomerId,CustomerInfoEV自动获取Customer信息。
并且,该记录就成为当前记录。任何对该Entity Variable的改动,都将反映到数据库表中,因为Entity Variable与CustomerSDOService已经绑定了。


14. 把Entity Variable变量中的Customer Name 赋值给Input变量中的Customer Id。


15. 把Output变量中的一些值赋值给Entity Variable变量中的对应值。
修改后的值,将会修改数据库,因为Entity Variable与CustomerSDOService已经绑定了。


16. 测试。
如果顺利的话,应该能看到传入的消息中,Customer Id的值是Customer Name的值。
并且,查看数据库,会发现数据已经被更改了。
测试数据如下:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body xmlns:ns1="http://xmlns.oracle.com/ns/order">
<ns1:PurchaseOrder>
<ns1:CustID>1111</ns1:CustID>
<ns1:ID>2222</ns1:ID>
<ns1:productName>iPod shuffle</ns1:productName>
<ns1:itemType>Electronics</ns1:itemType>
<ns1:price>145</ns1:price>
<ns1:quantity>30</ns1:quantity>
<ns1:status>Initial</ns1:status>
<ns1:ccType>Mastercard</ns1:ccType>
<ns1:ccNumber>1234-1234-1234-1234</ns1:ccNumber>
</ns1:PurchaseOrder>
</soap:Body>
</soap:Envelope>






Project 下载:LabG POProcessing.7z

3 条评论:

allyouget 说...
此评论已被作者删除。
allyouget 说...

感谢博主发了这么多好文章,
提高了我们的学习效率。
然而这篇博主写得太省略了,
很难看懂,请赐教。
第3步是在CustomerAppOverView中
先创建Application Module跟Entity Object(外加View Object),
才能在创建Service Interface是选中View,选中所有Basic Operations吧?
第4,8步好好的为何要改名
第9步很奇怪,我好像在CustomerAppOverView的WebServices已经看到了,为何还要“创建WebService Reference,WSDL地址来自于刚刚发布的CustomerSDOService。”这个刚刚发布的CustomerSDOService在哪里,我没有见到哦。
第11步 创建Entity Variable,其类型为customersViewSDO。在哪里创建?那个Type Explorer在哪呢?

allyouget 说...

续上文,第9步,创建WebService Reference,
只看到很多创建WebService的,没有看到创建
WebService Reference的,请问是在哪里创建?