首页> 中国专利> 一种脚本语言扩展方法及事件总线架构

一种脚本语言扩展方法及事件总线架构

摘要

本发明公开了一种脚本语言扩展方法及事件总线架构,所述方法包括:事件,所述事件包括:固定handler处理机制和扩展handler,所述方法还包括:事件总线接收事件注册请求;所述事件总线根据所述事件注册请求对所述事件进行注册,并对所述固定handler和所述扩展handler进行排序;所述事件总线接收所述事件触发指令;所述事件总线根据所述事件触发指令调用所述固定handler和/或所述扩展handler。本发明通过事件总线实现对事件的管理,并在事件中插入扩展handler,使得该事件不必大量复写代码,可减少代码量。

著录项

  • 公开/公告号CN105573756A

    专利类型发明专利

  • 公开/公告日2016-05-11

    原文格式PDF

  • 申请/专利权人 金蝶软件(中国)有限公司;

    申请/专利号CN201510940311.0

  • 发明设计人 苗超;陈纪东;

    申请日2015-12-15

  • 分类号G06F9/44;G06F9/45;

  • 代理机构深圳市深佳知识产权代理事务所(普通合伙);

  • 代理人王仲凯

  • 地址 518057 广东省深圳市南山区科技园科技南十二路2号金蝶软件园A座1-8层

  • 入库时间 2023-12-18 15:12:16

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-30

    授权

    授权

  • 2016-06-08

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20151215

    实质审查的生效

  • 2016-05-11

    公开

    公开

说明书

技术领域

本发明涉及脚本语言技术领域,尤其涉及一种脚本语言扩展方法及事件 总线架构。

背景技术

JavaScript(直译式脚本语言)是一种基于对象和事件驱动并具有相对安 全性的客户端脚本语言,广泛用于Web应用开发,常用来为网页添加各式各 样的动态功能,为用户提供更流畅美观的浏览效果。

目前,针对JavaScript的开发都是基于过程的线性开发,一般不提供事件, 也不提供插入扩展点的机制,如果需要事件时,一般采取复写代码或回调代 码的方式进行事件以及事件的扩展。

采用复写代码或回调代码的方式进行事件以及事件的扩展,必然造成大 量重复代码,从而增加代码量。

发明内容

为解决上述技术问题,本发明提供了一种脚本语言扩展方法,通过事件 总线实现对事件的管理,并在事件中插入扩展handler,使得该事件不必大量 复写代码,可减少代码量。

本发明的技术方案如下:

一种脚本语言扩展方法,包括:事件,所述事件包括:固定handler处理 机制和扩展handler,所述方法还包括:

事件总线接收事件注册请求;

所述事件总线根据所述事件注册请求对所述事件进行注册,并对所述固 定handler和所述扩展handler进行排序;

所述事件总线接收所述事件触发指令;

所述事件总线根据所述事件触发指令调用所述固定handler和/或所述扩 展handler。

优选地,所述事件总线根据所述事件注册请求对所述事件进行注册:

所述事件总线根据所述事件注册请求获取所述事件的事件名称、固定 handler、扩展handler以及扩展handler的切入点;

所述事件总线对所述事件的事件名称、固定handler、扩展handler以及扩 展handler的切入点进行注册。

优选地,所述扩展handler的切入点包括:

调用所述固定handler之前、调用所述固定handler中和调用所述固定 handler之后中的一个或者多个。

优选地,所述事件总线对所述固定handler和所述扩展handler进行排序 包括:

当所述扩展handler的切入点为调用所述固定handler之前时,则所述扩 展handler在所述固定handler之前调用;

和/或

当所述扩展handler的切入点为调用所述固定handler中时,则所述扩展 handler覆盖所述固定handler调用;

和/或

当所述扩展handler的切入点为调用所述固定handler之后时,则所述扩 展handler在所述固定handler之后调用。

一种事件总线架构,包括:事件,所述事件包括:固定handler处理机制 和扩展handler,所述事件总线架构还包括:

第一接收单元,用于接收事件注册请求;

注册单元,用于根据所述第一接收单元接收的事件注册请求对所述事件 进行注册;

排序单元,用于对所述固定handler和所述扩展handler进行排序;

第二接收单元,用于接收所述事件触发指令;

调用单元,用于根据所述第二接收单元接收的事件触发指令调用所述固 定handler和/或所述扩展handler。

优选地,所述注册单元包括:

获取子单元,用于根据所述事件注册请求获取所述事件的事件名称、固 定handler、扩展handler以及扩展handler的切入点;

注册子单元,用于对所述获取子单元获取的所述事件的事件名称、固定 handler、扩展handler以及扩展handler的切入点进行注册。

优选地,所述扩展handler的切入点包括:

