基于事件代理的表单自动生成方法和系统

文档序号:1505366 发布日期:2020-02-07 浏览:3次 >En<

阅读说明:本技术 基于事件代理的表单自动生成方法和系统 (Automatic form generation method and system based on event agent ) 是由 徐晓笑 于 2019-10-15 设计创作,主要内容包括:本公开涉及一种基于事件代理的自动生成表单的方法系统。所述方法包括:读取表单配置模板,所述表单配置模板包括各表单元素以及绑定到相应表单元素的事件;解析所述表单配置模板以将其拆分成表单元素和绑定到表单元素的事件;确定所述表单元素的初始状态;以及基于所确定的表单元素的初始状态来自动生成表单,其中所述表单包括处于其初始状态的表单元素。(The present disclosure relates to a method and a system for automatically generating a form based on an event agent. The method comprises the following steps: reading a form configuration template, the form configuration template including form elements and events bound to the corresponding form elements; parsing the form configuration template to split it into form elements and events bound to form elements; determining an initial state of the episomal element; and automatically generating a form based on the determined initial state of the form element, wherein the form includes the form element in its initial state.)

基于事件代理的表单自动生成方法和系统

技术领域

本公开涉及基于事件代理的表单自动生成方法和系统.

背景技术

在企业级中后台系统中,通常需要在短时间内完成开发大量的表单页面。表单一般涉及表单数据回写、表单元素间的联动、表单元素的各种复杂校验以及校验后用户提示,因此交互往往比较复杂。开发者往往需要浪费大量时间来对表单页面进行开发。

因此,急需一种能简单快速生成完整表单功能的方法来提高表单的生成和开发效率。

发明内容

为了提升表单的开发效率并统一表单的交互,本公开提出了一种基于事件代理的表单自动生成方法和系统。

根据本公开的第一方面,提供了一种基于事件代理的自动生成表单的方法,包括:读取表单配置模板,所述表单配置模板包括各表单元素以及绑定到相应表单元素的事件;解析所述表单配置模板以将其拆分成表单元素和绑定到表单元素的事件;确定所述表单元素的初始状态;以及基于所确定的表单元素的初始状态来自动生成表单,其中所述表单包括处于其初始状态的表单元素。

在一实施例中,所述方法还包括接收用户对所生成的表单的交互操作并相应地更新所生成的表单。

在另一实施例中,所述方法还包括标识所述交互操作所针对的表单元素;以及基于绑定到所标识的表单元素的事件来更新所生成的表单。

在又一实施例中,所述方法还包括触发绑定到标识出的表单元素的事件;基于所述事件来更新所述表单元素的状态;以及基于经更新的表单元素状态来更新所生成的表单。

在又一实施例中,基于所述事件来更新所述表单元素的状态还包括确定所述事件是否依赖外部数据库,并且在确定所述事件依赖外部数据库的情况下,与所述外部数据库通信以获取相应数据来更新所述表单元素的状态。

在又一实施例中,基于所述事件来更新所述表单元素的状态还包括确定所述事件的生命周期,并且在确定所述事件的寿命终止时,将所述事件与所述表单元素解绑,从而使得所述表单元素不再具有该事件。

在又一实施例中,所述交互操作包括以下中的一者或多者:点击表单元素、在输入域中输入内容。

根据本公开的第二方面,提供了一种基于事件代理的自动生成表单的系统,包括:解析引擎,所述解析引擎被配置成:读取表单配置模板,所述表单配置模板包括各表单元素以及绑定到相应表单元素的事件;以及解析所述表单配置模板以将其拆分成表单元素和绑定到表单元素的事件;表单元素管理器,所述表单元素管理器被配置成:接收来自所述解析引擎的经拆分出的表单元素;确定所述表单元素的初始状态;以及基于所确定的表单元素的初始状态来自动生成表单,所述表单包括处于其初始状态的表单元素;以及事件代理管理器,其被配置成:接收来自所述解析引擎的经拆分出的绑定到表单元素的事件,以供在所述事件被触发时作出处理。

在一实施例中,所述表单元素管理器还被配置成接收用户对所生成的表单的交互操作。

在另一实施例中,所述表单元素管理器还被配置成标识所述交互操作所针对的表单元素,触发绑定到标识出的表单元素的事件,并将所述事件传送给所述事件代理管理器。

