首页> 中国专利> 事件驱动方法和事件驱动系统

事件驱动方法和事件驱动系统

摘要

本发明提供了一种基于JavaScript的事件驱动方法和事件驱动系统,包括:仪表板上的任一部件在检测到自身的事件被触发时,向事件管理器发送事件触发信息;所述事件管理器广播接收到的所述事件触发信息;所述仪表板上的任一部件以外的其他部件接收所述广播的所述事件触发信息,根据所述事件触发信息、所述事件的驱动脚本的定义和预设的JavaScript模版文件生成统一的JavaScript脚本文件,并根据所述JavaScript脚本文件向脚本管理器注册所述事件。通过本发明的技术方案,可以使一套驱动脚本适应不同平台的需求,由事件管理器统一调度事件,提高了脚本的可读性和部件的灵活性,降低了编写和维护的成本和难度。

著录项

  • 公开/公告号CN104090760A

    专利类型发明专利

  • 公开/公告日2014-10-08

    原文格式PDF

  • 申请/专利权人 用友软件股份有限公司;

    申请/专利号CN201410318914.2

  • 发明设计人 王雨学;张乐龙;

    申请日2014-07-04

  • 分类号G06F9/44(20060101);

  • 代理机构北京友联知识产权代理事务所(普通合伙);

  • 代理人尚志峰;汪海屏

  • 地址 100094 北京市海淀区北清路68号用友软件园

  • 入库时间 2023-12-17 01:49:17

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-11-24

    授权

    授权

  • 2015-12-02

    著录事项变更 IPC(主分类):G06F9/44 变更前: 变更后: 申请日:20140704

    著录事项变更

  • 2014-10-29

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

    实质审查的生效

  • 2014-10-08

    公开

    公开

说明书

技术领域

本发明涉及数据处理技术领域,具体而言,涉及一种事件驱动方法和 一种事件驱动系统。

背景技术

目前,仪表板在BI(Business Intelligence,商业智能)中有着举足轻 重的作用。在仪表板实施的过程中,会涉及到很多的部件以及很多部件之 间的协调控制,如按钮、图表、报表、树以及他们之间的联动与协调工作 等,如何协调各部件一直是制作仪表板产品所面对的问题。目前大多数的 BI产品采用十分简单的配置方式来实现部件之间的联动,如配置BO (Business Object,业务对象层)等。但是随着业务需求复杂度的提升, 通过界面配置的方式来实现部件交互变得越来越复杂,从而给维护工作带 来了很大的难度。

无论在Swing平台,还是在Web平台,所有可视化部件之间的交互 均提供事件机制,在特定事件中编写业务代码以实现交互。但这种做法不 能从根本上解决仪表板部件的交互问题,主要原因有:

(1)BQ仪表板的运行环境复杂,无法让一套驱动脚本既适合在 Web中运行,又可以在Swing中运行;

(2)难以在降低部件的交互难度的同时获得良好的代码质量,以及 突出产品的特色。

因此,如何使一套驱动脚本适应不同平台的需求,并在实现仪表板上 的部件联动的同时降低编写脚本难度,成为目前亟待解决的问题。

发明内容

本发明正是基于上述技术问题,提出了一种新的技术方案,可以使一 套驱动脚本适应不同平台的需求,由事件管理器统一调度事件,提高脚本 的可读性和部件的灵活性,降低编写和维护的成本和难度。

根据本发明的一个方面,提出了一种基于JavaScript的事件驱动方 法,包括:仪表板上的任一部件在检测到自身的事件被触发时,向事件管 理器发送事件触发信息;所述事件管理器广播接收到的所述事件触发信 息;所述仪表板上的任一部件以外的其他部件接收所述广播的所述事件触 发信息,根据所述事件触发信息、所述事件的驱动脚本的定义和预设的 JavaScript模版文件生成统一的JavaScript脚本文件,并根据所述 JavaScript脚本文件向脚本管理器注册所述事件。

