首页> 中国专利> 表单函数的解析和执行方法、装置、电子设备和存储介质

表单函数的解析和执行方法、装置、电子设备和存储介质

摘要

本申请公开了一种表单函数的解析和执行方法、装置、电子设备和存储介质,该表单函数的解析方法包括:为表单函数创建执行上下文和作用域;遍历解析表单函数的函数体,以获得解析对象,其中,解析对象包括操作符、公式参数以及函数中的至少一种;基于解析对象的类型构造表单函数的解析函数。该表单函数的解析方法使得即使关联多个表单项数据的表单函数也能够被解析执行,提升了动态表单的实用价值。

著录项

  • 公开/公告号CN114911796A

    专利类型发明专利

  • 公开/公告日2022-08-16

    原文格式PDF

  • 申请/专利权人 浙江太美医疗科技股份有限公司;

    申请/专利号CN202210457112.4

  • 发明设计人 黎冠敏;

    申请日2022-04-27

  • 分类号G06F16/22(2019.01);

  • 代理机构苏州三英知识产权代理有限公司 32412;

  • 代理人潘时伟

  • 地址 314001 浙江省嘉兴市昌盛南路36号智慧产业创新园9号楼3层

  • 入库时间 2023-06-19 16:23:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-02

    实质审查的生效 IPC(主分类):G06F16/22 专利申请号:2022104571124 申请日:20220427

    实质审查的生效

说明书

技术领域

本申请属于计算机数据处理技术领域,具体涉及一种表单函数的解析和执行方法、装置、电子设备和存储介质。

背景技术

随着计算机技术的不断发展,越来越多的数据通过表单的形式进行存储。在表单配置系统中,已经提供了表单动态化的能力,但是常规的动态表单不能支持不同表单项之间的数据联动,所以在复杂场景下,动态表单实用价值有限。

公开于该背景技术部分的信息仅仅旨在增加对本申请的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。

发明内容

本申请的目的在于提供一种表单函数的解析方法,其用于解决常规动态表单不能支持不同表单项之间数据联动的问题。

为实现上述目的,本申请提供了一种表单函数的解析方法,所述方法包括:

为表单函数创建执行上下文和作用域;

遍历解析所述表单函数的函数体,以获得解析对象,其中,所述解析对象包括操作符、公式参数以及函数中的至少一种;

基于所述解析对象的类型构造所述表单函数的解析函数。

一实施例中,基于所述解析对象的类型构造所述表单函数的解析函数,具体包括:

在解析对象为操作符时,用所述解析对象填充解析函数体字符串,以构造所述表单函数的解析函数。

一实施例中,基于所述解析对象的类型构造所述表单函数的解析函数,具体包括:

在解析对象为公式参数时,用所述解析对象填充解析函数体字符串、所述执行上下文以及作用域,以构造所述表单函数的解析函数。

一实施例中,基于所述解析对象的类型构造所述表单函数的解析函数,具体包括:

在解析对象为函数时,为所述解析对象分配函数ID,并用所述函数ID填充解析函数体字符串,以构造所述表单函数的解析函数。

一实施例中,所述方法还包括:

在解析对象为函数时,创建所述函数ID与所述解析对象的全局映射。

一实施例中,所述方法还包括在解析对象为函数时:

为所述解析对象创建执行上下文和作用域;

遍历解析所述解析对象的函数体,以获得子解析对象,所述子解析对象包括操作符、公式参数以及函数中的至少一种;以及

基于所述子解析对象的类型,构造子解析函数。

一实施例中,基于所述解析对象的类型构造所述表单函数的解析函数,具体包括:

在解析对象非操作符、公式参数以及函数中的任一种时,用所述解析对象填充解析函数体字符串,以构造所述表单函数的解析函数。

一实施例中,所述方法还包括:

利用传参函数初始化所述表单函数的函数体字符串,以获得所述表单函数的函数体。

本申请还提供一种表单函数的执行方法,所述方法包括:

展示表单函数的配置页面,其中,所述配置页面包括第一表单项;

接收用户在所述配置页面的第一表单项输入的表单函数,以供服务器保存,其中,所述表单函数至少与第二表单项关联;

展示表单函数的执行页面,其中,所述执行页面包括所述第一表单项和第二表单项;

响应于在所述执行页面第二表单项输入的配置参数,在所述执行页面的第一表单项展示执行结果,其中,所述执行结果为所述服务器响应所述配置参数,调用如上所述表单函数解析方法解析所述表单函数,并利用获得的解析函数运行所述配置参数获得。

本申请还提供一种表单函数的解析装置,所述表单函数的解析装置包括:

创建模块,用于为表单函数创建执行上下文和作用域;

解析模块,用于遍历解析所述表单函数的函数体,以获得解析对象,其中,所述解析对象包括操作符、公式参数以及函数中的至少一种;

构造模块,用于基于所述解析对象的类型构造所述表单函数的解析函数。

本申请还提供一种表单函数的执行装置,所述表单函数的执行装置包括:

展示模块,用于展示表单函数的配置页面,其中,所述配置页面包括第一表单项;

输入模块,用于接收用户在所述配置页面的第一表单项输入的表单函数,以供服务器保存,其中,所述表单函数至少与第二表单项关联;

所述展示模块还用于展示表单函数的执行页面,其中,所述执行页面包括所述第一表单项和第二表单项;

所述展示模块还用于响应于在所述执行页面第二表单项输入的配置参数,在所述执行页面的第一表单项展示执行结果,其中,所述执行结果为所述服务器响应所述配置参数,调用如上所述表单函数解析方法解析所述表单函数,并利用获得的解析函数运行所述配置参数获得。

本申请还提供一种电子设备,包括:

至少一个处理器;以及

存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的表单函数的解析方法或表单函数的执行方法。

本申请还提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的表单函数的解析方法或表单函数的执行方法。

与现有技术相比,根据本申请的表单函数的解析方法,其通过将表单函数的函数体进行遍历解析,并根据解析对象的类型进行解析函数的构造,使得即使关联多个表单项数据的表单函数也能够被解析执行,提升了动态表单的实用价值。

附图说明

图1是根据本申请一实施例表单函数的解析方法和装置、表单函数的执行方法和装置的应用场景示意图;

图2是根据本申请一实施例表单函数的解析和执行方法的交互图;

图3是根据本申请一实施例表单函数的解析方法的流程图;

图4是根据本申请一实施例表单函数的解析方法的流程图;

图5是根据本申请一实施例表单函数的执行方法的流程图;

图6是根据本申请一实施例表单函数的执行方法中表单函数配置页面图;

图7和图8是根据本申请一实施例表单函数的执行方法中表单函数执行页面图;

图9是根据本申请一实施例表单函数的解析装置的模块图;

图10根据本申请一实施例表单函数的执行装置的模块图;

图11是根据本申请一实施方式电子设备的硬件结构图。

具体实施方式

以下将结合附图所示的各实施方式对本申请进行详细描述。但该等实施方式并不限制本申请,本领域的普通技术人员根据该等实施方式所做出的结构、方法、或功能上的变换均包含在本申请的保护范围内。

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

动态表单的一个使用场景是资产管理系统(property management system,PMS)中的合同管理。在PMS系统的表单模板中,可以配置表单项如状态、本次时间、下次跟进时间、人员、部门等。例如,其中可以将表单项“下次跟进时间”与表单项“状态”进行关联配置。

参图1和图2,在一个具体的场景示例中,用户可以通过终端访问平台服务器,平台服务器可以部署有PMS系统,这样,终端可以通过网络访问平台服务器提供的PMS系统,PMS系统可以提供表单配置页和表单执行页。

在PMS系统提供的表单配置页,可以选择需要配置的表单项。例如,针对选中的表单项A,用户可以调用“表单字段”以及需要使用的“函数”,以构建表单函数,并保存。在PMS系统提供的表单执行页,会加载页面数据,并解析表单项的字段中配置的表单函数,此时,服务器可以执行本申请提供的表单函数的解析方法,并构造解析函数;随后,再基于表单项的字段配置值执行该解析函数,以得到表单项A的执行结果。

