事件驱动方法和事件驱动系统的制作方法

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

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

【背景技术】
[0002] 目前,仪表板在BI (Business Intelligence,商业智能)中有着举足轻重的作用。 在仪表板实施的过程中,会涉及到很多的部件以及很多部件之间的协调控制,如按钮、图 表、报表、树以及他们之间的联动与协调工作等,如何协调各部件一直是制作仪表板产品所 面对的问题。目前大多数的BI产品采用十分简单的配置方式来实现部件之间的联动,如配 置BCKBusiness Object,业务对象层)等。但是随着业务需求复杂度的提升,通过界面配置 的方式来实现部件交互变得越来越复杂,从而给维护工作带来了很大的难度。
[0003] 无论在Swing平台,还是在Web平台,所有可视化部件之间的交互均提供事件机 制,在特定事件中编写业务代码以实现交互。但这种做法不能从根本上解决仪表板部件的 交互问题,主要原因有:
[0004] (1)BQ仪表板的运行环境复杂,无法让一套驱动脚本既适合在Web中运行,又可以 在Swing中运行;
[0005] (2)难以在降低部件的交互难度的同时获得良好的代码质量,以及突出产品的特 色。
[0006] 因此,如何使一套驱动脚本适应不同平台的需求,并在实现仪表板上的部件联动 的同时降低编写脚本难度,成为目前亟待解决的问题。


【发明内容】

