1、RAP简介
RAP框架为恩菲斯公司自主研发的J2EE快速开发框架,主要基于当前流行的三大Java开源框架(Struts2、Spring2、Hibernate3)进行整合、改进和延伸。采用面向方面设计结合“习惯约定优于配置”思想构建通用Web开发框架,并已成功应用于多个项目开发。实践证明本框架降低了开发门槛、提高了开发效率、确保了开发质量。
2、B/S三层架构
B/S三层架构图
系统架构特点:
跨平台,支持异构网络;
支持集群,良好的横向扩展能力;
支持多种Web服务器,如Weblogic、tomcat、JBoss等;
支持多种数据库,如Oracle、Mysql、SqlServer等。
3、RAP功能架构

RAP功能架构图
通用功能介绍:
页面主动装饰
自动记录浏览历史记录
用户管理
权限管理,采用用户—角色—权限管理方式,基于AOP权限控制
基于AOP缓存,支持多级缓存、集群缓存
丰富的自定义JSP标签库:分页标签、日期标签、权限标签等
富客户端在线编辑
业务操作回退
基于JQuery自定义的Ajax组件库
基于浏览器的数据库操作窗口
基于浏览器的文件操作
数据库备份功能同时支持定时和手动
自动监控系统性能
4、配套代码生成工具
自主研发的代码生成工具,基于Eclipse插件形式,使用方便,主要功能如下:
生成JPA注解
生成基本的增删改查代码
5、RAP的优势
提高开发质量和开发效率。除了一般信息管理系统通用组件功能外,框架还针对社保行业应用积累了很多实用的组件,可以直接复用,如:用户、权限管理,事务管理,业务回退,性能监控,分页查询,控制重复提交等等。
先进性。软件架构吸收了一些先进的开发理念,如面向方面编程、习惯约定优先于配置等等,确保软件架构的可扩展性、开放性和易用性;技术上除了选择了当前最流行的先进技术组件外还使用了较高的JDK版本:JDK1.5+,JDK1.5、1.6逐渐会成为Java开发的主流,JDK1.4未来可能很多操作系统不再被支持。JDK1.5较JDK1.4语法上增加很多新的特性,如:范型(generics)、注解(annotaions)、可变参数、自动拆箱/装箱和枚举类型(Enum)等等,这些新的特性提高了开发效率和代码质量,同时也为实施一些先进的开发理念提供了便利,而且Java虚拟机机制做了重大改进,Java程序运行性能有了很大提升。
降低开发门槛。框架利用面向方面编程解决非核心业务横切面:权限控制、事务管理、缓存等,使开发人员可以专注核心业务开发系统。
良好的可扩展性。采用基于面向方面的多层架构,可以在不改变或少量修改原有系统的基础上实现业务修改和新增,快速适应业务的频繁变更。
开放性。提供多种数据交换共享方式,支持Webservice,数据库中间表和多种文件格式(.dbf,.txt,.xls等)报盘/回盘。
数据安全性。通过统一的权限控制,确保数据读写安全。同时可对敏感数据进行加密。
跨平台性。采用标准的Java技术实现了与平台无关性,同时支持Windows、Unix和Linux等操作系统。
6、RAP构建基础
Struts2是当前最为流行的、先进的MVC框架,它是以Webwork的设计思想为核心,吸收了Struts1的优点。
Spring2是当前最为流行的IOC容器,Spring通过反转控制装配系统各组件对象,统一管理这些对象的生命周期,同时还支持面向方面编程。
Hibernate3是当前最为流行的O/R映射(ORM)工具,主要是封装面向对象语言(Java)访问关系型数据库(支持绝大数数据库,如Oracle)细节,提供一套完整的面向对象语言API,易用性更好,功能更强大。同时也提供了自动建表、一级缓存、二级缓存等非常实用的功能。
JPA(Java Persistence API)作为Java EE 5.0平台标准的ORM规范,将得到所有Java EE服务器的支持,由EJB3.0软件专家组开发,作为JSR-220实现的一部分。JPA的宗旨是为POJO提供持久化标准规范。目前Hibernate 3.2、TopLink10.1.3以及OpenJpa都提供了JPA的实现。
JBPM4 是一个灵活可扩展的工作流管理系统。作为JBPM4运行时server输入的业务流程使用简单强大的语言表达并打包在流程档案中。JBPM4将工作流应用开发的便利性和杰出的企业应用集成(EAI)能力结合了起来。JBPM4较以前版本增加了流程虚拟机(PVM),做了重大改进。
Freemarker是一套功能强大、先进的模板引擎工具,而且效率极高,使用它生成Html代码、报盘文件等方便而且高效,可配置易于修改。
Sitemesh是一个网页布局和修饰的组件,实现页面的主动装饰,页面开发人员只需关注业务功能显示部分。利用Sitemesh可以将网页的内容和页面结构分离,以达到页面结构共享的目的,帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。
jQuery 是一套流行的开源JavaScript 库,同时还具备丰富jQuery插件,它有助于简化 JavaScript™ 以及 Asynchronous JavaScript + XML (Ajax) 编程。RAP框架中基于它封装形成了一套增强型Javascript库。
7、习惯约定优于配置
RAP框架吸收ROR核心思想:习惯约定优于配置,并力求简洁。