调用所述固定handler前、调用所述固定handler中和调用所述固定handler 后中的一个或者多个。

优选地,所述排序单元包括:

第一排序子单元,用于当所述扩展handler的切入点为调用所述固定 handler之前时,则所述扩展handler在所述固定handler之前调用;

第二排序子单元,当所述扩展handler的切入点为调用所述固定handler 中时,则所述扩展handler覆盖所述固定handler调用;

第三排序子单元,用于当所述扩展handler的切入点为调用所述固定 handler之后时,则所述扩展handler在所述固定handler之后调用。

本发明实施例提供的技术方案中,通过事件总线对事件进行注册,并通 过事件总线对事件的固定handler和扩展handler进行排序,且在该事件被触 发时,通过事件总线按照排序调用固定handler和/或扩展handler,因此相对 于现有技术,本发明实施例中,通过事件总线实现对事件的管理,并在事件 中插入扩展handler,使得该事件不必大量复写代码,可减少代码量。

附图说明

图1为本发明脚本语言扩展方法实施例的步骤流程图;

图2为本发明脚本语言扩展方法实施例中事件处理流程图;

图3为本发明事件总线架构实施例的单元框图。

具体实施方式

本发明实施例提供了一种脚本语言扩展方法及事件总线架构,以下分别 进行详细说明。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创 造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第 三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的 顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这 里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外, 术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含, 例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于 清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过 程、方法、产品或设备固有的其它步骤或单元。

请参阅图1,本发明实施例中脚本语言扩展方法一个实施例包括:事件, 该事件包括:固定handler处理机制和扩展handler,该方法还包括:

S110、事件总线接收事件注册请求。

一般地,事件总线具有事件的发布、订阅以及触发机制。具体地,首先 事件发布者EventPublisher将事件Event发布到事件总线EventBus上,然后 由事件订阅者EventSubscriber触发该事件Event,最后由事件总线EventBus 调用该事件Event。

本发明实施例是基于JavaScript的开发,主要应用于WEB页面。本发明实 施例中,在WEB页面初始化时,可以将需要扩展的事件注册在事件总线上, 再由事件总线进行调用。

S120、事件总线根据事件注册请求对事件进行注册,并对固定handler和 扩展handler进行排序。

本发明实施例中,将插入脚本语言中的事件注册在事件总线上,由事件 总线统一管理,当该事件被触发时,由事件总线调用该事件下的handler。

上述步骤S120具体包括:

S121、事件总线根据事件注册请求获取事件的事件名称、固定handler、 扩展handler以及扩展handler的切入点。

本发明实施例中,事件发布者在向事件总线发送事件注册请求时,会伴 随携带该事件的事件名称、固定handler、扩展handler以及扩展handler的切 入点。事件订阅者在触发该事件时,事件总线会根据事件订阅者触发提供的 事件名称进行查找,当查找到该事件已在事件总线上注册时,则该事件总线 调用该事件下的固定handler和/或扩展handler。对于固定handler和扩展 handler的调用顺序,则根据扩展handler的切入点确定。

S122、事件总线对事件的事件名称、固定handler、扩展handler以及扩展 handler的切入点进行注册。

本发明实施例中,事件总线在得到事件的事件名称、固定handler、扩展 handler以及扩展handler的切入点之后,首先对事件名称进行注册,然后将固 定handler、扩展handler以及扩展handler的切入点与事件名称进行关联注册。 也就是说,当事件总线接收到该事件被触发时,首先查找在其注册表内是否 有该事件的事件名称,若是,则根据该事件名称查找到与其关联的固定handler 和扩展handler,并调用该固定handler和扩展handler。

本发明实施例中,该扩展handler的切入点用于确定固定handler和扩展 handler的调用顺序,其包括:调用固定handler之前、调用固定handler中和 调用固定handler之后。

该扩展handler的插入方式有三种,一种是在固定handler之前调用,另 一种是覆盖固定handler调用,另一种在固定handler之后调用。其中,覆盖 固定handler调用就是扩展handler替换固定handler,也就是说,只调用扩展 handler而不调用固定handler。

需要说明的是,本发明实施例中,每一个扩展handler的切入点都是一个 可供扩展的节点,也就是说,在每一个扩展handler的切入点处都可以插入一 个或者多个扩展handler。

S123、事件总线对固定handler和扩展handler进行排序。

本发明实施例中,事件总线依照上述扩展handler的切入点,对固定handler 和扩展handler的调用顺序进行排序。

上述步骤S123具体包括:

S1231、当扩展handler的切入点为调用固定handler之前时,则扩展handler 在固定handler之前调用;

和/或

S1232、当扩展handler的切入点为调用固定handler中时,则扩展handler 覆盖固定handler调用;

和/或