[0007] 本发明正是基于上述技术问题,提出了一种新的技术方案,可以使一套驱动脚本 适应不同平台的需求,由事件管理器统一调度事件,提高脚本的可读性和部件的灵活性,降 低编写和维护的成本和难度。
[0008] 根据本发明的一个方面,提出了一种基于JavaScript的事件驱动方法,包括:仪 表板上的任一部件在检测到自身的事件被触发时,向事件管理器发送事件触发信息;所述 事件管理器广播接收到的所述事件触发信息;所述仪表板上的任一部件以外的其他部件接 收所述广播的所述事件触发信息,根据所述事件触发信息、所述事件的驱动脚本的定义和 预设的JavaScript模版文件生成统一的JavaScript脚本文件,并根据所述JavaScript脚 本文件向脚本管理器注册所述事件。
[0009] Javascript是一种基于对象的动态类型的区分大小写的客户端脚本语言,主要用 于解决服务器端语言遗留的速度问题,为客户提供更流畅的浏览效果。比如,当服务端需要 对数据进行验证时,由于网络速度相当缓慢,只有28. 8kbps,验证步骤浪费的时间太多,于 是可以在Netscape浏览器中加入了 Javascript,提供了数据验证的基本功能,Javascript 的作用也体现在实现网页的一些难度较高的特效,通常和Jq Uery(-种兼容多浏览器的 Javascript框架)、Ajax (-种快速创建动态网页技术)联合使用。(来自网页链接http: // baike.baidu.com/view/16168.htm)
[0010] 在该技术方案中,使用事件管理器统一管理和调度事件,便于实现部件的联动, 从而时事件驱动脚本更加集中,降低脚本编写的难度。根据驱动脚本的定义和预设的 JavaScript模版文件生成统一的JavaScript脚本文件,可以使一套驱动脚本适应不同平 台的需求,比如同时适配与Swing平台和Web平台,提高了脚本的可读性和部件的灵活性, 降低了编写和维护的成本和难度,使产品游刃有余地适应不同业务场景和各种复杂的业务 需求。
[0011] 在上述技术方案中,优选地,所述事件管理器根据接收到的所述事件触发信息的 来源,判断是否广播所述事件触发信息。
[0012] 在该技术方案中,广播事件触发信息前,需要对事件触发信息的来源进行追踪,判 断是否需要对此事件触发信息进行广播,以避免发送循环消息导致系统假死。
[0013] 在上述技术方案中,优选地,包括:所述仪表板上的任一部件以外的其他部件接收 所述事件触发信息,并根据所述事件触发信息的来源和内容,判断是否所述事件触发信息 是否有效,以及当判断结果为是时,执行所述事件触发信息对应的所述事件的驱动脚本,否 贝1J,不响应所述事件触发信息。
[0014] 在该技术方案中,在仪表板部件的设计过程中,仪表板部件除了具有传统UI (用 户界面)部件拥有的事件行为外,增加 send Message (发送消息)和on Message (接收消 息)方法,并在此两种方法中编写部件对外部触发信息响应的业务逻辑。当事件管理器对 外广播触发信息时,会触发接收该触发信息的部件的on Message方法,该部件根据触发信 息的来源和内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该onMessage 方法中的脚本,否则忽略该触发信息。
[0015] 在上述技术方案中,优选地,还包括:向运行时上下文注册被触发所述事件的所述 仪表板上的任一部件的信息。
[0016] 在上述技术方案中,优选地,还包括:管理事件驱动过程中的所有参数,并维护运 行环境。
[0017] 在该技术方案中,向运行时上下文注册事件驱动过程中部件的自身信息,有助于 运行时上下文将事件驱动过程中的所有参数集中起来进行维护。
[0018] 根据本发明的另一方面,提出了一种基于JavaScript的事件驱动系统,包括:发 送单元,用于在仪表板上的任一部件在检测到自身的事件被触发时,向事件管理器发送事 件触发信息;广播单元,所述事件管理器广播所述事件触发信息;执行单元,所述仪表板上 的任一部件以外的其他部件接收所述事件触发信息,根据所述事件触发信息、所述事件的 驱动脚本的定义和预设的JavaScript模版文件生成统一的JavaScript脚本文件,并根据 所述JavaScript脚本文件向脚本管理器注册所述事件。
[0019] 在该技术方案中,使用事件管理器统一管理和调度事件,便于实现部件的联动, 从而时事件驱动脚本更加集中,降低脚本编写的难度。根据驱动脚本的定义和预设的 JavaScript模版文件生成统一的JavaScript脚本文件,可以使一套驱动脚本适应不同平 台的需求,比如同时适配与Swing平台和Web平台,提高了脚本的可读性和部件的灵活性, 降低了编写和维护的成本和难度,使产品游刃有余地适应不同业务场景和各种复杂的业务 需求。
[0020] 在上述技术方案中,优选地,还包括:判断单元,所述事件管理器根据接收到的所 述事件触发信息的来源,判断是否广播所述事件触发信息。
[0021] 在该技术方案中,广播事件触发信息前,需要对事件触发信息的来源进行追踪,判 断是否需要对此事件触发信息进行广播,以避免发送循环消息导致系统假死。
[0022] 在上述技术方案中,优选地,所述执行单元包括:所述仪表板上的任一部件以外的 其他部件根据接收到的所述事件触发信息的来源和内容,判断是否所述事件触发信息是否 有效,以及当判断结果为是时,执行所述事件触发信息对应的所述事件的驱动脚本,否则, 不响应所述事件触发信息。
[0023] 在该技术方案中,在仪表板部件的设计过程中,仪表板部件除了具有传统UI (用 户界面)部件拥有的事件行为外,增加 send Message (发送消息)和on Message (接收消 息)方法,并在此两种方法中编写部件对外部触发信息响应的业务逻辑。当事件管理器对 外广播触发信息时,会触发接收该触发信息的部件的on Message方法,该部件根据触发信 息的来源和内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该on Message 方法中的脚本,否则忽略该触发信息。
[0024] 在上述技术方案中,优选地,还包括:注册单元,用于向运行时上下文注册被触发 所述事件的所述仪表板上的任一部件的信息。
[0025] 在上述技术方案中,优选地,还包括:维护单元,用于管理事件驱动过程中的所有 参数,并维护运行环境。
[0026] 在该技术方案中,向运行时上下文注册事件驱动过程中部件的自身信息,有助于 运行时上下文将事件驱动过程中的所有参数集中起来进行维护。
[0027] 通过本发明的技术方案,可以使一套驱动脚本适应不同平台的需求,由事件管理 器统一调度事件,提高了脚本的可读性和部件的灵活性,降低了编写和维护的成本和难度, 使产品游刃有余地适应不同业务场景和各种复杂的业务需求。

【专利附图】

【附图说明】
[0028] 图1示出了根据本发明的实施例的事件驱动方法的流程图;
[0029] 图2示出了根据本发明的实施例的事件驱动系统的框图;
[0030] 图3示出了根据本发明的实施例的事件驱动方法的仪表板部件设计类图;
[0031] 图4示出了根据本发明的实施例的事件驱动方法的运行时初始化和脚本集中化 流程图;
[0032] 图5示出了根据本发明的实施例的事件驱动方法的脚本驱动流程图。

【具体实施方式】
[0033] 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实 施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施 例及实施例中的特征可以相互组合。
[0034] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可 以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开 的具体实施例的限制。
[0035] 图1示出了根据本发明的实施例的事件驱动方法的流程图。
[0036] 如图1所示,根据本发明的实施例的事件驱动方法,包括以下步骤:
[0037] 步骤102,仪表板上的任一部件在检测到自身的事件被触发时,向事件管理器发送 事件触发信息。
[0038] 步骤104,事件管理器广播接收到的事件触发信息。
[0039] 步骤106,仪表板上的任一部件以外的其他部件接收广播的事件触发信息,根 据事件触发信息、事件的驱动脚本的定义和预设的JavaScr i p t模版文件生成统一的 JavaScript脚本文件,并根据JavaScript脚本文件向脚本管理器注册事件。
[0040] 在该技术方案中,使用事件管理器统一管理和调度事件,便于实现部件的联动, 从而时事件驱动脚本更加集中,降低脚本编写的难度。根据驱动脚本的定义和预设的 JavaScript模版文件生成统一的JavaScript脚本文件,可以使一套驱动脚本适应不同平 台的需求,比如同时适配与Swing平台和Web平台,提高了脚本的可读性和部件的灵活性, 降低了编写和维护的成本和难度,使产品游刃有余地适应不同业务场景和各种复杂的业务 需求。
[0041] 在上述技术方案中,优选地,步骤104还包括:事件管理器根据接收到的事件触发 信息的来源,判断是否广播事件触发信息。
[0042] 在该技术方案中,广播事件触发信息前,需要对事件触发信息的来源进行追踪,判 断是否需要对此事件触发信息进行广播,以避免发送循环消息导致系统假死。
[0043] 在上述技术方案中,优选地,步骤106包括:仪表板上的任一部件以外的其他部件 接收事件触发信息,并根据事件触发信息的来源和内容,判断是否事件触发信息是否有效, 以及当判断结果为是时,执行事件触发信息对应的事件的驱动脚本,否则,不响应事件触发 信息。
[0044] 在该技术方案中,在仪表板部件的设计过程中,仪表板部件除了具有传统UI (用 户界面)部件拥有的事件行为外,增加 send Message (发送消息)和on Message (接收消 息)方法,并在此两种方法中编写部件对外部触发信息响应的业务逻辑。当事件管理器对 外广播触发信息时,会触发接收该触发信息的部件的on Message方法,该部件根据触发信 息的来源和内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该on Message 方法中的脚本,否则忽略该触发信息。
[0045] 在上述技术方案中,优选地,还包括:向运行时上下文注册被触发事件的仪表板上 的任一部件的信息。
[0046] 在上述技术方案中,优选地,还包括:管理事件驱动过程中的所有参数,并维护运 行环境。
[0047] 在该技术方案中,向运行时上下文注册事件驱动过程中部件的自身信息,有助于 运行时上下文将事件驱动过程中的所有参数集中起来进行维护。
[0048] 图2示出了根据本发明的实施例的事件驱动系统的框图。
[0049] 如图2所示,根据本发明的实施例的事件驱动系统200,包括:发送单元202,用 于在仪表板上的任一部件在检测到自身的事件被触发时,向事件管理器发送事件触发信 息;广播单元204,事件管理器广播事件触发信息;执行单元206,仪表板上的任一部件以 外的其他部件接收事件触发信息,根据事件触发信息、事件的驱动脚本的定义和预设的 JavaScript模版文件生成统一的JavaScript脚本文件,并根据JavaScript脚本文件向脚 本管理器注册事件。
[0050] 在该技术方案中,使用事件管理器统一管理和调度事件,便于实现部件的联动, 从而时事件驱动脚本更加集中,降低脚本编写的难度。根据驱动脚本的定义和预设的 JavaScript模版文件生成统一的JavaScript脚本文件,可以使一套驱动脚本适应不同平 台的需求,比如同时适配与Swing平台和Web平台,提高了脚本的可读性和部件的灵活性, 降低了编写和维护的成本和难度,使产品游刃有余地适应不同业务场景和各种复杂的业务 需求。
[0051] 在上述技术方案中,优选地,还包括:判断单元208,事件管理器根据接收到的事 件触发信息的来源,判断是否广播事件触发信息。
[0052] 在该技术方案中,广播事件触发信息前,需要对事件触发信息的来源进行追踪,判 断是否需要对此事件触发信息进行广播,以避免发送循环消息导致系统假死。
[0053] 在上述技术方案中,优选地,执行单兀206包括:仪表板上的任一部件以外的其他 部件根据接收到的事件触发信息的来源和内容,判断是否事件触发信息是否有效,以及当 判断结果为是时,执行事件触发信息对应的事件的驱动脚本,否则,不响应事件触发信息。
[0054] 在该技术方案中,在仪表板部件的设计过程中,仪表板部件除了具有传统UI (用 户界面)部件拥有的事件行为外,增加 send Message (发送消息)和on Message (接收消 息)方法,并在此两种方法中编写部件对外部触发信息响应的业务逻辑。当事件管理器对 外广播触发信息时,会触发接收该触发信息的部件的on Message方法,该部件根据触发信 息的来源和内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该on Message 方法中的脚本,否则忽略该触发信息。
[0055] 在上述技术方案中,优选地,还包括:注册单元210,用于向运行时上下文注册被 触发事件的仪表板上的任一部件的信息。
[0056] 在上述技术方案中,优选地,还包括:维护单元212,用于管理事件驱动过程中的 所有参数,并维护运行环境。
[0057] 在该技术方案中,向运行时上下文注册事件驱动过程中部件的自身信息,有助于 运行时上下文将事件驱动过程中的所有参数集中起来进行维护。
[0058] 图3示出了根据本发明的实施例的事件驱动方法的仪表板部件设计类图。
[0059] 如图3所示,进行部件设计,导入设计对象DsComponent,引入attribude (定义和 用法)语句,以向部件添加 send Message (发送消息)和on Message (接收消息)方法两 种属性,其中on Message方法下还引入了 operation(运算)语句,用来计算部件是否对on Message方法感兴趣。
[0060] 在仪表板部件的设计过程中,仪表板部件除了具有传统UI (用户界面)部件拥有 的事件行为外,增加 send Message方法和on Message方法,并在此两种方法中编写部件对 外部触发信息响应的业务逻辑。
[0061] 其中,send Message方法用于向事件管理器发送事件触发信息,通知事件管理器, 部件自身的事件被触发。
[0062] 对于on Message方法,当事件管理器对外广播触发信息时,会触发接收该触发 信息的部件的on Message方法,该部件根据触发信息的来源和内容,判断是否对该on Message方法感兴趣,如果感兴趣,就执行该on Message方法中的脚本,否则忽略该触发信 息。
[0063] 图4示出了根据本发明的实施例的事件驱动方法的运行时初始化和脚本集中化 流程图。
[0064] 如图4所示,根据本发明的实施例的事件驱动方法,包括:
[0065] 步骤402,初始化Contect(上下文)。Contect用于在事件驱动过程中将所有参数 集中起来进行维护。
[0066] 步骤404,初始化Even Manager (事件管理器)。Even Manager用于集中管理和调 度事件。
[0067] 步骤406,初始化脚本引擎,获取脚本的定义。
[0068] 步骤408,读取脚本模版文件,即预设的JavaScript模版文件。
[0069] 步骤410,解析存储模型生成DsComponent。根据驱动脚本的定义和预设的 JavaScript模版文件生成统一的设计对象。
[0070] 步骤412,向运行时上下文注册信息,即向运行时上下文注册事件驱动过程中部件 的自身信息。
[0071] 步骤414,生成脚本文件,并编译脚本文件。
[0072] 脚本集中化主要针对仪表板运行时的驱动脚本优化和结构化处理,以使其适应我 们的模型。
[0073] 根据提供的基于JavaScript的模板文件,在仪表板运行时,用户可以通过部件驱 动脚本的定义,按照既定规则生成统一的JavaScript文件,同时,可以向运行时的脚本管 理器注册部件自身的事件,向运行时上下文注册部件的自身信息(不包含事件以及驱动脚 本),有助于运行时上下文将事件驱动过程中的所有参数集中起来进行维护。
[0074] 图5示出了根据本发明的实施例的事件驱动方法的脚本驱动流程图。
[0075] 如图5所示,根据本发明的实施例的事件驱动方法,包括以下步骤:
[0076] 步骤502,触发部件的事件。
[0077] 步骤504,通知事件管理器事件被触发。即在仪表板上的任一部件在检测到自身的 事件被触发时,向事件管理器发送事件触发信息。
[0078] 步骤506,处理部件自身对事件的相应行为。当事件管理器对外广播触发信息时, 会触发接收该触发信息的部件的onMessage方法,该部件根据触发信息的来源和内容,判 断是否对该onMessage方法感兴趣,如果感兴趣,就执行该onMessage方法中的脚本,否则 忽略该触发信息。
[0079] 步骤508,事件管理器判断是否发送触发消息,当判断结果为是时,进入步骤510, 否则,结束进程。广播事件触发信息前,需要对事件触发信息的来源进行追踪,判断是否需 要对此事件触发信息进行广播,以避免发送循环消息导致系统假死。
[0080] 步骤510,事件管理转发消息。
[0081] 步骤512,部件接收并处理消息。根据提供的基于JavaScript的模板文件,仪表 板在运行时,用户可以通过部件驱动脚本的定义,按照既定规则生成统一的JavaScript文 件,同时,可以向运行时的脚本管理器注册部件自身的事件。
[0082] 在该技术方案中,仪表板的运行时主要由运行时上下文、事件管理器、仪表板参数 表、运行时部件、脚本执行引擎、脚本执行器等组成,运行时上下文负责全局参数的管理以 及执行环境的维护。事件管理器负责接收部件发送的消息并广播接到的消息。脚本执行引 擎以及脚本执行器共同完成驱动脚本的执行和环境调试。在整个运行时中,事件管理器充 当了消息总线的角色,当有部件的事件被触发时(如按钮点击事件),事件管理器会响应事 件并以广播方式转发消息,这样,所有对该消息感兴趣的部件,均可以收到该消息并作出快 速反应,大大提高了部件的灵活性。
[0083] 以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,可以使一 套驱动脚本适应不同平台的需求,由事件管理器统一调度事件,提高了脚本的可读性和部 件的灵活性,降低了编写和维护的成本和难度,使产品游刃有余地适应不同业务场景和各 种复杂的业务需求。
[〇〇84] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1. 一种基于JavaScript的事件驱动方法,其特征在于,包括: 仪表板上的任一部件在检测到自身的事件被触发时,向事件管理器发送事件触发信 息; 所述事件管理器广播接收到的所述事件触发信息; 所述仪表板上的任一部件以外的其他部件接收所述广播的所述事件触发信息,根据所 述事件触发信息、所述事件的驱动脚本的定义和预设的JavaScript模版文件生成统一的 JavaScript脚本文件,并根据所述JavaScript脚本文件向脚本管理器注册所述事件。
2. 根据权利要求1所述的事件驱动方法,其特征在于,包括: 所述事件管理器根据接收到的所述事件触发信息的来源,判断是否广播所述事件触发 信息。
3. 根据权利要求1所述的事件驱动方法,其特征在于,包括: 所述仪表板上的任一部件以外的其他部件接收所述事件触发信息,并根据所述事件触 发信息的来源和内容,判断是否所述事件触发信息是否有效,以及 当判断结果为是时,执行所述事件触发信息对应的所述事件的驱动脚本,否则,不响应 所述事件触发信息。
4. 根据权利要求1至3中任一项所述的事件驱动方法,其特征在于,还包括: 向运行时上下文注册被触发所述事件的所述仪表板上的任一部件的信息。
5. 根据权利要求4所述的事件驱动方法,其特征在于,还包括: 管理事件驱动过程中的所有参数,并维护运行环境。
6. -种基于JavaScript的事件驱动系统,其特征在于,包括: 发送单元,用于在仪表板上的任一部件在检测到自身的事件被触发时,向事件管理器 发送事件触发信息; 广播单元,所述事件管理器广播所述事件触发信息; 执行单元,所述仪表板上的任一部件以外的其他部件接收所述事件触发信息,根据所 述事件触发信息、所述事件的驱动脚本的定义和预设的JavaScript模版文件生成统一的 JavaScript脚本文件,并根据所述JavaScript脚本文件向脚本管理器注册所述事件。
7. 根据权利要求6所述的事件驱动系统,其特征在于,还包括: 判断单元,所述事件管理器根据接收到的所述事件触发信息的来源,判断是否广播所 述事件触发信息。
8. 根据权利要求6所述的事件驱动系统,其特征在于,所述执行单元包括: 所述仪表板上的任一部件以外的其他部件根据接收到的所述事件触发信息的来源和 内容,判断是否所述事件触发信息是否有效,以及 当判断结果为是时,执行所述事件触发信息对应的所述事件的驱动脚本,否则,不响应 所述事件触发信息。
9. 根据权利要求6至8中任一项所述的事件驱动系统,其特征在于,还包括: 注册单元,用于向运行时上下文注册被触发所述事件的所述仪表板上的任一部件的信 息。
10. 根据权利要求9所述的事件驱动系统,其特征在于,还包括: 维护单元,用于管理事件驱动过程中的所有参数,并维护运行环境。
【文档编号】G06F9/44GK104090760SQ201410318914
【公开日】2014年10月8日 申请日期:2014年7月4日 优先权日:2014年7月4日
【发明者】王雨学, 张乐龙 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1