2009年9月11日星期五

ADF_011:使用ADF-BC开发业务服务

本文最近一次修改时间为 2011-12-30,本实验使用JDeveloper 11.1.2.1.0重新开发。
开发环境:JDeveloper 11.1.2.1.0。
完成《Developing Business Services with ADF Business Components》。

重点步骤说明:
1. 安装FOD Schema
参考《发布与运行 Oracle Fusion Order Demo》。

2. 把不同的对象放在不同的package中,对象名称要清晰易懂
(1)Entity Object 放在adfbc_model.entities 中,Entity 名称应该是单数。
选择如下表:ORDERS、ORDER_ITEMS、PERSONS、PRODUCTS_BASE、PRODUCT_IMAGES。

(2)Updatable View Object 放在adfbc_model.queries 中。

(3)Application Module 放在adfbc_model.service 中。

3. 为Entity Attribute 或 Entity Object 定义验证规则

Entity Attribute 验证规则有:
(1)Collection
(2)Compare
(3)Key Exists
(4)Length
(5)List
(6)Method
(7)Range 比如,订单产品数量最少1个,最多10个。
(8)Regular Expressions
(9)Script Expressions
(10)UniqueKey
如果声明式的验证规则不能满足要求,还可以使用Groovy 脚本、Regular Expressions、Java方法来实现验证Entity Attribute或Entity Object。
在 Validation Execution Tab中,你还可以定义触发条件,只有当该条件为真时,才计算验证规则。
触发Attributes,是说当这些 Attributes发生变化时,要重新评估触发条件。

4. 为 Entity Object 增加 Transient Attribute,比如自动计算订单总价:单价*数量。


(1)因为是Transient Attribute,所以不要选择 Persistent。
(2)在View Object中,增加该Attribute。
(3)设置重新计算的条件
  • Always每次都重新计算。

  • Never 只在创建时计算一次。

  • Based on the following expression 根据表达式返回值(True or false)来决定是否重新计算。
    如return (adf.object.isAttributeChanged("Quantity") || adf.object.isAttributeChanged("UnitPrice"))。

5. 手工为Entity Object 增加Association,比如订单项目中的产品与产品关系
(1)Associations 命名规则是 <DetailEntityMasterEntity>FkAssoc 。
(2)搞清楚一对多的关系中,谁是一、谁是多。
这里OrderItems是一,ProductsBase是多,因此Associations名称是ProductsBaseOrderItemsFkAssoc。

6. 手工为View Object 增加 View Link,比如订单项目中的产品与产品关系
View Object 是对Entity Object的查询结果,结果包括Entity Object的全部或部分属性。
一般来说,一个View Object对应一个Entity Object。当然,你也可以完全根据SQL语句自定义一个View Object。
View Link 表明的是两个View Object之间的关系,一个View Link对应一个Association。
(1)View Link 命名规则也是 <DetailEntityMasterEntity>FkLink 。
(2)同样,也要搞清楚一对多的关系中,谁是一、谁是多。
这里OrderItems是一,ProductsBase是多,因此View Link名称是ProductsBaseOrderItemsFkLink。

7. 手工为Application Module增加Data Model项。
View Object 表明数据被访问的方式。客户端通过访问 View Object 而访问Data Model。
Data Model 保存在 Application Module中。
Application Module是一种类型的业务服务,其它类型的业务服务有Web Service、EJB。
在Data Model中,View Object 所带的数字“1”、“2”、“3”.....,表明这是该View Object的第几个实例。你可以修改成意义更清楚的名字。
手工建立的一对多的关系,需要在AM中手工添加,设置方式如下:
在左边选择OrderItemVO节点下的ProductsBaseView via ProductsBaseOrderItemsFkLink;
在右边选择OrderVO1节点下的OrderItemVO2节点;
然后点击向右箭头按钮。

会发现OrderItemVO2节点下出现了ProdcutsBaseView2节点,说明关联关系建立完毕。

8. 测试,运行AM。


Project 下载:FusionOrderApp.7z

没有评论: