CN103324470A - 一种Web系统生成的方法和装置 - Google Patents

一种Web系统生成的方法和装置 Download PDF

Info

Publication number
CN103324470A
CN103324470A CN2012100758301A CN201210075830A CN103324470A CN 103324470 A CN103324470 A CN 103324470A CN 2012100758301 A CN2012100758301 A CN 2012100758301A CN 201210075830 A CN201210075830 A CN 201210075830A CN 103324470 A CN103324470 A CN 103324470A
Authority
CN
China
Prior art keywords
user
resource
abstract
base class
class
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.)
Granted
Application number
CN2012100758301A
Other languages
English (en)
Other versions
CN103324470B (zh
Inventor
胡东科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201210075830.1A priority Critical patent/CN103324470B/zh
Publication of CN103324470A publication Critical patent/CN103324470A/zh
Application granted granted Critical
Publication of CN103324470B publication Critical patent/CN103324470B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请提供了一种Web系统生成的方法和一种Web系统生成的装置,其中,所述方法包括:预置Web系统的通用组件资源;获得按预设规则生成的业务组件资源;拦截用户提交的资源获取请求,验证该用户是否具有访问权限;若有,则加载所述用户的访问权限对应的通用组件资源以及业务组件资源。本申请可以简化Web系统的搭建过程,提高Web系统的开发效率,并提高Web系统的扩展性、可靠性和可维护性。

Description

一种Web系统生成的方法和装置
技术领域
本申请涉及Web系统的技术领域,特别是涉及一种Web系统生成的方法和一种Web系统生成的装置。
背景技术
Web系统是以Internet为基础,提供WWW服务的各种组件的集合。这些组件包括客户端/浏览器、Web服务器与Web文档、应用服务器与Web应用程序、各种相关的协议和标准等。Web技术的发展,使得应用系统的开发更方便、功能更强大,在系统的开发过程中,Web技术起了一个骨架式的支持作用;与此同时,组件技术的发展为系统的开放性、集成性提供了便利,有效合理地引入组件技术是当前Web系统开发与发展的一个方向;充分利用Web技术与组件技术,提高Web系统的开发效率,以及,Web系统的可靠性和可维护性,是每个Web系统开发人员所关心的问题。
目前,从无到有的搭建一套Web系统的成本是非常大的,因为Web系统开发人员除了需要完成复杂的业务需求之外,还需要关注各种与业务无关的系统架构,比如:技术框架整合,系统性能调优,界面原型设计,用户权限体系设计等,而且在实际中,一套Web系统的开发需要在比较有限的时间内完成,现有的Web系统搭建方式显然过于费时费力。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种全新的Web系统生成机制,用以简化Web系统的搭建过程,提高Web系统的开发效率,并提高Web系统的扩展性、可靠性和可维护性。
发明内容
本申请的目的是提供一种Web系统生成方法和装置,用以简化Web系统的搭建过程,提高Web系统的开发效率,并提高Web系统的扩展性、可靠性和可维护性。
为了解决上述问题,本申请公开了一种Web系统生成方法,包括:
预置Web系统的通用组件资源;
获得按预设规则生成的业务组件资源;
拦截用户提交的资源获取请求,验证该用户是否具有访问权限;
若有,则加载所述用户的访问权限对应的通用组件资源以及业务组件资源。
优选的,所述拦截用户提交的资源获取请求,验证该用户是否具有访问权限的步骤包括:
在用户登录时加载该用户具有的角色和权限,其中,所述角色为一个或多个,每个角色对应多个权限;
拦截用户访问资源的URL请求,依据该请求提取该资源对应的权限,将所述资源对应的权限与用户对应角色中的权限进行比对,若存在,则判定该用户具有访问权限。
优选的,所述按预设规则生成的业务组件资源为继承抽象基类的派生类,其中,所述抽象基类定义了相应的抽象方法,所述派生类实现了所述抽象基类定义好的抽象方法,所述抽象方法为需要实现的业务逻辑。
优选的,所述加载所述用户的访问权限对应的通用组件资源以及业务组件资源的步骤包括:
调用所述用户所请求资源的派生类所继承的抽象基类;
调用所述抽象基类中定义的抽象方法;
进入所述派生类调用实现所述抽象方法的业务逻辑;
执行所述业务逻辑,返回相应的输出。
优选的,所述加载所述用户的访问权限对应的通用组件资源以及业务组件资源的步骤还包括:
在所述调用抽象基类中定义的抽象方法的子步骤之前,在所述抽象基类中进行变量赋值的预校验处理;
在所述执行业务逻辑的子步骤之后,返回所述抽象基类中进行变量赋值的后校验处理。
优选的,所述资源包括菜单和/或页面。
本申请实施例还公开了一种Web系统生成装置,包括:
通用组件预置模块,用于预置Web系统的通用组件资源;
业务组件获取模块,用于获得按预设规则生成的业务组件资源;
用户权限验证模块,用于拦截用户提交的资源获取请求,验证该用户是否具有访问权限;
资源加载模块,用于在用户具有访问权限时,加载所述用户的访问权限对应的通用组件资源以及业务组件资源。
优选的,所述用户权限验证模块包括:
用户角色权限获取子模块,用于在用户登录时加载该用户具有的角色和权限,其中,所述角色为一个或多个,每个角色对应多个权限;
验证子模块,用于拦截用户访问资源的URL请求,依据该请求提取该资源对应的权限,将所述资源对应的权限与用户对应角色中的权限进行比对,若存在,则判定该用户具有访问权限。
优选的,所述按预设规则生成的业务组件资源为继承抽象基类的派生类,其中,所述抽象基类定义了相应的抽象方法,所述派生类实现了所述抽象基类定义好的抽象方法,所述抽象方法为需要实现的业务逻辑。
优选的,所述资源加载模块包括:
基类调用子模块,用于调用所述用户所请求资源的派生类所继承的抽象基类;
抽象方法调用子模块,用于调用所述抽象基类中定义的抽象方法;
派生类调用子模块,用于进入所述派生类调用实现所述抽象方法的业务逻辑;
业务执行子模块,用于执行所述业务逻辑,返回相应的输出。
与现有技术相比,本申请包括以下优点:
本申请通过加载实现该Web系统开发框架的jar包及相关的配置文件到运行环境,并用Apache Tomcat,Jetty,Jboss等Java EE容器来部署,即可搭建起一套WEB应用系统,包括默认的界面设计,用户权限认证体系及用户管理模块的实现等,开发人员只需要专注于业务需求的开发,按照框架的约定规范进行开发工作,快速简易,并且可扩展不同的展现方式。从而简化了Web系统的搭建过程,提高了Web系统的开发效率,并提高了Web系统的扩展性、可靠性和可维护性。
附图说明
图1是本申请的一种Web系统生成方法实施例的步骤流程图;
图2是本申请的一种示例中用户管理模块的界面示意图;
图3是本申请的一种示例中Web系统开发框架默认的界面布局示意图;
图4是图2所示用户管理模块的派生类与基类之间交互关系的示意图;
图5是本申请的一种示例中新建用户操作成功后的页面展示图;
图6是本申请的一种示例中搜索关联的类定义的示意图;
图7是本申请的一种示例中用户模块业务控制层(Action)的派生类UserAction的搜索,分页及列表数据部分的代码的示意图;
图8是本申请的一种示例中第一个业务场景实现后的效果示意图;
图9是本申请的一种示例中第一个业务场景的请求交互方式的示意图;
图10是本申请的一种示例中第二个业务场景实现后的效果示意图;
图11是本申请的一种示例中第三个业务场景实现后的效果示意图;
图12是本申请的一种示例中第三个业务场景的请求交互方式的示意图;
图13是本申请的一种示例中第四个业务场景实现后的效果示意图;
图14是本申请的一种示例中第四个业务场景的请求交互方式的示意图;
图15是本申请的上述四个业务场景中3个抽象基类的类图;
图16是本申请的一种示例中自定义页面的开发框架实现方式的示意图;
图17是本申请的一种示例中整合Flex框架的实现方式的示意图;
图18是本申请的一种Web系统生成装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
目前各企业普遍存在的难题是,对于一个新的项目,需要有一个新的业务系统来支撑,但业务系统需要时间和人力来进行开发,常常这两点也都比较有限,而且除了完成复杂的业务需求之外,还需要关注各种与业务无关的系统架构,比如:技术框架整合,系统性能调优,界面原型设计,用户权限体系设计等。如果有一套已有的简便快速的WEB系统开发框架,完成了除自身业务需求之外的所有事情,开发人员只需要关注业务逻辑的实现,能够快速地开发出一个业务系统,在时间和人力有限的情况下,更能体现出该框架的价值所在。
对此,本专利发明人创造性地提出申请实施例的核心构思之一在于,通过加载实现该Web系统开发框架的jar包及相关的配置文件到运行环境,并用Apache Tomcat,Jetty,Jboss等Java EE容器来部署,即可搭建起一套WEB应用系统,包括默认的界面设计,用户权限认证体系及用户管理模块的实现等,开发人员只需要专注于业务需求的开发,按照框架的约定规范进行开发工作,快速简易,并且可扩展不同的展现方式。
参照图1,示出了本申请的一种Web系统生成方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101、预置Web系统的通用组件资源;
步骤102、获得按预设规则生成的业务组件资源;
步骤103、拦截用户提交的资源获取请求,验证该用户是否具有访问权限;
步骤104、若有,则加载所述用户的访问权限对应的通用组件资源以及业务组件资源。
在本申请实施例中,WEB系统的搭建是指业务系统利用该WEB系统开发框架,包括框架的jar包和与该框架相关的配置、Javascript、CSS、页面等信息,并用Apache Tomcat等Java EE容器部署起来后,用户可以看到完整的界面信息及进行相应的界面操作。
具体而言,本申请的WEB系统开发框架包含的所有开发完成的功能都可以看作是通用功能(通用组件资源),如果业务系统有新的需求,需要开发新的组件(业务组件资源)来支持,框架将针对新需求开发出新组件融进到新版本的框架上,业务系统只需要升级到新版本的框架,就可以使用新组件了,这样就实现了框架的组件可扩展,当然框架也是可扩展的,比如可自定义页面,也可以用flex等其他技术来实现业务。
在本申请的一种优选实施例中,所述步骤103具体可以包括如下子步骤:
子步骤S11、在用户登录时加载该用户具有的角色和权限,其中,所述角色为一个或多个,每个角色对应多个权限;
子步骤S12、拦截用户访问资源的URL请求,依据该请求提取该资源对应的权限,将所述资源对应的权限与用户对应角色中的权限进行比对,若存在,则判定该用户具有访问权限。
在具体实现中,所述按预设规则生成的业务组件资源可以为继承抽象基类的派生类,其中,所述抽象基类定义了相应的抽象方法,所述派生类实现了所述抽象基类定义好的抽象方法,所述抽象方法为需要实现的业务逻辑。
在这种情况下,所述加载所述用户的访问权限对应的通用组件资源以及业务组件资源的步骤具体可以包括如下子步骤:
子步骤S21、调用所述用户所请求资源的派生类所继承的抽象基类;
子步骤S22、调用所述抽象基类中定义的抽象方法;
子步骤S23、进入所述派生类调用实现所述抽象方法的业务逻辑;
子步骤S24、执行所述业务逻辑,返回相应的输出。
应用本申请实施例,用户可以及通过约定好的URL请求业务系统的资源(菜单和/或页面),首先会被WEB系统开发框架里的权限验证类方法所拦截,验证该用户是否有权限访问;如果有权限访问,就会被要访问的资源类所继承的框架里已定义的抽象基类拦截,进行变量赋值等预校验处理后,再调用抽象基类里定义的抽象方法;抽象方法需要由资源类里对应该抽象方法的实现方法来完成具体的业务逻辑,相当于调用抽象基类的抽象方法就会进入派生类里的实现方法;派生类的实现方法完成,即执行完具体的业务逻辑后会接着返回抽象基类的实现方法进行变量赋值等后校验处理,最后返回约定的页面或者相应的输出。
为使本领域技术人员更好地理解本申请,以下通过一个应用本申请实施例生成Web系统的示例进一步说明本申请。
参考图2所示的用户管理模块的界面示意图,假设本申请的WEB系统开发框架默认的用户管理模块包括用户,部门,公司,角色,权限,资源六个子模块。参考图3所示的Web系统开发框架默认的界面布局示意图,本申请的Web系统开发框架的界面布局可以分为:一级菜单,二级菜单,分组菜单,三级菜单,右击菜单,搜索栏,分页控件,数据列表。上述每个组成部分之间存在相互联动的关系,例如,在本框架中可作如下约定:一级菜单联动二级菜单,二级菜单联动分组菜单,分组菜单联动三级菜单,列表标题和数据及分页控件,列表数据联动右击菜单,其中,右击菜单和三级菜单达到的效果相同,只是不同的展现方式,以上就是开发框架的界面布局和菜单联动关系。
每个菜单相当于一个权限,都有对应的URL(Uniform/UniversalResource Locator,统一资源定位符)。可以通过设置不同的角色,每个角色拥有其相对应的多个权限,并给用户分配对应的一个或多个角色。系统启动时,会加载所有的角色码及其对应的权限码。用户登录系统时,会加载其具有的角色及权限。用户访问菜单时,菜单对应的URL请求会被拦截,按约定得到处理后的权限码,同时可知拥有该权限的角色,与登录用户所具有的角色进行比对,便可判断是否允许该用户被访问,这就是本申请的Web系统开发框架的用户权限控制体系。
本申请实施例在具体实现上定义了多个抽象基类。每个抽象基类都定义了相应的抽象方法。各业务模块的派生类继承抽象基类,并且需要实现基类定义好的抽象方法。这些抽象方法就是各业务模块需要实现的具体业务逻辑,从而达到架构与业务分离的目的。
具体可以参照图4所示的图2所示用户管理模块的派生类与基类之间交互关系的示意图,需要特别关注的是,图4中箭头线为一个交互请求的发起,左边的长方框为派生类需要实现的基类定义的抽象方法,并返回相应结果给基类,最后由基类返回对应的资源(菜单和/或页面):
1)用户成功登录系统后,先获取可访问的一级菜单(用户管理),默认选中第一个可联动出可访问的二级菜单(用户,角色,权限,资源),这部分由本申请的开发框架根据给用户配置的角色对应的权限,自动实现页面展现;
2)接下来定义派生类UserAction来完成业务逻辑的实现,其继承自基类LeftListAction,点击‘用户’菜单相当于请求基类left方法,返回共用页面left.jsp,并展示分组菜单(已启动用户,待审核用户);
3)默认选中第一个分组菜单(已启动用户)后,请求基类thirdmenu方法返回共用页面thridmenu.jsp,并展示三级菜单(新建用户,修改用户,查看用户,删除用户,密码重置);
4)同时请求基类search方法,该方法内调用抽象方法loadSearchList,参数condition相当于‘已启动用户’的标识,交由派生类根据condition分别实现各分组具有的搜索条件,由基类返回共用页面search.jsp展示;
5)同时请求基类list方法,该方法调用抽象方法loadListSupport,参数ListSupport是一个分页控件类,包含每页条数,总条数,总页数等,参数condition作用同search方法,交由派生类实现该方法,设置该分组的分页信息,由基类返回共用页面list.jsp及右击菜单;
6)同时请求基类data方法,该方法调用抽象方法loadListData,参数condition作用同search方法,参数pageNo和pageSize分别标明第几页和每页条数,交由派生类实现该方法,返回该分组的pageNo页的pageSize条数据,由基类返回默认页面data.jsp,或修改pageName参数返回页面pageName.jsp,选中数据后可右击展示上一步加载完的右击菜单;
7)前6步已完成所有列表数据的加载,如果需要搜索特定数据,可以在搜索框里输入搜索条件,点击搜索按钮即可重复第5步和第6步操作;
8)打开查看或操作页面可通过点击三级菜单或右击菜单请求基类load方法,该方法调用抽象方法loadPage,参数pageName标识为哪个页面,交由派生类根据pageName分别实现各自的业务逻辑,返回页面pageName.jsp,比如新建用户可定义pageName为create,返回的页面为create.jsp;
9)在上一步load方法得到的页面上填写完信息后,点击提交后便请求基类submit方法,该方法调用submitPage抽象方法,参数pageName作用同load方法,交由派生类根据pageName分别实现各自的业务逻辑,返回页面pageName.jsp,并刷新列表数据即重复第5步和第6步。这过程中如果需要弹出提示框或提示用户错误的,可分别设置基类的pageMessage和pageError变量;如果操作成功会有默认的提示信息,可以通过设置基类的successMessage变量自定义提示,如果发生异常错误,会调整到共用错误页面error.jsp。图5即为新建用户操作成功后的页面展示图。
以下重点介绍搜索的实现细节及达到的效果。参考图6所示的搜索关联的类定义的示意图,其中定义了4个类,3个枚举类分别为操作符定义OperatorEnum,显示类型定义ShowTypeEnum,取值类型定义ValueTypeEnum,及一个自定义类SearchSupport,用来标识一个搜索条件,各个内部参数定义如下:name代表数据库字段标识,showName代表在页面显示的文字,value/values表示该搜索条件的值,operator,showType,valueType分别表示3个枚举类中的其中一个枚举值,默认都是每个类的第一个值。
参考图7所示的用户模块业务控制层(Action)的派生类UserAction的搜索,分页及列表数据部分的代码。了解loadListSearch方法后可知页面上需要展示三个搜索字段:姓名(模糊搜索LIKE,文本输入TEXT,默认字符串类型STRING)、账号(精确搜索EQUAL,文本输入TEXT,默认字符串类型STRING)、邮箱(同姓名),具体可参见图2;‘是否删除’的条件是所有列表都必须的,值为false(未删除),精确搜索EQUAL,不需要展示HIDDEN;根据condition的取值判断是否需要添加‘是否启用’的条件,已启用用户的取值为true,精确搜索EQUAL,不需要展示HIDDEN。在loadListSupport和loadListData只需要调用基类的handleSearchList方法并传入condition参数,便可完成对页面输入的搜索内容进行处理并根据展现类型showType,取值类型valueType设置值到SearchSupport的变量value或values中。在handleSearchList方法的处理过程中会再次调用loadListSearch方法获取其具有的搜索项并循环赋值,返回赋完值后的SearchSupport列表,接着调用该模块的业务逻辑层(Service)的类方法和数据访问层(Dao)的类方法,最终将其解析成HQL(Hibernate Query Language,一种Hibernate框架提供的完全面向对象的查询语言),执行后返回数据。Dao层针对SearchSupport相应地定义了一个基类来处理,Dao层的派生类须继承该基类,将SearchSupport列表传给基类方法处理,基类方法根据operator的定义及是否value/values有值来判断是否添加过滤调整在HQL上。
在具体实现中,应用本申请实施例可以对多样的业务场景需要更多的扩展,接下来将介绍5种基于此框架的扩展方式。
第一个业务场景是在运营商的查看页面可以看到所有与运营商有关的信息,比如该运营商的联系人,账户记录等,实现后的效果如图8所示。实现此需求只要在基类LeftListAction上新增页面加载方法groupload,列表加载方法pagelist,列表数据加载方法pagedata,再将多个列表的权限与页面的权限关联,实现页面上的权限控制,请求交互方式如图9所示。详细流程如下:
1)定义派生类UserAction来完成业务逻辑的实现,其继承自基类LeftListAction,请求基类pageload方法,返回共用页面pageload.jsp;
2)请求基类load方法,该方法调用抽象方法loadPage,参数pageName标识为哪个页面,交由派生类根据pageName分别实现各自的业务逻辑,返回页面pageName.jsp;
3)请求基类pagelist方法,该方法调用抽象方法loadListSupport,参数ListSupport是一个分页控件类,包含每页条数,总条数,总页数等,参数condition作用同search方法,交由派生类实现该方法,设置该分组的分页信息,由基类返回共用页面pagelist.jsp;
4)请求基类pagedata方法,该方法调用抽象方法loadListData,参数condition作用同search方法,参数pageNo和pageSize分别标明第几页和每页条数,交由派生类实现该方法,返回该分组的pageNo页的pageSize条数据,由基类返回默认页面pagedata.jsp。
第二个业务场景是需要对大批量的数据进行合理的分类,并将分组信息构成一个树状结果进行展示和选取,实现后的效果如图10所示。由于树形分组不具有普遍性,所以在基类里只定义了一个变量treeInLeft标识是否需要在页面显示分组,但在派生类里必须实现tree方法,没有和基类的交互请求,都在派生类里完成,详细流程如下:
在URL上对treeInLeft赋值为true(默认为false),在返回的left.jsp页面会出现分组的按钮,并自动会调用派生类里实现的tree方法,并返回默认的tree.jsp页面,在该页面里实现树状分组的数据加载。
第三个业务场景是新建修改用户时也需要同时添加该用户拥有的角色,实现后的效果如图11所示。鉴于此类需求的普遍性,而且不易在上述基类中实现,故定义了一个新的抽象基类LeftListplugAction,但它继承自基类LeftListAction,自然也拥有基类除私有的所有变量和方法,并新定义了页面加载方法plugload,页面提交方法plugsubmit,已选数据加载方法plugin,已选数据删除方法plugdel,选取页面加载方法pluglist,选取数据加载方法plugdata,请求交互方式如图12所示,详细流程如下:
1)定义派生类UserAction来完成业务逻辑的实现,其继承自基类LeftListplugAction,请求基类plugload方法,该方法调用抽象方法loadPage,参数pageName标识为哪个页面,交由派生类根据pageName分别实现各自的业务逻辑,返回页面pageName.jsp;
2)同时请求基类plugin方法,该方法里会调用抽象方法loadPluginIds,参数pageName标识为哪个页面,交由派生类根据pageName分别实现各自的业务逻辑,用于获取已经拥有的pluginIds,该方法返回后进行验证并保存缓存中,若pluginIds不为空,则调用抽象方法loadPluginList,通过pluginIds获取数据pluginList,并返回页面plugin.jsp;
3)页面上可进行‘删除角色’操作,在plugin页面上选中需要删除的role,再点击该操作按钮,调用基类plugdel方法,用于把该roleId从roleIds的缓存中删除;
4)页面上可进行‘添加角色’操作,点击该操作会调用基类pluglist方法,该方法里会调用抽象方法loadPlugListSupport,参数pageName同2所述,参数plugListSupport是一个分页控件类,包含每页条数,总条数,总页数等,派生类对该参数设值后返回pluglist.jsp页面;
5)pluglist.jsp页面返回后会调用基类plugdata方法,该方法里会调用抽象方法loadPlugDataList,参数pageName同2所述,参数pageNo和pageSize用于实现分页获取功能,完成后会返回数据dataList,并返回plugdata.jsp页面;
6)plugdata.jsp页面会提供勾选操作,如果缓存pluginIds里已存在,会自动勾选上,勾选好需要的数据后,点击提交操作,就重新调用基类plugin方法,调用流程同上述2),返回并刷新plugin.jsp页面;
7)最后点击提交按钮,调用基类plugsubmit方法,该方法里会调用抽象方法submitPluginPage,参数pageName同2)中所述,在派生类里可对勾选的数据,即缓存里的pluginIds进行相应的处理,保存到数据库,并返回pageName.jsp页面,并提示操作成功。
第四个业务场景是新建部门模块时需要选择部门主管,由于用户较多时不宜采用下拉方式,因此实现中须支持搜索,实现的效果如图13左边的选择框所示,并双击相应用户即可选中。鉴于此类需求的普遍性,而且不易在上述2个基类中实现,所以定义了一个新的抽象基类LeftListButtonAction,继承自基类LeftListAction,自然也拥有父基类除私有的所有变量和方法,并新定义了选取页面加载方法buttonlist,选取数据加载方法buttondata,交互请求方式如图14所示,详细流程如下:
1)定义派生类UserAction来完成业务逻辑的实现,其继承自基类LeftListButtonAction,请求基类buttonlist方法,该方法里会调用抽象方法loadButtonListSupport,参数condition标识为哪个条件,交由派生类根据condition分别实现各自的业务逻辑,参数buttonListSupport是一个分页控件类,包含每页条数,总条数,总页数等,派生类对该参数设值后返回buttonlist.jsp页面;
2)buttonlist.jsp页面返回后会调用基类buttondata方法,该方法里会调用抽象方法loadButtonDataList,参数condition同1)中所述,参数pageNo和pageSize用于实现分页获取功能,完成后会返回数据dataList,并返回buttondata.jsp页面,在数据列表上双击即可选中。
第五个业务场景是新建部门模块时需要选择它的上级部门,形成一个树状的组织架构,如果采用场景四的实现方法当然也可以做到,但是不够直观清晰,所以可以引入树状选择的方式,实现的效果如图13右边的选择框所示,并双击相应的部门即可选中。鉴于此类需求的应用场景有限,只需在派生类上实现buttontree方法,并按照约定规范进行页面配置,并对数据进行格式处理,流程如下:点击选项框后的按钮图标,会调用派生类的buttontree方法,返回默认的buttontree.jsp页面,在该页面里实现树状分组的数据加载。
基于上述3个抽象基类的描述,可以了解它们的具体实现,从请求交互图上可以清晰地看到开发人员只需要将主要工作重点放在派生类对于基类的抽象方法的实现上,即图中左边的长方框。更为详细直观细节的深入,请参见这3个抽象基类的类图,如图15所示。图中展示了他们的内部变量和方法的定义,继承关系及其他相关类的定义,将上述对于框架的流程描述与之对应可以更好地理解整个框架所要完成的功能及其快速简易的特性。
当上述基类实现无法满足业务需求时,开发框架也提供了自定义页面的实现方式(如图16)和整合Flex框架的实现方式(如图17),当然也可以直接把外部链接配置到该框架的二级菜单上。作为一个开发框架,快速简易的同时,可扩展性更加显得极为重要。
本发明实现的WEB系统开发框架使用JAVA语言,基于Struts2,Spring2,Hibernate3开源框架实现MVC模式的系统架构,其中,MVC架构是″Model-View-Controller″的缩写,中文翻译为″模型-视图-控制器″。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。
本申请基于Spring Security2开源框架实现的用户权限控制体系,在此基础上对通用的展示和实现方式进行了必要的封装,包括菜单分类和联动,列表、搜索和分页控件的样式和联动,与Flex开发框架的整合,自定义页面实现等,利用项目构建和管理工具Maven对该开发框架进行版本控制及其依赖的lib库管理,并将每次改进按不同版本分别编译成相对应的JAR文件格式进行发布。凡是使用该WEB系统开发框架的项目只要在其lib库中加入该JAR包,如果采用Maven进行项目构建和管理,则只需在配置文件里加入该框架的依赖配置,Maven会自动加载该框架及其依赖的lib库,再启动Tomcat或者其他Java EE容器即可完成系统的部署。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
参照图18,示出了本申请的一种Web系统生成装置实施例的结构框图,具体可以包括如下模块:
通用组件预置模块21,用于预置Web系统的通用组件资源;
业务组件获取模块22,用于获得按预设规则生成的业务组件资源;
用户权限验证模块23,用于拦截用户提交的资源获取请求,验证该用户是否具有访问权限;
资源加载模块24,用于在用户具有访问权限时,加载所述用户的访问权限对应的通用组件资源以及业务组件资源。
在本申请的一种优选实施例中,所述用户权限验证模块23可以包括如下子模块:
用户角色权限获取子模块,用于在用户登录时加载该用户具有的角色和权限,其中,所述角色为一个或多个,每个角色对应多个权限;
验证子模块,用于拦截用户访问资源的URL请求,依据该请求提取该资源对应的权限,将所述资源对应的权限与用户对应角色中的权限进行比对,若存在,则判定该用户具有访问权限。
在具体实现中,所述按预设规则生成的业务组件资源为继承抽象基类的派生类,其中,所述抽象基类定义了相应的抽象方法,所述派生类实现了所述抽象基类定义好的抽象方法,所述抽象方法为需要实现的业务逻辑。
在这种情况下,所述资源加载模块具体可以包括如下子模块:
基类调用子模块,用于调用所述用户所请求资源的派生类所继承的抽象基类;
抽象方法调用子模块,用于调用所述抽象基类中定义的抽象方法;
派生类调用子模块,用于进入所述派生类调用实现所述抽象方法的业务逻辑;
业务执行子模块,用于执行所述业务逻辑,返回相应的输出。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上对本申请所提供的一种Web系统生成方法和一种Web系统生成装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种Web系统生成方法,其特征在于,包括:
预置Web系统的通用组件资源;
获得按预设规则生成的业务组件资源;
拦截用户提交的资源获取请求,验证该用户是否具有访问权限;
若有,则加载所述用户的访问权限对应的通用组件资源以及业务组件资源。
2.根据权利要求1所述的方法,其特征在于,所述拦截用户提交的资源获取请求,验证该用户是否具有访问权限的步骤包括:
在用户登录时加载该用户具有的角色和权限,其中,所述角色为一个或多个,每个角色对应多个权限;
拦截用户访问资源的URL请求,依据该请求提取该资源对应的权限,将所述资源对应的权限与用户对应角色中的权限进行比对,若存在,则判定该用户具有访问权限。
3.根据权利要求1或2所述的方法,其特征在于,所述按预设规则生成的业务组件资源为继承抽象基类的派生类,其中,所述抽象基类定义了相应的抽象方法,所述派生类实现了所述抽象基类定义好的抽象方法,所述抽象方法为需要实现的业务逻辑。
4.根据权利要求3所述的方法,其特征在于,所述加载所述用户的访问权限对应的通用组件资源以及业务组件资源的步骤包括:
调用所述用户所请求资源的派生类所继承的抽象基类;
调用所述抽象基类中定义的抽象方法;
进入所述派生类调用实现所述抽象方法的业务逻辑;
执行所述业务逻辑,返回相应的输出。
5.根据权利要求4所述的方法,其特征在于,所述加载所述用户的访问权限对应的通用组件资源以及业务组件资源的步骤还包括:
在所述调用抽象基类中定义的抽象方法的子步骤之前,在所述抽象基类中进行变量赋值的预校验处理;
在所述执行业务逻辑的子步骤之后,返回所述抽象基类中进行变量赋值的后校验处理。
6.根据权利要求5所述的方法,其特征在于,所述资源包括菜单和/或页面。
7.一种Web系统生成装置,其特征在于,包括:
通用组件预置模块,用于预置Web系统的通用组件资源;
业务组件获取模块,用于获得按预设规则生成的业务组件资源;
用户权限验证模块,用于拦截用户提交的资源获取请求,验证该用户是否具有访问权限;
资源加载模块,用于在用户具有访问权限时,加载所述用户的访问权限对应的通用组件资源以及业务组件资源。
8.根据权利要求7所述的装置,其特征在于,所述用户权限验证模块包括:
用户角色权限获取子模块,用于在用户登录时加载该用户具有的角色和权限,其中,所述角色为一个或多个,每个角色对应多个权限;
验证子模块,用于拦截用户访问资源的URL请求,依据该请求提取该资源对应的权限,将所述资源对应的权限与用户对应角色中的权限进行比对,若存在,则判定该用户具有访问权限。
9.根据权利要求7或8所述的装置,其特征在于,所述按预设规则生成的业务组件资源为继承抽象基类的派生类,其中,所述抽象基类定义了相应的抽象方法,所述派生类实现了所述抽象基类定义好的抽象方法,所述抽象方法为需要实现的业务逻辑。
10.根据权利要求9所述的装置,其特征在于,所述资源加载模块包括:
基类调用子模块,用于调用所述用户所请求资源的派生类所继承的抽象基类;
抽象方法调用子模块,用于调用所述抽象基类中定义的抽象方法;
派生类调用子模块,用于进入所述派生类调用实现所述抽象方法的业务逻辑;
业务执行子模块,用于执行所述业务逻辑,返回相应的输出。
CN201210075830.1A 2012-03-21 2012-03-21 一种Web系统生成的方法和装置 Expired - Fee Related CN103324470B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210075830.1A CN103324470B (zh) 2012-03-21 2012-03-21 一种Web系统生成的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210075830.1A CN103324470B (zh) 2012-03-21 2012-03-21 一种Web系统生成的方法和装置

