【IT168技术文档】“如果能把项目中大量的代码编写工作变得轻松,是多好的一件事! "
在使用了AppFuse之后,我有个想法,能不能利用velocity这个优秀的模板引擎,用一种更加直观的模式,把开发项目中的重复代码让它自动生成,生成之后的基础代码,按照实际的需求稍作修改便可以运行,极大的提高工作效率。这样的话,程序员就可以从大量的重复劳动中解放出来,将精力更多的投入到业务分析及学习中。
这个想法一直在我的脑海里横亘不去,尤其在做了大量的重复模块后,深刻体会了重复Coding的那种浪费生命的痛苦后,这种冲动尤为强烈。
离开旧公司,到了新公司之后,由于职位和公司定位的不同,让我有时间开始把自动代码生成器的开发真正的摆上开发日程上了。
第一步,自动代码生成器生成的是业务模块,那么底层必须有一套框架能够为它提供支撑,而且这套基础框架要足够灵活,并且和单个模块的耦合性要比较弱。要解耦模块之间的联系,势必要用到MVC分层设计。感谢Java的开放性,使它有这么许许多多的MVC框架可以使用。我采用的当然是目前最流行的SSH(Struts+Spring+Hibernate)的组合(以前项目一直在用,也有些成熟的积累),花了三个月的时间,通过一个项目的实际应用来使这个框架基本成型。其目前功能包括:
1:灵活完善的权限管理功能(包括用户管理、角色管理、组织机构管理、资源管理、资源角色映射管理...)。原来计划采用开源的JGuard来托管这部分的功能,因为一些特殊的原因放弃了(考虑要和工作流引擎的权限部分做集成),只采用了其权限管理的一些设计思想。
2:基于Spring的AOP实现的日志和权限管理(通过Spring的代理也将Struts的Action托管了,使的对Action的调用也能被AOP侦测到),这样对每个功能的调用,如果需要日志纪录的话,之间将其配置到Spring的配置文件中就可以了。
3:UI上实现了类似.NET的Validation验证,这点很重要,想必大家都深刻体会到利用JavaScript或Struts的验证机制来实现前端页面数据验证的痛苦了吧:),我们实现的功能如下图所示: 4、多套UI风格样式。这个不是很必须,但是作为一套成功的系统,良好的用户体验也是必不可少的。
4、多套UI风格样式。这个不是很必须,但是作为一套成功的系统,良好的用户体验也是必不可少的。
5、支撑模块:报表引擎(基于JasperReport实现的B/S版本报表),流程引擎(其实就我个人来看,工作流引擎才是这套系统的灵魂,有了它,所有流程性应用包括表单、业务流、权限都可以通过配置并结合Beanshell脚本来获得,但由于我们集成的是一套反编译重构的商用流程引擎系统,在这里就不再详细描述了 ,呵呵:),有盗版之嫌啊),以下是我们报表和流程设计器的一些截图:
工作流引擎截图
报表截图
6、i18n的支持,由于我们有很多国外的客户,这块是必须的。
有了这个基础支撑平台之后,就可以开始着手开放我们的代码生成器了。