OAF_EO系列2 - Validation数据校验验证机制(概念)
2014-06-12 Created By BaoXinjian
一、摘要
1. 在Update数据之前,我们往往要对待更新的记录进行有效性的校验,校验级别包括
- Attribute Level Validation: 字段级的校验
- Entity Level Validation: 记录级的校验
2. 字段级校验-只涉及单个字段的校验
字段级别的校验一般情况下写在EO的set<Attribute name>()方法中,
根据传入的value来决定是执行setAttributeInternal() 还是throw Exception.(代码应写在setAttributeInternal()之前)
例如如果一个订单的状态为CLOSE, 则不允许更改OrderPrice. 伪码如下:
Public void validateEntity()
{
super.validateEntity();
String status = getOrderStatus();
If (“CLOSE”.equals(status))
{
Number ldorderprice = (Number)getPostedAttribute(ORDERPRICE);
Number neworderprice = (Number)getOrderPrice();
If (oldorderprice.compareto(neworderprice)!=0)
{
throw new Exception(“Error: Order Price can not be edited!”);
}
}
}
3. 记录级校验-只涉及多个字段组合的校验
当校验涉及多个Attribute时,你就不能使用字段级的校验了,需使用记录级的校验,即Entity Level Validation. 此校验在validateEntity()方法中实现.
校验代码须写在 super.validateEntity() 之后
例如如果一个订单的状态为CLOSE, 则不允许更改OrderPrice. 伪码如下:
Public void validateEntity()
{
super.validateEntity();
String status = getOrderStatus();
If (“CLOSE”.equals(status))
{
Number ldorderprice = (Number)getPostedAttribute(ORDERPRICE);
Number neworderprice = (Number)getOrderPrice();
If (oldorderprice.compareto(neworderprice)!=0)
{
throw new Exception(“Error: Order Price can not be edited!”);
}
}
}
二、字段级校验案例
案例. 在EO的字段添加异常,如果Total为0值,则抛出异常
1. 字段级验证异常调用
2. 字段级验证异常测试
三、记录级校验案例
案例. 在EO的记录级validateEntity()添加异常,将多个字段组合进行判断,则抛出异常
1. 记录级验证异常调用
2. 记录级验证异常调用测试
四、异常触发后如何对transaction进行rollback
不要试图在EO的Validation 里执行rollback() 方法或clearcache() 方法. 当出现校验失败时,有下面两种做法:
Bad Method:
- 在EO Module
public void validateEntity(){
….
transaction.rollback()
throw new OAException….
}
Right Method:
- In EO Module
public void validateEntity(){
throw new OAException…
}
- In AM Module
Try
{ transaction.commit();
}Catch ( OAException ex)
{transaction.rollback();}
Thanks and Regards
参考:Tony Liu - http://blog.itpub.net/10359218/viewspace-677447/
转载于:https://www.cnblogs.com/eastsea/p/3784741.html
OAF_EO系列2 - Validation数据校验验证机制(概念)相关推荐
- Silverlight实例教程 - Validation数据验证开篇
Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...
- 清华大数据系列讲座——大数据发展与区块链应用成功举办
2018年9月15日,由清华-青岛大数据工程研究中心主办的"清华大数据系列讲座-大数据发展与区块链应用"在中国海洋大学成功举办.本此讲座邀请到了清华-青岛数据科学研究院执行副院长韩 ...
- 每个软件工程师都应该知道的有关实时数据的统一概念
转自:炼数成金 每个软件工程师都应该知道的有关实时数据的统一概念 我在六年前的一个令人兴奋的时刻加入到LinkedIn公司.从那个时候开始我们就破解单一的.集中式数据库的限制,并且启动到特殊的分布式系 ...
- linux 读取大量图片 内存,10 张图帮你搞定 TensorFlow 数据读取机制
导读 在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解 ...
- 一起谈.NET技术,.Net Discovery系列之-深入理解平台机制与性能影响 (中)
上一篇文章中Aicken为大家介绍了.Net平台的垃圾回收机制与其对性能的影响,这一篇中将继续为大家介绍.Net平台的另一批黑马-JIT.有关JIT的机制分析 ● 机制分析以C#为例,在C#代码运行前 ...
- .NET 并行(多核)编程系列之七 共享数据问题和解决概述
.NET 并行(多核)编程系列之七 共享数据问题和解决概述 原文:.NET 并行(多核)编程系列之七 共享数据问题和解决概述 .NET 并行(多核)编程系列之七 共享数据问题和解决概述 前言:之前的文 ...
- tensorflow 1.0 学习:十图详解tensorflow数据读取机制
本文转自:https://zhuanlan.zhihu.com/p/27238630 在学习tensorflow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找 ...
- 理解DataSet的数据缓存机制
虽然在以前的开发中经常使用DataSet类,但是重来没有涉及到数据缓存机制这块内容.今天看了一下,也算是做点总结. 在理解数据缓存机制之前需要理解DataRow的两个概念,即行状态和行版本.行状态就是 ...
- 十图详解TensorFlow数据读取机制(附代码)
在学习TensorFlow的过程中,有很多小伙伴反映读取数据这一块很难理解.确实这一块官方的教程比较简略,网上也找不到什么合适的学习材料.今天这篇文章就以图片的形式,用最简单的语言,为大家详细解释一下 ...
最新文章
- ASimpleCache 轻量级缓存
- windows7下消除快捷键箭头的方法
- Unity3D获取Andorid设备返回键,主页键等功能
- 王小川:与龚宇相识14年 爱奇艺造假不可能
- 在dom最前面插入_前端性能优化之dom编程
- window.location.href = basePath + paper/deleteExpertComment.action?expertId=+$(this).prev().val();
- boot spring 跨域注解_每日一问学技术:@SpringBootApplication注解干了个啥?
- C++ for (auto it:myset) 是什么意思 引用
- 一种简单的睡眠评分规则
- python实战因子分析和主成分分析
- 如何直接通过电脑查看路由器密码
- html如何制作扑克,用css制作扑克牌
- Qt模仿网易云黑胶片转动动画
- matlab蒙特卡罗变量变换的分布,使用 copula 仿真相关随机变量
- SVN+Gitee配置版本控制库
- 万维考试系统题库答案python_万维题库与试卷管理系统
- Python之生成器详解
- 跨界也伟大:当D.E.Shaw进军医疗领域
- C++设计模式--单例模式详解(懒汉模式、饿汉模式、双重锁)
- Vegas的安装激活教程
热门文章
- 用Alpha生成Trimp图的方法(python)
- UVa1374 Power Calculus(IDDFS)
- Dockerfile命令
- 数据科学的完整学习路径—Python版
- 网络编程学习笔记(TCP套接口选项)
- CF1041C Coffee Break
- VUE+WebPack游戏开发:神庙逃亡的游戏设计
- NameNode中几个关键的数据结构
- 配置 linux-bridge mechanism driver - 每天5分钟玩转 OpenStack(77)
- [模仿微软Live.cn]JavaScript输入邮箱自动提示