在又一实施例中,所述事件代理管理器还被配置成基于所述事件来更新所述表单元素的状态。

在又一实施例中,所述事件代理管理器还被配置成确定所述事件是否依赖外部数据库,并且在确定所述事件依赖外部数据库的情况下,与所述外部数据库通信以获取相应数据来更新所述表单元素的状态。

在又一实施例中,所述事件代理管理器还被配置成确定所述事件的生命周期,并且在确定所述事件的寿命终止时,将所述事件与所述表单元素解绑,从而使得所述表单元素不再具有该事件。

在又一实施例中,所述事件代理管理器还被配置成将经更新的表单元素的状态传送给所述表单元素管理器。

在又一实施例中,所述表单元素管理器还被配置成基于经更新的表单元素的状态来更新所生成的表单。

在又一实施例中,所述交互操作包括以下中的一者或多者:点击表单元素、在输入域中输入内容。

根据本公开的第三方面,提供了一种存储有计算机可执行指令的计算机可读介质,所述指令在由计算机执行时使得所述计算机执行如根据本公开的第一方面所描述的方法。

各方面一般包括如基本上在本文参照附图所描述并且如通过附图所解说的方法、装备、系统、计算机程序产品和处理系统。

前述内容已较宽泛地勾勒出根据本公开的示例的特征和技术优势以使下面的详细描述可以被更好地理解。附加的特征和优势将在此后描述。所公开的概念和具体示例可容易地被用作修改或设计用于实施与本公开相同的目的的其他结构的基础。此类等效构造并不背离所附权利要求书的范围。本文所公开的概念的特性在其组织和操作方法两方面以及相关联的优势将因结合附图来考虑以下描述而被更好地理解。每一附图是出于解说和描述目的来提供的,且并不定义对权利要求的限定。

附图说明

为了能详细理解本公开的以上陈述的特征所用的方式,可参照各方面来对以上简要概述的内容进行更具体的描述,其中一些方面在附图中解说。然而应该注意,附图仅解说了本公开的某些典型方面,故不应被认为限定其范围,因为本描述可允许有其他等同有效的方面。不同附图中的相同附图标记可标识相同或相似的元素。

图1是根据本公开的一实施例的基于事件代理的示例表单自动生成方法的流程图;

图2是根据本公开的一实施例的基于事件代理的示例表单自动生成系统的框图;

图3示出了根据本公开的一实施例的所要生成的表单的示例;

图4示出了根据本公开的一实施例的与图3的示例表单相对应的示例配置模板;以及

图5是根据本公开的一实施例的基于事件代理的示例表单自动生成系统的示意性框图。

具体实施方式

以下结合附图阐述的详细描述旨在作为各种配置的描述,而无意表示可实践本文中所描述的概念的仅有的配置。本详细描述包括具体细节以提供对各种概念的透彻理解。然而,对于本领域技术人员将显而易见的是,没有这些具体细节也可实践这些概念。

在现有的表单设计和生成过程中,对于普通表单而言,需要开发者根据UI设计来搜集对应的表单元素,并使用API编写所搜集的表单元素的属性和布局。随后,开发者使用表单功能方法装饰表单元素并接着绑定表单验证、提交方法。此后,表单生成系统接收开发者所编写的表单元素及其布局和装饰,作出验证并生成表单。

而对于联动表单而言,开发者还需要绑定相关表单元素关联关系,通过与后端通信来获得元素数据,并手动更新表单元素数据。随后,表单生成系统接收开发者所编写的表单元素及其布局和装饰,作出验证并生成表单。

因此,现有的表单设计和生成方法中,API设计复杂,开发者上手开发困难。并且,普通表单仍然需要写大量属性相关以及布局代码,没有基于一定语法规则自动生成表单的方法,浪费了大量代码量,开发效率低下。至于联动表单,由于没有抽象出一套统一的交互方式,需要手动处理和后端的数据交互以及表单元素间的联动关系,从而提高了开发成本,造成代码冗余。

首先参考图1,其示出了根据本公开的一实施例的基于事件代理的示例表单自动生成方法100的流程图。

如图1所示,在框110,方法100可包括读取表单配置模板。在一实施例中,所述表单配置模板包括各表单元素以及绑定到相应表单元素的事件。例如,表单开发者根据UI设计来搜集对应的表单元素,并使用API编写表单配置。随后,表单开发者可以绑定表单事件,即在相应的表单元素上绑定对应事件,从而形成表单配置模板。