Publications (2)

Publication Number Publication Date
CN103324470A true CN103324470A (zh) 2013-09-25
CN103324470B CN103324470B (zh) 2017-09-22

Family

ID=49193240

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210075830.1A Expired - Fee Related CN103324470B (zh) 2012-03-21 2012-03-21 一种Web系统生成的方法和装置

Country Status (1)

Country Link
CN (1) CN103324470B (zh)

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605528A (zh) * 2013-12-16 2014-02-26 北京中电普华信息技术有限公司 一种业务开发方法及装置
WO2016000126A1 (zh) * 2014-06-30 2016-01-07 北京新媒传信科技有限公司 一种自动化部署方法和终端
CN105389223A (zh) * 2014-09-04 2016-03-09 上海福网信息科技有限公司 一种系统自检式看门狗
CN105512515A (zh) * 2015-11-30 2016-04-20 上海爱数信息技术股份有限公司 一种基于权限码控制功能模块显示的方法
CN105574207A (zh) * 2016-01-21 2016-05-11 上海谦讯网络科技有限公司 一种wap网页开发方法
CN105893013A (zh) * 2015-12-07 2016-08-24 乐视云计算有限公司 工程构建系统及其构建方法
CN106095408A (zh) * 2016-05-31 2016-11-09 浙江网新恒天软件有限公司 一种数据监控和代码自动生成与部署的系统及方法
CN107168704A (zh) * 2017-05-11 2017-09-15 金蝶软件(中国)有限公司 一种多页面资源文件注入方法及装置
CN107181761A (zh) * 2017-07-20 2017-09-19 深圳市茁壮网络股份有限公司 一种操作系统登陆及访问权限控制的控制方法及系统
CN107194238A (zh) * 2017-05-22 2017-09-22 郑州云海信息技术有限公司 一种管理访问权限的方法和装置及计算机可读存储介质
CN107679417A (zh) * 2017-10-09 2018-02-09 郑州云海信息技术有限公司 一种用户操作权限管理的方法和系统
CN107707625A (zh) * 2017-09-05 2018-02-16 江苏电力信息技术有限公司 基于Maven的前台资源打包并进行版本管理与使用的方法
CN108600175A (zh) * 2018-03-27 2018-09-28 深圳世联松塔装饰科技有限责任公司 系统操作权限的控制方法、装置及存储介质
CN108595479A (zh) * 2018-03-13 2018-09-28 泰安协同软件有限公司 基于统一Web出入口的Web请求处理方法
CN109376533A (zh) * 2018-11-06 2019-02-22 北京芯盾时代科技有限公司 一种行为检测方法及装置
CN109377179A (zh) * 2018-10-23 2019-02-22 深圳易嘉恩科技有限公司 基于Vue的前端流程管理系统及方法
CN109525584A (zh) * 2018-11-26 2019-03-26 竞技世界(北京)网络技术有限公司 一种构建移动端跨平台多类型应用容器的方法
CN109614177A (zh) * 2018-10-31 2019-04-12 阿里巴巴集团控股有限公司 选择组件及其控制方法
CN109614160A (zh) * 2018-09-30 2019-04-12 阿里巴巴集团控股有限公司 提示方法、装置和电子设备
CN109766158A (zh) * 2018-12-27 2019-05-17 益萃网络科技(中国)有限公司 用户界面的展示方法、装置、计算机设备和存储介质
CN110110530A (zh) * 2019-01-25 2019-08-09 深圳市华阳国际工程设计股份有限公司 基于bim平台的信息权限管理方法、装置以及存储装置
CN110599112A (zh) * 2018-06-12 2019-12-20 北京顺智信科技有限公司 一种网络页面开发、维护方法和装置
CN111381864A (zh) * 2020-04-01 2020-07-07 中国铁塔股份有限公司 一种软件系统的配置方法及装置
CN113031928A (zh) * 2021-03-30 2021-06-25 广州虎牙科技有限公司 web系统生成方法及装置、电子设备和计算机可读存储介质
CN114661405A (zh) * 2022-04-07 2022-06-24 贝壳找房网(北京)信息技术有限公司 分布式系统前端页面集成方法、装置及存储介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1480884A (zh) * 2003-07-16 2004-03-10 中南大学 基于互联网结构的群体智能人-机决策方法
EP1450271A2 (en) * 2003-02-24 2004-08-25 Microsoft Corporation Infrastructure for generating web content
US20070028163A1 (en) * 2005-07-29 2007-02-01 Microsoft Corporation Lightweight application program interface (API) for extensible markup language (XML)
CN1924801A (zh) * 2006-09-21 2007-03-07 华为技术有限公司 一种基于实体的软件框架系统及运行方法
CN101414253A (zh) * 2007-10-17 2009-04-22 华为技术有限公司 一种权限管理方法及系统
CN101794226A (zh) * 2010-03-08 2010-08-04 山东大学 一种适应多业务抽象层次的服务化软件构造方法和系统
CN101877109A (zh) * 2010-04-08 2010-11-03 苏州德融嘉信信用管理技术有限公司 基于网上银行业务平台的应用系统工具集
CN101876896A (zh) * 2009-04-30 2010-11-03 深圳市永兴元科技有限公司 一种提升信息化技术的电子政务开发系统
CN101923465A (zh) * 2010-06-25 2010-12-22 深圳创维-Rgb电子有限公司 一种面向嵌入式应用的易扩展web服务系统
CN102087599A (zh) * 2011-02-24 2011-06-08 北京中电普华信息技术有限公司 一种基于J2EE的Web应用系统开发方法及装置
CN102135885A (zh) * 2011-03-22 2011-07-27 曙光信息产业(北京)有限公司 一种模块化的软件开发架构

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1450271A2 (en) * 2003-02-24 2004-08-25 Microsoft Corporation Infrastructure for generating web content
CN1480884A (zh) * 2003-07-16 2004-03-10 中南大学 基于互联网结构的群体智能人-机决策方法
US20070028163A1 (en) * 2005-07-29 2007-02-01 Microsoft Corporation Lightweight application program interface (API) for extensible markup language (XML)
CN1924801A (zh) * 2006-09-21 2007-03-07 华为技术有限公司 一种基于实体的软件框架系统及运行方法
CN101414253A (zh) * 2007-10-17 2009-04-22 华为技术有限公司 一种权限管理方法及系统
CN101876896A (zh) * 2009-04-30 2010-11-03 深圳市永兴元科技有限公司 一种提升信息化技术的电子政务开发系统
CN101794226A (zh) * 2010-03-08 2010-08-04 山东大学 一种适应多业务抽象层次的服务化软件构造方法和系统
CN101877109A (zh) * 2010-04-08 2010-11-03 苏州德融嘉信信用管理技术有限公司 基于网上银行业务平台的应用系统工具集
CN101923465A (zh) * 2010-06-25 2010-12-22 深圳创维-Rgb电子有限公司 一种面向嵌入式应用的易扩展web服务系统
CN102087599A (zh) * 2011-02-24 2011-06-08 北京中电普华信息技术有限公司 一种基于J2EE的Web应用系统开发方法及装置
CN102135885A (zh) * 2011-03-22 2011-07-27 曙光信息产业(北京)有限公司 一种模块化的软件开发架构

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605528A (zh) * 2013-12-16 2014-02-26 北京中电普华信息技术有限公司 一种业务开发方法及装置
WO2016000126A1 (zh) * 2014-06-30 2016-01-07 北京新媒传信科技有限公司 一种自动化部署方法和终端
CN105389223B (zh) * 2014-09-04 2018-09-28 上海福网信息科技有限公司 一种系统自检式看门狗
CN105389223A (zh) * 2014-09-04 2016-03-09 上海福网信息科技有限公司 一种系统自检式看门狗
CN105512515A (zh) * 2015-11-30 2016-04-20 上海爱数信息技术股份有限公司 一种基于权限码控制功能模块显示的方法
CN105893013A (zh) * 2015-12-07 2016-08-24 乐视云计算有限公司 工程构建系统及其构建方法
CN105574207A (zh) * 2016-01-21 2016-05-11 上海谦讯网络科技有限公司 一种wap网页开发方法
CN106095408A (zh) * 2016-05-31 2016-11-09 浙江网新恒天软件有限公司 一种数据监控和代码自动生成与部署的系统及方法
CN106095408B (zh) * 2016-05-31 2019-05-14 浙江网新恒天软件有限公司 一种数据监控和代码自动生成与部署的系统及方法
CN107168704A (zh) * 2017-05-11 2017-09-15 金蝶软件(中国)有限公司 一种多页面资源文件注入方法及装置
CN107194238A (zh) * 2017-05-22 2017-09-22 郑州云海信息技术有限公司 一种管理访问权限的方法和装置及计算机可读存储介质
CN107181761A (zh) * 2017-07-20 2017-09-19 深圳市茁壮网络股份有限公司 一种操作系统登陆及访问权限控制的控制方法及系统
CN107707625A (zh) * 2017-09-05 2018-02-16 江苏电力信息技术有限公司 基于Maven的前台资源打包并进行版本管理与使用的方法
CN107679417A (zh) * 2017-10-09 2018-02-09 郑州云海信息技术有限公司 一种用户操作权限管理的方法和系统
CN107679417B (zh) * 2017-10-09 2021-01-12 苏州浪潮智能科技有限公司 一种用户操作权限管理的方法和系统
CN108595479A (zh) * 2018-03-13 2018-09-28 泰安协同软件有限公司 基于统一Web出入口的Web请求处理方法
CN108595479B (zh) * 2018-03-13 2021-07-27 泰安协同软件有限公司 基于统一Web出入口的Web请求处理方法
CN108600175A (zh) * 2018-03-27 2018-09-28 深圳世联松塔装饰科技有限责任公司 系统操作权限的控制方法、装置及存储介质
CN110599112A (zh) * 2018-06-12 2019-12-20 北京顺智信科技有限公司 一种网络页面开发、维护方法和装置
CN110599112B (zh) * 2018-06-12 2023-10-27 百融至信(北京)科技有限公司 一种网络页面开发、维护方法和装置
CN109614160A (zh) * 2018-09-30 2019-04-12 阿里巴巴集团控股有限公司 提示方法、装置和电子设备
CN109377179A (zh) * 2018-10-23 2019-02-22 深圳易嘉恩科技有限公司 基于Vue的前端流程管理系统及方法
CN109614177A (zh) * 2018-10-31 2019-04-12 阿里巴巴集团控股有限公司 选择组件及其控制方法
CN109614177B (zh) * 2018-10-31 2022-03-01 创新先进技术有限公司 选择组件及其控制方法
CN109376533A (zh) * 2018-11-06 2019-02-22 北京芯盾时代科技有限公司 一种行为检测方法及装置
CN109525584A (zh) * 2018-11-26 2019-03-26 竞技世界(北京)网络技术有限公司 一种构建移动端跨平台多类型应用容器的方法
CN109766158A (zh) * 2018-12-27 2019-05-17 益萃网络科技(中国)有限公司 用户界面的展示方法、装置、计算机设备和存储介质
CN110110530A (zh) * 2019-01-25 2019-08-09 深圳市华阳国际工程设计股份有限公司 基于bim平台的信息权限管理方法、装置以及存储装置
CN111381864A (zh) * 2020-04-01 2020-07-07 中国铁塔股份有限公司 一种软件系统的配置方法及装置
CN113031928A (zh) * 2021-03-30 2021-06-25 广州虎牙科技有限公司 web系统生成方法及装置、电子设备和计算机可读存储介质
CN114661405A (zh) * 2022-04-07 2022-06-24 贝壳找房网(北京)信息技术有限公司 分布式系统前端页面集成方法、装置及存储介质