参图3,介绍本申请表单函数的解析方法的一具体实施例。在本实施例中,该方法包括:

S11、为表单函数创建执行上下文和作用域。

动态表单可以基于JavaScript(简称js)进行开发配置。JavaScript是一种直译式脚本语言,它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。

作用域(scope)是指函数或者变量的作用范围,分为全局作用域、函数作用域和块作用域。作用域的功能是隔离变量,让在不同作用域下的相同变量不会产生冲突,其规定了如何查找变量,当前执行代码块对变量的访问权限。在函数代码执行前都会创建对应的执行上下文(Execution Contexts),一个上下文对象代表一个函数的执行环境。执行上下文中可以包括当前执行环境中的变量、函数声明,参数(arguments),作用域链,this等信息。

可以看出,作用域是执行上下文的划分,其可以是负责收集并维护由所有声明的标识符组成的一系列查询,并实施一套严格的规则,确定当前执行的代码对这些标识符的访问权限。

S12、遍历解析所述表单函数的函数体,以获得解析对象。

具体地,可以是利用传参函数param初始化表单函数的函数体字符串,以获得表单函数的函数体。

这里的解析对象可以包括操作符、公式参数以及函数中的至少一种,函数体可以理解为由这些解析对象作为节点构成的树状结构。

示范性地,操作符可以是包括“+”、“-”、“×”、“÷”等,公式参数可以是包括“本次时间”、“状态”等,函数可以是包括“EVERY”、“REF”、“SQRT”、“ROUND”等。

S13、基于所述解析对象的类型构造所述表单函数的解析函数。

依据解析对象类型的不同,会对解析对象执行不同的操作以构建表单函数的解析函数。对于表单函数而言,其可能是存在复杂嵌套的公式,本申请的实施例中,将表单函数的函数体中的各解析对象重新进行拼接,以获得一个“链式”结构的解析函数,从而使得表单函数可落地执行,且不改变原表单函数的计算逻辑。

以下依据解析对象的具体类型,对其构造表单函数的方式进行具体阐述:

①解析对象为操作符

在解析对象为操作符时,直接用该解析对象填充解析函数体字符串。基于在先为表单函数创建的执行上下文和作用域,该操作符可以查找其对应的操作范围和对象。

②解析对象为公式参数

在解析对象为公式参数时,需要对其执行两部分的操作。首先,作为公式参数,需要以其进一步填充创建的执行上下文和作用域,其次,再以其填充解析函数体字符串。

③解析对象为函数

解析对象为函数说明该解析对象是嵌套在表单函数中的“子函数”。为将表单函数能够最终解析为“链式”结构,这里首先为该解析对象分配一个与其对应的函数ID,再以该函数ID填充解析函数体字符串。函数ID用于供解析函数执行时调用对应解析对象的函数功能。这里,可以创建函数ID与解析对象的全局映射,保证该解析对象的全局可调用。

其次,对于该函数格式的解析对象,需要对其进行进一步的解析,以使得其在被调用时可执行。这里,对该解析对象的解析过程可以与上述实施例中表单函数的解析过程类似,即,首先为解析对象创建执行上下文和作用域,再遍历解析对象的函数体以获得子解析对象,最后基于子解析对象的类型构造子解析函数。这里,对于基于子解析对象的类型构造子解析函数的过程不再赘述,并且,可以理解的是,若解析对象中被进一步解析出函数类型的解析对象,也可以是类似地重复地执行上述解析方法,直至表单函数被全解析。

在表单函数中,解析对象除了可能包括上述的操作符、公式参数以及函数外,还可能包括例如具体的“数值”等。因此,在判断解析对象不是操作符、公式参数以及函数中的任一种时,还可以解析对象直接填充解析函数体字符串。

需要说明的是,执行上下文分为全局执行上下文和函数执行上下文。全局执行上下文只有一个,而函数执行上下文在每次创建函数时都会对应创建。对应到本申请的实施例中,在步骤S11中首先为表单函数创建了对应的函数执行上下文,而在表单函数的解析对象为“子函数”时,对该解析对象也创建了对应的函数执行上下文。