在框120,方法100可包括解析表单配置模板。例如,表单配置模板可被解析以拆分成表单元素和绑定到表单元素的事件,从而可基于各表单元素来生成表单并通过事件代理来处理各表单元素的事件(例如,用户与表单元素交互所触发的各种点击、录入等事件)以更新表单。

在框130,方法100可包括确定表单元素的初始状态。在一示例中,表单元素的初始状态即是表单配置模板中定义的表单元素的状态,例如表单元素的尺寸、颜色、字体、在表单上的方位,等等。

在框140,方法100可包括基于所确定的表单元素的初始状态来自动生成表单。在一实施例中,所生成的表单包括处于其初始状态的表单元素。

在一实施例中,方法100还可任选地包括接收用户对所生成的表单的交互操作并相应地更新所生成的表单。在该实施例中,用户可以点击表单(例如,点击鼠标右键以唤出命令菜单、点击表单上的表单元素,等等)、在输入域中输入内容(例如,输入用户名、口令,等等),以与表单进行交互。在接收到用户交互之后,方法100可以根据该用户交互来更新表单,例如,显示用户输入的用户名,等等。

在另一实施例中,方法100还可任选地包括标识所述交互操作所针对的表单元素;以及基于绑定到所标识的表单元素的事件来更新所生成的表单。在该实施例中,在接收到用户交互之后,方法100可首先确定与该用户交互相关联的表单元素,例如标识出该用户交互所针对的表单元素的标识符。随后,方法100可基于该表单元素的标识符来触发绑定到该表单元素的事件(在该表单元素绑定有相关事件的情况下),并随后基于所触发的事件来更新表单。本领域技术人员可以明白,在表单元素不可供与用户交互的情况下(例如,没有绑定事件),则用户与该表单元素的交互将不会引起表单的变化。

在又一实施例中,方法100还可任选地包括触发绑定到标识出的表单元素的事件;基于所述事件来更新所述表单元素的状态;以及基于经更新的表单元素状态来更新所生成的表单。在该实施例中,方法100可基于标识出的表单元素的标识符来触发绑定到该表单元素的事件(在该表单元素绑定有相关事件的情况下),基于所触发的事件来所述表单元素的状态,并随后基于经更新的表单元素的状态来更新表单,例如以经更新的表单元素状态来显示该表单元素。

在该实施例中,基于事件来更新表单元素的状态还可包括:确定事件是否依赖外部数据库,并且在确定事件依赖外部数据库的情况下,与外部数据库通信以获取相应数据来更新表单元素的状态。例如,在事件需要外部数据支持的情况下,方法100可采取各种手段来获取该外部数据以完成该事件,例如与外部数据库通信以获取所需数据。

在该实施例中,基于事件来更新表单元素的状态还可包括:确定事件的生命周期,并且在确定事件的寿命终止时,将事件与所述表单元素解绑,从而使得该表单元素不再具有该事件。例如,方法100在确定了所触发的事件之后,可以确定该事件的生命周期。如果确定该事件的寿命终止(例如,如果确定该事件是一次性事件,则在处理该事件之后,其寿命应当终止),则方法100可将其与相应的表单元素解除绑定。随后,当用户再次与该表单元素交互时,将不会触发该事件。

下面参考图2,其示出了根据本公开的一实施例的基于事件代理的示例表单自动生成系统200的框图。

如图2所示,系统200可包括解析引擎202、表单元素管理器204以及事件代理管理器206。在一些实施例中,解析引擎202可被配置成读取表单配置模板,以及解析表单配置模板以将其拆分成表单元素和绑定到表单元素的事件。在该实施例中,表单配置模板包括各表单元素以及绑定到相应表单元素的事件。表单元素管理器204可被配置成接收来自解析引擎202的经拆分出的表单元素,确定表单元素的初始状态,以及基于所确定的表单元素的初始状态来自动生成表单。在一示例中,所生成的表单包括处于其初始状态的表单元素。事件代理管理器206可被配置成接收来自解析引擎202的经拆分出的绑定到表单元素的事件,以供在所述事件被触发时作出处理。如此,这些组件(例如,解析引擎202、表单元素管理器204以及事件代理管理器206)可彼此协作以完成表单的自动生成。

