1.1.G4Studio概述 G4Studio是一套基于JavaEE面向中小软件企业的集需求分析、软件设计、编码实现、运行测试、运营维护、软件项目管理等于一体,力求覆盖整个软件生命周期的免费开源产品套件。以“标准功能可复用、通用模块可配置、行业需求快速开发、异构系统无缝集成”为目标,全方位立体化的为企业信息化建设,打造行业应用管理信息系统构建企业应用门户提供强有力的一站式解决方案。 1.2.G4Studio开源协议及商用注意事项 在富浏览器端开发框架中,我们引用了在GPL协议下发布的ExtJSV3.1版本。按照协议要求,G4Studio也在GPL协议下发布。如果您使用G4Studio进行闭源商用系统开发,作者建议大家购买ExtJS商业授权,但具体如何操作取决于项目的实际情况和大家对ExtJS版权的认识。其次,虽然G4Studio自身也在GPL协议下发布,但无论是在过去、现在还是可预见的将来,我们都始终坚定不移的坚持开源发布,免费使用。您无需购买任何G4Studio产品的商业授权。(了解GPL协议) 1.3.G4Studio的前世与今生 G4Studio项目于2007年启动。由于技术积累和选型问题先后夭折3个版本,历时近4年的艰辛研发于2010发布了里程碑意义的V1.0版本。随即受到业界广泛关注和好评,大家在使用过程中也提出了许多宝贵意见和建议,为平台的完善和后续版本的发布起了很大的推动作用。 G4Studio是一个生命力及其旺盛的项目。截止今天,我们已经发布多个版本更新到了V3.1。今后,我们依然会本着“分享经验-传递价值-成就你我”的G4价值观,一如既往的持续重构,不断优化完善,誓为国内开源界打造一个优秀的标杆级开源平台项目。 您可以通过[附录3:平台版本发布备忘]了解到G4Studio一路走来的点点滴滴。 1.4.G4Studio家族成员简介 G4Studio既是行业应用快速开发平台解决方案也是在此开发平台之上衍生的一个开源软件产品线。她包含的内容及其广泛,覆盖了行业应用系统集成与开发、系统运维、软件企业管理等诸多方面。主要由基础类库体系、服务器端开发框架、富浏览器端开发框架、富桌面端开发框架、系统管理及权限参考模型、通用业务参考实现、门户网站配置与开发框架、平台辅助开发插件、标准范例系统、软件企业管理信息系统十大核心部件构成(见下图1)。 1.4.1.基础类库体系 基础类库体系包含很多基础组件和实用类。为平台的其它组件提供了一系列的基础服务和底层支持。其中主要包括:数据结构、异常包装、XML处理器、JSON处理器、Properties处理器、序列号发生器、模板引擎、辅助工具类等。 1.4.2.服务器端开发框架 服务器端开发框架是以业界久经考验的Strust1.3、Spring2.5、iBatis2.3开源项目为核心,辐射诸如事务、拦截器、过滤器、审计监控、异常处理、安全日志、邮件、作业、工作流引擎、G4内置Servlet容器、FTP传输、数据级权限、单点登录、企业服务总线等企业计算逻辑的面向服务的基础框架。 1.4.3.富浏览器端开发框架 富浏览器端开发框架提供了一整套完善的开发具有丰富UI展现力和良好人机交互体验的客户端开发方案。其中主要包括ExtJS库、G4UI自定义标签库、Excel报表、Applet报表、PDF报表、Flash图表、JFreechart图表、Ocx控件交互、Applet交互、Http上传下载等UI组件技术。 1.4.4.富桌面端开发框架 富桌面客户端开发框架是在Swt/JFace图形库之上,以Eclipse项目推出的富客户端开发平台(RCP)为依托的一个强大的、快速的、可扩展的富客户端应用开发框架。通过G4Studio平台提供的企业服务总线机制可以多协议多种资料交互格式与部署在服务器端的JavaEE应用建立高速安全的数据信息交互通道。集中体现了G4Studio平台对客户端双兼容架构的完美支持。 1.4.5.门户网站配置与开发框架 门户网站配置与开发框架是一个以配置为主开发为辅的快速搭建企业动态门户网站的框架。针对门户网站和企业级Web应用富客户端UI的差异,我们封装了一些非常轻量级的网站UI组件和预设了大量的门户网站通用功能。力求做到,标准模块可复用、通用模块可配置、差异需求快速开发。 1.4.6.平台辅助开发插件 平台辅助开发插件是基于EclipsePlugin技术开发的与EclipseIDE无缝集成的G4Studio平台开发插件。使用它可以方便的完成G4工程新建向导、后台代码生成、WebUI代码生成、工作流程设计、打包部署等日常开发常见任务。 1.4.7.系统管理及权限参考模型实现 系统管理及权限参考模型实现是G4Studio平台预先实现的标准模块可复用部分。我们在结合各类企业应用系统实践经验后,抽象出一组系统管理模块和权限授权模块作为平台的标准功能模块提供。系统管理包括:字典维护、全局参数表维护、在线帮助手册维护、Request请求跟踪、Session会话监控、JDBC执行监控、Service监控、服务器状态监控、系统预置图标等;权限参考模型实现包括:组织机构管理、角色管理与授权、人员管理与授权、菜单资源管理、UI元素托管、UI元素角色授权、UI元素人员授权等。 1.4.8.通用业务参考实现 通用业务参考实现是G4Studio平台的通用模块可配置部分。主要包括系统Portal门户定制、站内短信模块、通知公告模块、文件管理模块等。 1.4.9.标准范例系统 标准范例系统提供了G4Studio平台所有UI组件和部分服务器端功能的演示。该子系统作为平台的一部分随平台一起发布,为大家提供了丰富的实例和参考代码。研习范例系统是G4新手入门基于G4Studio平台二次开发的首选之捷径。 1.4.10.软件行业企业管理信息系统 软件行业企业管理信息系统(OurERP)是基于G4Studio平台开发且作为G4Studio产品线一部分,专门为中小软件企业量身定制开发的行业ERP系统。OurERP将深入研究软件生产工艺及过程质量保障、IT项目管理理论,广泛邀请业界各层人士参与分析设计,从中小软件企业自身实际出发并结合先进的软件过程和IT项目管理理念,理论联系实践,打造一套蕴涵了先进管理思想和最佳管理实践的适合中小软件企业自己用的开源ERP系统,以满足和规范引导中小软件企业日常管理需求,解决IT项目管理难题,与G4Studio产品线部件一起让中小软件企业飞起来! 1.4.11.G4Stusio技术白皮书 《G4Studio技术白皮书》也就是本文档,作为G4Studio官方唯一指定的权威参考文档。 1.5.G4Studio技术架构体系 1.5.1.G4Studio平台技术架构总体结构图 本节将从G4Studio底层技术架构的静态视角带领大家一起走进G4Studio。如下图2为G4Studio平台技术架构总体结构图。 关于上图的一点说明(请结合图中数字标注阅读): 整个生命周期都提供了不同程度的支持。 本节将从G4Studio层次调用和分层模型和调用的动态视角和大家一起走进G4Studio。如下图3为G4Studio平台技术架构分层调用图。 关于上图的一点说明(请结合图中数字标注阅读): ①、G4Studio平台UI表现层同时支持富浏览器客户端和富桌面客户端两种UI表现方案,且支持移动终端设备的数据接入和访问。(G4Studio平台目前版本没有提供移动平台开发框架,仅提供移动终端设备的数据访问交互接口) ②、控制逻辑层主要由Web过滤器和Struts-Action组成。接收浏览器客户端请求,调用视图服务层、业务模型服务层、数据访问层来完成业务处理和数据访问以及页面流程跳转,并将处理结果返回给浏览器客户端。特别强调:缺省情况下,控制逻辑层直接调用业务模型服务层完成业务逻辑处理;针对非事务类交易,比如查询交易,我们也可以在控制逻辑层使用数据读取接口g4Reader直接和数据库交互进行数据的读取操作。 ③、视图服务层是SOA架构的扩展结构,解决与周边软件的互联互通。它将业务模型服务层的商业逻辑组件进行包装或重组后,以多种远程服务的形式发布,对外暴露服务,提供给第三方系统或G4Studio平台的Win32桌面客户端调用。完成异构系统之间的无缝集成和数据交互。特别强调:试图服务层只提供给G4Studio平台的Win32桌面客户端以及第三方系统调用。对于大部分行业系统而言,不建议在控制逻辑层调用视图服务层,而应该跳过视图服务层直接调用业务模型服务层。 ④、业务模型服务层完成对行业业务商业逻辑的封装。提供给控制逻辑层或视图服务层调用。 ⑤、数据访问层提供和数据库之间的数据访问和对数据进行持久化。在G4Studio平台中,我们为了简化DAO层的开发,并没有对数据访问层进行独立分层。在G4studio平台中,数据访问层是一个逻辑层的概念,我们暴露了两个数据访问接口g4Reader和g4Dao。其中g4Reader数据访问接口直接和控制逻辑层耦合,完成非事务类查询交易操作;g4Dao数据访问接口直接和业务模型层耦合,完成事务类交易的数据访问。 ⑥、浏览器客户端通过HTTP请求访问控制逻辑层,完成数据采集、编码转换、安全认证等操作。 ⑦、控制逻辑层可以访问视图服务层,但对于大部分的应用系统而言,我们强烈建议控制逻辑层跳过视图服务层,直接访问业务模型服务层。 ⑧、控制逻辑层调用业务模型服务层完成业务逻辑处理。 ⑨、控制逻辑层直接调用数据访问层的非事务类数据访问接口进行查询类交易处理。 ⑩、视图服务层调用业务模型服务层对其进行包装或业务重组后发布为远程服务组件。 ⑾、业务模型服务层调用数据访问层的事务类数据访问接口进行数据持久化处理。 ⑿、数据访问层和数据库之间的交互。 1.5.3.G4Studio技术架构数据流图 本节将从G4Studio平台数据交互和流向的视角带领大家一起走进G4Studio。如下图4为G4Studio平台技术架构数据流向图。 关于上图的一点说明(请结合图中数字标注阅读): ①、浏览器通过HTTP以Form提交和请求参数提交的方式首先经过平台的编码过滤器和安全认证器,然后将数据采集到控制逻辑器Action中,Action将界面数据包装为Dto后调用Dao进行数据查询或调用业务服务组件BizService进行业务处理后将查询结果集或业务处理返回结果序列化为JSON对象通过HttpSerletResponse返回给浏览器客户端。 ②、Action将界面采集的数据组装为DTO对象后调用试图服务ViewService。特别强调:一般情况下,我们不走这条线。只有在系统的业务服务组件要同时支持各种异构客户端接入的时候,出于接口统一的因素,我们才需要考虑浏览器客户端是否要走这条线路。注意:并不是说有异构客户端接入时浏览器客户端就必须走这条路,而是如果为了要和其它客户端保持统一的接入口时才需要在Action调用视图服务。因为调用视图服务和其它异构客户端保持一致接口是需要付出性能代价的,具体情况得根据实际项目而定。 ③、Action将界面采集的数据组装为DTO对象后调用业务服务组件BizService进行业务处理,并将处理结果以DTO对象返回给Action。 ④、针对一些非事务类的查询操作,为了简化DAO编程,我们可以在Action中将界面采集的查询条件包装为DTO对象后直接调用非事务类DAO查询接口g4Reader,并将结果集以DTO、 JavaBean、ArrayList等类型的数据对象返回给Action。 ⑤、业务服务组件BizService将相关业务数据组装为DTO对象或者JavaBean后调用事务类DAO访问接口g4Dao进行数据查询、数据持久化和存储过程调用操作。 ⑦、数据访问接口将DTO对象、JavaBean交给DAO实现将其映射为相应的SQL语句向数据库发出请求,并将数据库返回的结果集映射为DTO、JavaBean、等数据类型对象返回给数据访问接口调用端。 ⑧、对于桌面客户端我们可以将其简单分为2类。一类是使用G4Studio平台提供的基于SWT/Jface图形库的富桌面客户端开发框架开发出来的桌面客户端,对于这种客户端而言,我们使 用HttpInvoker技术直接通过http协议访问视图服务ViewService,相互之间可之间通过DTO或者其它任意可系列化的Java对象来进行参数传递和数据交互。另一类是使用其它开发工具比如Delphi、VB、VC等开发出的桌面客户端,对于这类桌面客户端发出的请求可以通过WebService使用Soap协议调用视图服务组件,以系列化的XML资料格式进行数据交互。 ⑨、对于移动终端设备,我们提供Webservice数据接入技术。 1.6.G4Studio第三方组件依赖关系 G4Studio平台取得的成绩,离不开大量的第三方开源组件的贡献。也正式由于这些开源组件才成就了Java阵营开源社区百花齐放,欣欣向荣的大好景象。在平台研发过程中,我们反复论证精选了一些成熟稳定的开源组件应用到G4Studio中来,如下图5所示:G4Studio第三方组件依赖关系。在此,我们也像这些开源组件的作者表示由衷的感谢和敬意。提示:如下所示部分组件为商业不友好组件或收费组件,建议大家使用时根据自己项目实际情况酌情删减或按照相应组件的开源协议灵活使用。 |