由于JavaScript是单线程的,每次只能执行一件事情,其他的事情会放在指定的上下文栈中排队等待执行。JavaScript解释器在初始化代码的时候,首先会创建一个新的全局执行上下文到执行上下文栈顶中,然后随着每次函数的调用都会创建一个新的执行上下文放入到栈顶中,随着函数执行完毕后被执行上下文栈顶弹出,直到回到全局的执行上下文中。

在以上的实施例中,示出了表单函数的函数体解析对象中可能存在嵌套的“子函数”的情形。最终构造的解析函数的函数体中对于这些“子函数”是通过函数ID映射的方式进行调用,这里再对解析函数随后可能的执行过程进行进一步的解释。

具体地,以解析函数为A,解析函数A中嵌套有子函数B(函数ID)为例:

执行状态1:在创建解析函数的执行上下文之前,全局执行上下文处于活跃状态;

执行状态2:在解析函数A被调用时,JavaScript引擎停止执行全局执行上下文,创建解析函数A执行上下文,且将解析函数A执行上下文放入执行上下文栈顶;

执行状态3:由于解析函数A里调用了子函数B,此时暂停解析函数A执行上下文,并创建子函数B执行上下文,且将子函数B执行上下文放入执行上下文栈顶。这里,子函数B通过ID映射的方式进行函数功能的调用。

执行状态4:当子函数B执行完后,子函数B执行上下文从栈顶出栈,回到解析函数A执行上下文中继续执行;

执行状态5:当解析函数A执行完后,解析函数A执行上下文从栈顶出栈,回到全局执行上下文中。

配合参图4,以上的实施例中,根据解析对象类型的不同,示范了构造解析函数的具体过程。在此过程中,还可以基于预设的“解析对象类型判断流程”执行以上实施例的解析函数构造过程。

具体地,在为表单函数创建执行上下文和作用域后,用传参函数初始化表单函数体字符串,以获得表单函数的函数体;随后,遍历解析表单函数的函数体,以获得解析对象。

针对解析对象,首先判断其是否为操作符,若是,则直接填充解析函数体字符串;若否,则进一步判断是否为公式参数。若解析对象是公式参数,则用其填充上述表单函数的执行上下文和作用域、以及解析函数体字符串;若否,则进一步判断是否函数。若解析对象是函数,则为其分配函数ID,并用该函数ID填充解析函数体字符串,并对解析对象重新循环执行上述表单函数的解析过程;若否,则直接填充解析函数体字符串。

在遍历解析完表单函数中的所有解析对象后,获得最终的解析函数体字符串,并根据该解析函数体字符串创建解析函数。

可以理解的是,“解析对象类型判断流程”还可以根据应用环境的不同进行各个步骤之间的调换,此处不再赘述。

参图5,介绍本申请表单函数的执行方法的一具体实施例。在本实施例中,该方法包括:

S21、展示表单函数的配置页面,其中,所述配置页面包括第一表单项。

配合参图6,示出的是一个示范的表单函数的配置页面。在该配置页面中,可以对“下次跟进时间”表单项(即第一表单项)进行表单函数的配置。

S22、接收用户在所述配置页面的第一表单项输入的表单函数,以供服务器保存,其中,所述表单函数至少与第二表单项关联。

用户在选中“下次跟进时间”表单项后,可以选择需要使用的函数以及表单字段。这里示范性地将表单函数配置为IF(AND(状态A==1,状态B==2),TIME(本次时间,30),TIME(本次时间,90))

该表单函数表示:若同时满足状态A为“1”、状态B为“2”,则下次跟进时间为本次时间后30天,否则下次跟进时间为本次时间后90天。可以看出,该表单函数关联了三个表单项“状态A”、“状态B”、“本次时间”(即第二表单项)。

S23、展示表单函数的执行页面,其中,所述执行页面包括所述第一表单项和第二表单项。

S24、响应于在所述执行页面第二表单项输入的配置参数,在所述执行页面的第一表单项展示执行结果,其中,所述执行结果为所述服务器响应所述配置参数,调用如上所述表单函数解析方法解析所述表单函数,并利用获得的解析函数运行所述配置参数获得。

