文件名称:
Disable Browser Caching in JSF
开发工具:
文件大小: 981kb
下载次数: 0
上传时间: 2019-03-24
详细说明:NULL
博文链接:https://liang-wenfu.iteye.com/blog/1017556翻译:大碗喝酒
群
在
时代,部署的速度、柔性来适应业务的变化变得更加重要
显示建模可以改善项目分析业务规则的完整性及佔算的质量
你能想象到维护现存系统业务规则意味着什么。它可能花費大量的资金来实觋,当然
也需要更长的时间来上市。对于一个强大的分析、设计及实现的框架的需求非常清楚
的
显小建模并分类业务规则有下列好处
它可以帮助我们更精确地佔计设计及建造所需的开发时间
可以帮助我们分析和发现可能遗漏的规则
这可以帮助开发人员确定所有需要定义规则的位置
这可以提供一个业务规则的总体情况,便于用户之间的沟通
这提供了一个校验所有规则是否实现的机制
分析阶段记录规则
在使用面向对象的方法进行分析时,人们通常将业务规则记录在相应的用例中,然而
这种情况导致业务规则在多处记录,甚至以不一致的方式进行。因此,一种可以完整地把握
所有的业务规则,以消除或防止不一致性是重要的,建议把它记录到他们自己的对象上,比
如约束是有价值的
典型地,你可以将约束绘制到类图或业务组件图上。类图是一个分析
模型(从实现中抽象出来),而业务组件图则是一个设计模型。业务规则通常是在需求分析
时发现的,你可以在类图中捕获这些规则。不论哪种情况,你可以将约束附加
到恰当的类上,你可以将相同的约束包含在用例图中并附加到恰当的用例上
类模型提供了结构化的记录约朿的机制。例如,绝大多数关联规则可以用类关联来记录。由
于在类模型中不能用标准的符号来记录(图是模型中的约束而图是业务组什中的
约束),用约束和关联可以在两个类中创建
约束的定义包含:名字,描述,规则类型,触发事件
图
类模型中的约束,图:业务组件中的约束
mana31dEmployeos
s
iLSt oe >L
alary nust be >0
Attribute velidlster
ailA:kess Sr ng
ALTIUS
astOn。:tin
FOSacod=: 5.Irg
alary Lurker
AtIeⅤa
Commission Number
StreetName strin
salesman. lon
mCmINn
Postalcode: String
Lve lu. str i1l
Ally slI III%
sales" mLIST nave A
TeleptoneNunbet
BarkAccouT Number
Update Employee job, Employee
Figure 1: Constraints on a UML Class Model Figure 2: Constraints on a Business
nts model
也提供对象约束语言,这是在模型中描述衣达式的止规语言。这些衣达式考
虑的是園定条件,它用于系统建模或通过模型中描述对象诖行查询。当应用到类建模时,你
可以使用描述约束,在
上你可以找到很多关于如何使用的书籍和文章
相关规范可以在对象管理组的网站(
)找到。
翻译:大碗喝酒
群
如果你决定不使用而用自然语言来记录你的约束,如果这样的话,在记录约束时下
列信息应该使用
约束名用于确认约束的逻辑名
措述给开发人员提供有关用于实现规则的足够详细的信息
你应该用简短的句了来描述规则,如果规则需要更多的解释,它可能需要分解为了规
措述还应该在违犯规则时用于错误信息
措述达应该能够用」测试的基木场景
规则类型将在下一节规则分类中讲解
列出规则在哪些事件中检查,这些事件应按如下阶段进行分类:
创建实体对象
删除实体对象
修改实体对象属性
考虑在开始时定义名字和描述,只有在对模型满意时才添加规则类型和事件
让我们看一个规则的例子:
例:“销售员”职位的职员有佣金的值
在这个例子中,我们有一个规则在单个实例中要检査多个属性,这种情况检查特殊职位
的值。当你掌握更多纽节以后,你会明白这是·种实例规则的了规则实例校验。实例规则
是一种在实例级而不是属性级检查的规则。随后你将学习更多有关实例规则的子规则。
在考虑什么事件触发这个规则时,我们可以看到只有三种选项可能违犯这个规则,当你创建
新员工,或者更改员工的职位或者更改佣金。因此,我们在删除员工或修改其它属性时不用
检查这个规则。这个信息帮助我们在实现这个规则时如何优化性能。因此我们的约束应该包
含以下内容
例销售员岗位的职员必须有佣金值
规则类型:实例校验
触发事件:创建
更新职员的岗位属性
更新职员的佣金属性
注意:以下类型的触发事件是不言而喻的,不需要显示地记录在约束中
属性规则(所有子规则)通常在创建实体及修改该属性时蝕发
缺少规则在创建实体实例吋触发
删除规则删除实体实例时触发
应用实例
以下章节将涉及到所有业务规则的详细内容。提供定义、例」及指南。这个例子是从图
所示的业务组件模型中派生出来的。
这是个相当简单的模型,公司有部门及职员,这些职员可以安排到项目中去,更进
步,公司有供应商和客户,他们都是一种业务关系。供应商提供产品,而客户订购这些产品,
最终,职员为客户操作项目
图:本书例」的类模型
夲书中提到类模型是指概念模型。然而,在实际应用代码中业务关联,供应商和客户映射成
了单的实体对象,同吋有供应商和客户视图对象,但没有视图关联。
例子中业务规则的实现
本书例子中的以下业务规则都实现了
部门
翻译:大碗喝酒
群
每个部门不能多于一个办事员
规则类型:父结点
触发事件创建职员更新职员的岗位、职员的部门代码
不能超过个部门(本系统中)
规则类型集合无父触发事件创建部门
职员工资必须大」
规则类型:属性校验
职员岗位必须是:
规则类型:属性校验
职员的邮政编码必须是荷ˇ格式的(四位数字一个空格两个大写字母)
规则类型:属性校验
职员用户必须至少包含五个字符
规则类型:属性校验
职员婚姻状态必须是
规则类型:属性校验
婚姻状态可以从单身、鳏大、寡妇变为结婚,也可以从结婚变为鳏大、寡妇
规则类犁:属性校验
岗位为“销售员”的职员必须有佣金
规则类型:实体校验
触发事件:创建职员,修改职员的岗位、佣金
翻译:大碗喝酒
群
支时n
streeNlaire: stI
p
streetNumicer strr
postaLcode: strinG
crested . sTng
cre=tirDa:匚dt
萨 mniAcires Stre
lagtpddsdBr
aroctodEy:卧
ieitcndate: dale
adepartmen
d: rt
育 snAre sling
dgt: int
uNIt It
strai ie:rho
CLs,EI9'Td
postacGGc: Et'i1d
shilly
count"y: =tre
products
a rders
1 projects
telephone、uher:stng
口Hs
iOrder
超aA:t
bankAcoart ing
Il
civitate stry
Eatsrdero: Date
gb st
descr pian string
cateshipped: Date
hireDate ate
t
created strng
crested: Stng
acLals: pale
commissOn IT
createnDatE: Dste
crEstianDate: Date
userid: SinI
lssllylaedDy: Tried
as updetedDy: string
于:ccBy:tin
creed.sru
acTI deBBie. DHe
erpstrnLir: Lgtr
g l09Upd1cdB
"r1
u=t-Fkwdate:Date luspdal Das Dul
rplYs:C1
ode Lines
dernE
pJ∈= [Asi nomen
enclose e n Eities
E ProectAsslgmment
ineRter rt
prID= :Int
D油:D
qmr"‘
eHEc: strip
crAarFrRyNTrI
〓2 iEndo:ct2
creaionDar .Lt=
FAcentareA located: in
astprtecey; sring
MUlLa·8rg
laψplsd:tr"
lnallyucMdr「lm
4砒Jxt:口t器
radway sing
Heaigncie Daie
igure 3: Class Model for Examples in this Paper
创建职员时职员取数据厍中序列号的下一个值
规则类型:缺省
日志表
规则类型:其它变化事件
触发事件:修改职员的工资和佣金
客户
客户预算必须在
到
规则类型:属性校验
项目
项目预算必须在到
之间
规则类型:属性校验
当项目开始时间变化时,自动改变所有己分配项目的那些开始时间于旧项目开始时间或在新
翻译:大碗喝酒
群
项目开始时间之前的时间为新的开始时间
规则类型:其它变化事件
触发事件:修改项目廾始时门
岗位为
的职员只能查看他或她被分配的项目
其它职员可以查看所有的项目
规则类型:授权
项目结束时间必须不迟于开始时间
规则类型:实例校验
触发事件:创建项目更新项目开始时间,修改项目结束时间
项目分配
如果项目当前是活动的话,不能改变项目已经分配的比率、角色和百分比
规则类型:实例校验
触发事件:修改项目的比率,角色或者分型的百分比
项目分配的开始时间必须在项目开始和结束吋间之间
规则类型:其它多实体
触发事件:修改项目开始时间、结束时间,创建项目分配时间,更新项目分配开始时间
不能创建一个已经关闭项目的项目分配(结束时间已经过去)
规则类型:其它实体
他发事件:创建项日分配
在廾始创建业务组件前,设置一个框架扩展类将有利」实现业务规则
在项目分配结東时间改变时经项目经理发邮件
规则类型无操作的事件
触发事件更新项目分配结束时间
订单
货物发运后可以删除订单
规则类型删除规则
触发事件删除订单
订单细项
创建订单绀项吋,将下订单吋的产品价格作为订单价格的默认值
规则类型:缺省值
金额
翻译:大碗喝酒
群
派生值为数量单价
规则类型:缺省值
触发事件:创建订单细项,修改订单数量、单价
所有类
对于所有类,记录创建时间、创建人,最后修改时间及修改人
规则类型:改变历史
触发事件:创建,修改
设置框架基类
在
开发指南的建议创建一个完整的框架层的扩展类,并以些作为默认层,
即使你没有特定的需求。你可以而且应该在创建任何业务组件以前立即做好这件事,这样你
就可以做很多需要在单个业务组件中要做的一次性完成。在本书提供的例子中你将在实体欢
畅扩展类实现一个方法,你在创建任何其它实体之前创建它:
创建一个定制实体类作为基类,例如
一个业务规则是:用于系统状态的限制,系统状态的改变或者授权使用系统,或者在系统状
态改变时自动蝕发一个动作
编译类
到项目属性业务组件基类
在实体对象行域,输入你刚才创建的
当你创建新类时,它将自动继承这个实体对象类
业务规则分类
这一节将提供业务规则分类,这有助于理解应用逻辑类型如何进行业务规则建模,同时也提
供了复杂任务如何在
中实现的最佳方法
分类是基于以下对业务规则的定义
个业务规则可以是
应用于对系统状态的限制
系统状态的改变
授权使用系统
系统状态改变时自动触发一个动作
如果你认为你可以将以下部分概念映射为建模
固定条件在系统稳定点对应用系统状态的限制
前提条件某事发生前必须满足的条件
后置条件某事发生后必须满足的条件
固定条件通常包含在类模型中,前提条件和后置条件常常是用例的属性
不象
其它的没有自动处理的概念。因此,按业务规则组的说法,自动处理甚至不被认为是业务
规则。基于实用的理由,本白皮书将自动处理也作为业务规则来考虑。
本书将讨论三种主要的业务规则
约束规则
翻译:大碗喝酒
群
更改事件规则
授权规则
约束规则定义的是对系统状态或者对系统状态改变的限制。
更改事件规则定义的对系统状态的改变进行的自动处理。自动处理可以是对数据库数据(插
入、修改、删除)的处理,也可以是对数据库外进行的比如发送邮件的动作或者打印报
表
授权规则定义的对系统授权的限制。在
中的授权则是前提条件,
在考虑授权规则以前,在
层本身,已终具备了不用仟何定制编码即可实现授权规
则的解决方案,定制方案在本书中不予讨论。有关保障
应用安全的概览在
上有一篇文章“在
中实现安全管理的介绍”可供参考。
分清约束规则和更改事件规则并不是直接了当的,这是因为很多约束规则也可以用更改事件
规则来实现。换句话说,当你碰到错误时你可以仅仅抛出一错误信息(约束),也可以为用
户自动更正它(更改事件)。
这些主要的规则将分解为数个子规则来进行详细探讨。以下部分将详细讨论这些类型
约束规则
约束规则定义的是对系统状态的限制或者允许对系统状态的改变。
对系统状态的改变也就是常说的固定条件,允许对系统状态进行改变的限制也就是前
提条件。前提条件只在数据改变时才会检查是否允许该改变。同定条件检查一个动作,也可
以用于检査系统现有对象。
如果你准备用工具来对现有对象进行检验的话,区分固定条件和前提条件还是有益的。
考虑到固定条件和前提条件在
中的实现的相同的,两种情况及其例子均包含在本
节
以下子约束规则可以区分为:规则的区分是非常简单的,因为它只看规则涉及的内容:
类型
了子类型
约束规则
属性
实例
实体
多实体
在实体对象实例中只涉及一个属性的叫属性规则(
涉及实体对象实例中两个或两个以上属性的叫实例规则(
涉及同一实体的多个实例的叫实体规则()
涉及多个实体的多个实例的叫多实体规则(
这个子分类是按复杂度的增加来进行的。当估算一个规则实现的工时的,考虑到属性规
则相对来说比较简单,实例规则则复杂得多,以此类推。当然无父集合规则是个例外。
属性规则
属性规则定义的属忙的值哪个是允许的。子规则还可以细分为:
个属性规则定义的是单个属性允许的值,检査的是在单个实体的一个实例中的一个属
性的值。
类型
子类型
规则类型
约束规则「属性规则□
属性类型
域
属性校验
翻译:大碗喝酒
群
属性特性
属性特性是一种限制属性状态并具有特定类型的规则,在
中以此种规则记录。
你可以用以下方式记录
类型:定义属性的类类型
部门编码必须是数宇型的
强制属性确定一个属性是否必需的
职员的名是必须的
有儿种属性规则可以用预定义的类型来实现
你可以用域来定义一组可用于多个有类似要求的特性
可修改确定已经存在的实例属性能否修改
订单细项不能转化为另一个订单(订单项的是不能修改的)
在类图中有些属性具有其特性,如类型,初始值(缺省值)及可更改性(可修
改性)
记录属性特怛
在
中属性特性用预定义的特性米记录,在编辑实体对象的向导的属性设置标
签臾中你可以编辑这些特性(图)
Attribute
uPdatable
Name: Id
Type: Number
○Ay5
Defau此
O while New
O Neyer
v Persistent
Pri
ary key
回 Mand=tory
Unique
Refresh after
■ Discriminator
Queryable
□ Change Indicator
History column
Selected in Query
I Update
M Precision Rule
Insert
Figure 4: AttribUte Propertics
域
当你发现重复一组类似属性规则时,比如电子邮件地址,同邮政编码或者是否等,你
可以使用域来定义一次并在所有类似属性上重用。
个域就是一个继承了任何类,包括定义的诸如
和,你可以定义个通用的属性特性作为个域,用于属性
规则。你也可以定义域的校验方法,这个方法在校验成功时会返回一个逻辑值,失败时
则返回非常类似下面我们要讨论的方法校验器。对于域,你不能使用内置的比较、列
表或范围校验器
例是一个可选的数字,插入后必须刷新
是·个强制输入的字符串,必须为“或“”
记录域
为了添加域,你可以在业务组件面板或业务组件包并选择新建域业务规则
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.