组件技术在职称评审管理系统中的应用
2015-01-29任媛媛郑长青
任媛媛,温 明,郑长青
(新疆电子研究所有限公司 新疆 乌鲁木齐830013)
新疆维吾尔自治区职称管理系统是基于WEB的在线工作流系统。职称管理系统主要包括3个子系统,一是职称申报系统。基于互联网的个人职称申报系统,主要实现职称申报人网上填报申请书,并完成申请书网上审核的过程。网上职称申报过程,也是职称申请书被流转、审核的过程。主要内容:个人注册、职称申报、数据流传审核、用户权限管理和在线定稿打印等。二是职称评审会议系统。基于局域网络的评审会议系统,主要实现专家网上召开职称评审会议。主要内容:会议组织管理、职称申报人材料审核管理、专家管理、打分管理、投票管理、评审结果打印管理、用户权限管理及接口管理等。三是办公管理信息系统,作为职称申报系统的登录入口,也是职称申报业务的重要窗口。网站包括以下内容:系统操作指南、职称评审相关通知公告、职称评审管理办法及任职文件、各专业评审委员会简介、职称公示板块及各专业评审会议安排模块等。3种系统以内部办公系统为核心,分别通过独立的数据包将相应的信息结合起来。
职称评审会议系统能够实现网上审阅申报材料、按照申报资格量化赋分表打分、得分统计、按会议要求灵活设置投票模式、评审结果打印等功能。职称评审会议系统能够实现现场统计打分、投票功能,同时评审结果现场公示,更体现了职称评审中“公开、公平、公正”的原则。
1 组件技术
组件是一个独立的可传递的操作集合,是软件开发中一个可替换的软件单元,它封装了设计决策,具有特定的功能。这个封装体常被我们称作组件。每个组件会提供一些标准且简单的应用接口,允许使用者设置和调整参数和属性。用户可以将不同来源的多个组件有机地结合在一起,快速构成一个符合实际需要(而且价格相对低廉)的复杂(大型)应用程序[1]。
当前主流的分布式组件技术标准主要有3个:Microsoft公司的.NET技术,OMG组织制订的CORBA规范以及SUN公司的JavaBean/EJB标准。.NET组件技术作为微软推出的新一代组件技术革命,在组件化开发方面有着自己独到的设计。.NET组件开发是基于.NET Framework的,在设计体系结构上采用了分层的设计模式,使跨平台成为了可能,且提供了内容极其广泛的类库,从多种角度简化了开发过程,并且支持混合语言开发,使组件的同步分布开发得到了实现。在.NET平台中,组件是指实现System.ComponentModle.IComponent接口的一个类,在Visual Studio.NET环境下开发的类经过编译后生成DLL文件,就是我们需要的组件的形式[2]。鉴于以上.NET的各种优势以及C#构件化的设计思想,本文的实例采用VisualStudio2008作为前端的软件开发平台,文中的示例代码选择编程语言 C#。
2 设计思路
职称申报系统中最主要的功能是实现数据 (申请书)的自动流转。为了提高系统的重用性,引入组件技术来搭建系统框架,将系统中功能较独立,需要重复使用的业务功能模块封装成组件或引入相应的成熟组件。由于组件的接口明确,对组件的改变不会影响到系统的其他部分,从而在最小改动范围内实现对系统进行扩充及改变。相比其它组件技术规范,Microsoft的.net作为一种产品,已经集成到Windows操作系统中,用户可以直接使用。考虑到本系统的运行平台是Windows系统,系统选择使用.net系统中的组件全部遵循这一标准。
2.1 组件接口设计
基于组件技术建立系统的关键在于组件接口(interface)的定义及实现。从概念上说,接口是一组较高层次的、抽象的系统功能的集合,也是一组模型必须实现的功能的“契约”的集合。接口本身并没有规定某一功能具体应如何实现,而仅仅指出了作为一个模型,从抽象的意义上应当实现的具有共性的功能。从另一角度来说,接口具有类似于硬件元器件中的接线端子的功能,起到对象间的连接点的作用[3]。接口在保留面向对象的封装的同时,也简化了对象间的通信过程。通过确立了通用的组件接口后,就可得到一个灵活的系统架构,系统的主程序仅需对抽象的接口进行操作,而无须过多考虑提供该接口具体实现的实际功能。
下面用一个例子来简单介绍下本系统中接口实现的思路。接口的实现其实就是定义一个类继承于该接口,从而实现接口与实现的分离。
以开会子系统中的投票功能为例说明IAtoolBorrow接口的ExecuteBorrow方法的实现情况,实现代码如下:
Public class AtoolBorrow:IAtoolBorrow{
Public void ExecuteBorrow(string toolID,string staffID,
string equiID){
if(toolID==null)return;
string p_tool_borrow=”sfrrms.pkg_tools.p_borrow”;
//引号中内容为投票功能在数据库中的
存储过程名
OracleParameter[]ora_para={toolID,staffID,equiID};
DataServer.ExecuteNonQuery(p_tool_borrow,ora_para);
//执行投票功能,其中 DataServer.ExecuteNonQuery是
数据执行组件中定义的方法
}
}
执行“生成最终结果”,在该类库文件的 bindebug目录下生成一个dll文件。
2.2 组件设计
在设计系统时,为适应系统需求的变化,按功能设计了3种类型的组件,分别是基础组件、组合组件和行业性组件。基础组件处于平台最低层,是整个系统的基础,主要面向数据管理,提供基本的交互过程,并以灵活的方式与数据库系统连接;组合组件由基础组件构造而成,面向通用功能,用以简化用户开发过程,如显示工具组件、选择工具组件、编辑工具组件、属性浏览器组件等等,它们之间的协同控制消息都被封装起来,这一级组件经过封装后,使二次开发更为简单,一个编辑查询系统,若用基础平台开发,需要编写大量的代码,而利用组合组件,只需几句程序就够了;行业性组件为特定应用领域的组件,它抽象出行业应用的特定算法,固化到组件中,可进一步加速开发过程。行业性组件通过接口定义的方法提供服务,当这些特定应用功能被封装起来后,开发者的工作就可以简化为根据需求设置输入数据类型、目标参数及相关评价指标的组合[3]。
下面通过本系统中设计的几个行业性组件,来说明本系统中组件的设计思路。
流程控制组件:该组件是职称管理系统工作流程组件的核心,它对于职称申请书审核流程中各个工作节点来说具有一定的通用性,负责把所有节点中复用的已有组件信息整合到一起来控制业务流程。系统开发中可以为此组件添加流程名称、前步编号、本步编号、下步编号、流程状态表名、本步表名、前步表名等属性,使之与其他组件关联起来。这些编号由系统产生并保存于数据库中,系统为这些信息创建特定的表,在用户处理过程中,需要读取这些信息,系统根据表名从数据库中读取相应的字段。
如从数据库调用表面信息时可以下面的语句:
Dim Ftrs As MapXLib.Features
pt.Set x1,y1
'Get feature at user click location
Set ftrs=editingLayer.SearchAtPoint(pt)
If ftrs.Count=1 Then
'Set feature to global varaiable and display object info
form
Set curFeature=ftrs(1)
objectInfoFrm.Show 1
End If
权限管理组件:该组件用于职称管理系统中不同角色用户的操作权限,与流程控制组件关系密切,系统用户以不同账号登录系统通过调用相应的角色权限控制组件,来控制系统数据流向及用户操作规范。
界面管理组件:该组件是系统与用户交互的各种组件的总和。在职称管理系统中职称申请书和量化赋分的实现把此组件应用发挥到极致。在职称申报中,申报不同专业、不同资格的申请人填写的申请书模板是不同的,利用组件技术将申请书模块按申报资格要求进行组合,申请人编辑的申请书与申报资格挂钩,这就实现了系统的一个特色:个性化申请书的制作。量化赋分表,是专家评委对申报人进行综合素质能力评定的标准,根据不同专业、不同资格、不同的单位级别(按自治区职称评审办法,职称评审条件向县及以下基层单位放宽)打分标准也并非一刀切,专家打分界面利用组件功能可根据申报人的自身条件自动调用相应的打分标准[4]。
如按申请书类别在其属性中插入集对象时语句如下:
Dim newObj As CategoryXLib.Feature
Dim pt As New CategoryXLib.Point
Case
CUSTOM.POINT.TOOL
'Create symbol feature
pt Set x1.y1
Set newObj=Categoryl.FeatureFactory.CreateSymbol
(pt,Map1.DefaultStyle)
'Add the feature to the current edit layer
editingLayer.AddFeature newObj
报表组件:该组件负责从数据库中读取数据,并将返回的数据打印成需要的报表表单。
数据访问组件:该组件负责从数据库中检索数据并将实体数据保存回数据库中。除此之外,它还包括实现数据相关操作所需的所有业务逻辑组件和其他基础组件、组合组件等,在此不再一一累述。
2.3 系统结构设计
系统在结构上采用微软Windows DNA 3层结构来设计和实现,即将系统分为表现层、业务层和数据层,如图1所示。
图1 系统结构图Fig.1 System structure chart
数据层为后台数据库,主要包括数据的内容、组织以及存贮方式;业务层构成了应用的业务逻辑规则,系统的业务处理全部在该层中进行,它是应用的核心,是由组件构成,当系统在不同交通部门迁移时,改变只局限于该层;表现层为应用的客户端部分,它负责与用户进行交互,它是在业务层的.NET提供的接口上构建成功的系统具体应用。
3 组件技术在职称管理系统中的应用
利用组件技术开发的职称管理系统,主要基于系统本身及组件技术的重用性(公用/通用)、可定制性(设置参数和属性)、自包容性(模块相对独立,功能相对完整)和互操作性(多个组件可协同工作)考虑,可以简单方便地利用可视化工具来实现组件的集成,另外,本系统利用组件技术很好的解决了各个子系统之间的集合问题。
3.1 CORBA在集合各子系统中的应用
将组件技术之一的CORBA模型用于职称评审管理系统中,主要考虑的两个方面的原因。
3.1.1 分离Client和Server
在Internet环境中并没有固定的Client和Server的区分,只有服务请求端和服务提供端的区别,因此利用组件技术开发职称管理系统的第一步是突破Client和Server的权限划分。提取Client和Server的共有属性,并用面向对象方法将这些共有实体组织成对象执行体(Object Implementation)。服务请求端向ORB发送请求信号,并由ORB搜索对象执行功能,并将结果传输回服务请求端。同时,按照客户端所请求的功能激活组件服务,完成所需功能[5]。如图2所示。
图2 请求代理流程Fig.2 Request the proxy process
在分离Client和Server的基础上,使用IDL语言重新定义请求端和ORB、对象执行功能(定义概念模型上的操作)和ORB的接口,使ORB独立于服务请求端的设计语言。
3.1.2 实现各子系统集成
分离Client和Server后,将分离出的功能模块重新组合,构成局部对象执行体和局部ORB模型,实现计算机互操作和统一的组件调度,建立局部环境中的CORBA总线,并将原本属于不同流程的数据流重新规划。如:将量化打分、专家投票、文本打印等功能集成到网络终端上,并将可能提供服务的终端互联,组成内部ORB网络。终端机只要使用TCP/IP协议向局部ORB网络提出请求,ORB在接受请求后,启动代理事务,自动搜索组件位置,使之与请求端链接,并远程激活组件服务。局域网内部具有相同特征的资源集成,形成组件域。如假设有x个专家对y个职称申请人的申请进行职称评审,评职信息通过ORB,CORBA系统按申请的科目将请求信息传输到相关科目所在的域,第二级ORB系统(域内ORB)自动搜索空闲的职称申请,并与申请的科目建立连接[6]。显然,划分域可以使搜索的目的性增强,减少无用请求信息的传输,实现并行处理,负载平衡。
3.2 NET技术在组件开发中的应用
相对于复杂的CORBA技术而言,.NET的优势在于与现有操作系统接合紧密,实用性、可靠性强,使用简便,在Microsoft的产品中广泛应用。应用.NET技术开发组件,只需开发组件的用户界面和数据库存储结构,将组件界面通过API调用组件服务,组件功能、进程完全。由操作系统控制,因此.NET的作用是用户界面和数据库中间的代理。由于Internet的发展,数据分布式存储得到广泛应用,组件开发者往往无法确定数据库的位置,因此Microsoft推出基于分布式的XML技术,形成FORM+XML+STORAGE模型。无需修改FORM层的调用,XML在实现.NET组件功能的同时根据FORM层提供的数据库IP地址,自动连接数据库。XML也允许远程组件调用,XML将根据用户提供的目标IP搜索组件激活,并将并行计算的结果(可能是远程数据库的查询集合)送到用户端。在开发过程中无需关心数据库结构、开发模型等技术参数,只要设计本系统的组件模型即可,在实现CSCW的同时大大降低开发难度,在系统运行过程中将数据分布式存储,有利于数据安全,实现负载平衡,提高系统效率。
4 结束语
文中根据职称管理系统特点,将职称管理系统与组件技术相结合,对本系统下的组件开发进行了分析和研究,并列出了系统中组件结构,通过组件技术在职称评审系统中的应用的实践,我们更深刻认识到,开发出适合的自定义组件,在构建系统时可节省开发的工作量和难度,提高工作效率,增强系统的可维护性,功能改动后,只需在服务器端更新该功能组件即可。组件技术不失为职称管理系统开发的关键技术。
[1]林子禹,邵红维,谭凯,等.基于WEB与组件技术的企业应用系统设计模型[J].计算机工程与应用,2000(6):152-154.LIN Zi-yu,SHAO Hong-wei,TAN Kai,et al.Enterprise application system design model based on WEB and component technology[J].Computer Engineering and Application,2000(6):3-26.
[2]楼伟进,应飚.COM/DCOM/COMD组件技术[J].计算机应用,2000(4):31-33.LOU Wei-jin,YING Biao.Component technology about COM/DCOM/COMD[J].Journal of Computer Applications,2000(4):31-33.
[3]徐敏,周定康.组件技术在软件开发中的应用[J].计算机与现代化,2002(2):1-3.XU Min,ZHOU Ding-kang.The application of componenet technology in software development [J].Computer and modernization,2002(2):1-3.
[4]白建坤.WEB服务安全架构研究[J].计算机应用,2005,25(11):2533-2535.BAI Jian-kun.Research on security frame work for WEB service [J].Journal of Computer Applications,2005,25(11):2533-2535.
[5]吴浩明,周宁.基于LDAP的信息共享平台研究与实现[J].计算机应用,2008,28(4):1042-1043.WU Hao-ming,ZHOU Ning.Research and implementation of information share platform based on LDAP [J].Journal of Computer Applications,2008,28(4):1042-1043.
[6]傅勇,王元珍.工作流技术在办公自动化系统中的应用研究[J].小型微型计算机系统,2001(6):663-665.FU Yong,WANG Yuan-zhen.Application of workflow technology in office automation system[J].Micro computer system,2001(6):663-665.