S1233、当扩展handler的切入点为调用固定handler之后时,则扩展handler 在固定handler之后调用。

根据扩展handler的切入点的不同,可以对固定handler和扩展handler的 调用顺序分为三种。

需要说明的是,本发明实施例中,扩展handler可以是一个,也可以是多 个,相应的,扩展handler的切入点上述的一个或者多个。那么,固定handler 和扩展handler的调用顺序也会存在更多种情况,在此不一一举出。

S130、事件总线接收事件触发指令。

本发明实施例中,当事件订阅者需要触发该事件时,相应的,会向事件 总线发送该事件触发指令,该事件触发指令会伴随携带该事件的事件名称。

S140、事件总线根据事件触发指令调用固定handler和/或扩展handler。

本发明实施例中,当事件总线接收到该事件触发指令后,首先根据是事 件名称在事件注册表中查找该事件,当查找到该事件后,则调用该事件下的 固定handler和/或扩展handler。

请参见图2,对本发明实施例中事件处理流程做进一步阐释:

S201、触发事件。

通过事件源触发该事件,如:页面关闭事件,该事件源则为页面关闭按 钮。

S202、检索事件队列。

事件总线根据触发机制,检索已注册的事件队列,从而查找到被触发的 事件。

S203、分发事件。

当该事件被事件总线查找到后,则进行相应的事件分发过程。

S204、执行事件。

事件总线分发完事件后,接下来便是执行该事件。

S205、判断是否有侦听组件。若是,则进入步骤S206,若否,则进入步 骤S207。

在事件被事件总线执行之前,需要判断是否有侦听组件的过程。

S206、调用执行事件的特定事件处理方法。

当有侦听组件时,则事件总线调用执行事件,并采取特定的事件处理方 法,如:上述增加的扩展handler,以及固定handler和扩展handler调用的先 后顺序。

S207、放弃执行事件。

当没有侦听事件时,则事件总线放弃执行该事件。

S208、注册事件监听器。

最后,为事件监听器注册一下,记录本次事件触发的具体信息。

以典型业务场景为例:页面关闭前,有些业务场景需要判断当时的数据 的变化部分是否需要保存。

传统业务流程为:点击关闭按钮、触发pageCloseEvent(页面关闭事件)、 EventBus(事件总线)调用pageCloseHandler(页面关闭处理机制)、关闭当 前页面。

本发明实施例中,可注册一个切入点,位置为pageCloseEvent的前处理, 实现方法为pageCloseOnBeforeHandler(页面关闭前处理机制),该方法判断 页面数据是否发生变化,当有变化时,提醒用户保存数据。因此该业务流程 则改变为:点击关闭按钮、触发pageCloseEvent、EventBus调用pageCloseOn BeforeHandler(页面关闭前处理机制)、EventBus调用pageCloseHandler(页 面关闭处理机制)、关闭当前页面。

上面对本发明实施例中的脚本语言扩展方法进行了描述,下面对本发明 实施例中的事件总线架构进行描述,请参阅图3,本发明实施例中事件总线架 构一个实施例包括:包括:事件,事件包括:固定handler处理机制和扩展 handler,事件总线架构还包括:

第一接收单元310,用于接收事件注册请求,具体如上述步骤S110所述。

注册单元320,用于根据第一接收单元310接收的事件注册请求对事件进 行注册,具体如上述步骤S120所述。

该注册单元320具体包括:

获取子单元321,用于根据事件注册请求获取事件的事件名称、固定 handler、扩展handler以及扩展handler的切入点;

注册子单元322,用于对获取子单元获取的事件的事件名称、固定handler、 扩展handler以及扩展handler的切入点进行注册。

本发明实施例中,扩展handler的切入点包括:调用固定handler前、调 用固定handler中和调用固定handler后。

排序单元330,用于对固定handler和扩展handler进行排序,具体如上述 步骤S120所述。

该排序单元330具体包括:

第一排序子单元331,用于当扩展handler的切入点为调用固定handler 之前时,则扩展handler在固定handler之前调用。

第二排序子单元332,当扩展handler的切入点为调用固定handler中时, 则扩展handler覆盖固定handler调用。

第三排序子单元333,用于当扩展handler的切入点为调用固定handler 之后时,则扩展handler在固定handler之后调用。

第二接收单元340,用于接收事件触发指令,具体如上述步骤S130所述。

调用单元350,用于根据第二接收单元340接收的事件触发指令调用固定 handler和/或扩展handler,具体如上述步骤S140所述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描 述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应 过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和 方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示 意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可 以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个 系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间 的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合 或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作 为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方, 或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或 者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单 元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单 元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售 或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本 发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的 全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个 存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步 骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘 等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制; 尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应 当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其 中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案 的本质脱离本发明各实施例技术方案的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号