基于S2SH和SOA科技查新管理平台的设计
2013-08-01卞艺杰李亚冰邹银马
赵 喆,卞艺杰,李亚冰,邹银马
(河海大学商学院,江苏 南京 211100)
科技查新自20世纪80年代产生至今,对推动我国科技事业的发展发挥了重大作用。但在发展过程中,也存在查新机构分布不均衡、查新收费标准不一和查新员工作量大等问题[1]。针对这些问题,笔者提出基于SaaS(software-as-service)模式的科技查新管理平台,使具有查新资格的查新机构通过统一的门户,访问所租赁的服务,将查新机构和委托方在网络环境下集成一体,为查新机构及查新用户提供一个基于互联网的工作平台,方便查新用户选择查新机构,进行查新委托,辅助查新员开展业务,查新机构更好地进行任务分配、协作审核、网上费用管理及其他管理,从而提升管理效益。平台充分利用SOA架构松散耦合的优势,采用ExtJS框架和轻量级架构S2SH实现相应业务模块,采用Axis2将各个业务模块封装成服务并提供相应的服务接口,较好地解决了分布式平台的互操作和紧耦合问题。
1 相关技术原理
1.1 SOA架构
SOA采用面向服务的软件封装技术,以服务接口和服务实现的方式呈现,将应用程序的不同功能单元(称为服务)通过服务之间的接口和契约联系起来[2]。SOA主要包含3种角色,如图1所示。该角色分别是服务提供者(services provider)、服务使用者(servicesconsumer)和服务注册中心(services registry),它们各自承担着服务注册发布(publish)、服务查找(find)和服务绑定(bind invoke)的工作。
图1 SOA的架构体系
1.2 S2SH框架
科技查新管理平台总体业务不复杂,流程比较规范,数据量也不大,并且信息服务机构运营的预算较少,也缺少大型维护的技术人员。因此一个主要基于开源的、轻量级的架构是查新平台首选的技术架构。基于S2SH的框架具有开发稳定、层次之间低耦合、业务逻辑和表示层分离等优点[3],对于查新平台主要业务模块的开发,笔者采用基于Struts2、Spring和Hibernate的整合框架。
Struts2作为表示层的主要框架,由4个部分组成,分别为核心控制器Filter Dispatcher、业务控制器、模型组件和视图组件。其中核心控制器Filter Dispatcher是Struts2框架的基础,包含了框架内部的控制流程和处理机制,它将业务逻辑与持久化和表示层分离,形成了模型 Model、视图View、控制器Controller的结构,并为其提供了各个部分的实现组件[4]。同时Struts2还提供了功能强大的标签库,便于团队协作开发,有效提高开发效率。
Spring是一个轻量级的控制反转(inversion of control,IOC)和切面编程(aspect oriented programming,AOP)容器框架,主要负责管理业务逻辑层。作为轻量级框架最主要的表现是,基于Spring开发系统中的对象一般不依赖于Spring的API(application programming interface)[5];Spring 的 IOC控制反转机制能够减轻组件之间的依赖关系,提高组件的可移植性;Spring的AOP思想通过将业务逻辑从系统服务中分离出来,实现了内聚开发。
Hibernate作为优秀的持久层框架,利用对象/关系映射(object/relation mapping,ORM)的机制解决了业务逻辑与数据访问相分离的问题。Hibernate对JDBC(java data base connectivity)进行轻量级封装,并提供了功能强大的查询语言(hibernate query language,HQL)和更加面向对象的API,方便开发人员对数据库的访问,使系统开发更加简单和高效[6]。
2 基于SOA的ExtJS+S2SH框架
SOA的实质是要实现服务与技术的完全分离,从而达到服务的可重用性。轻量级框架S2SH开发项目架构清晰,高内聚,低耦合,可扩展性强[7],这符合SOA的设计思想。图2是一个基于SOA的ExtJS+S2SH的框架结构模型图,其内容为:
(1)表示层。表示层在客户端主要采用ExtJS框架,能够简化Ajax开发,响应速度快,实现无需刷新页面便可向服务器传输或读写数据,并实现与服务器的异步通信。同时ExtJS在客户端与Struts2框架的整合,可以弥补Struts2标签之间缺少交互的弊端[8],也可以应用ExtJS自有的组件使页面更加美观。Struts2获得客户端发送的请求,调用相对应的Action来处理请求,最后将执行结果返回客户端。
(2)控制中介层。控制中介层主要是通过Struts2框架来实现。Struts2中的Filter Dispatchar管理每一个Action,对它们进行上下文的控制和转换,并通过调用控制中介层的Action和服务调用层进行交互获取相应服务。
(3)服务调用层。服务调用代码对控制中介层的服务请求进行处理,用来与服务进行交互,从而向系统内增加、更新或者检索信息。服务调用代码的编写需要依据从服务总线获得的服务WSDL描述文件。企业服务总线(enterpriseservicebus,ESB)[9]作为服务请求者与服务提供者之间的中介,对服务进行集中管理。在ESB的作用下,服务请求不是直接传递给服务提供者,而是经ESB转发给服务提供者,在得到返回消息后,ESB再转给服务请求者。
图2 基于SOA的ExtJs+S2SH框架模型图
(4)业务逻辑层。使用Spring框架的轻量级容器IOC机制支持AOP,提供简单统一的控制文件。Web Service作为服务的提供者,对服务进行封装,主要提供粗粒度的服务,与业务逻辑相对应。利用Spring框架对会话及事物进行封装和管理,向上为上层提供功能接口,向下通过DAO(data access object)与Hibernate数据持久层进行交互,调用数据库完成业务处理。
(5)数据持久层。数据持久层使用Hibernate框架,使用ORM功能,通过Hibernate提供的HQL操作实体对象,直接与底层关系数据库(relational data base management system,RDBMS)进行交互。
3 查新平台分析及设计
3.1 科技查新平台工作流程设计
查新业务作为工作平台的主体部分,基本流程是在一般科技查新工作流程的基础之上,尽可能地简化查新工作人员的工作量,实现事务处理信息化,在平台基础上采用数据库技术来实现规范化管理和程序化操作。科技查新协作单位以及查新工作人员必须严格遵守《科技查新规范》所规定的行为进行操作。查新流程主要有:查新合同提交及审核,分配查新任务,查新报告提交及审核,查新报告查收,用户意见反馈等。具体的工作流程如图3所示。
图3 平台工作流程图
3.2 平台主要功能设计
科技查新工作平台包括3个部分,分别为查新机构管理、委托方管理和平台管理,功能结构图如图4所示。
图4 系统功能结构图
(1)查新机构管理。查新机构管理主要是为在平台注册的查新机构所搭建的,主要包括查新机构基本信息管理、人员权限管理、查新项目管理、机构门户网站及对应的后台维护4个部分。其中人员权限管理是核心,查新机构可以根据工作人员工作性质的不同,动态分配员工权限,如查新员、审核员等不同权限设置。
(2)委托方管理。委托方管理即委托方个人用户中心,主要分为个人基本信息管理和委托项目管理两部分。其中委托项目管理模块又包括合同管理、账务管理以及查新报告管理。委托用户登录用户中心后,可添加修改个人信息,在线填写查新合同,也可查看、跟进委托项目状态,并能向查新机构提出相关意见。
(3)平台管理。科技查新平台管理主要分为门户管理和用户管理两部分。其中门户管理主要对查新平台相关信息模块进行管理,包括平台简介、查新知识、查新案例、注册登录、最新动态和机构查询等基本模块。各模块都具有增加、修改、删除、查询等基本操作,方便平台管理员维护更新。用户管理主要是SaaS平台用户以及机构用户的信息,包括租户注册,租户审核(主要针对查新机构租户,审核机构合法性),提供租户信息的增加、修改、删除、查询基本操作功能,并对租户所租用或购买的服务进行管理,设定权限。
3.3 数据库设计
在网络工作平台设计中,数据库设计对于数据安全、数据速度、空间节约等都非常重要。如果设计不合理,不仅会导致增加、查找等数据库操作困难,而且会影响到整个平台的工作效率。科技查新平台采用MySql数据库,整个平台在数据库中定义了多个数据库表以保证平台的正常运行,数据库表主要分为机构表、范本表(如查新合同,查新报告等)、人员相关信息表、门户网站模块表4大类共55张表。列出几个主要的数据库表分别描述为:①查新机构表(TInstitution),包括ID,机构名称,机构代码,通信地址,邮编,电子邮箱,机构负责人,负责人电话,机构传真,机构联系人,机构联系人电话,机构擅长领域,机构简介等;②委托合同表(TContract),包括ID,合同编号,查新项目的ID,查新点与查新要求,查新的科学技术要点,参考文献,中文检索式,英文检索式,中文检索词,英文检索词,分类号,专利号,合同订立时间,合同履行期限,合同履行地点,合同履行方式,保密及法律责任,查新费用,费用支付方式,违约赔偿金相关事项,争议解决办法,名词术语解释,保存时间等;③委托方基本信息表(TClient),包括ID,委托人名称,密码,单位名称,通信地址,邮政编码,电子邮箱,负责人,负责人电话,负责人传真等;④查新方网站基本信息表(TIntroduce),包括ID,模块名称,标题,内容,发布人,发布日期,发布单位等。
4 科技查新工作平台实现
4.1 ExtJS+S2SH框架搭建
科技查新工作平台页面采用ExtJS框架,应用ExtJS不需要其他配置,只需要在页面head中引入ExtJS的样式及ExtJS库文件即可。在平台开发过程中,综合运用了ExtJS所提供的面板、窗口、对话框、选项板、工具栏、表格、表单、按钮等组件,真正实现了页面美观,交互性强的设计。Web.xml中Struts2的配置描述如下:
Strusts2、Spring和Hibernate框架的应用需要把各自的库文件加载到当前应用的类库编译路径下。应用Struts2框架首先要在Web.xml里进行配置,代码如上。应用 Spring框架需要配置Spring配置的路径以及加载Spring上下文的监听器,清单如下:
4.2 SOA框架搭建
Web Service作为SOA最好的实现手段之一[10],能够较好地解决分布式平台的互操作和紧耦合问题,实现方式有多种,如Xfire、Axis等。笔者提出的科技查新工作平台采用Axis2作为Web Servsice的实现工具。
应用Axis2首先需要将Axis2相关的Jar包导入到Web-inf中的lib里面,在Web.xml中添加servlet的配置和部署信息,清单如下:
4.3 AOP的事务管理
Spring提供了封装良好的 AOP,在完成Spring和Hibernate框架整合后,完成声明式事务管理只需要修改Spring的配置文件,清单如下:
清单中所示配置文件总共完成了3件事情,分别是给事务管理器注入session Factory、定义事务语义和定义切面以便把事务行为切入到类中。第一个标签<bean>把Hibernate的session Factory通过IOC机制注入Spring提供的事务管理器HibernateT-ransactionManager;第二个标签<tx:advice>用来封装需要施加的事务语义;第三个标签<aop:config>用来配置AOP的增强规则,把事务行为插入指定的类中。首先通过<aop:pointcut>定义一个切入点,让AOP框架知道事务规则插入的类的位置;其次通过<aop:advisor>定义一个切面,这里定义了两个属性,第一个属性advice-ref是把上面定义的<tx:advice>指定到这个切面上,第二个属性pointcut-ref用来指定这个切面需要切入的地方。
通过Spring的事务管理方案,事务管理从代码中独立出来,使整个系统更简洁明了,同时也提高了团队的开发效率。
5 结论
基于SaaS模式的科技查新管理平台是根据查新工作需要,通过SOA的架构体系对查新工作松散耦合的粗粒度服务进行设计、组合和应用。平台基本业务模块基于ExtJS和S2SH框架开发,通过Axis2实现Web Service,充分利用了各个框架的优势,具有高效可靠、安全稳定等优点。所开发的工作平台优化了查新站的工作流程,建立了新的服务模式,充分体现了多元化、网络化、数字化,不仅方便了科技查新用户,而且提高了查新工作效率和服务水平,为科技查新工作的科学化、规范化、标准化提供了实现基础。
[1] 董月玲,张丽英,季淑娟.我国高校科技查新工作的现状分析及研究[J].图书馆,2011(3):108-110.
[2] 叶宇风.基于SOA的企业应用集成研究[J].微电子学与计算机,2006,23(5):211 -213.
[3] 彭宝琴,罗晓沛.基于J2EE轻量级框架组合的消费信贷系统的实现[J].计算机工程与设计,2008,29(3):647-649.
[4] 王春超.基于J2EE架构的SSH组合框架的研究[D].长春:长春理工大学图书馆,2010.
[5] 李天鸣,何月顺.基于ExtJS技术与SSH框架的权限管理研究[J].计算机应用与软件,2011,28(5):165-167.
[6] 王磊杰,崔军波,韩红宇,等.Java EE开发指南:基于Spring/Struts/Hibernate的实现[M].北京:人民邮电出版社,2007:347-367.
[7] 杨钟鸣.基于SSH框架的社区管理信息系统设计[J]. 东华理工大学学报:自然科学版,2010,33(4):378-383.
[8] 朱彬,王安保,王娜.用Struts框架建立JavaWeb应用程序[J].计算机辅助工程,2005,14(2):45-48.
[9] 蔡昭权.基于ESB的异构系统集成实现[J].计算机应用,2008,28(2):538-540.
[10] 翟峰,郝克刚,葛玮.基于 SOAP构建 Axis上的Web Services[J].计算机应用与软件,2008,25(1):156-158.