CN102495730B - 一种动态可扩展的web界面的方法 - Google Patents
一种动态可扩展的web界面的方法 Download PDFInfo
- Publication number
- CN102495730B CN102495730B CN201110397363.XA CN201110397363A CN102495730B CN 102495730 B CN102495730 B CN 102495730B CN 201110397363 A CN201110397363 A CN 201110397363A CN 102495730 B CN102495730 B CN 102495730B
- Authority
- CN
- China
- Prior art keywords
- extension point
- information
- module
- extension
- map
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明提供了一种动态可扩展的web界面的方法,所述方法依据模块化思想,将软件架构划分为模块和核心平台;将需动态加载的web元素,javascript文件、css文件、多语化文件定义为扩展点,定义系统内部的扩展点机制,当模块安装扩展点规范进行设计编码,核心平台即可将模块中的扩展点元素进行统一的管理,并集中加载到web页面。本发明实现了web界面的模块化开发架构,在线动态可扩展的软件架构以及软件层面对web界面的即插即用热插拔机制。
Description
技术领域
本发明涉及软件开发,具体来说,涉及一种动态可扩展的web界面的方法。
背景技术
随着软件开发规模的增大,为更好的便于系统设计开发,通常需将软件划分为不同的模块,以便开发人员对不同的模块进行设计编码,以提高并行开发的效率;以模块化思想为主导的开发方式使得软件开发人员按模块对软件进行开发,但传统的开发方式,模块的划分仅是逻辑层次上的划分,开发人员任然需要在同一个工程中开发各自的模块,软件最终部署时也是将不同的模块合成一个安装包进行安装,此种方式使得当系统需要修改或增加新的功能时,均需在原有开发工程中进行代码的修改,并重新部署新的安装包,从而使得软件无法实现动态可扩展的功能。
发明内容
本发明基于模块化的思想,实现了一种动态可扩展的web界面软件架构开发方法,允许开发人员将不同的模块作为独立的工程进行开发,当系统安装部署时,不同的模块可作为独立的安装包部署到系统上,可在系统服务不停止的条件下,动态的更新或增加新的模块;并以扩展点思想为核心,实现了对web界面不同页面元素的动态加载功能,允许系统在线条件下实现新的web界面的增加。
一种动态可扩展的web界面的方法,所述方法依据模块化思想,将软件架构划分为模块和核心平台;
将需动态加载的web元素,javascript文件、css文件、多语化文件定义为扩展点,定义系统内部的扩展点机制,当模块安装扩展点规范进行设计编码,核心平台即可将模块中的扩展点元素进行统一的管理,并集中加载到web页面。
优选的,所述模块为根据应用软件的特点将软件划分的逻辑单元,开发人员以模块为基本单元进行设计与开发;所述核心平台为模块运行的基础平台,所有模块均受核心平台的统一管理与调度;
所述核心平台为模块提供了运行的环境,在核心平台运行后,核心平台可以将系统中所有的模块启动并运行;所述模块的状态包括installed,resolved,uninstalle,active状态,允许在不停止核心平台和模块的基础上,动态的对模块进行卸载、更新操作。
优选的,所述扩展点存在唯一的标识扩展点ID,扩展点ID使用小写字母,如果存在多个单词,直接进行连接;所述扩展点信息存储到每个模块的实现Bundle的META-INF目录下,结构为gridview/+[扩展点ID]+/*.properties,Properties文件内容包括扩展点的具体描述,其内容结构由扩展点定义方提出约定,扩展点使用方依据约定进行编写。
优选的,所述扩展点的数据结构如下:
扩展点的扩展单元信息,
Map:扩展单元信息是一个扩展点扩展信息的最小存储单元,用于表示模块对某扩展点的一个具体设定;Map结构,Key表示扩展属性名,Value表示扩展属性值,一个Map结构存储一个properties文件中的信息;
单一扩展点信息,
List<Map>:扩展单元信息的集合,列表中的每一个元素都是一个扩展单元信息;
多扩展点信息,
Map<String,List<Map>>:多扩展点信息结构由Map类型组成,其中Map的Key使用扩展点的ID表示,Map的Value就是单一扩展点信息结构。
优选的,所述核心平台将根据扩展点机制,动态的从系统中加载所需页面元素;当用户登录页面后,核心平台将查询系统中所有状态为“active”的模块,并根据扩展点规范获取满足规范要求的页面元素配置,并统一在页面加载。
优选的,所述扩展点的后台工作流程为:
1、页面集成子系统通过扩展点查询接口从模块管理子系统获取所需要的所有独立子系统扩展点信息;
2、遍历获取的扩展点信息,通过paraentID信息确定菜单的层次结构,并依据此层次结构重新组织扩展点信息;
3、在依据层次结构组织扩展点信息的过程中,依据menuId组织菜单的顺序,之后前台将不会对菜单顺序进行排序;
4、按层次结构组织好的扩展点信息,最终形成以扩展点名称为KEY的MAP结构。
优选的,所述扩展点的前台工作流程为:
1、mainpage主页面在加载完毕后,向后台发送请求获取所有扩展点的信息,并用全局变量加以存储;
2、mainpage主页面从全局变量的扩展点信息数据结构中读取所需扩展点的信息,如读取功能菜单的描述信息,并以此组织生产页面元素;
3、当其他页面在动态生成页面时,均从全局变量的扩展点信息数据结构中获取所需信息。
优选的,所述扩展点的鉴权流程为:
1、扩展点描述文件中增加userRole配置,取值范围为:Admin,User;
2、在读取扩展点信息时,首先从session中获取用户登录选择是独立子系统还是默认方式,如是默认方式,则读取所有系统的扩展点信息;如是独立子系统,则获取给定独立子系统的扩展点信息;
3、页面集成子系统从License管理模块获取当前License信息,根据配置项的ID和有效时间是否在License范围内确定配置项是否disable;
4、页面集成子系统读取扩展点信息后,从session中获取当前用户的角色,根据登录用户的角色确定配置项是否disable;
5、将扩展点信息组织成前台需要的数据返回给前台,前台根据disable属性决定菜单是否被禁用;
6、同时将用户信息和扩展点信息一起传到前台,通过javascript全局变量存储以供各子系统使用。
本发明实现了web界面的模块化开发架构,在线动态可扩展的软件架构以及软件层面对web界面的即插即用热插拔机制。
附图说明
图1是本发明的软件架构
图2是本发明的模块状态转换图
具体实施方式
软件基础架构主要包括核心平台和模块两个层次,模块为根据应用软件的特点将软件划分的逻辑单元,开发人员以模块为基本单元进行设计与开发;核心平台为模块运行的基础平台,所有模块均受核心平台的统一管理与调度;
核心平台为模块提供了运行的环境,在核心平台运行后,核心平台可以将系统中所有的模块启动并运行;模块的状态包括installed,resolved,uninstalle,active等状态,允许在不停止核心平台和模块的基础上,动态的对模块进行卸载、更新等操作,从而保证了软件系统的动态可扩展性;
Web界面动态可扩展机制
本发明基于模块化平台的架构,实现了对web界面的动态可扩展功能,web界面从功能上通常用户在登录主界面后,需通过点击菜单或按钮进入相应的页面,本发明实现了根据动态加载的模块,实时展现入口菜单,从而实现了web界面的扩展;从web界面实现的角度,本发明实现动态加载javascript文件、css文件、多语化文件等功能,从而保证web界面的扩展;
扩展点机制
本发明将需动态加载的web元素,javascript文件、css文件、多语化文件等均定义为扩展点,定义系统内部的扩展点机制,当模块安装扩展点规范进行设计编码,核心平台即可将模块中的扩展点元素进行统一的管理,并集中加载到web页面;
扩展点是核心平台提供的一种页面扩展和功能扩展的方式。
扩展点规约
扩展点ID规约:
扩展点需要存在唯一的标识,即扩展点ID。扩展点ID使用小写字母,如果存在多个单词,直接进行连接。
扩展点存储:
扩展点信息存储到每个模块的实现Bundle的META-INF目录下,结构为gridview/+[扩展点ID]+/*.properties。例如页面集成子系统的子系统菜单项扩展点,其标识为mainmenu,则扩展点信息存储在META-INF/gridview/mainmenu/*.properties。
Properties文件内容:
一个properties文件的内容是一个扩展点的具体描述,其内容结构由扩展点定义方提出约定,扩展点使用方依据约定进行编写。
数据结构
扩展点的扩展单元信息
Map:扩展单元信息是一个扩展点扩展信息的最小存储单元,用于表示模块对某扩展点的一个具体设定。Map结构,Key表示扩展属性名,Value表示扩展属性值,一个Map结构存储一个properties文件中的信息。
单一扩展点信息
List<Map>:扩展单元信息的集合,列表中的每一个元素都是一个扩展单元信息。
多扩展点信息
Map<String,List<Map>>:多扩展点信息结构由Map类型组成,其中Map的Key使用扩展点的ID表示,Map的Value就是单一扩展点信息结构。
页面元素动态加载机制
核心平台将根据扩展点机制,动态的从系统中加载所需页面元素;当用户登录页面后,核心平台将查询系统中所有状态为“active”的模块,并根据扩展点规范获取满足规范要求的页面元素配置,并统一在页面加载,从而实现页面元素的动态加载;
页面扩展点信息数据结构
1、数据结构为Map<String,List<Map>>,以扩展点的名称作为KEY,value为对应某个扩展点的信息以List组织起来的数据;目前主菜单key名称为“mainMenu”
2、List中的map对应的结构为
流程设计
后台扩展点信息组织流程
本流程主要目的为从模块管理系统获取扩展点信息后,按照扩展点信息对应的父子、组等关系组织成合理的数据结构,以供后续前台界面查询使用;
后台最终组织的数据结构是一个Map(string,List<Map>),以扩展点的名称作为KEY,对应某个扩展点的信息以List组织起来;list的每一项为组的信息,如某一功能菜单组的所有信息;如果扩展点没有分组的形式,依据保留组的层次,只是组里只有一项纪录;list内部以map组织,map里记录组的描述信息,同时用map里的一对(key,value)记录组里每一个扩展点的详细描述信息,如某一个菜单的详细描述信息;每一个具体扩展点的信息描述采用map记录;
流程如下:
1、页面集成子系统通过扩展点查询接口从模块管理子系统获取所需要的所有独立子系统扩展点信息;
2、(以功能菜单为例)遍历获取的扩展点信息,通过paraentID信息确定菜单的层次结构,并依据此层次结构重新组织扩展点信息;
3、在依据层次结构组织扩展点信息的过程中,依据menuId组织菜单的顺序,之后前台将不会对菜单顺序进行排序;
4、按层次结构组织好的扩展点信息,最终形成以扩展点名称为KEY的MAP结构;
前台扩展点信息获取流程
1、mainpage主页面在加载完毕后,向后台发送请求获取所有扩展点的信息,并用全局变量加以存储;
2、mainpage主页面从全局变量的扩展点信息数据结构中读取所需扩展点的信息,如读取功能菜单的描述信息,并以此组织生产页面元素;
3、当其他页面在动态生成页面时,均从全局变量的扩展点信息数据结构中获取所需信息;
鉴权流程
1.扩展点描述文件中增加userRole配置,取值范围为:Admin,User;
2.在读取扩展点信息时,首先从session中获取用户登录选择是独立子系统还是默认方式,如是默认方式,则读取所有系统的扩展点信息;如是独立子系统,则获取给定独立子系统的扩展点信息;
3.页面集成子系统从License管理模块获取当前License信息,根据配置项的ID和有效时间是否在License范围内确定配置项是否disable;
4.页面集成子系统读取扩展点信息后,从session中获取当前用户的角色,根据登录用户的角色确定配置项是否disable;
5.将扩展点信息组织成前台需要的数据返回给前台,前台根据disable属性决定菜单是否被禁用;
6.同时将用户信息和扩展点信息一起传到前台,通过javascript全局变量存储以供各子系统使用。
Claims (4)
1.一种动态可扩展的web界面的开发方法,其特征在于:所述方法依据模块化思想,将软件架构划分为模块和核心平台;
将需动态加载的web元素,javascript文件、css文件、多语化文件定义为扩展点,定义系统内部的扩展点机制,当模块按照扩展点规范进行设计编码,核心平台即可将模块中的扩展点元素进行统一的管理,并集中加载到web页面;
所述扩展点的数据结构如下:
扩展点的扩展单元信息,
Map:扩展单元信息是一个扩展点扩展信息的最小存储单元,用于表示模块对某扩展点的一个具体设定;Map结构,Key表示扩展属性名,Value表示扩展属性值,一个Map结构存储一个properties文件中的信息;
单一扩展点信息,
List<Map>:扩展单元信息的集合,列表中的每一个元素都是一个扩展单元信息;
多扩展点信息,
Map<String,List<Map>>:多扩展点信息结构由Map类型组成,其中Map的Key使用扩展点的ID表示,Map的Value就是单一扩展点信息结构;
所述扩展点的后台工作流程为:
(1)页面集成子系统通过扩展点查询接口从模块管理子系统获取所需要的所有独立子系统扩展点信息;
(2)遍历获取的扩展点信息,通过parentID信息确定菜单的层次结构,并依据此层次结构重新组织扩展点信息;
(3)在依据层次结构组织扩展点信息的过程中,依据menuId组织菜单的顺序,之后前台将不会对菜单顺序进行排序;
(4)按层次结构组织好的扩展点信息,最终形成以扩展点名称为KEY的MAP结构;
所述扩展点的前台工作流程为:
(1)主页面在加载完毕后,向后台发送请求获取所有扩展点的信息,并用全局变量加以存储;
(2)主页面从全局变量的扩展点信息数据结构中读取所需扩展点的信息,并以此组织生产页面元素;
(3)当其他页面在动态生成页面时,均从全局变量的扩展点信息数据结构中获取所需信息;
所述扩展点的鉴权流程为:
(1)扩展点描述文件中增加userRole配置,取值范围为:Admin,User;
(2)在读取扩展点信息时,首先从session中获取用户登录选择是独立子系统还是默认方式,如是默认方式,则读取所有系统的扩展点信息;如是独立子系统,则获取给定独立子系统的扩展点信息;
(3)页面集成子系统从License管理模块获取当前License信息,根据配置项的ID和有效时间是否在License范围内确定配置项是否禁用;
(4)页面集成子系统读取扩展点信息后,从session中获取当前用户的角色,根据登录用户的角色确定配置项是否禁用;
(5)将扩展点信息组织成前台需要的数据返回给前台,前台根据disable属性决定菜单是否被禁用;
(6)同时将用户信息和扩展点信息一起传到前台,通过javascript全局变量存储以供各子系统使用。
2.如权利要求1所述的方法,其特征在于:所述模块为根据应用软件的特点将软件划分的逻辑单元,开发人员以模块为基本单元进行设计与开发;所述核心平台为模块运行的基础平台,所有模块均受核心平台的统一管理与调度;
所述核心平台为模块提供了运行的环境,在核心平台运行后,核心平台可以将系统中所有的模块启动并运行;所述模块的状态包括installed,resolved,uninstalle,active状态,允许在不停止核心平台和模块的基础上,动态的对模块进行卸载、更新操作。
3.如权利要求1所述的方法,其特征在于:所述扩展点存在唯一的标识扩展点ID,扩展点ID使用小写字母,如果存在多个单词,直接进行连接;所述扩展点信息存储到每个模块的实现绑定的META-INF目录下,结构为gridview/+[扩展点ID]+/*.properties,properties文件内容包括扩展点的具体描述,其内容结构由扩展点定义方提出约定,扩展点使用方依据约定进行编写。
4.如权利要求1所述的方法,其特征在于:所述核心平台将根据扩展点机制,动态的从系统中加载所需页面元素;当用户登录页面后,核心平台将查询系统中所有状态为“active”的模块,并根据扩展点规范获取满足规范要求的页面元素配置,并统一在页面加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110397363.XA CN102495730B (zh) | 2011-12-02 | 2011-12-02 | 一种动态可扩展的web界面的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110397363.XA CN102495730B (zh) | 2011-12-02 | 2011-12-02 | 一种动态可扩展的web界面的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102495730A CN102495730A (zh) | 2012-06-13 |
CN102495730B true CN102495730B (zh) | 2014-07-02 |
Family
ID=46187558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110397363.XA Active CN102495730B (zh) | 2011-12-02 | 2011-12-02 | 一种动态可扩展的web界面的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102495730B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902725A (zh) * | 2012-09-05 | 2013-01-30 | 曙光信息产业(北京)有限公司 | 一种基于扩展点实现Web页面重用的页面 |
CN104346144B (zh) * | 2013-07-26 | 2019-04-12 | 南京中兴力维软件有限公司 | Eclipse RCP扩展点配置方法及装置 |
CN103473086A (zh) * | 2013-08-29 | 2013-12-25 | 上海斐讯数据通信技术有限公司 | 一种宽带猫web界面切换方法 |
CN103440151A (zh) * | 2013-09-05 | 2013-12-11 | 北京京东尚科信息技术有限公司 | 一种动态加载Web页面的方法和装置 |
CN105630522B (zh) * | 2014-10-31 | 2019-03-08 | 阿里巴巴集团控股有限公司 | 一种Web应用的更新方法、装置和系统 |
CN108255556B (zh) * | 2017-12-29 | 2023-10-27 | 北京拉近众博科技有限公司 | 多个界面的界面共享方法及装置 |
CN110134302A (zh) * | 2019-05-15 | 2019-08-16 | 重庆八戒电子商务有限公司 | 快速定位节点的方法、装置、介质和电子设备 |
CN113656281B (zh) * | 2021-07-09 | 2023-06-30 | 北京航天云路有限公司 | 一种动态实时扩展Web线上功能的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1924801A (zh) * | 2006-09-21 | 2007-03-07 | 华为技术有限公司 | 一种基于实体的软件框架系统及运行方法 |
CN101763256A (zh) * | 2009-12-25 | 2010-06-30 | 金蝶软件(中国)有限公司 | 一种业务对象的扩展应用方法、装置及业务系统 |
KR100983137B1 (ko) * | 2004-02-06 | 2010-09-20 | 에스케이 텔레콤주식회사 | 오에스지아이 기반 주거용 게이트웨이 시스템 |
CN102087594A (zh) * | 2010-12-27 | 2011-06-08 | 用友软件股份有限公司 | 扩展点和插件的管理方法和装置 |
CN102135885A (zh) * | 2011-03-22 | 2011-07-27 | 曙光信息产业(北京)有限公司 | 一种模块化的软件开发架构 |
-
2011
- 2011-12-02 CN CN201110397363.XA patent/CN102495730B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100983137B1 (ko) * | 2004-02-06 | 2010-09-20 | 에스케이 텔레콤주식회사 | 오에스지아이 기반 주거용 게이트웨이 시스템 |
CN1924801A (zh) * | 2006-09-21 | 2007-03-07 | 华为技术有限公司 | 一种基于实体的软件框架系统及运行方法 |
CN101763256A (zh) * | 2009-12-25 | 2010-06-30 | 金蝶软件(中国)有限公司 | 一种业务对象的扩展应用方法、装置及业务系统 |
CN102087594A (zh) * | 2010-12-27 | 2011-06-08 | 用友软件股份有限公司 | 扩展点和插件的管理方法和装置 |
CN102135885A (zh) * | 2011-03-22 | 2011-07-27 | 曙光信息产业(北京)有限公司 | 一种模块化的软件开发架构 |
Non-Patent Citations (1)
Title |
---|
张威等.一种OSGI分布式扩展机制.《中国通信学会第六届学术年会论文集(下)》.2009,第194-200页. * |
Also Published As
Publication number | Publication date |
---|---|
CN102495730A (zh) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102495730B (zh) | 一种动态可扩展的web界面的方法 | |
US8832113B2 (en) | Data management apparatus and system | |
CN101082927B (zh) | 一种基于上下文文件系统的文件服务方法 | |
CN100456311C (zh) | 用于实施基于内容的文件系统安全性的系统和方法 | |
CN103902632A (zh) | 键值存储系统中构建文件系统的方法、装置及电子设备 | |
CN101360123B (zh) | 一种网络系统及其管理方法 | |
US9411526B1 (en) | Filesystem management | |
CN102243660A (zh) | 一种数据访问方法及设备 | |
CN103064957B (zh) | 实现acl的方法及客户端 | |
CN104123126A (zh) | 一种用于生成合并冲突记录列表的方法和装置 | |
CN103106260B (zh) | 一种面向角色的虚拟文件系统的建立方法 | |
CN103914290A (zh) | 一种操作命令处理方法及装置 | |
CN110968554A (zh) | 一种基于文件链分块的区块链存储方法、存储系统及存储介质 | |
CN103975324A (zh) | 访问权限管理系统及方法 | |
CN105981033A (zh) | 将放置策略分配给片段集合 | |
CN1722128A (zh) | 资源共享系统及其操作界面 | |
CN103226592A (zh) | 一种基于数据库的文件系统及文件存储方法 | |
CN104021137A (zh) | 一种基于目录授权的客户端本地开闭文件的方法及系统 | |
US9430343B1 (en) | Using affinity to mediate bias in a distributed storage system | |
Chen et al. | Policy-based access control system for delta lake | |
CN103514185B (zh) | 导航地图多个更新区域的数据库文件访问管理方法及装置 | |
Wang et al. | A cloud-computing-based data placement strategy in high-speed railway | |
CN103678562A (zh) | 容量获取方法和文件数据分配方法 | |
CN101887452A (zh) | 数据字典维护方法和装置 | |
Pan et al. | An open sharing pattern design of massive power big data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20160413 Address after: 211106 Jiangning economic and Technological Development Zone, Jiangsu, general Avenue, No. 37, No. Patentee after: JIANGSU DAWN INFORMATION TECHNOLOGY CO., LTD. Address before: 100084 Beijing Haidian District City Mill Street No. 64 Patentee before: Dawning Information Industry (Beijing) Co., Ltd. |