基于RAP框架开发遵循的约定,并通过工具辅助(如:Findbugs、CheckStyle)严格执行
- ■ Java开发的共同约定
- ■ Sun核心包的方法命名规范
- ■ 于RAP自定义的一套编码规范和约定

实现框架的零配置
- ■ 研发人员不用编写任何Struts配置文件
- ■ 通过特定命名约定,Spring容器自动组装Bean对象
- ■ O/R Maping采用JPA的注解实现,通过代码工具自动生成
代码风格统一,提高了代码质量和开发效率。
8、面向方面设计
采用面向方面思想,从纵横两个方向构建业务系统。纵向,采用传统的面向对象思想,为核心业务构建多层系统架构;横向,依照面向方面编程将权限、事务、缓存、日志等非核心业务操作抽取成横切面,切入纵向核心业务层,从而构建完整的业务系统。
8.1 纵向核心业务分层设计
下图所示是当今信息系统的通用分层架构图。从概念上分为持久层,业务层和表示层。在这三层之间,有时还会加入一些中间层,在不同层次之间实现更彻底的脱耦操作。

纵向核心业务分层架构图
表示层:系统最终用户使用的界面,基于浏览器的瘦客户端。表示层的设计尽量减少与后台的交互,并且界面符合用户的使用习惯。
交互层:表示层和业务层之间的交互管理,提供用户层的展现逻辑和对业务层的访问接口。也包括会话管理、用户输入的逻辑校验等功能。
业务层:根据业务需求进行抽象的业务对象模型,包括业务规则和逻辑处理的实现。
资源访问层:对系统的各种资源和外部系统统一的访问逻辑的实现。在资源访问层不作语义转换,只实现纯粹的资源访问。
持久层:各种信息系统资源,例如:数据库系统(RDBMS)、文件系统等。
8.2 非核心业务面向方面设计
RAP框架采用了比较先进的技术,JDK1.5+中注解(Annotation)和Spring中的IOC容器,为面向方面编程提供技术保证。RAP框架将权限控制、事务管理、缓存、日志抽取成横切面,实现了与核心业务编码的彻底剥离,解决了传统的面向对象语言的代码纠结问题,让大多数开发人员专注业务编码,减少了程序员开发的负担。
9、成功案例
重庆市农民工社会养老保险系统(重庆市社保专网);
全国高等教育教材网(www.tbook.com.cn) ;
恩菲斯销售管理平台(公司内部系统);
恩菲斯办公自动化系统(公司内部系统);
重庆市农转非审核查询系统(重庆市社保专网);
重庆市城乡统筹社会养老保险系统(重庆市社保专网);
重庆市高交会网站(www.cchtf.com);
重庆市统战部OA系统(重庆市统战部内部专网);