Also Published As

Publication number Publication date
CN103324470B (zh) 2017-09-22

Similar Documents

Publication Publication Date Title
CN103324470A (zh) 一种Web系统生成的方法和装置
CN101546261B (zh) 多策略支持的安全网页标签库系统
CN106796597B (zh) 计算机化的方法、服务器计算机系统和存储介质
US9098314B2 (en) Systems and methods for web based application modeling and generation
US11593074B2 (en) System, method, and apparatus for data-centric networked application development services
US20200371755A1 (en) Tri-affinity model driven method and platform for authoring, realizing, and analyzing a cross-platform application
CN106559438A (zh) 一种基于目标网络平台的程序上传方法和装置
CN106406844B (zh) 实现通讯交互平台公众号菜单的方法和装置
US9563415B2 (en) Generating visually encoded dynamic codes for remote launching of applications
CN102810090A (zh) 网关数据分布引擎
CN105637478A (zh) 原生移动应用代码的计算机辅助开发
CN104123059A (zh) 基于web桌面化的云计算管理系统
CN101504616B (zh) 一种从Web应用登录Windows应用程序的方法及装置
CN102567400A (zh) 一种实现Web访问的方法和Web服务器
CN110059456A (zh) 代码保护方法、代码保护装置、存储介质与电子设备
CN107844519A (zh) 电子装置、数据库查询脚本生成方法及存储介质
CN109726041A (zh) 恢复虚拟机磁盘中的文件的方法、设备和计算机可读介质
KR101161946B1 (ko) 스마트폰 어플리케이션 제작 시스템 및 그 방법
CN113268260A (zh) 用于web前端的路由方法及装置
CN101902492A (zh) Web Service服务器、网站建设方法及信息交互方法
CN113849156B (zh) OpenHarmony操作系统应用的无代码智能开发系统及其使用方法
CN108959294A (zh) 一种访问搜索引擎的方法和装置
Arsan et al. A software architecture for inventory management system
CN104361094A (zh) 搜索结果中文件的保存方法、装置和浏览器客户端
KR20180060360A (ko) 클라우드 컴퓨팅 환경에서 제공되는 총무 관리 프로그램에서 사용자 정의에 따른 사용자 인터페이스 제공 방법 및 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1185694

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1185694

Country of ref document: HK

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170922