李云鹏;柳明;张盛;陈飙松;张洪武
【摘 要】针对用户集成各种相关应用软件,定制统一集成软件环境界面的设计需求,采用插件、XML和Qt技术,设计SiPESC平台的门户界面管理模块.该模块具有良好的可扩展性和动态定制特性.讨论门户界面管理模块的设计思想、软件框架及关键技术.结合该模块的实际应用范例展示该模块面向专业系统的实用性. 【期刊名称】《计算机辅助工程》 【年(卷),期】2012(021)001 【总页数】8页(P42-49)
【关键词】SiPESC;门户界面管理;插件;可扩展性;界面定制 【作 者】李云鹏;柳明;张盛;陈飙松;张洪武
【作者单位】大连理工大学工业装备结构分析国家重点实验室运载工程与力学学部工程力学系,辽宁大连116024;大连理工大学工业装备结构分析国家重点实验室运载工程与力学学部工程力学系,辽宁大连116024;大连理工大学工业装备结构分析国家重点实验室运载工程与力学学部工程力学系,辽宁大连116024;大连理工大学工业装备结构分析国家重点实验室运载工程与力学学部工程力学系,辽宁大连116024;大连理工大学工业装备结构分析国家重点实验室运载工程与力学学部工程力学系,辽宁大连116024 【正文语种】中 文 【中图分类】TB115
工程与科学计算集成化软件平台(Software Integration Platform for
Engineering and Scientific Computation,SiPESC)是由大连理工大学工业装备结构分析国家重点实验室/运载工程与力学学部研发的面向工程与科学计算的集成软件系统,目的是构建适用于计算力学的科学研究和工程应用的公共服务软件平台.[1]
随着平台研发工作的推进,门户管理模块的研发需求被提出.由于平台的开放性和可扩展性,计算力学各类应用领域的用户都可开发专用功能的插件,然后集成到SiPESC平台中,平台的功能和覆盖的领域呈现快速增长趋势.同时,各专业的软件研发人员面向专业用户(或特色行业)需要定制实现专业系统,如优化设计、集成计算以及特殊装备结构分析系统等.一般情况下,专业集成系统运行后,若有一个统一界面(称为门户界面Portal)引导用户进入具体操作或专业模块,将极大地方便用户的使用,同时也能体现系统的集成特色.由门户界面引导启动的操作模块包括建模、分析与可视化等的商业和自主软件;SiPESC平台的子系统(如活动流程图定制工具和集成优化软件等);SiPESC平台上的专用插件等.另外,界面管理中应考虑针对各类用户的需求,可构建灵活多变的图形界面,提供界面样式的动态定制功能,修改布局、颜色和按钮,设置动画和画面切换等功能.
因此,为平台开发一个提供可定制、多样化的信息及应用服务管理的插件,使用户能按照自己的角色或使用行为组织用户或团体的功能界面,建立一致的界面风格和内容,可大大提高平台的实用性.
门户是通往其他地方的通道,主要用于实现跨异构网络、平台和数据库,访问多种异构数据源,整合多种业务应用系统的功能,为用户提供个性化服务,提供维护与定制便易性,提高未来系统扩展与重用性,满足用户对原有业务整合以及对新业务扩展的需要,达到集中精华、减少重复开发、形成统一品牌、发挥整体优势的目的.[2]本文按照软件工程实施方案,针对门户界面管理模块开展研发工作.
1.1.1 用户需求分析
针对不同的用户,按照掌握SiPESC集成平台和相关专业知识程度的不同,可将门户模块的用户分为以下2类进行分析.
(1)普通用户.指仅使用门户界面已经提供的控件和动作、集成各种应用、定制统一风格的界面的用户.对该类用户,要尽可能提供功能完善的控件集和动作集以及操作友好的定制界面.可将门户界面分为编辑模式和运行模式,在编辑模式状态下,提供详细的定制向导,使用户方便、快捷地建立理想的门户界面,减少操作障碍. 控件是创建界面的基本构造模块,每种控件都有其自己的一套属性、方法和事件以适于特定的目的.如按钮控件,包含3种或更多种变化状态:正常状态、鼠标按下状态、鼠标进入按钮区域的状态等.在鼠标按下或松开、进入或离开按钮区域时,会调用按钮控件内部事件函数接口.
动作是个广义的定义,主要指控件与控件之间、控件和平台之间以及控件与集成应用系统之间的交互,如修改控件属性、调用外部程序以及调用SiPESC平台的专有功能等.
(2)高级用户.指熟悉SiPESC平台插件开发流程,能开发自定义的控件和动作的用户.对于该类用户,需要提供一个完善的开发框架和功能接口,使开发人员能方便地添加自定义控件集和动作集.如要定制一个带有组合框的界面,但现有系统还未提供该控件,高级用户就可根据提供的控件接口开发出相应的控件,做成插件后进行集成,从而不需要修改源代码. 1.1.2 任务分析
任务分析就是通过归纳综合、分类提炼和图表绘制等方式将任务分析的数据表达出来.该过程使用统一建模语言UML进行辅助设计.[3]
门户界面的价值在于能帮助用户定制个性化的界面、集成统一的应用服务以及提供可扩展的接口,方便高级用户添加新的功能.需求分析用例见图1.
让用户自定义界面,就需要提供可修改属性的控件;若控件动画可配置,则能提高界面动态效果;用户与各种各样的应用交互,就需要控件触发后能调用不同的应用,如调用SiPESC平台的活动流程、外部程序以及平台菜单Action所对应的功能等;自定义控件或动作的添加,是为高级用户准备的,也是可扩展系统必须满足的条件之一.
门户不是单一的技术或应用系统,而是由一组相关服务或功能组件组成的复合体系.门户界面系统需要达到的目标有:(1)动态定制界面模块,可自由搭配界面风格、增添各种动画效果以及具有灵活的配置方式;(2)能集成各种应用系统,访问方式合适;(3)方便整合新、旧业务,提高系统扩展性与可重用性.
针对模块研发的需求与目标,基于SiPESC平台开发接口与功能,可采用以下软件技术. 1.3.1 插件
插件是用遵循一定规范的应用程序接口编写出来的程序.插件式体系结构是一种非常灵活的组件式结构,可将程序的功能分散在插件中完成.插件是于系统且可以开发的程序模块,能动态地插入到系统中,并且可被自由地插入、删除和替换,因此能提高软件开发的并行性和开发效率,降低设计开发难度,缩短开发周期,增强应用程序的可运行性、可测试性和可维护性等.
插件结构的程序在形式上可分为的插件管理程序和多个互不相关的插件,各部分共同形成一个逻辑上的完整系统.插件体系结构见图2.
SiPESC平台提供完整的插件管理功能,门户界面则是基于SiPESC平台开发的一个应用插件.
1.3.2 可扩展标记语言
可扩展标记语言(Extensible Markup Language,XML)是SGML的一个优化子集.XML是一种简单的数据存储语言,其使用一系列简单的标记描述数据.这些
标记可方便地建立,虽然XML占用的空间比二进制数据占用的空间多,但XML极其简单且易于掌握和使用.[4]
在信息表示和交换方面,XML及其相关技术在门户配置中起着重要的作用.XML具有很多重要的特性:首先是可扩展性,XML可让使用者创建和使用其自己的标记;其次是灵活性,XML提供一种结构化的数据表示方式,使用户界面分离于结构化数据;再次是自描述性,XML文档通常包含一个文档类型声明,因而XML文档是自描述的,不仅人能读懂XML文档,计算机也能处理;最后,XML还具有简明性,易学、易用且易于实现.门户界面的配置文件用XML语言格式描述界面的配置信息,增加门户界面系统的开放性和可扩展性. 1.3.3 Qt
Qt是一个跨平台应用程序和UI开发框架.[5]使用Qt开发的软件可在任何支持的平台上编译和运行而不需要修改源代码,可实现该平台的图形界面风格,也可实现其他平台的图形界面风格,如可以在Microsoft Windows平台下编译出具有苹果公司Mac OS图形界面风格的应用程序.
对象间通信是面向对象程序设计的极其重要的内容,类似于 Microsoft MFC的消息映射(Message Mapping)和事件循环.Qt的对象间通信采用的是signal-slot机制,signal是事件,slot是响应事件的方法.如果需要实现对象间的通信,只需要将一个对象的slot和另一个对象的signal“连接起来”就可实现“事件驱动”.Qt完整的GUI类库和强大的signalslot通信机制,为门户界面中控件和动作的实现提供很好的支持.
系统由多个不同的部分组成,组成系统的各个不同部分之间具有特定的关系或相互作用.门户界面是以满足SiPESC平台用户定制多样化集成应用为导向的插件.为给用户提供界面配置上的便易性,门户插件系统包含一个用户界面模块,提供鼠标、键盘操作定制界面,撤销、恢复,大纲视图等功能.门户界面管理模块作为核心,
在打开配置文件时调用XML配置文件解析模块,在解析过程中调用动作模块和控件模块,创建所需的控件和动作以及建立控件与动作之间的连接关系,最后再由管理模块统一管理.门户界面系统结构见图3.
为减少开发的复杂度,本文使用Qt GUI模块作为界面显示;为提高门户界面的可扩展性,采用插件技术,面向接口编程;为使界面满足可定制的特性,提供XML格式的配置文件.
任务对象模型化是将系统任务概念与相互之间的交互关系用UML统一建模语言“翻译”为对象模型,其过程是将需要表达的对象抽象成类,再描述类的属性和方法以及类之间的关系.
要实现一个可定制的界面,并且集成各种应用系统,可将门户界面抽象成控件模块和动作模块.
(1)可定制的界面是门户界面需要实现的重要功能.该功能由控件模块完成.Qt提供一系列的窗口部件,如QPushButton,QFrame和QDialog等,但是这些都属于标准窗口部件,显示效果单一.用户如果要实现自定义控件,需要对Qt有足够的了解,并且还要熟悉软件编程.门户界面的控件模块能很好地解决该问题,并提供一种通过配置文件描述控件显示效果的途径,如可以通过配置文件指定控件外观、控件在界面中的位置和大小等属性.
(2)门户界面系统要集成各种应用,并且能通过界面与各种应用系统交互,就需要提供一个动作模块.如要定制一个界面,点击按钮控件,调用SiPESC活动流程,就可使用调用活动流程的动作进行连接.
通过配置文件指定控件和动作的各项属性,建立相互关系,就能很好地搭建门户界面,集成各种应用.
好的对象模型应能很好地支持现有的功能,而且可以在一定程度上支持未来可能出现的新需求,即应具有良好的可扩展性.
SiPESC平台门户界面插件结构见图4.PortalBinaryDataSelector提供选择二进制数据的扩展点.该二进制数据为控件加载图片的数
据;PortalComponentAttributesPage提供控件属性编辑页面的扩展
点;PortalSelection提供大纲视图选择控件或者动作的扩展点;PortalModel提供管理控件、动作和二进制数据以及解析配置文件等功能的扩展点;PortalAction和PortalActionFactory提供动作工厂扩展点;PortalComponent和
PortalComponentFactory提供控件工厂扩展点.用户若要给门户插件添加新的功能,就可基于这些扩展点进行扩展.
门户界面使用XML描述的配置文件,在打开配置文件时,遇到component(控件)标签就创建一个控件,遇到action(动作)标签就创建一个动作,因此,需要解决的问题主要是如何创建对象.针对这种状况,一种好的途径就是采用工厂方法设计模式[6],定义一个用于创建对象的接口,让子类决定实例化哪个类.虽然后续会添加新控件或动作,但用于创建对象的接口固定,不需要修改源代码就能进行扩展. 使用工厂方法设计的控件工厂类见图5.
PortalModel管理控件和动作的创建、删除等操作,PortalRegistry管理控件工厂和动作工厂的注册、注销等. 主要的可扩展接口如下:
(1)控件(Component)接口.控件的表现形式多样,不可能实现所有的样式,为便于扩展,构造一个控件虚基类(PortalComponentInterface),提供统一的通用接口.
不同的控件含有不同的属性,如几何位置和大小,载入的图片等,所以
PortalComponentInterface提供2个虚接口:getAttribute()和setAttribute(),对这些属性进行操作,以显示不同的效果.这2个函数接口的原型为 QString getAttribute(const QString&name)const;
bool setAttribute(const QString& name,const QString&value) 使用工厂方法设计的动作工厂类见图6.
如需要修改控件的几何位置和大小,就可以将描述几何属性的标签“geometry”和几何属性的值“0 0 1 1”作为参数,调用setAttribute()函数.
控件模块属于界面显示部分,这种界面显示功能是通过对一个已存在的Qt窗口部件子类化或者直接对QWidget子类化实现的.[7]利用C++的多重继承特性[8],具体的控件实现类双重继承QWidget(或QWidget的子类)和PortalComponentInterface虚基类,就能具备这二者的接口和功能. 为使用 Qt强大的信号槽函数机制,PortalComponentInterface还提供一个event()事件接口,原型为
void event(constQString&, constQString&, const QStringList&); 当有触发事件时,将收到触发事件的控件id,事件类型和附加参数等信息发送出去,这样就能方便地实现各个控件间的通信.控件接口类见图7,控件工厂接口类见图8.
(2)动作(Action)接口.与Component一样,动作模块也包含一个动作虚基类(PortalActionInterface),以便提供统一的通用接口.
不同的动作含有不同的属性,如调用外部程序,就需要指定外部程序的 URL,所以PortalActionInterface同样提供 getAttribute()和setAttribute()虚接口.另外,不同的动作需要执行不同的功能,PortalActionInterface提供一个execute()接口,原 型为 void execute(constQStringList&arguments=QStringList()); 动作接口类见图9,动作工厂接口类见图10.
一个扩展实例:如果门户界面现有的控件集和动作集不能满足用户的需求,就可实现自定义的控件或动作.如要实现一个动作,当触发该动作时,控件的大小连续变化,可利用Qt的动画框架(The animation framework),该框架中的
QVariantAnimation类作为一个虚基类提供属性值的动画效果.为减少开发难度,可构造 PortalGeometryAnimation ActionImpl类,双重继承 QVariantAnimation类和PortalActionInterface类;再 构 造 一 个PortalGeometryAnimationActionFactoryImpl工厂类,继承
PortalActionFactoryInterface类,分别实现相应的接口.为集成到SiPESC平台中,需要写一个插件并在该插件初始化时将工厂类
(PortalGeometryAnimationActionFactoryImpl)注册到PortalRegistry中,这样就可以在配置文件中使用.
门户界面允许用户随意定制,所以配置的界面不能在代码中固定.可使用配置文件描述定制的界面,不同的界面有不同的配置文件.XML可扩展标记语言具有很多的便利性,采用XML语言作为门户界面配置文件的格式,能在很大程度上提高系统的开放性和可扩展性.如配置一个简单的界面,只包含一个按钮,在点击按钮时,调用SiPESC平台的活动流程.具体XML描述为
配置文件中的components标签指定树形结构的控件,events标签指定各个控件对应的动作.在上述示例代码中,component标签和property标签描述按钮控件,指定该控件的位置、大小以及与鼠标交互时3种状态的图片;event标签描述鼠标点击按钮时的动作,该动作调用SiPESC平台的活动流程.
土木工程结构集成分析系统需对桥梁、高层建筑、大坝和大跨度空间结构等开展针对性的数值分析,同时对一些特定建筑结构进行优化计算.这些应用模块功能较为分散,若使用Portal插件定制一个土木工程结构集成分析系统门户界面,引导用户进入各个专业模块,能为使用带来极大的便利,同时也能很好地体现集成性.针对土木工程结构集成分析系统的定制需求,使用 PortalImageButton控件和PortalStaticImage控件以及PortalComponentAttributeAction 动 作、PortalLauncher-Action 动 作、PortalShowWorkbenchAction动作和
PortalPlatformTrigger动作等.(1)PortalImageButton控件.可作为按钮使用,该控件含有正常、滑过和按下等3种状态,在使用时需要指定3张不同的图片.(2)PortalStaticImage控件.可作为背景图片使用,该控件每次只加载一张图片,但可动态替换.(3)PortalComponentAttributeAction动作.用于修改控件属性值.(4)PortalLauncherAction动作.用于调用其他应用程序.(5)PortalShowWorkbenchAction动作.用于显示平台的工作
台.(6)PortalPlatformTrigger动作.用于调用SiPESC平台固有的Action,如菜单栏的OpenAction.
在该定制的界面中包含4个PortalImageButton控件作为按钮,4个与其对应的PortalStaticImage控件作为文字描述以及3个PortalStaticImage控件作为背景图片.当鼠标移到按钮区域时,改变文字描述功能的控件图片;点击按钮时调用相应的应用程序,进入相应功能块进行土木结构分析.定制流程如下:
(1)准备界面图片.在该定制界面中,包含4个按钮控件(每个按钮控件有3张图片)、4个对应的文字描述静态图片控件(每个文字描述静态图片控件有2张,在鼠标进入或离开对应的按钮区域时进行切换)和2个背景静态图片控件(一个显示整体背景,另一个显示一条曲线).为使界面美观,除界面整体背景图片外,其他图片应为背景透明的png格式,可使用Photoshop制作.
(2)打开SiPESC平台Portal配置文件新建向导,选择保存位置并填写界面名称和描述信息,点击完成,创建一个空的门户界面.
(3)载入图片.在编辑器区域点击鼠标右键,从上、下文菜单中打开二进制数据选择器对话框,载入后续需要使用的图片.
(4)创建PortalStaticImage控件.点击右键创建一个PortalStaticImage控件,在General选项卡中设置该控件的位置、大小,在Attributes选项卡中设置该控件加载的图片,将该控件作为界面整体背景.
(5)重复第4步,创建4个载入文字描述图片的PortalStaticImage控件和1个载入曲线图片的PortalStaticImage控件.
(6)创建PortalImageButton控件.点击右键创建一个PortalImageButton控件,在General选项卡中设置PortalImageButton控件位置、大小,在Attributes选项卡中设置PortalImageButton控件图片加载. (7)重复第6步,创建另外3个按钮控件.
(8)设置动作.在第6步创建的按钮上点击右键,创建3个动作:1个
PortalPlatformTrigger动作,调用SiPESC平台OpenAction,打开进行有限元分析的活动流程;2个PortalComponentAttributeAction动作,对应鼠标进入或离开该按钮区域时的动作,以便修改文字描述控件的图片显示;1个
PortalShowWorkbenchAction动作,打开SiPESC平台工作台.重复该步骤,创建另外3个按钮上的动作. 通过以上步骤配置好的界面见图11.
门户界面还提供大纲视图以及撤销和恢复操作,方便用户查看和更改所做的操作. 介绍基于SiPESC平台的门户界面管理模块的设计与实现,用具体定制流程说明门户界面的可定制性、应用系统集成性以及良好的可扩展性.随着用户需求的增加,在现有可扩展框架的基础上,开发更多实用的控件集和动作集,提供更加完善的用户定制界面,是下一步工作的重点.
【相关文献】
[1]张洪武,陈飙松,李云鹏,等.面向集成化CAE软件开发的SiPESC研发工作进展[J].计算机辅助工程,2011,20(2):39-49.
ZHANG Hongwu,CHEN Biaosong,LI Yunpeng,et al.Advancement of design and implementation of SiPESC for development of integrated CAE software systems[J].Comput Aided Eng,2011,20(2):39-49.
[2]王敏毅,周明天,姚芸.电子商务门户的技术和发展现状[EB/OL].(2004-06-27)[2011-03-07].http://oss.org.cn/ossdocs/portal/portal.pdf.
[3]GRADY B,MAKSIMCHUK R A,ENGEL M W,等.面向对象分析与设计[M].3版.王海鹏,潘加宇,译.北京:人民邮电出版社,2009:104-110.
[4]瞿裕忠,张剑锋,陈峥,等.XML语言及相关技术综述[J].计算机工程,2000,26(12):4-6.
QU Yuzhong,ZHANG Jianfeng,CHEN Zhen,et al.A Survey of XML and Related Technologies[J].Comput Eng,2000,26(12):4-6.
[5]孙少华,徐立中.基于嵌入式Linux系统的图形用户界面综述[J].微型机与应用,2005,24(4):4-6.
SUN Shaohua,XU Lizhong.Graphics user interface based on embedded Linux system[J].Microcomputer& its Applications,2005,24(4):4-6.
[6]GAMMA E,HELM R,JOHNSON R,et al.Design patterns:elements of reusable object-oriented software[M].Boston,MA:Addison-Wesley Professional,1994:116-117.
[7]BLANCHETTE J,SUMMERFIELD M.C++GUI programming with Qt4[M].2版.闫锋欣,译.北京:电子工业出版社,2008:80-.
[8]LIPPMAN S B,LAJOIE J,MOO B E.C++Primer[M].4版.李师贤,蒋爱军,梅晓勇,等,译.北京:人民邮电出版社,2006:731-733.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- xiaozhentang.com 版权所有 湘ICP备2023022495号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务