段辉良
(中南林业科技大学,湖南长沙412000)
加快推进林业信息化,有利于逐步建立起覆盖各级林业部门的林业信息化体系,对提高林业信息管理和服务水平,促进林业可持续发展具有重要的理论和实际意义。软件定制开发作为一种软件开发形式,在我国还是一种新生事物,尚未被广大用户所认同。林业信息系统定制平台是行业内的软件定制开发,是以林业业务为导向和驱动,无需编写代码或只需编写少量功能扩展代码即可快速构建林业信息系统的软件平台。林业信息系统定制平台的研建将改变以往林业信息系统的研发方式,通过使用林业软件定制平台,开发人员能够集中精力关注林业信息系统研发的业务需求与管理问题,摆脱技术细节的困扰,以提高林业信息系统研发的效率。
由于自身的历史和业务状况,软件用户对于软件系统会有特殊的要求,尤其是在行业个性化需求和行业自身独有的个性化需求方面显得格外迫切。通用软件通常都是利用套装软件的管理思路及模式,让客户按照软件的业务流程实现管理的流程化套用,根本不考虑行业及内部个性化需求,这样就造成了软件在上线和使用过程中存在着相当严重的“水土不服”的现象。如不采用类似通用软件,将带来昂贵的软件开发费用及后期软件维护与升级投入。
任何一个应用系统,都具备一个最基本的功能,就是对数据进行“增删改查”的操作。软件定制平台就是抽象出这些共性,采用“标准化+行业化+个性化”的应用模式,实现数据、模板资源共享以便节约开发成本,提高开发效率,缩短开发周期。传统的C/S架构模式已经不适合应用于定制平台,B/S架构模式以互联网为基础,程序、数据、可供利用的所有资源均实现了网络化。软件开发的参与者通过网络形成协作,极大地提高了以往的软件开发效率。对于基于web的软件定制开发平台,应具有如下几个特点:①以web2.0为基础,基于互联网的B/S架构的软件。Web2.0本身也是一个软件,只不过不是最终的软件产品,而是用于二次开发的软件;②用于实现各类业务系统,web开发平台不同于传统的开发工具,需要编写代码来完成各个业务模块,基于web的二次开发平台只需要设计好自己的数据结构,进行一些简单的配置、拖拉等操作就可以完成业务系统的开发;③能够快速的实现各种报表包括复杂的图表报表的设计制作,传统的编码式开发需要自己去编写想要的各种报表,而运用开发平台通过配置就应能产生相应的报表。
目前,我国各级林业部门研发的各类信息系统均基于不同的技术架构,由不同的技术单位研制。它们的开发语言平台、数据结构、运行环境均存在不同程度的差别,提供的业务功能与信息服务也都不尽相同,形成诸多信息孤岛,导致不同的业务部门之间无法共享数据,各个林业信息系统之间基本没有对外开发扩展接口,使得系统无法进行功能扩展。目前,为解决以上问题,业界常用的技术架构有基于WCF与WebService框架及基于面向服务的体系结构(SOA)。
Web Service使用X mL扩展标记语言来表示数据,它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。WSDL来实现服务接口相关的描述。此外Web services可以注册到UDDI中心.供其客户查找使用。
基于面向服务的体系结构(SOA)是近年来软件项目开发和信息系统构建方法的一个国际性技术趋势,代表一个开放的、可扩展的、安全的和可组合的软件架构,SOA是一种松散耦合的应用程序体系结构,在这种应用体系结构中,所有的业务功能被定义为独立的服务(Service),即在业务层和表现层之间增加了一个服务层,可以独立完成特定的服务功能,使业务层和表现层相互独立,从而适应应用程序需求的变化。
自2014年1月1日起,《林业数据库设计总体规范》已经公布,该规范为实现林业数据大范围共享提供了坚实基础。使用Web Service框架及基于面向服务的体系结构(SOA)在一定程度上可以解决数据共享问题,但是依然无法解决业务的快速开发与应用快速步署问题。
ZKOSS是异步的AJAX技术,提供整套的界面的业务逻辑通讯解决方案,是三大主流RIA(Rich Internet Applications)技术之一,多人同时在线时数据通讯比较集中的情况下,可以有效的控制对资源占用,减少服务器的压力。
Hibernate是一个开源的对象关系映射框架,对JDBC进行了非常轻量级的对象封装,它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。同时,该框架是目前公认的JAVA数据持久层技术,对减少程序员开发量,规范化代码编写,便于后期维护。尤其是对事务控制方面比其他持久化技术表现更为突出,对数据要求严谨性的系统尤显其重要性。
Spring框架提供了构建 Web应用程序的全功能MVC模块。MVC作为WEB项目开发的核心环节,严格按照分层概念驱动项目开发,控制器将用户客户端与业务分开构成了MVC,Spring框架是高度可配置的,而且包含JSP技术,iText和 POI等多种视图技术。框架分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
Jquery一个优秀的Java script框架。它是轻量级的js库,把部分业务放在客户端处理,减少服务器部分压力,降低服务器资源占用,能兼容各种浏览器,能更方便地处理HT mL documents、events、实现动画效果,并且方便地为网站提供AJAX交互。
上述技术框架开发语言基于JAVA,所有技术框架、控件都是J2EE领域常用控件。框架中每一项技术至少都有5年以上的历史,经历了多个版本更新,是在多个项目实践中验证过的成熟技术,同时也是典型的MVC结构。上述框架主要体现了以下几个特点:逻辑严谨,结构清晰,规范化编写,方便维护;充分发挥客户端、应用服务器和数据库服务器的作用,又同时兼顾压力和负载的均衡;与其他应用系统的接口采用业务标准的技术和通用的做法,使系统具有良好的扩展性;清晰的层次结构,模块化的设计,方便功能性的扩展;严格的层次结构,对整个体系的安全性具有层层的保护作用(图1)。
基于以上开源框架,软件定制平台具备以下功能及特性:支持主流数据库,实现代码自动生成,支持多种数据模型,同时代码生成器的依赖性低,具有方便的扩展能力,可完全实现二次开发;框架的组件耦合度底,便于功能的扩展和修改,通用的SQL查询无须编写代码,通过页面动态查询字段、实现查询自动化定制;工具类实现了共同封装,文件的导入导出,短信接口等基本能满足项目需求;集成了简易报表工具,实现图像报表和数据方便导出或生成pdf、excel、word等格式报表。该框架的功能框图及主页面如图2所示。
图1 技术框架
图2 功能框图
通过读取表结构和字段属性,可以生成统一的前台页面、页面表单校验和规范的后台代码(Action、Service、Dao、Entity、Page等)。同时,抽离出框架,实现解耦设计使得 Struts2、Spring MVC 、Hibernate、Mybatis、EasyUI、DWZ、ExtJS等技术可以灵活组合使用,导入模板文件即可生成对应的代码。
4.3.1 数据获取及系统配置
在数据库里建立数据库表,每个字段加上注释,代码生成器会根据注释去生成页面字段对应的显示文本。
代码生成器有两个配置文件:一个用于数据源的配置,一个用于代码生成器的参数配置。这两个配置文件分别是 database.properties 和 config.properties。该配置文件主要完成WEB应用文件的根目录、生成器使用的模板文件目录、项目编码、自定义主键命名等主要内容。
4.3.2 代码生成
传统程序设计过程中,通常是根据表字段建立实体类,再编写程序DAO,然后根据业务完成Service层,action及前台页面。也就是说,只要知道了表的结构,增删改查的前后台页面的代码格式就是固定的,剩下的就是复杂的业务。而代码生成工具的目标就是自动生成那部分固定格式的增删改查的代码。可以把代码生成分为2个步骤:①读取数据库表信息,主要包括表名、字段名称、字段类型、主键、外键等。技术:java.sql.DatabaseMetaData;②编写模板文件,根据模板文件和读出的数据库表数据生成相应的代码。技术:freemarker。打开代码生成器并输入相应的参数,如图3所示。执行“生成”之后,可以在源代码目录src中可查看到新生成的java代码文件,同样地,可以在 WebRoot/webpage中看到新的自动生成的jsp页面。
图3 代码生成器
以软件定制平台为基础,通过集成各类林业基础数据,可以快速高效地开发出各类林业信息系统。目前,只实现了框架平台的主要功能,林业基础数据的获取与转换是需进一步完善和改进。软件定制开发平台的功能还需进一步完善。
[1]庞丽峰,唐小明,刘鹏举.基于WebGIS省级林业信息共享平台的研发 西北林学院学报[J].2011,26(2):180~184.
[2]曹 丹.森林资源数据共享框架设计初步研究[J].林业调查规划,2009,34(4):58 ~60.
[3]张习科.林业应用系统定制平台研究[D].长沙:中南林业科技大学,2013.
[4]彭环珂,刘旭东.面向领域的软件定制化开发方法研究与应用[J].计算机工程与应用,2005(6).
[5]王忠林,尹宝林.开源软件定制改造过程中的原型选择[J].北京航空航天大学学报,2006(3):112.