我是FE,也是Fe

前端来源于不断的点滴积累。我一直在努力。

统计

留言簿(15)

阅读排行榜

评论排行榜

架构之路(3)-永恒的话题-CRUD

前面说过所谓的业务大多数是crud。那从这个入手,我发现要把这个配置出来,配置的结果不言而喻,能生成crud的页面。我们其实只需要一些元数据(meta information)。元数据就相当于我们平常用的hibernate 里面的cfg.xml之类的东西。用来描述实体/字段的一些信息。从业务的需要来讲,单凭这个xml的配置还不能生成crud的页面。还需要很多的信息。下面是这些字段信息的整理。

TABLENAME

表名
TCOLUMNSNAME 表字段名
TCOLUMNSTYPE 表字段类型
ECOLUMNSNAME 实体字段名
ECOLUMNSTYPE 实体字段java类型
COLUMNSLENGTH 字段长度
COLUMNSNULLABLE 是否允许为空
ISPRIMARYKEY 是否主键
STATE 启用状态
DESCRIPTION 描述
COLUMNID 字段序号
LABELTEXT 字段label名称
DEFAULTVALUE 字段默认值
CANSEARCH 是否为查询字段
SEARCHINPUTTYPE 查询呈现方式,文本框/下拉框/..
SEARCHOPERATOR 默认查询运算符,等于/大于/..
FORMAT 字段显示格式,日期格式/小数格式/货币格式
CSSCLASS 呈现css class
READONLY 编辑时是否只读
EDITINPUTTYPE 编辑呈现方式 文本框/下拉框/..
CREATESHOW 新增时是否显示
UPDATESHOW 更新时是否显示
VIEWSHOW 查看时是否显示
BLANKMSG 值为空警告
VALIDATETYPE 校验类型,小数/整数/正整数/..
INVALIDMSG 校验不通过警告
MAPPING 数据字典,其实就是配置下拉框的通用的数据源。比如通常{1:是,0:否}。
MAXVALUE 最大值
MINVALUE 最小值
VALIDATEOP 校验比较类型
VALIDATETO 校验比较对象表达式
VALIDATEREGEXP 校验正则表达式
VALIDATEIF 校验禁用条件
CTABLE 约束表,这4个属性生成下拉框数据源。
CCOEDECOLUMN 约束值字段
CVALUECOLUMN 约束文本字段
CCONDITION 约束文本字段

我估计很多人看了这些属性后笑了,的确,很多人这么做过。后来发现这样做很不灵活,无法满足需要,其实这个问题很简单,为什么不应用一种表达式,ognl,el之类的表达式放在配置项里,这些属性就灵活很多。siebel这样的产品,不也有一些地方需要些一个脚本,比如escript之类的东西么。想想我们天天琢磨的业务,不就是这些东西么。把它配置到数据库里面,接下来就是怎么生成页面的么。我看到的目前大多数的做法是做一个代码生成器,我认为这种做法很不好,代码生成器本身是解决了很多机械活,但是关键还是你生成的代码本身的质量。没错,你可以用代码生成器去免去上万行代码要手写的尴尬,我不仅要问,为什么会弄成上万行的代码?有的人还喜欢吹嘘我写过上万行的Java代码,我更是嗤之以鼻,这不是你的骄傲,这恰是你的悲哀。上万行的代码,我见过的有两种可能性,一个是java/jsp代码没有重构,没有封装。二是数据库的设计有问题,一个表200个字段,页面能不复杂么。第一种是架构师要解决的问题,第二种那据是设计时要注意的事情了。扯远了。界面是怎么出来的。至少不是用代码生成器跑出来的。接触过ruby on rails 或者grails的朋友肯定知道里面的activerecord/scanffold组合快速实现crud。不过他说白了也是在生成页面+改代码,我还是不喜欢。因为界面确实是太灵活。我的思路分两个个方面入手:1.封装字段,根据上述字段属性封装成jsp的tag。这个tag通过字段名读取元数据属性,生成浏览器执行的html,javascript。2:所谓页面不久是指定这个页面有哪几个字段不就得了。查询页面,那几个字段是查询条件,读取字段的查询属性。编辑页面,无非是指定编辑哪些字段就行,在这个基础上做一个小工具,页面就很容易出来。当然,好的框架还要解决一个问题,就是变更。怎样能以最少的代价做变更。这个我是这么想的。比如说,某个表删除一个字段,我们可以提供一个工具查询哪些页面引用了这个字段,然后用程序一并删除,其实这个实现也不难,因为每个字段无非就是jsp页面的一个tag么。大不了用个全文搜索。用正则一替换就完了。

上面是我总结的快速实现crud的一些想法。这部分其实是很多重复性劳动的根源,把这些工夫省下来了。开发效率高很多。

posted on 2009-12-25 16:52 衡锋 阅读(369) 评论(0)  编辑  收藏 所属分类: 架构之路


只有注册用户登录后才能发表评论。


网站导航: