摘要:国土资源数据中心主要管理海量网络的国土资源空间数据,涉及对多种专题数据的一体化管理,每种专题数据都是针对不同业务模型设计的,并需要与 相匹配的管理工具。过去的管理模式是采用多个系统的模式,造成数据形成信息孤岛难以管理,因此提出数据中心管理工具系统插件式模型对现有多系统进行整合,该模式可以实现业务功能的可扩展、可配置。
关键词:国土资源数据中心;框架;插件XML;插件封装
1 引言
信息化是当今世界经济和社会发展的大趋势。在国土资源信息化建设的进程中,国土资源数据作为一种信息资源,也越来越受到国家和各级管理部门的高度重视。随着国土资源信息化工作的深入和“数字国土”工程的实施,国土资源基础信息数字化程度日益提高,国土资源管理部门和社会各领域对国土资源基础信息的需求也越来越大,对数据共享和信息服务的要求与日俱增。国土资源数据中心作为国土资源信息采集、更新、加工处理、传输、开发利用和服务的保障机构,能为准确掌握国内外资源动态信息,有效调控资源供应总量和结构,建立安全的资源供给保障体系提供决策依据。
2 基于MFC+BCG的框架插件模型的实现
选用MFC的插件模型,原因在于MFC有较长的历史运用积累,关键是考虑在MAPGIS67平台上,很多老的程序升级迁移跨度较小。采用BCG是因为BCG提供了更多功能,使开发者可以从界面的开发中解放出来,侧重与业务模型的思考;此外,因为源代码已知,进行改造更方便。缺点就是采用非组件方式,不能跨语言。整体性价比上进行衡量,还是选择MFC+BCG。
2.1 框架+插件模型
采用框架+插件模型,系统的扩展性大大地加强了。如果我们在系统发布后需要对系统进行扩充,就不必重新编译,只需要增加或修改插件就可以了。这有利于模块化的开发方式。我们可以开发强大的插件管理系统,在这样的一个插件系统下,我们可以不修改基本系统,仅仅使用插件就能构造出各种各样不同的系统。以后框架程序是个比较“瘦小”的内核。具体功能通过“插件”来体现。
框架插件模型主要解决资源和消息的问题,如图1。考虑要解决如下问题:
插件如何将自身的资源界面嵌入到框架;
插件如何对菜单ID进行响应;
如果两个插件有相同的菜单ID号,在进行菜单响应时。怎么只传递给特定的插件响应;
如上两个菜单ID,如何对应不同的菜单项图标。
框架插件式系统的实现原理;主框架有一套自己的资源,维护着自己的消息响应;插件也有一套自己的资源,也有着自己的消息响应I插件的资源实际上就是建立在框架上,插件的信息响应通过框架来分派;框架维护着一个插件集,用来管理插件的装载和卸载(主要体现在资源界面的表现);同时负责分派插件的消息(主要体现在消息的交互)。
插件嵌入到框架的方法;插件记载着框架的指针,可以直接将资源嵌入进去。对应消息响应,在插件编写时可以不考虑很多;实际上主要是因为框架负责了消息的分派,如图2。
2.2 插件在框架内的标记以及生命周期
插件在框架内有着各自的标记及生命周期,插件以dll为载体,通过特定的导出函数来标记插件,如表2-1。插件制作通过新建dll、制作插件、导出插件这三个步骤来实现。
(1)资源嵌入。
要解决各种与资源相关的问题。
原理:访问资源,必须通过HINSTANCE+ID号来定位。MFC通过模块资源切换来实现跨dll调用资源。AFX MANAGE STATE(AfxGetStaticModuleState());这个用法主要局限于一个过程内部。但是在插件模式下,可能在一个过程内部,同时要访问不同插件的资源,例如设置一个弹出菜单的右键图标,如果弹出菜单来源于多个插件,对应不同的句柄。这时必须要对BCG进行改造与此相关改造的,将每个资源都标记了属于哪个资源HINSTANCE。插件资源主要包括主框架触发的命令(eg.toolbar和menu);也包括独立的消息响应体(Dockbar)等。
(2)消息分组。
与消息相关的包括:菜单和工具条的ON_COMMAND()命令消息、界面状态控制消息ON_COMMAND_UPDA- TA()及tooltip、菜单项状态栏提示等很多细小部分。
实现消息分组则过每个插件的标记ID来区别。如果是属于独立的消息响应体,可以不管,OS自动分配。但是如果消息是来自主菜单等,则必须进行消息分派。原理是每个菜单触发时,同时会标记哪个插件触发的ID。然后根据当前ID找到指定插件进行消息响应。对于菜单工具条状态控制,实际上都是CbcgpToolbar。考虑到最初弹出时会触发,还有Onldle()时也会触发,统一在OnCmdMsg进行改写。
以上的框架插件模型可以添加任何界面,进行任何消息响应。
3 MFC+BCG框架插件模型在国土数据中心业务中的应用和扩展
国土数据中心中产生了许多针对不同专题的信息系统,如土地利用现状管理系统,土地利用规划管理系统,这些系统中有许多功能是重复的,这种情况不利于软件的可重复利用,不利于国土资源信息化。一体化数据中心的建立,将国土资源数据统一管理起来,因此建立一个统一的数据管理界面,以及针对不同业务数据的业务功能库是必要的,也是信息化的要求。国土资源业务中很多的业务功能都能分解成最小的基本功能,也称业务单元,通过分析国土业务功能,将业务功能分解成业务单元,并存储在功能库中,用户可以根据需要将功能库组成不同需求的业务功能,来实现业务功能的扩展。
对于国土资源数据中心,采用的插件模型,每个业务单元都是一个插件,所有的插件都遵循统一的接口。各业务单元模块采用注册方式,在框架中登记,最终形成有机整体。
通过基于MFC+BCG的框架插件模型,可以通过添加GIS要素,在国土数据中心衍生不同的业务模型。添加MapGIS要素,需要考虑:MFC的SDI和MDI都采用DOC/VIEW模型。对于MapGIS而言,DOC就是地图文档,不一定存在于CDocument中。
框架管理地图文档,负责其各种显示与表现。地图文档特点:规定统一的访问接口,接受各种数据类型,目前包括:MapGis的文件(点线区网图形文件、WB文件、Mpj工程文件、DBS、MSI、MSD),将数据存储和数据表现有机结合,与地图文档树绑定显示效果更佳。支持分组、支持属性扩展等、支持数据类型扩展。地图文档有集中来源,单独的打开关闭,适合于单个业务系统的分发,并能通过插件进行其功能的扩充。
4 结语
系统集成与功能扩展、重用是国土资源数据中心中采用插件技术主要解决的问题。数据中心涉及对多种专题数据的一体化管理,每种专题数据都是针对不同专业模型设计的,并需要与之相匹配的管理工具。例如,城镇地籍管理系统、城镇地价信息系统,土地利用现状系统。过去的管理模式是采用多个系统的模式,造成系统种类众多、系统间交互困难、数据难以管理。本课题采用了插件技术基本上解决了以上问题,能够对现有多系统进行有效的整合。