配合参图7和图8,在表单函数的执行页面中,第二表单项输入的配置参数可以是由用户主动输入,又或者是服务器是实时/定时对第二表单项内容进行监测,并执行更新。

示范性地,用户可以选中“本次时间”表单项以配置参数,并配置为“2022-03-01”。此时,若服务器监测到“状态A”表单项被更新为1,“状态B”表单项被更新为2,则执行得到下次跟进时间“2022-03-31”;类似地,若“状态A”表单项被更新为1,“状态B”表单项被更新为4,则执行得到下次跟进时间“2022-05-30”。

参图9,介绍本申请表单函数的解析装置的一实施例。在本实施例中,该表单函数的解析装置包括创建模块31、解析模块32以及构造模块33。

创建模块31,用于为表单函数创建执行上下文和作用域;第一解析模块32,用于遍历解析表单函数的函数体,以获得解析对象,其中,解析对象包括操作符、公式参数以及函数中的至少一种;构造模块33,用于基于解析对象的类型构造表单函数的解析函数。

一实施例中,构造模块33具体用于在解析对象为操作符时,以解析对象填充解析函数体字符串。

一实施例中,构造模块33具体用于在解析对象为公式参数时,以解析对象填充解析函数体字符串、执行上下文以及作用域。

一实施例中,构造模块33具体用于在解析对象为函数时,为解析对象分配函数ID,并以函数ID填充解析函数体字符串。

一实施例中,构造模块33具体用于在解析对象为函数时,创建函数ID与解析对象的全局映射。

一实施例中,在解析对象为函数时:创建模块31还用于为解析对象创建执行上下文和作用域;解析模块32还用于遍历解析解析对象的函数体,以获得子解析对象,子解析对象包括操作符、公式参数以及函数中的至少一种;构造模块33还用于基于子解析对象的类型,构造子解析函数。

一实施例中,构造模块33具体用于在解析对象不为操作符、公式参数以及函数中的任一种时,以解析对象填充解析函数体字符串。

一实施例中,构造模块33具体用于利用传参函数初始化表单函数的函数体字符串,以获得表单函数的函数体。

参图10,介绍本申请表单函数的执行装置的一实施例。在本实施例中,该表单函数的执行装置包括展示模块41和输入模块42。

展示模块41,用于展示表单函数的配置页面,其中,配置页面包括第一表单项;输入模块42,用于接收用户在配置页面的第一表单项输入的表单函数,以供服务器保存,其中,表单函数至少与第二表单项关联;展示模块41还用于展示表单函数的执行页面,其中,执行页面包括第一表单项和第二表单项;展示模块41还用于响应于在执行页面第二表单项输入的配置参数,在执行页面的第一表单项展示执行结果,其中,执行结果为服务器响应配置参数,调用如上表单函数解析方法解析表单函数,并利用获得的解析函数运行配置参数获得。

如上参照图1至图8,对根据本说明书实施例表单函数的解析方法和执行方法进行了描述。在以上对方法实施例的描述中所提及的细节,同样适用于本说明书实施例的表单函数的解析装置和执行装置。上面的表单函数的解析装置和执行装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。

图11示出了根据本说明书的实施例的电子设备的硬件结构图。如图11所示,电子设备50可以包括至少一个处理器51、存储器52(例如非易失性存储器)、内存53和通信接口54,并且至少一个处理器51、存储器52、内存53和通信接口54经由总线55连接在一起。至少一个处理器51执行在存储器52中存储或编码的至少一个计算机可读指令。

应该理解,在存储器52中存储的计算机可执行指令当执行时使得至少一个处理器51进行本说明书的各个实施例中以上结合图1至图8描述的各种操作和功能。

在本说明书的实施例中,电子设备50可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动电子设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴电子设备、消费电子设备等等。

根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-图8描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。

在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本说明书的一部分。

可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。

本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本说明书的保护范围应当由所附的权利要求书来限定。

需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理客户实现,或者,有些单元可能分由多个物理客户实现,或者,可以由多个独立设备中的某些部件共同实现。

以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。

上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。

本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所对应的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号