下面将结合图3-4并结合JSON来描述系统200的各组件的协作。JSON(即JS对象简谱,JavaScript Object Notation)是一种轻量级的数据交互格式,它采用完全独立于编程语言的文本格式来存储和表示数据,易于阅读和编写且也易于机器解析和生成。然而,本领域技术人员可以明白,可以采用本领域所知的任何其他合适的语言。

图3中以加粗黑色实线来示出了所要生成的表单的示例。在该示例中,表单元素的布局被默认为水平的(即,horizontal)。这一表单所对应的示例表单配置模板在图4中示出。

回头参考图2,解析引擎202可被配置成读取表单配置模板214。作为示例,表单配置模板214被示为JSON格式,但本领域技术人员可以采用任何其他合适的格式。在这一实施例中,表单配置模板包括各表单元素以及绑定到相应表单元素的事件。例如,表单开发者根据UI设计来搜集对应的表单元素,并使用API编写表单配置。随后,表单开发者可以绑定表单事件,即在相应的表单元素上绑定对应事件,从而形成表单配置模板。例如,图4即给出了根据本公开的一实施例的一个示例表单配置模板400。

随后,解析引擎202还可被配置成解析表单配置模板214。例如,表单配置模板214可被解析以拆分成表单元素和绑定到表单元素的事件,从而可基于各表单元素来生成表单并通过事件代理来处理各表单元素的事件(例如,用户与表单元素交互所触发的各种点击、录入等事件)以更新表单。

随后,解析引擎202可被配置成将解析出的表单元素以及事件分别传送给表单元素管理器204和事件代理管理器206,如图2所示。

进而,表单元素管理器204可被配置成接收来自解析引擎202的经拆分出的表单元素,并确定表单元素的初始状态,以及基于所确定的表单元素的初始状态来自动生成表单。在一示例中,表单元素的初始状态即是表单配置模板中定义的表单元素的状态,例如表单元素的尺寸、颜色、字体、在表单上的方位和布局,等等。在该示例中,所生成的表单包括处于其初始状态的表单元素。例如,图4所示的示例表单配置模板400在经由基于事件代理的表单自动生成系统200处理之后可以得到图3所示的示例表单(即,图3中由加粗黑色实线所包括的的表单)。

在一替换实施例中,表单元素管理器204还被配置成接收用户对所生成的表单的交互操作。例如,如图2所示,表单元素管理器204可以接收用户输入。在一示例中,用户可以点击表单(例如,点击鼠标右键以唤出命令菜单、点击表单上的表单元素,等等)、在输入域中输入内容(例如,输入用户名、口令,等等),以作出用户输入来与表单进行交互。结合图3,用户可以在输入框1、输入框2、输入框3、输入框4中的任一者中输入内容以与表单进行交互,而表单元素管理器204可以接收用户输入的这一内容。

在该实施例中,表单元素管理器204还可被配置成标识用户的交互操作所针对的表单元素,触发绑定到标识出的表单元素的事件,并将事件传送给事件代理管理器206。在这一实施例中,在接收到用户交互(例如,用户在图3的输入框1中输入了内容“张三”)之后,表单元素管理器204可被配置成确定与该用户交互相关联的表单元素,例如标识出该用户交互所针对的表单元素的标识符(例如,输入框1)。随后,表单元素管理器204可被配置成基于该表单元素的标识符来触发绑定到该表单元素的事件,并随后基于所触发的事件来更新表单(例如在图3的输入框1中显示输入内容“张三”)。

本领域技术人员可以明白,在表单元素不可供与用户交互的情况下(例如,没有绑定事件),则用户与该表单元素的交互将不会引起表单的变化。例如,结合图3,如果用户点击表单中的“输入框2”这一文字部分,由于其不是可供用户交互的,因此表单将不会变化。在这一实施例中,当用户作出这一交互达预定次数之后(例如,连续两次,等等),可以弹出提示以辅助用户与该表单进行交互。例如,可以弹出提示“请点击输入域部分以输入内容”等提示。在一些实施例中,这一提示可以持续预定时间并随后自动消失;而在另一些实施例中,这一提示以弹窗的形式示出并需要用户关闭弹窗来取消这一提示。

