因图片较多,需要图片请到资源中下载,不需要资源分。
OpenJWeb(1.8) Java Web应用快速开发平台
产品白皮书
编者:OpenJWeb技术团队
编写时间:2009-10-02
Email:[email protected]
QQ:29803446
联系人:王先生
手机:13651070328
目 录
2.19 Spring Security与单点登录产品CAS整合... 17
2.21 与电子论坛Jform产品进行单点登录集成... 18
2.26 动态配置表字段间的约束关系(非物理主外键关联)... 20
第三章 OpenJWeb(v1.8)开发路线图.... 24
Java Web应用快速开发平台以Java为基础编程语言,为快速开发互联网应用的基础软件开发平台。
Java We应用快速开发平台是快速开发业务系统的工具,能够快速生成业务系统的功能模块。举例说,人事系统需要的个人简历录入页面,进销存管理系统的商品基本信息录入页面,新闻发布系统的信息编辑页面,都可以由快速开发平台在十分钟内定义出来,很少或不需要程序员编程,大大提高了软件开发的生产效率。而如果没有快速开发平台,开发一个商品基本信息录入的功能,至少需要程序员2天的开发时间才能完成。
Java Web应用快速开发平台为不同行业、不同业务系统提供了公用的基础功能,大部分业务应用系统都需要组织结构管理、人员管理、权限管理、流程控制、 报表、邮件管理、实时沟通等功能,使用快速开发平台进行业务系统开发,不仅可快速定义功能模块,而且对于不同系统都需要的基础功能不需要重复开发。
1975年,Brooks博士曾在其著名的“人月神话”一书中提出了一个令人悲观的论断:“未来10年内没有能提高软件生产力的银弹,即没有任何一种技术或管理上的进步,能够独立地承诺在10年内大幅度提高软件开发的生产率、可靠性和简洁性”。
长期以来,我国应用软件领域一直停留在手工作坊的开发时代,即使在现在,大多数软件开发公司都未从本质上脱离“手工作坊”的开发模式。软件公司的研发水平,大致可分为以下三个层次:
(1) 没有自己的软件开发规范和开发标准。
(2) 有自己的软件开发规范和标准,但没有自己的快速开发平台。
(3) 有自己的软件开发规范和标准,并且有自己的快速开发平台。
如果一个软件公司有自己的开发标准,但没有自己的平台产品,即使开发标准制定得很完善,仍然难以从根本上提高软件开发效率。
事实上,现在已经有越来越多的软件公司开始意识到在平台基础上开发业务系统的重要性,而且市场上已经出现了一些专门开发平台软件的公司。平台软件是实现软件工厂化生产模式的最好选择,好的平台软件就好比一个高效率的软件生产线,可以定制出适合用户需要的各种应用系统。
平台软件的成熟和发展并不意味着我国应用软件的软件开发水平总体上进入软件工厂化时代。虽然从从技术上,有些平台软件的确能够达到“工厂化”开发的目标,但是,很多软件企业的决策层的思想仍然没有转变,所以大多数软件企业的开发模式仍然以低水平的重复劳动为主。
应该说,现在平台软件已经逐渐成熟,成为快速提高软件生产力的“银弹”,使用平台软件来开发业务系统,有以下优势:
(1) 平台产品可以快速生成增删改查类的录入页面,例如单表、主明细表、树形结构的增删改查功能,利用平台可以在几分钟之内就把页面和页面代码生成出来,而如果我们不使用快速开发平台,一般至少一个中级程序员两天的工作时间才能开发一个增删改查类的功能。
(2) 平台产品已经解决了用户登录、注销、组织结构管理、功能菜单管理、功能授权、行记录级的数据授权、单点登录、表单数据校验、电子邮件收发等很多基础功能,这些功能可用于大多数业务系统,软件公司不需要为不同的项目重复开发这些基础功能。
(3) 平台产品具有标准的体系架构,对于开源产品,平台架构更具透明性。软件公司如果采用了透明体系架构的平台产品,将不会依赖于个别的技术牛人,人员的流动不会对公司产品带来不可估量的损失。
(4) 在项目需求调研阶段,调研结束后,一般需要根据需求来开发系统原型。很多没有平台产品的公司需要耗费美工大量的时间来绘制静态页面。而使用平台产品则不仅能迅速产生系统原型,这个系统原型实际已经具有了基本的数据维护功能、可动态维护的菜单和平台已经具备的基础功能。
商业快速开发平台具有功能强大、完善的优势。但有以下明显不足:
(1) 产品价格相对而言比较昂贵。
(2) 平台底层架构对于用户而言是不透明的。
(3) 繁琐的定义功能本来是为了减少工作量,过度细致的配置反而提高了使用的复杂度。
(4) 难以快速跟进最新java技术。
(5) 对用户仅限于使用平台的培训,缺少对底层架构的讲解,导致使用平台的软件开发人员技术上难以提高,因而难以提升团队的整体研发实力。
开源产品的特点:
(1) 产品价格相对便宜。
(2) 底层架构对于用户而言是透明的。
(3) 平台定义+用户二次开发结合,很容易形成符合用户需要的平台产品。
(4) 可以快速跟进最新的java技术。
(5) 透明的体系架构更容易使软件公司人员产生使用平台的兴趣,因此对软件公司研发人员学习、提高java技术有很大的帮助,并且软件公司人员也可参与平台开发。
商业的快速开发平台供应商,目前主要有:上海普元、上海锐道、上海群萃、北京起步科技、北京UCML(.NET),深圳极致、北京FastUnit。
开源快速开发平台中,国外的appfuse和jboss seam是非常出名的,国内开源的java快速开发平台很少,springside与其说是一个快速开发平台,不如理解为一个学习框架更为贴切。而openjweb快速开发平台的产品化程度是以上开源产品无法匹敌的,虽然以上开源产品的名气要比openjweb要大的多。下文将详细介绍openjweb快速开发平台的技术特点。
OpenJWeb快速开发平台以快速开发为核心,整合先进的java 开源框架,本着自主开发+应用集成相结合的原则,旨在为政府、企事业单位、软件公司等平台用户提供一个架构透明的、框架先进的、方案全面的、成本低廉的信息化应用基础开发平台和应用平台,因此可以大幅度降低业务系统的开发难度,大幅度提高业务系统开发效率,从而大幅度降低项目研发成本和研发周期。
成熟的开发平台需具备以下功能特点:
序号 |
平台功能特性 |
说明 |
1 |
跨操作系统 |
Windows/linux |
2 |
跨数据库 |
支持主流关系数据库,oracle/sqlserver/sybase/mysql/hsqldb等。 |
3 |
支持单点登录 |
至少应集成CAS单点登录产品 |
4 |
快速开发支持 |
支持单表、主明细表、树形结构类型的增删改查页面的快速生成(含java代码生成) |
5 |
工作流引擎即图形定义工具 |
|
6 |
Web表单定义器 |
可由用户在线定义Web表单 |
7 |
可灵活切换页面风格 |
用户可按自己的需要定义主题风格 |
8 |
数据库管理功能 |
可通过平台建表,定义主外键,索引,数据备份,不同RDBMS数据库移植 |
9 |
EAI数据交换 |
支持基于MOM(消息中间件)技术的数据交换 |
10 |
分析决策 |
主要包括WEB报表定义工具、 OLAP及决策支持(管理驾驶舱),提供ETL数据抽取,带图表的多维数据分析工具(支持数据钻取,旋转,切片,数据挖掘)。
|
11 |
完整的多语言解决方案 |
|
12 |
完整的组织结构,用户,角色管理 |
|
13 |
权限管理与安全框架 |
支持按权限显示功能菜单,URL及WEB目录权限控制,页面按钮、接口方法级别的权限控制,权限分配到组织结构、角色、个人的多角度的授权方式,支持角色权限继承,支持权限的委托与回收等。支持行记录级的数据查询、修改、删除权限。
|
14 |
门户技术支持 |
portal首页定制,portlet管理,支持树型的门户(如子公司门户,部门门户),支持标准JSR168规范,WSRP协议等。支持个人的个性化门户页面定制。 |
15 |
Webmail邮件支持 |
提供收邮件,发邮件,邮件群发功能。 |
16 |
即时通信支持 |
可实现在线实时交流功能。 |
17 |
知识库管理、电子论坛 |
|
18 |
CMS内容管理 |
|
19 |
支持站内全文检索 |
|
20 |
手机短信支持 |
|
21 |
其他特性 |
定时器,业务对象状态监控,消息日志,跨数据库事务,声明式事务。。。 |
除快速开发平台之外,OpenJWeb团队计划开发的应用系统包括:
(1) 通用进销存系统。
(2) 电子商务。
(3) 人力资源管理。
(4) 档案管理(已开发,完善中)。
(5) 客户关系管理(CRM)。
(6) 协同办公。
(7) BLOG。
(8) 项目及任务管理。
(1) MVC框架主要采用struts2.0.14+spring2.5.6+hibernate3
(2) 安全框架采用spring security2.0
(3) struts1.2(从上一版本移植过来的部分功能仍采用struts1.2)
(4) cas server3.3单点登录服务器+spring security集成
(5)dwr调用
(6)fckedit在线编辑器
(7)dhtmlxtree树形组件
(8)jotm JTA 跨数据库事务(基于tomcat)
(9)groovy动态语言
(10)axis2 apache webservice server
(11)apache lucene全文搜索引擎
(12)基于openfire+spark+smack的Java即时通讯解决方案
(13)JFreeChart图表
很多软件公司为企业开发应用系统,往往动辄一年甚至更久,如此长的开发实施周期,导致项目还没有实施完,需求已经发生很大变化,所以OpenJWeb从开发模式上采用平台定制+二次开发辅助的模式可大大减少项目的开发工作量,缩短项目的实施周期,甚至后期都可以由用户自己定制业务模块,因而避免了软件公司交付产品后,新的业务需求仍然需要软件公司开发的局面。应该说,对于越大型的企业应用项目,OpenJWeb节省的成本越显著。这体现在:
(1) 一般企业应用都有大量的后台维护模块,而这些模块的开发很多都不可避免地要解决页面JSP文件的开发,分页、排序功能的处理,增删改查功能的实现,数据库建表,以及页面中涉及到代码-名称列表的下拉窗口的检索等等很多开发内容,如果没有一个平台工具提供快速开发支持的话,一个象简单的客户基本信息维护这样的功能至少也得两天的时间才能完成,而使用平台工具开发的话,只需要十几分钟的定制的时间就可以轻松搞定。两天和十几分钟的差异绝对不是一个小数目,对于一个百万元的项目而言,使用平台开发至少可以节省20万以上的项目成本。对于软件公司而言,减少20%的项目成本就意味着项目提高20%的利润率!OpenJweb的快速功能生成器在项目开发中的效率,是传统的软件开发模式是不能匹敌的,只要数据结构设计出来,功能就可以生成出来。在做项目需求原型的时候是极其有帮助的。
(2) OpenJWeb平台对开源社区的框架产品进行了很好的整合,同时也经过了若干大型项目的验证,使用OpenJWeb平台的用户因而可以避免重复选型的风险,也节省了重新搭建应用框架的时间。
(3) 基于平台产品进行应用开发和实施是以后软件行业的主要模式,使用平台产品进行开发可以使软件公司完全摆脱手工作坊式的研发时代,对于大型项目的实施也不再需要靠大量招聘开发人员这种非常耗费成本的实施方式。另外,成熟的平台减少了代码出错率,这也在很大程度上减少了修改错误代码的时间。
(4) 成熟的开发平台具有透明的一致的开发模式和框架,因而项目人员的变动不会对产品的体系架构产品影响。因而很大程度上减少了关键人员离职造成项目失败的风险。
(5) 平台产品已经实现了增删改查生成,组织结构权限,数据权限控制,字段校验器,业务逻辑生成器,默认值设置,代码表管理等很多功能,不需要用户再进行同类功能的重复开发。
(6) 此平台不仅对软件公司,最终用户有很大的应用价值,同时对于Java开发人 员来说是一个很好的学习平台,具有很大的学习价值和培训价值。OpenJWeb平台由于有机集成了开源领域的众多产品,为Java人员提供了Java开源技术“一站式”学习通道,能在很短的时间内掌握这些开源技术的使用方式。通过OpenJWeb的学习和使用可以使Java人员在很短的时内提高自己的技术水平,从而使自己在竞争激烈的职场中脱颖而出。基于以上这些价值,OpenJweb快速开发平台也是培训机构很好的实战教材。
(1) 对于还没有或者刚选择Java平台的软件公司,本平台已经具有了很多开发好的功能,不需要重复开发。可直接使用平台提供的社区版。
(2) 对以于项目实施为主的软件公司(按项目定制开发),使用此平台开发项目可以大大减少开发工作量。
(3) 咨询人员:咨询人员使用此平台可以在很短的时间定制一个原型应用,因而使得在打单或需求调研过程中迅速给客户展示一个应用系统模型。
(4) 政府、企业用户。使用此平台使得在软件公司的服务到期后,仍可以使用平台来定制自己的新的业务应用,而不再依赖于软件公司,从而真正做到随需应变。
(5) 培训机构。OpenJWeb平台是一个不可多得的基于开源框架的快速Web应用开发平台,一般IT培训机构是很难获取到这种具有实战价值的代码,针对OpenJWeb平台进行Java培训一定可以使学员在相对短暂的培训期间体验到真正的企业级应用开发。
(6)个体创业者或者中小软件公司。对于中小软件公司是没有资金去聘请一个专职的高级架构师,引入一个优秀的开源平台进行软件开发是他们最好的选择。
可在平台上定义并创建数据库表,并生成对应的java实体类和hibernate映射文件。
当数据库表建好以后,可利用平台生成单表、主明细表、树形结构的JSP页面和java代码,并可以自动生成支持声明式事务的spring业务逻辑组件。下面是通过平台生成的单表的维护页面:
图2-1 平台生成的列表页面
图2-2 通过平台生成的树列表维护页面
通过平台生成的功能页面包括增加、删除、编辑、导入导出excel、分页、自定义每页行数、可针对每行上传附件、查询、自定义查询等很多功能,生成这样一个可直接使用的页面不需要编写任何程序代码。
组织结构树维护及用户帐号维护功能。
图2-3 组织结构维护
本平台可定义任意类型的组织结构,包括行政部门,角色,岗位,业务组等。
本平台可自己定义功能菜单,指定菜单对应的URL,并为功能菜单进行授权。本平台的授权方式包括:对用户所属部门授权,为角色授权,直接给用户授权等多种授权方式,下面是权限及功能菜单定义界面:
图2-4 功能菜单与权限定义
通过平台生成的页面,可以为页面中的字段绑定字段校验器,这样不需要更改jsp页面代码。
图2-5 字段校验器
平台生成的页面中有显示在列表页面查询列,如果想增加或减少查询列,只需要修改表字段定义中的是否查询字段,将是否查询条件设置为“否”,然后重新生成此功能的代码即可。另外组合查询中可定义关于查询表的任意字段,并可以带括号组合自己的查询条件的逻辑关系。本平台的查询条件字段的输入方式是随着配置的输入形态自动改变的,例如是日期
输入,则查询条件自动显示日期选择器,如果是弹出窗口,自动显示弹出按钮,如果是下拉列表,查询条件列自动检索出列表项。下面是定制查询的页面:
图2-6 定制查询页面
通过平台生成的页面都具有EXCEL导入导出功能,对于单表的数据导入导出,平台用户不再需要自己单独开发excel导入导出功能。平台中可以设置哪些字段可导出EXCEL,哪些字段不在EXCEL中显示,EXCEL中的字段顺序也可以调整。下面是会员管理的EXCEL导出页面:
图2-7 EXCEL导出页面
在openjweb平台中,每个由平台生成的列表页面都会生成一个分页器,由于分页器是基于hibernate开发的,所以支持多种数据库,此分页器支持首页、末页、上页、下页、跳转到指定页,以及设置每页行数的功能。平台用户不需要为分页器编写任何代码。下面是openjweb平台的分页器:
图2-8 分页器
Openjweb平台在设计时考虑到了多语言的支持,数据库和页面都是UTF-8格式,页面的标签文字采用读取资源文件的方式,因而支持国际化,如果建表的时候设置了页面标签的多种语言文字,生成页面时会自动将不同语言文字的资源文件。
图2-9 Portlet风格的后台首页
通过平台生成功能代码后,不需要在IDE开发环境中执行代码编译,可直接在页面中点“编译代码”,编译完成后新代码生效。
OpenJWeb平台预置了全文搜索引擎、邮件发送等多种定时器,用户还可以开发和配置更多的定时器。
OpenJWeb实现了邮件管理功能,一个用户可管理自己设定的多个邮箱,支持多邮箱邮件接收,邮件群发,如果用户一次发送的邮件太多,可将邮件放到系统发件箱中由系统定时发送。邮件收发都支持html格式正文和多附件。
OpenJWeb平台提供了基于FckEdit的可视化的在线编辑器。在简历编辑、信息编辑、邮件正文编辑等多处都可以使用fckedit在线编辑器。
使用平台可选择性地生成指定表的业务逻辑接口和实现类,并自动按声明式事务配置spring业务逻辑组件,在此接口中扩展的任何业务方法都支持事务处理。
由于tomcat本身不支持JTA,所以对于在tomcat环境下实现跨数据库事务需要集成第三方JTA工具,这就是JOTM,不过在BEA Weblogic和IBM Websphere应用服务器中由于自带JTA支持,所以不需要集成JOTM。
专业的开发平台不仅要支持功能授权,还要支持复杂的数据授权,openjweb平台支持两种数据授权形式:
(1) 设置一个SQL来过滤不同用户或角色所能访问的数据,最典型的例子就是每个人只能看到自己收发的邮件。
(2) 可为每个数据行精确指定不同操作的数据权限,例如可分别为每个档案指定允许下载的角色或用户,以及权限的有效期起止时间。
下图是为档案基本信息设置的查询权限:
图2-10 为档案基本信息设置数据权限条件
图2-11 为一个档案指定访问角色和权限的有效期间及访问次数
OpenJWeb集成了Lucene搜索引擎,并开发了html,txt,pdf,excel,word等格式的文件解析器。在OpenJWeb平台中,当信息发布为静态页面后,静态页面会保存到一个公共目录,平台的后台定时器可定时调用搜索引擎进行索引重建。所以每隔一段时间,发布的静态页面就可以通过搜索页面按关键词进行检索。
本平台将CAS产品和Spring Security进行了集成,在CAS认证成功后,由Spring Security读取系统权限信息,权限信息是存在本地数据库中。
本平台的在线交流是纯web实现的,可实现双人在线交流(不需集成任何第三方产品)。见下图:
图2-12 在线交流(即时通信)
本平台实现了通过Cookie的方式与Jform电子论坛进行单点登录集成。因为打通了与Jforum的单点登录,所以登录到平台的用户如果第一次访问jforum论坛,jforum论坛系统会自动注册并用此帐号登录jforum论坛。
图2-13 集成Jforum电子论坛
OpenJWeb平台实现了简易工作流,用户可自定义流程的状态位,并且可以设置审批动作(与页面按钮)对应,不同的审批动作可将业务对象的状态位从A状态改变为B状态。每个审批动作都自动生成对应的页面按钮,系统还可指定审批动作的执行权限。具体见开发视频。下图的页面中,一审通过,一审拒绝等按钮都是根据审批流中的设置自动生成的审批按钮。
图2-14 根据审批流设置自动生成审批按钮的页面
在简易审批流的支持下,平台实现了信息审批流的配置,用户使用Fckedit在线编辑器,在审批通过后,发布信息的同时可生成静态的html页面,信息发布前也可指定对应的栏目。静态页面的内容可被平台的搜索引擎定时索引。具体见开发视频。
图2-15 信息编辑页面
图2-16 信息预览页面
Openjweb平台实现了手机短信群发管理,已经开发了手机短信发送接口,可根据实际环境来替换手机短信驱动。手机短信一般可用两种方式:(1)由手机短信服务运营商提供短信发送的URL连接;(2)自行购买手机短信发送硬件设备。
经测试,平台在oracle,Sybase,sqlserver,mysql环境中都可以使用,在平台中建表可支持多种数据库。
Openjweb平台可定义任何表字段间的约束关系,由于在实际应用中,不方便为任意表字段之间增加约束,但平台可以配置逻辑主外键关系,当被引用字段的数据被其他表字段引用后,则主表记录不能删除。见下图:
图2-17 非物理主外键字段约束设置
本平台实现了在线考试功能,可设置试卷、试题、答案及分数,并可以自动评分(简答题需要人工评分)。
图2-18 在线考试系统配置的试卷
为某客户开发的客户关系管理,用于呼叫中心电话访谈。此系统可设置电访问卷,并通过电访活动关联访问对象和问卷,在电访时根据电访名单通过拨电话的方式电话逐个访问客户,并记录客户选择的答案(座席人员根据电访问卷询问客户)。
为某客户开发的档案管理子系统,支持档案收集整编,鉴定与销毁,附件管理,档案授权,电子档案下载权限控制,档案借阅等功能。本系统支持对任一档案的下载、借阅权限进行控制,可精确设置档案下载或借阅权限的有效期间、下载或借阅次数,及下载或借阅权限对应的角色或个人。
正在与某工作流团队集成。正式带图形定义的工作流版本预计在2.0版本推出。
OpenJWeb后续开发计划:
(1) HR子系统开发。由 HR研发团队负责。
(2) 工作流引擎设计及GUI工具集成。
(3) 进销存与电子商务子系统。
(4) 表结构导出为word或EXCEL文档(按子系统导出)。
(5) 多数据库之间表结构转换以及数据导入(用于为不同类型数据库的产品分发,需开发转换工具)。
(6) Openjweb门户网站搭建及运营(需设计网页及购买服务器)。
(7) JBPM研究,考虑是否集成到OpenJWeb
(8) Spring Security的深入研究和应用,考虑下版本对Spring Security3 的支持。
(9) CAS最新版本的深入应用及汉化。
(10) 通过EXCEL定义的表单样式生成HTML表单。
(11) 通过EXCEL定义的表结构自动一键式实现建表、生成功能页面代码、编译、授权。
(12) 深入应用Groovy动态语言,考虑如何方便最终用户自己增加新的字段或功能等。
(13) 为表单动态增加功能按钮及映射action层、业务逻辑层的方法。
(14) 协同办公产品开发。
(15) 设置业务对象的状态监控器,状态变化时是否生成相关信息并通知对应的角色,并推到相关人员即时通信窗口中。设定监督哪些数据库表字段状态变化,产生提醒或警告消息,必要的时候自动发送邮件通知。
(16) JAMES邮件服务器深入研究。
(17) JMS及Apache ActiveMQ深入研究。
(18) OpenJWeb支持多数据库及websphere,bea weblogic的兼容性测试和改造。
(19) 多语言的深入实现:目前标签的多语实现了,但数据库哪些字段需实现要多语没有完善的实现方案。
(20) 华军软件园等网站发布平台免费共享版本。
(21) 增加数据状态控制(增加逻辑删除状态-垃圾箱)、已拖入垃圾箱数据的回收。数据状态初始值设置及启用。
(22) 权限的委托与回收,个人权限列表查询(及权限来源)。
(23) 特殊权限设置,设定个别权限不能为指定用户使用,虽然此用户通过角色拥有了权限。
(24) XML API深入开发。
(25) prortal页面定义工具(可拆分表格,并在表格中添加页面元素)
(26) webform表单定义工具
(27) 报表与图表,JFreechart集成、BI基础开发,OLAP钻取,旋转,切片的实现。
(28) 现有平台BUG的修改。
(29) 整合最新版本的spring,spring security,struts2等基础开源框架。