Javascript是一种基于对象的动态类型的区分大小写的客户端脚本语 言,主要用于解决服务器端语言遗留的速度问题,为客户提供更流畅的浏 览效果。比如,当服务端需要对数据进行验证时,由于网络速度相当缓 慢,只有28.8kbps,验证步骤浪费的时间太多,于是可以在Netscape浏览 器中加入了Javascript,提供了数据验证的基本功能,Javascript的作用也体 现在实现网页的一些难度较高的特效,通常和Jquery(一种兼容多浏览器 的Javascript框架)、Ajax(一种快速创建动态网页技术)联合使用。(来 自网页链接http://baike.baidu.com/view/16168.htm)

在该技术方案中,使用事件管理器统一管理和调度事件,便于实现部 件的联动,从而时事件驱动脚本更加集中,降低脚本编写的难度。根据驱 动脚本的定义和预设的JavaScript模版文件生成统一的JavaScript脚本文 件,可以使一套驱动脚本适应不同平台的需求,比如同时适配与Swing平 台和Web平台,提高了脚本的可读性和部件的灵活性,降低了编写和维 护的成本和难度,使产品游刃有余地适应不同业务场景和各种复杂的业务 需求。

在上述技术方案中,优选地,所述事件管理器根据接收到的所述事件 触发信息的来源,判断是否广播所述事件触发信息。

在该技术方案中,广播事件触发信息前,需要对事件触发信息的来源 进行追踪,判断是否需要对此事件触发信息进行广播,以避免发送循环消 息导致系统假死。

在上述技术方案中,优选地,包括:所述仪表板上的任一部件以外的 其他部件接收所述事件触发信息,并根据所述事件触发信息的来源和内 容,判断是否所述事件触发信息是否有效,以及当判断结果为是时,执行 所述事件触发信息对应的所述事件的驱动脚本,否则,不响应所述事件触 发信息。

在该技术方案中,在仪表板部件的设计过程中,仪表板部件除了具有 传统UI(用户界面)部件拥有的事件行为外,增加send Message(发送消 息)和on Message(接收消息)方法,并在此两种方法中编写部件对外部 触发信息响应的业务逻辑。当事件管理器对外广播触发信息时,会触发接 收该触发信息的部件的on Message方法,该部件根据触发信息的来源和 内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该on Message方法中的脚本,否则忽略该触发信息。

在上述技术方案中,优选地,还包括:向运行时上下文注册被触发所 述事件的所述仪表板上的任一部件的信息。

在上述技术方案中,优选地,还包括:管理事件驱动过程中的所有参 数,并维护运行环境。

在该技术方案中,向运行时上下文注册事件驱动过程中部件的自身信 息,有助于运行时上下文将事件驱动过程中的所有参数集中起来进行维 护。

根据本发明的另一方面,提出了一种基于JavaScript的事件驱动系 统,包括:发送单元,用于在仪表板上的任一部件在检测到自身的事件被 触发时,向事件管理器发送事件触发信息;广播单元,所述事件管理器广 播所述事件触发信息;执行单元,所述仪表板上的任一部件以外的其他部 件接收所述事件触发信息,根据所述事件触发信息、所述事件的驱动脚本 的定义和预设的JavaScript模版文件生成统一的JavaScript脚本文件,并 根据所述JavaScript脚本文件向脚本管理器注册所述事件。

在该技术方案中,使用事件管理器统一管理和调度事件,便于实现部 件的联动,从而时事件驱动脚本更加集中,降低脚本编写的难度。根据驱 动脚本的定义和预设的JavaScript模版文件生成统一的JavaScript脚本文 件,可以使一套驱动脚本适应不同平台的需求,比如同时适配与Swing平 台和Web平台,提高了脚本的可读性和部件的灵活性,降低了编写和维 护的成本和难度,使产品游刃有余地适应不同业务场景和各种复杂的业务 需求。

在上述技术方案中,优选地,还包括:判断单元,所述事件管理器根 据接收到的所述事件触发信息的来源,判断是否广播所述事件触发信息。

在该技术方案中,广播事件触发信息前,需要对事件触发信息的来源 进行追踪,判断是否需要对此事件触发信息进行广播,以避免发送循环消 息导致系统假死。

在上述技术方案中,优选地,所述执行单元包括:所述仪表板上的任 一部件以外的其他部件根据接收到的所述事件触发信息的来源和内容,判 断是否所述事件触发信息是否有效,以及当判断结果为是时,执行所述事 件触发信息对应的所述事件的驱动脚本,否则,不响应所述事件触发信 息。

在该技术方案中,在仪表板部件的设计过程中,仪表板部件除了具有 传统UI(用户界面)部件拥有的事件行为外,增加send Message(发送消 息)和on Message(接收消息)方法,并在此两种方法中编写部件对外部 触发信息响应的业务逻辑。当事件管理器对外广播触发信息时,会触发接 收该触发信息的部件的on Message方法,该部件根据触发信息的来源和 内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该on  Message方法中的脚本,否则忽略该触发信息。

在上述技术方案中,优选地,还包括:注册单元,用于向运行时上下 文注册被触发所述事件的所述仪表板上的任一部件的信息。

在上述技术方案中,优选地,还包括:维护单元,用于管理事件驱动 过程中的所有参数,并维护运行环境。

在该技术方案中,向运行时上下文注册事件驱动过程中部件的自身信 息,有助于运行时上下文将事件驱动过程中的所有参数集中起来进行维 护。

通过本发明的技术方案,可以使一套驱动脚本适应不同平台的需求, 由事件管理器统一调度事件,提高了脚本的可读性和部件的灵活性,降低 了编写和维护的成本和难度,使产品游刃有余地适应不同业务场景和各种 复杂的业务需求。

附图说明

图1示出了根据本发明的实施例的事件驱动方法的流程图;

图2示出了根据本发明的实施例的事件驱动系统的框图;

图3示出了根据本发明的实施例的事件驱动方法的仪表板部件设计类 图;

图4示出了根据本发明的实施例的事件驱动方法的运行时初始化和脚 本集中化流程图;

图5示出了根据本发明的实施例的事件驱动方法的脚本驱动流程图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附 图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不 冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是, 本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明 的保护范围并不受下面公开的具体实施例的限制。

图1示出了根据本发明的实施例的事件驱动方法的流程图。

如图1所示,根据本发明的实施例的事件驱动方法,包括以下步骤:

步骤102,仪表板上的任一部件在检测到自身的事件被触发时,向事 件管理器发送事件触发信息。

步骤104,事件管理器广播接收到的事件触发信息。

步骤106,仪表板上的任一部件以外的其他部件接收广播的事件触发 信息,根据事件触发信息、事件的驱动脚本的定义和预设的JavaScript模 版文件生成统一的JavaScript脚本文件,并根据JavaScript脚本文件向脚 本管理器注册事件。

在该技术方案中,使用事件管理器统一管理和调度事件,便于实现部 件的联动,从而时事件驱动脚本更加集中,降低脚本编写的难度。根据驱 动脚本的定义和预设的JavaScript模版文件生成统一的JavaScript脚本文 件,可以使一套驱动脚本适应不同平台的需求,比如同时适配与Swing平 台和Web平台,提高了脚本的可读性和部件的灵活性,降低了编写和维 护的成本和难度,使产品游刃有余地适应不同业务场景和各种复杂的业务 需求。

在上述技术方案中,优选地,步骤104还包括:事件管理器根据接收 到的事件触发信息的来源,判断是否广播事件触发信息。

在该技术方案中,广播事件触发信息前,需要对事件触发信息的来源 进行追踪,判断是否需要对此事件触发信息进行广播,以避免发送循环消 息导致系统假死。

在上述技术方案中,优选地,步骤106包括:仪表板上的任一部件以 外的其他部件接收事件触发信息,并根据事件触发信息的来源和内容,判 断是否事件触发信息是否有效,以及当判断结果为是时,执行事件触发信 息对应的事件的驱动脚本,否则,不响应事件触发信息。

在该技术方案中,在仪表板部件的设计过程中,仪表板部件除了具有 传统UI(用户界面)部件拥有的事件行为外,增加send Message(发送消 息)和on Message(接收消息)方法,并在此两种方法中编写部件对外部 触发信息响应的业务逻辑。当事件管理器对外广播触发信息时,会触发接 收该触发信息的部件的on Message方法,该部件根据触发信息的来源和 内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该on  Message方法中的脚本,否则忽略该触发信息。

在上述技术方案中,优选地,还包括:向运行时上下文注册被触发事 件的仪表板上的任一部件的信息。

在上述技术方案中,优选地,还包括:管理事件驱动过程中的所有参 数,并维护运行环境。

在该技术方案中,向运行时上下文注册事件驱动过程中部件的自身信 息,有助于运行时上下文将事件驱动过程中的所有参数集中起来进行维 护。

图2示出了根据本发明的实施例的事件驱动系统的框图。

如图2所示,根据本发明的实施例的事件驱动系统200,包括:发送 单元202,用于在仪表板上的任一部件在检测到自身的事件被触发时,向 事件管理器发送事件触发信息;广播单元204,事件管理器广播事件触发 信息;执行单元206,仪表板上的任一部件以外的其他部件接收事件触发 信息,根据事件触发信息、事件的驱动脚本的定义和预设的JavaScript模 版文件生成统一的JavaScript脚本文件,并根据JavaScript脚本文件向脚 本管理器注册事件。

在该技术方案中,使用事件管理器统一管理和调度事件,便于实现部 件的联动,从而时事件驱动脚本更加集中,降低脚本编写的难度。根据驱 动脚本的定义和预设的JavaScript模版文件生成统一的JavaScript脚本文 件,可以使一套驱动脚本适应不同平台的需求,比如同时适配与Swing平 台和Web平台,提高了脚本的可读性和部件的灵活性,降低了编写和维 护的成本和难度,使产品游刃有余地适应不同业务场景和各种复杂的业务 需求。

在上述技术方案中,优选地,还包括:判断单元208,事件管理器根 据接收到的事件触发信息的来源,判断是否广播事件触发信息。

在该技术方案中,广播事件触发信息前,需要对事件触发信息的来源 进行追踪,判断是否需要对此事件触发信息进行广播,以避免发送循环消 息导致系统假死。

在上述技术方案中,优选地,执行单元206包括:仪表板上的任一部 件以外的其他部件根据接收到的事件触发信息的来源和内容,判断是否事 件触发信息是否有效,以及当判断结果为是时,执行事件触发信息对应的 事件的驱动脚本,否则,不响应事件触发信息。

在该技术方案中,在仪表板部件的设计过程中,仪表板部件除了具有 传统UI(用户界面)部件拥有的事件行为外,增加send Message(发送消 息)和on Message(接收消息)方法,并在此两种方法中编写部件对外部 触发信息响应的业务逻辑。当事件管理器对外广播触发信息时,会触发接 收该触发信息的部件的on Message方法,该部件根据触发信息的来源和 内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该on  Message方法中的脚本,否则忽略该触发信息。

在上述技术方案中,优选地,还包括:注册单元210,用于向运行时 上下文注册被触发事件的仪表板上的任一部件的信息。

在上述技术方案中,优选地,还包括:维护单元212,用于管理事件 驱动过程中的所有参数,并维护运行环境。

在该技术方案中,向运行时上下文注册事件驱动过程中部件的自身信 息,有助于运行时上下文将事件驱动过程中的所有参数集中起来进行维 护。

图3示出了根据本发明的实施例的事件驱动方法的仪表板部件设计类 图。

如图3所示,进行部件设计,导入设计对象DsComponent,引入 attribude(定义和用法)语句,以向部件添加send Message(发送消息) 和on Message(接收消息)方法两种属性,其中on Message方法下还引 入了operation(运算)语句,用来计算部件是否对on Message方法感兴 趣。

在仪表板部件的设计过程中,仪表板部件除了具有传统UI(用户界 面)部件拥有的事件行为外,增加send Message方法和on Message方 法,并在此两种方法中编写部件对外部触发信息响应的业务逻辑。

其中,send Message方法用于向事件管理器发送事件触发信息,通知 事件管理器,部件自身的事件被触发。

对于on Message方法,当事件管理器对外广播触发信息时,会触发 接收该触发信息的部件的on Message方法,该部件根据触发信息的来源 和内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该 on Message方法中的脚本,否则忽略该触发信息。

图4示出了根据本发明的实施例的事件驱动方法的运行时初始化和脚 本集中化流程图。

如图4所示,根据本发明的实施例的事件驱动方法,包括:

步骤402,初始化Contect(上下文)。Contect用于在事件驱动过程 中将所有参数集中起来进行维护。

步骤404,初始化Even Manager(事件管理器)。Even Manager用于 集中管理和调度事件。

步骤406,初始化脚本引擎,获取脚本的定义。

步骤408,读取脚本模版文件,即预设的JavaScript模版文件。

步骤410,解析存储模型生成DsComponent。根据驱动脚本的定义和 预设的JavaScript模版文件生成统一的设计对象。

步骤412,向运行时上下文注册信息,即向运行时上下文注册事件驱 动过程中部件的自身信息。

步骤414,生成脚本文件,并编译脚本文件。

脚本集中化主要针对仪表板运行时的驱动脚本优化和结构化处理,以 使其适应我们的模型。

根据提供的基于JavaScript的模板文件,在仪表板运行时,用户可以 通过部件驱动脚本的定义,按照既定规则生成统一的JavaScript文件,同 时,可以向运行时的脚本管理器注册部件自身的事件,向运行时上下文注 册部件的自身信息(不包含事件以及驱动脚本),有助于运行时上下文将 事件驱动过程中的所有参数集中起来进行维护。

图5示出了根据本发明的实施例的事件驱动方法的脚本驱动流程图。

如图5所示,根据本发明的实施例的事件驱动方法,包括以下步骤:

步骤502,触发部件的事件。

步骤504,通知事件管理器事件被触发。即在仪表板上的任一部件在 检测到自身的事件被触发时,向事件管理器发送事件触发信息。

步骤506,处理部件自身对事件的相应行为。当事件管理器对外广播 触发信息时,会触发接收该触发信息的部件的onMessage方法,该部件根 据触发信息的来源和内容,判断是否对该onMessage方法感兴趣,如果感 兴趣,就执行该onMessage方法中的脚本,否则忽略该触发信息。

步骤508,事件管理器判断是否发送触发消息,当判断结果为是时, 进入步骤510,否则,结束进程。广播事件触发信息前,需要对事件触发 信息的来源进行追踪,判断是否需要对此事件触发信息进行广播,以避免 发送循环消息导致系统假死。

步骤510,事件管理转发消息。

步骤512,部件接收并处理消息。根据提供的基于JavaScript的模板 文件,仪表板在运行时,用户可以通过部件驱动脚本的定义,按照既定规 则生成统一的JavaScript文件,同时,可以向运行时的脚本管理器注册部 件自身的事件。

在该技术方案中,仪表板的运行时主要由运行时上下文、事件管理 器、仪表板参数表、运行时部件、脚本执行引擎、脚本执行器等组成,运 行时上下文负责全局参数的管理以及执行环境的维护。事件管理器负责接 收部件发送的消息并广播接到的消息。脚本执行引擎以及脚本执行器共同 完成驱动脚本的执行和环境调试。在整个运行时中,事件管理器充当了消 息总线的角色,当有部件的事件被触发时(如按钮点击事件),事件管理 器会响应事件并以广播方式转发消息,这样,所有对该消息感兴趣的部 件,均可以收到该消息并作出快速反应,大大提高了部件的灵活性。

以上结合附图详细说明了本发明的技术方案,通过本发明的技术方 案,可以使一套驱动脚本适应不同平台的需求,由事件管理器统一调度事 件,提高了脚本的可读性和部件的灵活性,降低了编写和维护的成本和难 度,使产品游刃有余地适应不同业务场景和各种复杂的业务需求。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于 本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精 神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明 的保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号