在进一步的实施例中,事件代理管理器206还被配置成基于接收自表单元素管理器204的事件来更新表单元素的状态。例如,如图2所示,事件代理管理器206可包括事件响应管理器208,其可被配置成对所触发的事件作出响应。例如,结合图3,继续以上示例,事件代理管理器206在确定用户在输入框1中输入了内容(例如,“张三”)的情况下,可以基于该事件来更新表单元素的状态(例如,输入框中带有内容“张三”),并且随后事件响应管理器208可基于经更新的表单元素状态来更新所生成的表单(例如,在图3的表单中的输入框1内显示内容“张三”)。例如,如图2所示,在完成对来自表单元素管理器204的事件的处理之后,事件代理管理器206可向表单元素管理器204返回表单元素状态更新。

在又一实施例中,事件代理管理器206还可被配置成确定所触发的事件是否依赖外部数据库,并且在确定该事件依赖外部数据库的情况下,与外部数据库通信以获取相应数据来更新表单元素的状态。例如,如图2所示,事件代理管理器206可任选地包括事件依赖管理器210,其被配置成确定所触发的事件的依赖关系,例如其是否依赖外部数据库。如果事件依赖管理器210确定所触发的事件依赖于外部数据库,则其可与外部数据库通信以获取所需数据。随后,事件依赖管理器210可将所获取的数据送给事件响应管理器208以供作出对该事件的响应。

在又一实施例中,事件代理管理器206还可被配置成确定事件的生命周期,并且在确定事件的寿命终止时,将事件与表单元素解绑,从而使得表单元素不再具有该事件。例如,参考图2,事件代理管理器206还可任选地包括事件生命周期管理器212,其被配置成确定事件的生命周期。例如,如果事件生命周期管理器212确定该事件是一次性事件,则在处理该事件之后,其寿命应当终止。随后,事件生命周期管理器212可将该事件与相应的表单元素解除绑定。此后,当用户再次与该表单元素交互时,将不会触发该事件。

如上所述,本公开的方法和系统使得API设计简单,上手容易;并且使用了统一的规则约定配置,降低开发成本,减少代码冗余。本公开通过抽象表单的状态,简化API设计,引入事件代理管理器和表单元素管理器将事件和表单元素拆分解耦之后,通过事件代理的形式关联起来,将复杂的交互逻辑抽象成固定的模式,减少使用者代码开发,提高生产效率。

图5是根据本公开的一实施例的基于事件代理的示例表单自动生成系统500的示意性框图。如图所示,基于事件代理的示例表单自动生成系统500包括处理器505和存储器510。存储器510存储有计算机可执行指令,这些指令可由处理器505执行来实现以上结合图1-4描述的方法和流程。

以上具体实施方式包括对附图的引用,附图形成具体实施方式的部分。附图通过说明来示出可实践的特定实施例。这些实施例在本文中也称为“示例”。此类示例可以包括除所示或所述的那些元件以外的元件。然而,还构想了包括所示或所述元件的示例。此外,还构想出的是使用所示或所述的那些元件的任何组合或排列的示例,或参照本文中示出或描述的特定示例(或其一个或多个方面),或参照本文中示出或描述的其他示例(或其一个或多个方面)。

在所附权利要求书中,术语“包括”和“包含”是开放式的,也就是说,在权利要求中除此类术语之后列举的那些元件之外的元件的系统、设备、制品或过程仍被视为落在那项权利要求的范围内。此外,在所附权利要求书中,术语“第一”、“第二”和“第三”等仅被用作标记,并且不旨在表明对它们的对象的数字顺序。

另外,本说明书中所解说的各操作的次序是示例性的。在替换实施例中,各操作可以按与附图所示的不同次序执行,且各操作可以合并成单个操作或拆分成更多操作。

以上描述旨在是说明性的,而非限制性的。例如,可结合其他实施例来使用以上描述的示例(或者其一个或多个方面)。可诸如由本领域普通技术人员在审阅以上描述之后来使用其他实施例。摘要允许读者快速地确定本技术公开的性质。提交该摘要,并且理解该摘要将不用于解释或限制权利要求的范围或含义。此外,在以上具体实施方式中,各种特征可以共同成组以使本公开流畅。然而,权利要求可以不陈述本文中公开的每一特征,因为实施例可以表征所述特征的子集。此外,实施例可以包括比特定示例中公开的特征更少的特征。因此,所附权利要求书由此被结合到具体实施方式中,一项权利要求作为单独的实施例而独立存在。本文中公开的实施例的范围应当参照所附权利要求书以及此类权利要求所赋予权利的等价方案的完整范围来确定。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种工程建设项目业务申报制表方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!