<?xml version="1.0" encoding="gbk"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>实现服务端功能之——Java实体对象 (by 朱杰)</title>
<meta name="generator" content="muse.el" />
<meta http-equiv="Content-Type"
content="text/html; charset=gbk" />
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="./muse.css" />
</head>
<body>
<h1>实现服务端功能之——Java实体对象 (by 朱杰)</h1>
<!-- Page published by Emacs Muse begins here -->
<div class="contents">
<dl>
<dt>
<a href="#sec1">关于实体对象</a>
</dt>
<dd>
<dl>
<dt>
<a href="#sec2">对象模型和关键类</a>
</dt>
</dl>
</dd>
<dt>
<a href="#sec3">创建</a>
</dt>
<dd>
<dl>
<dt>
<a href="#sec4">复合实体关联</a>
</dt>
<dt>
<a href="#sec5">实体对象的Initial/New状态</a>
</dt>
<dt>
<a href="#sec6">特殊“Create”的情况</a>
</dt>
<dt>
<a href="#sec7">实体对象缓存</a>
</dt>
<dt>
<a href="#sec8">实体状态</a>
</dt>
</dl>
</dd>
<dt>
<a href="#sec9">修改/校验</a>
</dt>
<dd>
<dl>
<dt>
<a href="#sec10">属性级校验</a>
</dt>
<dt>
<a href="#sec11">交叉属性校验</a>
</dt>
<dt>
<a href="#sec12">实体校验</a>
</dt>
<dt>
<a href="#sec13">交叉实体校验</a>
</dt>
<dt>
<a href="#sec14">不妥当的校验失败处理</a>
</dt>
</dl>
</dd>
<dt>
<a href="#sec15">删除</a>
</dt>
<dt>
<a href="#sec16">锁</a>
</dt>
<dd>
<dl>
<dt>
<a href="#sec17">过期数据侦测</a>
</dt>
</dl>
</dd>
<dt>
<a href="#sec18">提交</a>
</dt>
<dt>
<a href="#sec19">回滚</a>
</dt>
<dd>
<dl>
<dt>
<a href="#sec20">回滚方法</a>
</dt>
<dt>
<a href="#sec21">不当的Post处理</a>
</dt>
</dl>
</dd>
</dl>
</div>
<h2><a name="sec1" id="sec1"></a>
关于实体对象</h2>
<p class="first">实体对象包含了业务逻辑和对表的DML操作。</p>
<h3><a name="sec2" id="sec2"></a>
对象模型和关键类</h3>
<ul>
<li>oracle.apps.fnd.framework.server.OAEntityCache:这个缓冲用于存储特殊实体的查询过的行。映射到同样的实体的多个视图对象共享相同的实体缓存。</li>
<li><YourEntityName>EOImpl继承oracle.apps.fnd.framework.server.OAEntityImpl:这是实体对象本身。当实例化后,它代表数据中的一行。</li>
<li>oracle.apps.fnd.framework.server.OAEntityDefImpl:表示描述实体对象的元数据,包括属性(attributes)、事件、校验器、关联和属性(properties)。当实例化后,它描述了实体对象类的所有实例。实体定义类是一个单例类。</li>
<li><YourEntityName>Expert继承oracle.apps.fnd.framework.server.OAEntityExpert:这是一个特殊的单例辅助类,它用于注册一个实体。</li>
<li>oracle.jbo.Key:这是一个不可变的主、外键或复合主键。</li>
</ul>
<h2><a name="sec3" id="sec3"></a>
创建</h2>
<p class="first">为了创建实体对象,必须调用对应的上层视图对象中的createRow方法然后再调用insertRow方法。</p>
<pre class="src">
<span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">In the application module; this example from the OA Framework
</span><span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">ToolBox Tutorial will instantiate a SupplierEOImpl.
</span>
<span style="color: #00ffff;">public</span> <span style="color: #98fb98;">void</span> <span style="color: #87cefa;">create</span>()
{
<span style="color: #98fb98;">OAViewObject</span> <span style="color: #eedd82;">vo</span> = getSuppliersVO();
vo.insertRow(vo.createRow());
<span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">Always call this after you perform a row insert. See the Entity Object
</span> <span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">New / Initial section below for additional information.
</span> vo.setNewRowState(<span style="color: #7fffd4;">Row</span>.STATUS_INITIALIZED);
}
</pre>
视图对象的createRow方法调用下层实体对象的create()方法。可以在实体的create()方法中添加初始化代码,可以参考oracle.apps.fnd.framework.toolbox.tutorial.server.SupplierEOImpl类。
<p><strong>警告:</strong> 不要将初始化逻辑放到实体对象的构造器中;总是应该将这些代码添加到create()方法中super.create(attributeList)方法调用的后面。</p>
<p><strong>技巧:</strong> 如果默认值可以在设计时决定,并且是为特定的UI而决定的,也可以通过在设计器中设置item的Initial Value属性来指定默认值。这些值可以被用户个性化;而不需要创建实体你的对象的子类并覆盖create()方法来设置默认值。查看Defaulting章节查看细节信息。</p>
<pre class="src">
<span style="color: #ffa07a;">/**
* In the SupplierEOImpl class; initialize a new supplier.
*/</span>
Public <span style="color: #98fb98;">void</span> <span style="color: #87cefa;">create</span>(<span style="color: #98fb98;">AttributeList</span> <span style="color: #eedd82;">attributeList</span>)
{
<span style="color: #00ffff;">super</span>.create(attributeList);
<span style="color: #98fb98;">OADBTransaction</span> <span style="color: #eedd82;">transaction</span> = getOADBTransaction();
<span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">Supplier id is obtained from the table's sequence
</span> <span style="color: #98fb98;">Number</span> <span style="color: #eedd82;">supplierId</span> = transaction.getSequenceValue(<span style="color: #ffa07a;">"FWK_TBX_SUPPLIERS_S"</span>);
setSupplierId(supplierId);
<span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">Start date should be set to sysdate
</span> setStartDate(transaction.getCurrentDBDate());
} <span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">end create()
</span></pre>
<strong>技巧:</strong> 当在实体对象中设置值时,总是使用set<AttributeName>(val)代替setAttribute("<AttributeName>", val)方法可以提高性能,因为前者跳过了查找字段的步骤。如果需要忽略编程方式实现的属性校验而仍需要执行设计时定义的校验时,可以直接调用setAttributeInternal()。查看Entity Object and View Object Attribute Setters以获取更多信息。
<h3><a name="sec4" id="sec4"></a>
复合实体关联</h3>
<p class="first">在复合关联中BC4J将在设置父对象主键属性值时自动设置子实体对象。父对象主键值是在调用create()方法时通过attributeList参数传递进去的,并且在super.create(attributeList)被执行时被设置值。</p>
<p>不要尝试自己来处理主键值。</p>
<h3><a name="sec5" id="sec5"></a>
实体对象的Initial/New状态</h3>
<p class="first">缺省情况下,实体对象被创建时row状态为STATUS_NEW,并且BC4J将它们添加到它们的校验器中并且post监听。这时,任何事件触发校验或数据库提交sequence包括这些实体对象。(By default, entity objects are created with the row state of STATUS_NEW, and BC4J adds them to its validation and post listener lists. In this case, any event that triggers a validation or database post sequence includes these entity objects.)</p>
<p>如OA Framework Model Coding Standards中的规定,应该将通过显式的在视图对象中调用创建新行的方法后立即调用ViewRowImpl对象的setNewRowState(STATE_INITIALIZED)方法。</p>
<p>当执行这个后,BC4J将从事务中和校验监听列表中移除对应的实体对象,这样它们将不会被校验或提交到数据库。当用户做出修改(属性的“setter”被调用后),实体对象的状态修改为STATUS_NEW,并且BC4J返回它到validation/post lists。你也可以在ViewRowImpl上调用setNewRowState(STATUS_NEW)在任何时候手工改变状态。</p>
<h3><a name="sec6" id="sec6"></a>
特殊“Create”的情况</h3>
<p><strong>“Flattened”主/从处于单一行中</strong></p>
<p>在OA Framework ToolBox教程中,我们有主/从实体显示于同一行中,“flattened”行中。比如采购单包含了很多行,它们依次包含了多个供货商,在我们的UI中,我们将采购单的行和供货单实现为1:1的关系。</p>
<p>尽管BC4J可以很容易的为单个视图对象行创建多个不同类型的实体对象——这些实体对象是不相关的或是平等的——在一个对象是另一个对象子对象时需要你介入。在这种情况下,必须在你的视图对象行实现的create()方法中添加下面的代码,以确保正确的父对象的主键被设置到低层次的子对象的实体中:</p>
<pre class="src">
<span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">The following is required to support the creating the master/detail line
</span><span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">and shipment entities that have been "flattened" into a single row in
</span><span style="color: #ff7f24;">// </span><span style="color: #ff7f24;">POLineShipFullVO w
没有合适的资源?快使用搜索试试~ 我知道了~
oaf学习笔记 转的别人的 免费给大家
共68个文件
gif:43个
png:13个
html:10个
需积分: 9 116 下载量 70 浏览量
2009-02-23
10:53:13
上传
评论
收藏 438KB RAR 举报
温馨提示
这是本人从别的网站找到的关于oaf的学习资料 是别人发到网上的学习笔记,本人免费共享给大家 希望对大家有用
资源推荐
资源详情
资源评论
收起资源包目录
oaf.rar (68个子文件)
oaf
ebs_bus_svc_overview.html 3KB
ebs_state
root_am_noretainproblem.gif 13KB
boundary_case2.gif 18KB
root_am_default.gif 13KB
root_am_retain.gif 12KB
boundary_case1.gif 24KB
state_architecture.gif 24KB
am_pool.gif 6KB
ebs_build_control
page_title.gif 3KB
ebs_state.html 15KB
ebs_page.html 25KB
ebs_bus_svc_overview
srv_overview.gif 5KB
ebs_build_model
onion.gif 7KB
modelobjects.gif 4KB
ebs_build_error.html 3KB
ebs_build_model.html 33KB
ebs_build_attrsets.html 898B
ebs_bus_java.html 59KB
images
emacs.gif 2KB
ulul.gif 553B
sky.png 9KB
dotnice.gif 218B
bg.gif 3KB
nice.gif 48B
powered_by_debian.png 3KB
powered_by_GNU_Emacs.jpg 3KB
lightgreen.gif 54B
debian_logo.png 1KB
key-point_bl.gif 160B
FlyZhy_Gmail_logo.png 2KB
prebak.gif 374B
ul.gif 553B
valid-xh.png 2KB
muse-powered-by.png 7KB
menu_back.gif 94B
debian.png 2KB
gmail.png 2KB
key-point_tl.gif 159B
get_firefox.gif 2KB
menu_tr.gif 107B
lightblue.gif 54B
brick.gif 99B
vcss.gif 2KB
muse-made-with.png 7KB
get_firefox_small.gif 859B
gnu_emacs_icon_grey.png 2KB
emacswiki.png 1KB
emacs-muse.png 29KB
olul.gif 553B
gnubanner.png 4KB
somerights20.gif 2KB
google.gif 2KB
menu_br.gif 384B
ebs_build_view.html 29KB
ebs_build_control.html 43KB
index.html 1KB
muse.css 11KB
ebs_build_view
toolbox_menu.gif 11KB
read_data_flow.gif 41KB
write_data_flow.gif 9KB
ebs_page
ess_model_arch_am.gif 11KB
ess_model_arch_tran.gif 11KB
ess_model_arch_vo.gif 11KB
bean_internals_attr.gif 11KB
pagecontext_arch.gif 8KB
anatomy.gif 20KB
bean_arch.gif 14KB
ess_model_arch_eo.gif 11KB
共 68 条
- 1
资源评论
sgqiang5566
- 粉丝: 13
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功