CN114385148A - 一种实现联动功能的方法、装置、设备和存储介质 - Google Patents
一种实现联动功能的方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN114385148A CN114385148A CN202111552350.5A CN202111552350A CN114385148A CN 114385148 A CN114385148 A CN 114385148A CN 202111552350 A CN202111552350 A CN 202111552350A CN 114385148 A CN114385148 A CN 114385148A
- Authority
- CN
- China
- Prior art keywords
- linkage
- component
- condition
- node
- configuration information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000012545 processing Methods 0.000 claims abstract description 108
- 230000006870 function Effects 0.000 claims description 202
- 238000012795 verification Methods 0.000 claims description 74
- 238000006243 chemical reaction Methods 0.000 claims description 28
- 238000004590 computer program Methods 0.000 claims description 16
- 230000015654 memory Effects 0.000 claims description 15
- 238000011084 recovery Methods 0.000 claims description 7
- 238000011161 development Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提出了一种实现联动功能的方法、装置、电子设备和计算机存储介质,应用于Formily框架的低代码核心类中,该方法包括:接收从用户页面发送的JSON Schema配置;所述JSON Schema配置是所述用户页面从页面设计器中获取的;所述JSON Schema配置包括用于描述所述用户页面的多个组件节点的联动配置信息,且不同组件节点的联动配置信息对应相同的数据结构规范;通过遍历所述JSON Schema配置,得到所述多个组件节点中每个组件节点的联动配置信息;按照所述数据结构规范对所述每个组件节点的联动配置信息进行联动解析处理,得到联动解析处理后的联动功能代码;利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能。
Description
技术领域
本申请涉及金融科技(Fintech)的云计算技术领域,尤其涉及一种实现联动功能的方法、装置、电子设备和计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出了更高的要求。
相关技术中,高性能表单解决方案Formily的联动开发在通用化上具有限制性和在迭代开发中成本高的问题。例如在Schema上写联动功能时使用表达式字符串,而表达式字符串内的变量在别的地方执行会因缺少正确的执行上下文而报错。再者,例如使用函数方式在Formily的effect应用程序接口(application programming interface,api)上开发复杂联动功能时,每一次都需要手写与复杂联动功能相关的代码块;进而,影响Formily的联动开发处理能力。
发明内容
本申请提供一种实现联动功能的方法、装置、电子设备和计算机存储介质,可以解决相关技术中Formily的联动开发在通用化上具有限制性和在迭代开发中成本高的问题。
本申请的技术方案是这样实现的:
本申请实施例提供了一种实现联动功能的方法,应用于Formily框架的低代码核心类中,所述方法包括:
接收从用户页面发送的JSON Schema配置;所述JSON Schema配置是所述用户页面从页面设计器中获取的;所述JSON Schema配置包括用于描述所述用户页面的多个组件节点的联动配置信息,且不同组件节点的联动配置信息对应相同的数据结构规范;
通过遍历所述JSON Schema配置,得到所述多个组件节点中每个组件节点的联动配置信息;按照所述数据结构规范对所述每个组件节点的联动配置信息进行联动解析处理,得到联动解析处理后的联动功能代码;
利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能。
示例性地,所述组件节点包括多份联动配置信息,所述多份联动配置信息中的每份联动配置信息包括:组件节点的最终设置结果和联动条件;所述联动条件包括条件节点路径和条件组件节点类型;
所述联动解析处理后的联动功能代码,用于执行以下步骤:
在当前组件节点包括的当前一份联动配置信息中,按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点;所述当前组件节点表示所述多个组件节点中当前需要联动解析处理的组件节点,所述其余组件节点表示所述多个组件节点中除所述当前组件节点以外的组件节点;
判断查找出的组件节点是否满足联动条件;
在确定所述查找出的组件节点满足联动条件时,确定所述当前一份联动配置信息满足所述联动条件,将所述当前一份联动配置信息中的最终设置结果设置到所述当前组件节点的结果上。
示例性地,所述联动条件还包括条件节点值和条件节点值类型,所述判断查找出的组件节点是否满足联动条件,包括:
按照所述联动条件中的条件节点值类型对所述查找出的组件节点的条件节点值进行类型转换,得到类型转换后的条件值;
在所述类型转换后的条件值与所述联动条件中的条件节点值相同的情况下,确定所述查找出的组件节点满足联动条件;
在所述类型转换后的条件值与所述联动条件中的条件节点值不相同的情况下,确定所述查找出的组件节点不满足联动条件。
示例性地,所述利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能,包括:
将所述联动解析处理后的联动功能代码注册到所述Formily框架的联动功能应用程序接口api中;
在确定所述用户页面对所述每个组件节点触发联动时,通过所述联动功能api调用所述联动功能代码,实现对所述每个组件节点的联动功能。
示例性地,所述方法还包括:
按照所述数据结构规范对所述每个组件节点的联动配置信息进行校验解析处理,得到校验解析处理后的校验功能代码;
利用所述校验解析处理后的校验功能代码,实现对所述每个组件节点的校验功能。
示例性地,所述组件节点包括多份联动配置信息,所述多份联动配置信息中的每份联动配置信息包括:组件节点的最终设置结果和联动条件;所述联动条件包括条件节点路径和条件组件节点类型;
所述联动解析处理后的校验功能代码,用于执行以下步骤:
在当前组件节点包括的当前一份联动配置信息中,按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点;所述当前组件节点表示所述多个组件节点中当前需要联动解析处理的组件节点,所述其余组件节点表示所述多个组件节点中除所述当前组件节点以外的组件节点;
判断查找出的组件节点是否满足联动条件;
在确定所述查找出的组件节点满足联动条件时,确定所述当前一份联动配置信息满足所述联动条件,继续判断所述当前组件节点的结果是否通过校验,得到校验结果;在根据所述校验结果确定所述当前组件节点通过校验后,继续判断所述当前组件节点的下一组件节点是否通过校验,直至需要联动解析处理的组件节点全部判断完成;或者,
在确定所述查找出的组件节点不满足联动条件时,确定所述当前组件节点通过校验;继续判断所述当前组件节点的下一组件节点是否通过校验,直至需要联动解析处理的组件节点全部判断完成。
示例性地,所述按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点,包括:
从所述其余组件节点中确定与所述联动条件中的条件节点路径对应的部分组件节点;
从所述部分组件节点中查找出与所述联动条件中的条件组件节点类型相同的组件节点。
示例性地,所述利用所述校验解析处理后的校验功能代码,实现对所述每个组件节点的校验功能,包括:
将所述联动解析处理后的校验功能代码注册到所述低代码核心类的提交功能中;
在确定所述用户页面进行数据恢复或提交操作时,通过执行所述校验功能代码,实现对所述每个组件节点的校验功能。
示例性地,在执行所述校验功能代码后,所述方法还包括:
根据所述当前组件节点的联动条件中的条件节点数据类型,对所述校验功能代码的输出数据进行类型转换。
本申请实施例还提出了一种实现联动功能的装置,所述装置包括接收模块、得到模块和联动模块,其中,
接收模块,用于接收从用户页面发送的JSON Schema配置;所述JSON Schema配置是所述用户页面从页面设计器中获取的;所述JSON Schema配置包括用于描述所述用户页面的多个组件节点的联动配置信息,且不同组件节点的联动配置信息对应相同的数据结构规范;
得到模块,用于通过遍历所述JSON Schema配置,得到所述多个组件节点中每个组件节点的联动配置信息;按照所述数据结构规范对所述每个组件节点的联动配置信息进行联动解析处理,得到联动解析处理后的联动功能代码;
联动模块,用于利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能。
本申请实施例提供一种电子设备,所述设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述一个或多个技术方案提供的实现联动功能的方法。
本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后能够实现前述一个或多个技术方案提供的实现联动功能的方法。
本申请实施例提出了一种实现联动功能的方法、装置、电子设备和计算机存储介质,应用于Formily框架的低代码核心类中,所述方法包括:接收从用户页面发送的JSONSchema配置;所述JSON Schema配置是所述用户页面从页面设计器中获取的;所述JSONSchema配置包括用于描述所述用户页面的多个组件节点的联动配置信息,且不同组件节点的联动配置信息对应相同的数据结构规范;通过遍历所述JSON Schema配置,得到所述多个组件节点中每个组件节点的联动配置信息;按照所述数据结构规范对所述每个组件节点的联动配置信息进行联动解析处理,得到联动解析处理后的联动功能代码;利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能。
可以看出,在本申请实施例中,由于JSON Schema配置中包括的每个组件节点均对应相同的数据结构规范,因而在需要对JSON Schema配置中包括的每个组件节点进行联动开发时,可以基于一个通用化的数据结构规范对这些组件节点进行联动解析处理,这样,可以解决联动开发在通用化上具有限制性的问题;进一步地,在按照数据结构规范对这些组件节点进行联动解析处理时,通过梳理数据结构规范中各个协议字段的规则,可以自动化生成用于实现联动功能的功能代码,如此,无需开发人员每次手写与复杂联动功能相关的代码块,解决联动功能在迭代开发中成本高的问题。
附图说明
图1A是本申请实施例中的一种实现联动功能的方法的流程示意图;
图1B是本申请实施例中的一种执行联动功能代码的流程示意图;
图1C是本申请实施例中的一种数据结构规范的示意图;
图2A为本申请实施例的一种实现联动校验功能的场景示意图;
图2B为本申请实施例的一种进行联动解析处理和校验解析处理的流程示意图;
图2C为本申请实施例的另一种进行联动解析处理的流程示意图;
图2D为本申请实施例的另一种进行校验解析处理的流程示意图;
图3是本申请实施例的实现联动功能的装置的组成结构示意图;
图4是本申请实施例提供的电子设备的结构示意图。
具体实施方式
以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本申请,并不用于限定本申请。另外,以下所提供的实施例是用于实施本申请的部分实施例,而非提供实施本申请的全部实施例,在不冲突的情况下,本申请实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,在本申请实施例中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其它要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,I和/或J,可以表示:单独存在I,同时存在I和J,单独存在J这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括I、J、R中的至少一种,可以表示包括从I、J和R构成的集合中选择的任意一个或多个元素。
例如,本申请实施例提供的实现联动功能的方法包含了一系列的步骤,但是本申请实施例提供的实现联动功能的方法不限于所记载的步骤,同样地,本申请实施例提供的实现联动功能的装置包括了一系列模块,但是本申请实施例提供的实现联动功能的装置不限于包括所明确记载的模块,还可以包括为获取相关任务数据、或基于任务数据进行处理时所需要设置的模块。
本申请实施例可以应用于服务端组成的计算机系统中,并可以与众多其它通用或专用计算系统环境或配置一起操作。这里,服务端可以是包括小型计算机系统﹑大型计算机系统的分布式云计算技术环境,等等。
服务端等电子设备可以通过程序模块的执行实现相应的功能。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务端可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
目前,Formily有Markup Schema、JSON Schema、JSX 3种使用方式;本申请实施例可以针对JSON Schema这种使用方式。
Formily使用的JSON Schema协议数据类型不够丰富。Formily使用的JSON Schema是JSON字符串,它由页面设计器生成的。在页面设计器中,因为JSON字符串对应的值大多是用户通过输入框手动录入的,所以得到的值是字符串类型。又因为Formily的schema类型(type)只支持string、object、array、number、boolean、void、date和datetime。所以当遇到基础类型如布尔值(true,false)时,字符串类型的输入框无法正确将字符串类型值转换成布尔类型值。并且,当遇到复杂类型如职业类型结构:{jobcode:1234}时,Formily的schematype也无法通过字符串类型值进行正确转换。此外,Formily的联动开发在通用化上具有限制性和在迭代开发中成本高的问题。
针对上述技术问题,提出以下各实施例。
在本申请的一些实施例中,实现联动功能的方法可以利用实现联动功能的装置中的处理器实现,上述处理器可以为特定用途集成电路(Application Specific IntegratedCircuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable LogicDevice,PLD)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。
图1A是本申请实施例中的一种实现联动功能的方法的流程示意图,如图1A所示,该方法包括如下步骤:
步骤100:接收从用户页面发送的JSON Schema配置;JSON Schema配置是用户页面从页面设计器中获取的;JSON Schema配置包括用于描述用户页面的多个组件节点的联动配置信息,且不同组件节点的联动配置信息对应相同的数据结构规范。
示例性地,实现联动功能的方法可以应用于Formily框架的低代码核心类中;这里,Formily框架除了包括低代码核心类外,还包括用户页面以及页面设计器;其中,用户页面可以是万维网(World Wide Web,WEB)应用对应的WEB界面,也可以是其他人机交互界面;页面设计器是一个由低代码开发的页面设计平台,它最终可以输出一份符合JSON Schema协议的JSON数据。
本申请实施例中,低代码核心类接收从用户页面发送的JSON Schema配置;示例性地,实现过程可以如下,当用户页面打开后,通过用户页面向页面设计器发送获取JSONSchema配置的数据请求,当页面设计器接收到该数据请求后,向用户页面返回JSON Schema配置,并将该JSON Schema配置发送给低代码核心类,此时,低代码核心类接收到从用户页面发送的JSON Schema配置。
示例性地,JSON Schema配置可以通过一个JSON格式的树形数据结构进行表示,其中,树形数据结构是由描述用户页面的多个组件节点构成的;这里,组件节点表示用于描述用户页面内对应组件的数据信息的节点。示例性地,组件节点可以是一种视图加交互逻辑的抽象数据类型,可以包含超文本标记语言(hypertext markup language,html)模板、层叠样式表(cascading style sheets,css)样式和js(javascript)逻辑代码片段。
步骤101:通过遍历JSON Schema配置,得到多个组件节点中每个组件节点的联动配置信息;按照数据结构规范对每个组件节点的联动配置信息进行联动解析处理,得到联动解析处理后的联动功能代码。
示例性地,在低代码核心类接收到从用户页面发送的JSON Schema配置后,首先,通过遍历JSON Schema配置得到每个组件节点的联动配置信息;然后,将每个组件节点的联动配置信息统一保存至联动配置数组中;这样,联动配置数组中保存了来源于JSON Schema配置中的所有组件节点的联动配置信息;这里,联动配置数组位于低代码核心类的缓存中。
示例性地,在将每个组件节点的联动配置信息保存至联动配置数组的过程中,可以按照[{"key","数据结构规范"}]这种格式对联动配置信息进行保存;这里的"key"代表组件节点身份标识号码(identity document,id),通过将组件节点id保存至联动配置数组,便于后续在联动解析处理时对各个组件节点的查找。
这里,在低代码核心类需要对每个组件节点的联动配置信息进行联动解析处理之前,首先获取联动配置数组,再从联动配置数组中获取每个组件节点的联动配置信息,再按照图1B所示的数据结构规范对每个组件节点的联动配置信息进行联动解析处理;这里,联动解析处理相当于对联动配置信息中各个协议字段对应的代码块进行声明,在进行联动解析处理后,可以自动化生成后续用于实现每个组件节点的联动功能所需要的功能代码。可见,在此过程中,无需开发人员手写与联动功能相关的代码块,因而,可以解决联动功能在迭代开发中成本高的问题。
步骤102:利用联动解析处理后的联动功能代码,实现对每个组件节点的联动功能。
示例性地,组件节点可以包括多份联动配置信息,其中,多份联动配置信息中的每份联动配置信息可以包括组件节点的最终设置结果和联动条件;其中,联动条件可以包括条件节点路径和条件组件节点类型。
在一些实施例中,参照图1B,联动解析处理后的联动功能代码,用于执行以下步骤:
步骤1021:在当前组件节点包括的当前一份联动配置信息中,按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点;
步骤1022:判断查找出的组件节点是否满足联动条件;
步骤1023:在确定查找出的组件节点满足联动条件时,确定当前一份联动配置信息满足联动条件,将当前一份联动配置信息中的最终设置结果设置到当前组件节点的结果上。
这里,当前组件节点表示多个组件节点中当前需要联动解析处理的组件节点;其余组件节点表示多个组件节点中除当前组件节点以外的组件节点。
在一些实施例中,按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点,可以包括:从其余组件节点中确定与联动条件中的条件节点路径对应的部分组件节点;从部分组件节点中查找出与联动条件中的条件组件节点类型相同的组件节点。
示例性地,在确定当前组件节点的联动条件的情况下,首先根据当前组件节点的联动条件中的条件节点路径,从其余组件节点中查找出在该条件节点路径下的部分组件节点;接着通过对部分组件节点中每个组件节点进行遍历,查找出与联动条件中的条件组件节点类型相同的组件节点。
本申请实施例中,在当前组件节点包括的当前一份联动配置信息中,若按照联动条件中的条件节点路径和条件组件节点类型,查找到组件节点后,需要进一步判断查找出的组件节点是否满足联动条件。
示例性地,若确定查找出的组件节点满足联动条件,则说明当前一份联动配置信息满足联动条件,此时,可以将当前一份联动配置信息中的最终设置结果设置到当前组件节点的结果上;反之,若确定查找出的组件节点不满足联动条件,则说明当前一份联动配置信息不满足联动条件,即当前组件节点与这一份联动配置信息不匹配,此时,继续确定在当前组件节点包括的下一份联动配置信息中,查找出的组件节点是否满足联动条件,直至找到与当前组件节点匹配的联动配置信息;如果在当前组件节点包括的多份联动配置信息中,查找不到与当前组件节点匹配的联动配置信息,则说明当前组件节点不需要触发联动。
在一些实施例中,联动条件还可以包括条件节点值和条件节点值类型,判断查找出的组件节点是否满足联动条件,可以包括:按照联动条件中的条件节点值类型对查找出的组件节点的条件节点值进行类型转换,得到类型转换后的条件值;在类型转换后的条件值与联动条件中的条件节点值相同的情况下,确定查找出的组件节点满足联动条件;在类型转换后的条件值与联动条件中的条件节点值不相同的情况下,确定查找出的组件节点不满足联动条件。
这里,若确定查找出的组件节点满足联动条件,则说明当前组件节点包括的当前一份联动配置信息满足联动条件;反之,若确定查找出的组件节点不满足联动条件,则说明当前组件节点包括的当前一份联动配置信息不满足联动条件。
示例性地,JSON Schema配置中各个组件节点的联动配置信息对应相同的数据结构规范;这里,数据结构规范是本申请新定义的一个的通用化协议规范;图1C是本申请实施例中的一种数据结构规范的示意图,如图1C所示,可通过{values,condition{key,values,formType,valueType},errorMsg}这种形式对数据结构规范"includeAttributeValues"进行表示;下面,对该数据结构规范中的各个属性(即协议字段)进行说明。
这里,values属性代表需要联动解析处理的组件节点的最终设置结果;需要说明的是,对于不同类型的组件节点,其对应的values值的种类可以不同,例如,在组件节点为Input组件时,values值代表联动的条件种类;在组件节点为Select组件时,values值代表选项范围;condition属性定义了对组件节点进行联动判断时所需的条件,设置condition属性中各项判断条件的目的是便于低代码核心类进行联动条件判断的代码解析。
进一步地,condition.key(condition属性中的key)代表需要被观察的条件节点路径,具体如何观察由后续解析得到的联动功能代码实现。condition.values(condition属性中的values)代表条件节点值,定义了判断条件的具体值。condition.formType(condition属性中的formType)代表条件组件节点类型,每种组件节点都封装了各自的联动解析方法。condition.valueType(condition属性中的valueType)定义了条件节点数据类型;这里,condition.values和condition.valueType是成对出现的;errorMsg代表错误信息。最终,在进行联动条件判断的过程中,condition.formType所对应的组件节点会根据condition.valueType先进行类型转换,之后,再对condition.formType所对应的组件节点进行条件节点值的判断,以确定需要联动解析处理的当前组件节点是否满足联动条件。
示例性地,数据结构规范包括的各项属性是经过实际业务梳理出来的,它们描述了与组件节点联动相关的关键数据信息,本申请实施例可以利用这同一种数据结构规范对各个组件节点的联动配置信息进行相应的联动解析处理,可以解决联动开发在通用化上具有限制性的问题。
示例性地,在根据当前组件节点包括的当前一份联动配置信息,判断查找出的组件节点是否满足联动条件的过程中,可以根据查找出的组件节点中每个组件节点的组件节点id进行遍历,逐一判断每个组件节点进行类型转换后的条件节点值与当前组件节点的联动条件中的条件节点值是否相同,如果确定相同,则说明查找出的组件节点满足联动条件,即,当前一份联动配置信息满足联动条件,此时,可以将当前一份联动配置信息中的最终设置结果设置到当前组件节点的结果上。反之,如果确定不相同,则说明查找出的组件节点不满足联动条件,即,当前一份联动配置信息不满足联动条件,此时,继续判断当前组件节点包括的下一份联动配置信息是否满足联动条件,直至找到与当前组件节点匹配的联动配置信息;如果在当前组件节点包括的多份联动配置信息中,查找不到与当前组件节点匹配的联动配置信息,则说明当前组件节点不需要触发联动。
可以看出,在本申请实施例中,可以从当前组件节点包括的多份联动配置信息,找到与当前组件节点匹配的联动配置信息,而该联动配置信息可以用于后续实现对当前组件节点的联动。
在一些实施例中,利用联动解析处理后的联动功能代码,实现对每个组件节点的联动功能,可以包括:将联动解析处理后的联动功能代码注册到Formily框架的联动功能api中;在确定用户页面对每个组件节点触发联动时,通过联动功能api调用联动功能代码,实现对每个组件节点的联动功能。
示例性地,以当前组件节点为例,在低代码核心类根据上述步骤确定与当前组件节点实现联动的各个组件节点后,可以得到对应的联动功能代码,将该联动功能代码注册到Formily框架的联动功能api中,这里,联动功能api位于用户界面中;后续,当用户通过用户页面对当前组件节点触发联动时,可以根据联动功能api调用对应的联动功能代码,通过执行该联动功能代码,可以实现对当前组件节点的联动功能。
可以看出,本申请实施例中,通过将联动功能代码注册到Formily框架的联动功能api,可以方便后续触发组件节点联动时,快速执行与该组件节点相关的联动功能代码,确保执行联动操作的有效性。
本申请实施例提出了一种实现联动功能的方法、装置、电子设备和计算机存储介质,应用于Formily框架的低代码核心类中,方法包括:接收从用户页面发送的JSON Schema配置;JSON Schema配置是用户页面从页面设计器中获取的;JSON Schema配置包括用于描述用户页面的多个组件节点的联动配置信息,且不同组件节点的联动配置信息对应相同的数据结构规范;通过遍历JSON Schema配置,得到多个组件节点中每个组件节点的联动配置信息;按照数据结构规范对每个组件节点的联动配置信息进行联动解析处理,得到联动解析处理后的联动功能代码;利用联动解析处理后的联动功能代码,实现对每个组件节点的联动功能。可以看出,在本申请实施例中,由于JSON Schema配置中包括的每个组件节点均对应相同的数据结构规范,因而在需要对JSON Schema配置中包括的每个组件节点进行联动开发时,可以基于一个通用化的数据结构规范对这些组件节点进行联动解析处理,这样,可以解决联动开发在通用化上具有限制性的问题;进一步地,在按照数据结构规范对这些组件节点进行联动解析处理时,通过梳理数据结构规范中各个协议字段的规则,可以自动化生成用于实现联动功能的功能代码,如此,无需开发人员每次手写与复杂联动功能相关的代码块,解决联动功能在迭代开发中成本高的问题。
在一些实施例中,上述方法还可以包括:按照数据结构规范对每个组件节点的联动配置信息进行校验解析处理,得到校验解析处理后的校验功能代码;利用校验解析处理后的校验功能代码,实现对每个组件节点的校验功能。
这里,进行校验解析处理的数据结构规范与上述进行联动解析处理的数据结构规范相同,此处不再赘述。
示例性地,按照与联动解析处理相同的数据结构规范对每个组件节点的联动配置信息进行校验解析处理,可以提高组件节点校验结果的准确性。
在一些实施例中,联动解析处理后的校验功能代码,用于执行以下步骤:在当前组件节点包括的当前一份联动配置信息中,按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点;当前组件节点表示多个组件节点中当前需要联动解析处理的组件节点,其余组件节点表示多个组件节点中除当前组件节点以外的组件节点;判断查找出的组件节点是否满足联动条件;
在确定查找出的组件节点满足联动条件时,确定当前一份联动配置信息满足联动条件,继续判断当前组件节点的结果是否通过校验,得到校验结果;在根据校验结果确定当前组件节点通过校验后,继续判断当前组件节点的下一组件节点是否通过校验,直至需要联动解析处理的组件节点全部判断完成;或者,在确定查找出的组件节点不满足联动条件时,确定当前组件节点通过校验;继续判断当前组件节点的下一组件节点是否通过校验,直至需要联动解析处理的组件节点全部判断完成。
示例性地,确定查找出的组件节点是否满足联动条件的实现方式已在上述实施例进行说明,此处不再赘述。
在一种实施方式中,如果确定查找出的组件节点满足联动条件,则继续判断当前组件节点是否通过校验;这里,通过校验说明当前组件节点的结果与当前一份联动配置信息中的最终设置结果相同;未通过校验则说明当前组件节点的结果与当前一份联动配置信息中的最终设置结果不相同。
示例性地,如果确定当前组件节点通过校验,继续判断当前组件节点的下一组件节点是否通过校验,直至完成对需要联动解析处理的所有组件节点的判断。
在另一种实施方式中,如果确定当前组件节点不满足联动条件,则无需进行校验判断,而是直接默认当前组件节点通过校验;接着,继续判断当前组件节点的下一组件节点是否满足联动条件,如果满足,则继续进行校验判断;如果不满足,则直接默认通过校验。
这里,在当前组件节点包括的当前一份联动配置信息中,只有当查找出的组件节点均通过校验时,才说明当前组件节点的校验功能通过;反之,则说明当前组件节点的校验功能失败。
可以看出,在确定出需要与当前组件节点联动的各个组件节点后,通过对这些组件节点进行进一步校验,可以确保实现组件节点联动功能的可靠性。
在一些实施例中,利用校验解析处理后的校验功能代码,实现对每个组件节点的校验功能,可以包括:将联动解析处理后的校验功能代码注册到低代码核心类的提交功能中;在确定用户页面进行数据恢复或提交操作时,通过执行校验功能代码,实现对每个组件节点的校验功能。
本申请实施中,以当前组件节点为例,在得到当前组件节点的校验功能代码后,将该校验功能代码注册到低代码核心类的提交功能中;之后,在用户通过用户页面进行数据恢复或提交操作时,通过执行该校验功能代码,可以实现对当前组件节点的校验功能。
可以看出,本申请实施例中,通过校验功能代码注册到低代码核心类的提交功能中,可以方便后续进行数据恢复或提交操作时,快速执行与该组件节点相关的校验功能代码,确保执行校验操作的有效性。
在一些实施例中,在执行校验功能代码后,上述方法还可以包括:根据当前组件节点的联动条件中的条件节点数据类型,对校验功能代码的输出数据进行类型转换。
示例性地,在执行校验功能代码后,可以根据当前组件节点的联动条件中的条件节点数据类型,对当前组件节点相关的校验功能代码的输出数据进行类型转换,得到校验功能代码的最终输出结果。
可以看出,通过对条件节点数据类型对输出数据进行转换,可以丰富JSON Schema协议数据类型,解决相关技术中有些数据类型无法正确通过字符串类型转换的问题。
为了能够更加体现本申请的目的,在本申请上述实施例的基础上,进行进一步的说明。
图2A为本申请实施例的一种实现联动校验功能的场景示意图,如图2A所示,该图中包括:用户页面、低代码核心类(LowcodeCore)和页面设计器;具体实现过程可以如下:
首先,用户页面向页面设计器发送获取JSON Schema配置的数据请求;当页面设计器接收到该数据请求后,向用户页面返回JSON Schema配置;用户页面在接收到JSONSchema配置后,将该JSON Schema配置发送给低代码核心类。
然后,低代码核心类通过遍历JSON Schema配置的树形数据结构,找出每一级节点树下各个组件节点的联动配置信息并保存到联动配置数组中;低代码核心类按照数据结构规范对联动配置数组中每个组件节点的联动配置信息进行联动和校验解析处理,自动化生成联动功能代码和校验功能代码。
最后,将联动功能代码注册到Formily框架的联动功能api中进行使用,并将校验功能代码注册到低代码核心类的提交(submit)功能中,当页面进行数据恢复或提交时会被执行。
图2B为本申请实施例的一种进行联动解析处理和校验解析处理的流程示意图,如图2B所示,该流程包括以下步骤:
步骤A1:获取联动配置数组。
示例性地,低代码核心类从自身缓存中获取联动配置数组,该联动配置数组中包括JSON Schema配置中所有组件节点的联动配置信息。
步骤A2:确定工作类型为联动类型。
示例性地,在低代码核心类获取联动配置数组后,会判断当前的工作类型;这里,工作类型包括联动类型和校验类型这两种。
步骤A3:根据数据结构规范进行联动解析处理。
示例性地,低代码核心类在确定当前的工作类型为联动类型后,根据数据结构规范对当前组件节点对应的联动配置数组中的多份联动配置信息进行联动解析处理。
步骤A4:通过遍历联动配置数组找到满足联动条件的联动配置信息。
示例性地,若通过遍历当前组件节点对应的联动配置数组中的每份联动配置信息,确定当前组件节点包括的当前一份联动配置信息满足联动条件,则说明根据当前一份联动配置信息查找出的组件节点中均满足联动条件;具体实现方式已在上述实施例进行说明,此处不再赘述。
步骤A5:将联动配置信息中的values值设置到当前组件节点上。
示例性地,values值对应上述当前一份联动配置信息中的最终设置结果;在通过遍历联动配置数组确定当前一份联动配置信息中的所有组件节点满足联动条件后,将当前这份联动配置信息中的values值(最终设置结果)设置到当前组件节点上;此时,针对当前组件节点的联动解析处理完成,得到联动解析处理后的联动功能代码。
步骤A2':确定工作类型为校验类型。
步骤A3':根据数据结构规范进行校验解析处理。
示例性地,低代码核心类在确定当前的工作类型为校验类型后,根据数据结构规范对当前组件节点对应的联动配置数组中的多份联动配置信息进行校验解析处理。
步骤A4':通过遍历联动配置数组找到满足联动条件的联动配置信息。
示例性地,具体实现方式已在上述实施例进行说明,此处不再赘述。
步骤A5':判断是否等于当前组件节点的结果。
示例性地,在满足联动条件的联动配置信息中,判断联动配置信息中的values值(最终设置结果)是否等于当前组件节点的结果;如果是,说明当前组件节点的校验功能通过,此时,返回校验成功;反之,说明当前组件节点的校验功能失败,此时,返回校验失败。
下面,结合具体的流程图对上述联动解析过程和校验解析过程进行说明;图2C为本申请实施例的另一种进行联动解析处理的流程示意图,如图2C所示,该流程包括以下步骤:
步骤B1:获取联动配置数组。
步骤B2:获取当前组件节点的当前一份联动配置信息。
示例性地,可以通过遍历方式,从联动配置数组中获取当前组件节点的当前一份联动配置信息。这里,当前组件节点表示描述当前用户页面的JSON Schema树形配置中,其中一个用户页面(User Interface,UI)组件的JSON描述。
步骤B3:判断当前组件节点是否发生变化。
示例性地,判断当前组件节点的当前一份联动配置信息是否发生变化;如果是,则继续执行以下步骤,此时,需要重新确定与当前组件节点联动的其他组件节点,如果否,则说明当前组件节点不需要重新联动。
步骤B4:按照联动条件中的条件节点路径确定部分组件节点。
示例性地,在当前组件节点的当前一份联动配置信息中,按照联动条件中的条件节点路径确定部分组件节点。
步骤B5:根据联动条件中的条件组件节点类型,获取查找到的组件节点的ComponentSchema组件实例。
示例性地,在确定部分组件节点后,根据联动条件中的条件组件节点类型,继续从部分组件节点中查找出与联动条件中的条件组件节点类型相同的组件节点;获取查找到的组件节点的ComponentSchema组件实例。
步骤B6:将联动条件中的条件节点值类型和条件节点值传入查找到的组件节点的ComponentSchema组件实例。
示例性地,在将联动条件中的条件节点值类型和条件节点值传入查找到的组件节点的ComponentSchema组件实例后,ComponentSchema组件实例会按照联动条件中的条件节点值类型对查找到的组件节点中每个组件节点的条件节点值进行类型转换,得到类型转换后的条件值;对类型转换后的条件值与联动条件中的条件节点值进行判断,确定查找到的组件节点是否均满足联动条件。
步骤B7:判断是否满足联动条件。如果是,执行步骤B8,反之,执行步骤B4,用于确定当前组件节点包括的下一份联动配置信息是否满足联动条件。
示例性地,判断查找到的组件节点是否满足联动条件,在确定查找到的组件节点对应的类型转换后的条件值与联动条件中的条件节点值相同的情况下,确定查找到的组件节点满足联动条件,即,当前一份联动配置信息满足联动条件;反之,则确定当前一份联动配置信息不满足联动条件。
步骤B8:获取当前组件节点的ComponentSchema组件实例,将当前一份联动配置信息中的values值传入当前组件节点的ComponentSchema组件实例进行设置。
示例性地,在确定当前一份联动配置信息满足联动条件的情况下,可以获取当前组件节点的ComponentSchema组件实例,将当前一份联动配置信息中的values值传入当前组件节点的ComponentSchema组件实例进行联动结果的设置,即,将当前一份联动配置信息中的values值(最终设置结果)设置到当前组件节点的ComponentSchema组件实例上。
示例性地,在开始执行生成的联动功能代码时,先从低代码核心类中取出包括所有组件节点的联动配置信息的联动配置数组relationConfigArr,示例性地,联动配置数组中的当前组件节点可以表示为:
'[{"key":"detail.identity","includeAttributeValues":[{"values":[{"regex":"\\S","error Remind":""}],"condition":[{"key":"detail.identityType","values":[{"label":"身份证","value":"0"}],"formType":"select","valueType":"2"}]}]}]';relationConfigArr.*.key代表当前组件节点id,而relationConfigArr.*.includeAttributeValues代表当前组件节点的联动配置信息。
然后遍历联动配置数组relationConfigArr;对relationConfigArr每一个组件节点按照数据结构规范进行联动解析处理。其中,当前组件节点的联动配置信息relationConfig如下:
({"includeAttributeValues":[{"values":[{"regex":"\\S","errorRemind":""}],"condition":[{"key":"detail.identityType","values":[{"label":"身份证","value":"0"}],"formType":"select","valueType":"2"}]}]})和Formily的数据源({detail:{identity,identityType}})进行解析说明。
在联动解析过程中,以配置relationConfig的条件(condition)节点作为联动判断条件,使用condition.key的值为"detail.identityType"作为依赖路径,然后调用Formily的API onFieldValueChange对condition.key路径为detail.identityType的数据监听并注册回调函数。在回调函数中,当detail.identityType发生变化时,从回调函数的形参中取出detail.identityType的结果。接着根据condition.formType组件类型获取到对应的ComponentSchema组件实例,将detail.identityType和condition.values判断条件的范围值传到ComponentSchema组件实例中并调用validate进行校验。如果condition条件校验通过,代表当前组件联动条件满足,否则不满足。接着使用Array.some对联动配置数组中的组件节点进行遍历校验解析,如果联动配置数组中有一项条件condition通过ComponentSchema组件实例的校验,就将联动结果includeAttributeValues.*.values设置到配置relationConfig.key这个对应组件上,relationConfig.key对应的组件内部会按照当前组件规则调用Formily API setFieldState将联动结果includeAttributeValues.*.values设置到正确的属性上。
图2D为本申请实施例的另一种进行校验解析处理的流程示意图,如图2D所示,该流程包括以下步骤:
步骤C1:获取联动配置数组。
步骤C2:获取需要联动解析处理的组件节点的联动配置信息。
示例性地,可以通过遍历方式,从联动配置数组中获取需要联动解析处理的所有组件节点的联动配置信息。
步骤C3:根据当前组件节点的联动配置信息进行校验。
这里,当前组件节点为需要联动解析处理的所有组件节点中的一个组件节点。
步骤C4:判断是否全部校验通过。
示例性地,判断需要联动解析处理的所有组件节点是否全部校验通过。如果是,依次执行步骤C12、步骤C13,反之,执行步骤C5。
步骤C5:根据联动条件中的条件组件节点类型,获取查找到的组件节点的ComponentSchema组件实例。
步骤C6:将当前组件节点的联动条件中的条件节点值类型和条件节点值传入查找到的组件节点的ComponentSchema组件实例。
示例性地,步骤C5至步骤C6与上述步骤B5至步骤B6的实现方式相同,此处不再赘述。
步骤C7:判断是否满足联动条件。如果是,执行步骤C8,反之,执行步骤C4,用于确定需要联动解析处理的组件节点是否全部校验通过,如果否,会按照下列步骤继续对当前组件节点的下一组件节点进行联动校验;此时,默认当前组件节点校验通过。
步骤C8:获取当前组件节点的ComponentSchema组件实例。
示例性地,在确定当前一份联动配置信息满足联动条件的情况下,可以获取当前组件节点的ComponentSchema组件实例,
步骤C9:将当前一份联动配置信息中的values值传入当前组件节点的ComponentSchema组件实例进行校验。
示例性地,将当前组件节点包括的当前一份联动配置信息中的values值传入当前组件节点的ComponentSchema组件实例后,通过比较当前组件节点的ComponentSchema组件实例的实际结果与当前一份联动配置信息中的values值进行校验。
步骤C10:判断校验是否通过。
示例性地,根据当前组件节点的ComponentSchema组件实例与当前一份联动配置信息中的values值的比较结果,判断当前组件节点的校验功能是否通过;如果是,执行步骤C4,反之执行步骤C11。
步骤C11:返回校验失败。
示例性地,在确定当前组件节点的校验功能未通过后,确定校验失败。
步骤C12:对输出数据进行类型转换处理。
示例性地,可以根据当前组件节点的联动条件中的条件节点数据类型,对当前组件节点相关的校验功能代码的输出数据进行类型转换,得到最终输出结果。
步骤C13:返回校验成功。
示例性地,在得到最终输出结果后,确定校验成功。
示例性地,在开始执行生成校验功能代码时,先从低代码核心类中取出包括所有组件节点的联动配置信息的联动配置数组relationConfigArr,示例性地,联动配置数组中的当前组件节点可以表示为:
'[{"key":"detail.identity","includeAttributeValues":[{"values":[{"regex":"\\S","error Remind":""}],"condition":[{"key":"detail.identityType","values":[{"label":"身份证","value":"0"}],"formType":"select","valueType":"2"}]}]}]'。relationConfigArr.*.key代表当前组件节点id,而relationConfigArr.*.includeAttributeValues代表当前组件节点的联动配置信息。
然后遍历联动配置数组relationConfigArr;对relationConfigArr每一个组件节点按照数据结构规范进行联动解析处理。其中,当前组件节点的联动配置信息relationConfig如下:
({"includeAttributeValues":[{"values":[{"regex":"\\S","errorRemind":""}],"condition":[{"key":"detail.identityType","values":[{"label":"身份证","value":"0"}],"formType":"select","valueType":"2"}]}]})和进行提交操作的结果数据源({detail:{identity,identityType}})进行解析说明。
在联动解析过程中,以配置relationConfig的condition节点作为联动判断条件,使用condition.key的值"detail.identityType"作为依赖路径从数据源中取出detail.identityType的值,接着根据condition.formType组件类型获取到对应的ComponentSchema组件实例,将detail.identityType和condition.values判断条件的范围值传到ComponentSchema组件实例中并调用validate进行校验。如果匹配成功则代表联动条件节点通过,否则继续遍历下一个联动配置。如果所有condition条件节点都没匹配成功,可以代表当前节点relationConfig.key通过校验。如果有条件节点匹配成功,根据relationConfig.key节点id获取到对应的ComponentSchema组件实例。接着通过配置relationConfig.key为"detail.identity"作为取值路径从数据源中取出校验值,将校验值和includeAttributeValues.*.values匹配结果范围传到ComponentSchema组件实例中进行校验,当校验值符合includeAttributeValues.*.values的结果范围才能校验通过,否则relationConfig.key的节点校验返回失败。接着使用Array.every对所有节点的校验配置数组relationConfigArr进行遍历校验解析,只有当所有节点都能通过上述联动配置includeAttributeValues的校验流程,校验功能代码的校验功能才确定通过,否则返回失败。校验功能通过后,接着需要进行输出数据的类型转换来得到最终数据data。转换的流程例如ComponentSchema组件实例有config属性代表配置信息,config.valueType代表输出数据类型。例如valueType为number类型时,需要将当前节点的输出数据进行number类型处理例如字符串的1会被更新成number类型的1。最终校验功能代码成功时,输出校验结果和输出数据如{status:true,data:{a1,a2,a3}}。
图3是本申请实施例的实现联动功能的装置的组成结构示意图,如图3所示,该装置包括接收模块300、得到模块301和联动模块302,其中,
接收模块300,用于接收从用户页面发送的JSON Schema配置;所述JSON Schema配置是所述用户页面从页面设计器中获取的;所述JSON Schema配置包括用于描述所述用户页面的多个组件节点的联动配置信息,且不同组件节点的联动配置信息对应相同的数据结构规范;
得到模块301,用于通过遍历所述JSON Schema配置,得到所述多个组件节点中每个组件节点的联动配置信息;按照所述数据结构规范对所述每个组件节点的联动配置信息进行联动解析处理,得到联动解析处理后的联动功能代码;
联动模块302,用于利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能。
在一些实施例中,所述组件节点包括多份联动配置信息,所述多份联动配置信息中的每份联动配置信息包括:组件节点的最终设置结果和联动条件;所述联动条件包括条件节点路径和条件组件节点类型;
所述联动解析处理后的联动功能代码,用于执行以下步骤:
在当前组件节点包括的当前一份联动配置信息中,按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点;所述当前组件节点表示所述多个组件节点中当前需要联动解析处理的组件节点,所述其余组件节点表示所述多个组件节点中除所述当前组件节点以外的组件节点;
判断查找出的组件节点是否满足联动条件;
在确定所述查找出的组件节点满足联动条件时,确定所述当前一份联动配置信息满足所述联动条件,将所述当前一份联动配置信息中的最终设置结果设置到所述当前组件节点的结果上。
在一些实施例中,所述联动条件还包括条件节点值和条件节点值类型,所述联动模块302,用于判断查找出的组件节点是否满足联动条件,包括:
按照所述联动条件中的条件节点值类型对所述查找出的组件节点的条件节点值进行类型转换,得到类型转换后的条件值;
在所述类型转换后的条件值与所述联动条件中的条件节点值相同的情况下,确定所述查找出的组件节点满足联动条件;
在所述类型转换后的条件值与所述联动条件中的条件节点值不相同的情况下,确定所述查找出的组件节点不满足联动条件。
在一些实施例中,所述联动模块302,用于利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能,包括:
将所述联动解析处理后的联动功能代码注册到所述Formily框架的联动功能应用程序接口api中;
在确定所述用户页面对所述每个组件节点触发联动时,通过所述联动功能api调用所述联动功能代码,实现对所述每个组件节点的联动功能。
在一些实施例中,所述装置还包括校验模块,所述校验模块,用于:
按照所述数据结构规范对所述每个组件节点的联动配置信息进行校验解析处理,得到校验解析处理后的校验功能代码;
利用所述校验解析处理后的校验功能代码,实现对所述每个组件节点的校验功能。
在一些实施例中,所述组件节点包括多份联动配置信息,所述多份联动配置信息中的每份联动配置信息包括:组件节点的最终设置结果和联动条件;所述联动条件包括条件节点路径和条件组件节点类型;
所述联动解析处理后的校验功能代码,用于执行以下步骤:
在当前组件节点包括的当前一份联动配置信息中,按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点;所述当前组件节点表示所述多个组件节点中当前需要联动解析处理的组件节点,所述其余组件节点表示所述多个组件节点中除所述当前组件节点以外的组件节点;
判断查找出的组件节点是否满足联动条件;
在确定所述查找出的组件节点满足联动条件时,确定所述当前一份联动配置信息满足所述联动条件,继续判断所述当前组件节点的结果是否通过校验,得到校验结果;在根据所述校验结果确定所述当前组件节点通过校验后,继续判断所述当前组件节点的下一组件节点是否通过校验,直至需要联动解析处理的组件节点全部判断完成;或者,
在确定所述查找出的组件节点不满足联动条件时,确定所述当前组件节点通过校验;继续判断所当前组件节点的下一组件节点是否通过校验,直至需要联动解析处理的组件节点全部判断完成。
在一些实施例中,所述校验模块,用于按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点,包括:
从所述其余组件节点中确定与所述联动条件中的条件节点路径对应的部分组件节点;
从所述部分组件节点中查找出与所述联动条件中的条件组件节点类型相同的组件节点。
在一些实施例中,所述校验模块,用于利用所述校验解析处理后的校验功能代码,实现对所述每个组件节点的校验功能,包括:
将所述联动解析处理后的校验功能代码注册到所述低代码核心类的提交功能中;
在确定所述用户页面进行数据恢复或提交操作时,通过执行所述校验功能代码,实现对所述每个组件节点的校验功能。
在一些实施例中,在执行所述校验功能代码后,所述校验模块,还用于:
根据所述当前组件节点的联动条件中的条件节点数据类型,对所述校验功能代码的输出数据进行类型转换。
在实际应用中,上述接收模块300、得到模块301、联动模块302和校验模块均可以由位于电子设备中的处理器实现,该处理器可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
具体来讲,本实施例中的一种实现联动功能的方法对应的计算机程序指令可以被存储在光盘、硬盘、U盘等存储介质上,当存储介质中的与一种实现联动功能的方法对应的计算机程序指令被一电子设备读取或被执行时,实现前述实施例的任意一种实现联动功能的方法。
基于前述实施例相同的技术构思,参见图4,其示出了本申请实施例提供的电子设备400,可以包括:存储器401和处理器402;其中,
存储器401,用于存储计算机程序和数据;
处理器402,用于执行存储器中存储的计算机程序,以实现前述实施例的任意一种实现联动功能的方法。
在实际应用中,上述存储器401可以是易失性存储器(volatile memory),例如RAM;或者非易失性存储器(non-volatile memory),例如ROM、快闪存储器(flash memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器402提供指令和数据。
上述处理器402可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的实现联动功能的设备,用于实现上述处理器功能的电子器件还可以为其它,本申请实施例不作具体限定。
在一些实施例中,本申请实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本申请所提供的各方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (12)
1.一种实现联动功能的方法,其特征在于,应用于Formily框架的低代码核心类中,所述方法包括:
接收从用户页面发送的JSON Schema配置;所述JSON Schema配置是所述用户页面从页面设计器中获取的;所述JSON Schema配置包括用于描述所述用户页面的多个组件节点的联动配置信息,且不同组件节点的联动配置信息对应相同的数据结构规范;
通过遍历所述JSON Schema配置,得到所述多个组件节点中每个组件节点的联动配置信息;按照所述数据结构规范对所述每个组件节点的联动配置信息进行联动解析处理,得到联动解析处理后的联动功能代码;
利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能。
2.根据权利要求1所述的方法,其特征在于,所述组件节点包括多份联动配置信息,所述多份联动配置信息中的每份联动配置信息包括:组件节点的最终设置结果和联动条件;所述联动条件包括条件节点路径和条件组件节点类型;
所述联动解析处理后的联动功能代码,用于执行以下步骤:
在当前组件节点包括的当前一份联动配置信息中,按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点;所述当前组件节点表示所述多个组件节点中当前需要联动解析处理的组件节点,所述其余组件节点表示所述多个组件节点中除所述当前组件节点以外的组件节点;
判断查找出的组件节点中是否满足联动条件;
在确定所述查找出的组件节点满足联动条件时,确定所述当前一份联动配置信息满足所述联动条件,将所述当前一份联动配置信息中的最终设置结果设置到所述当前组件节点的结果上。
3.根据权利要求2所述的方法,其特征在于,所述联动条件还包括条件节点值和条件节点值类型,所述判断查找出的组件节点是否满足联动条件,包括:
按照所述联动条件中的条件节点值类型对所述查找出的组件节点的条件节点值进行类型转换,得到类型转换后的条件值;
在所述类型转换后的条件值与所述联动条件中的条件节点值相同的情况下,确定所述查找出的组件节点满足联动条件;
在所述类型转换后的条件值与所述联动条件中的条件节点值不相同的情况下,确定所述查找出的组件节点不满足联动条件。
4.根据权利要求1所述的方法,其特征在于,所述利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能,包括:
将所述联动解析处理后的联动功能代码注册到所述Formily框架的联动功能应用程序接口api中;
在确定所述用户页面对所述每个组件节点触发联动时,通过所述联动功能api调用所述联动功能代码,实现对所述每个组件节点的联动功能。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按照所述数据结构规范对所述每个组件节点的联动配置信息进行校验解析处理,得到校验解析处理后的校验功能代码;
利用所述校验解析处理后的校验功能代码,实现对所述每个组件节点的校验功能。
6.根据权利要求5所述的方法,其特征在于,所述组件节点包括多份联动配置信息,所述多份联动配置信息中的每份联动配置信息包括:组件节点的最终设置结果和联动条件;所述联动条件包括条件节点路径和条件组件节点类型;
所述联动解析处理后的校验功能代码,用于执行以下步骤:
在当前组件节点包括的当前一份联动配置信息中,按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点;所述当前组件节点表示所述多个组件节点中当前需要联动解析处理的组件节点,所述其余组件节点表示所述多个组件节点中除所述当前组件节点以外的组件节点;
判断查找出的组件节点是否满足联动条件;
在确定所述查找出的组件节点满足联动条件时,确定所述当前一份联动配置信息满足所述联动条件,继续判断所述当前组件节点的结果是否通过校验,得到校验结果;在根据所述校验结果确定所述当前组件节点通过校验后,继续判断所述当前组件节点的下一组件节点是否通过校验,直至需要联动解析处理的组件节点全部判断完成;或者,
在确定所述查找出的组件节点不满足联动条件时,确定所述当前组件节点通过校验;继续判断所述当前组件节点的下一组件节点是否通过校验,直至需要联动解析处理的组件节点全部判断完成。
7.根据权利要求2或6所述的方法,其特征在于,所述按照联动条件中的条件节点路径和条件组件节点类型,从其余组件节点中查找出组件节点,包括:
从所述其余组件节点中确定与所述联动条件中的条件节点路径对应的部分组件节点;
从所述部分组件节点中查找出与所述联动条件中的条件组件节点类型相同的组件节点。
8.根据权利要求5所述的方法,其特征在于,所述利用所述校验解析处理后的校验功能代码,实现对所述每个组件节点的校验功能,包括:
将所述联动解析处理后的校验功能代码注册到所述低代码核心类的提交功能中;
在确定所述用户页面进行数据恢复或提交操作时,通过执行所述校验功能代码,实现对所述每个组件节点的校验功能。
9.根据权利要求8所述的方法,其特征在于,在执行所述校验功能代码后,所述方法还包括:
根据所述当前组件节点的联动条件中的条件节点数据类型,对所述校验功能代码的输出数据进行类型转换。
10.一种实现联动功能的装置,其特征在于,应用于Formily框架的低代码核心类中,所述装置包括:
接收模块,用于接收从用户页面发送的JSON Schema配置;所述JSON Schema配置是所述用户页面从页面设计器中获取的;所述JSON Schema配置包括用于描述所述用户页面的多个组件节点的联动配置信息,且不同组件节点的联动配置信息对应相同的数据结构规范;
得到模块,用于通过遍历所述JSON Schema配置,得到所述多个组件节点中每个组件节点的联动配置信息;按照所述数据结构规范对所述每个组件节点的联动配置信息进行联动解析处理,得到联动解析处理后的联动功能代码;
联动模块,用于利用所述联动解析处理后的联动功能代码,实现对所述每个组件节点的联动功能。
11.一种电子设备,其特征在于,所述设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至9任一项所述的方法。
12.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至9任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111552350.5A CN114385148A (zh) | 2021-12-17 | 2021-12-17 | 一种实现联动功能的方法、装置、设备和存储介质 |
PCT/CN2022/100726 WO2023109074A1 (zh) | 2021-12-17 | 2022-06-23 | 一种实现联动功能的方法、装置、设备、存储介质和程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111552350.5A CN114385148A (zh) | 2021-12-17 | 2021-12-17 | 一种实现联动功能的方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385148A true CN114385148A (zh) | 2022-04-22 |
Family
ID=81197507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111552350.5A Pending CN114385148A (zh) | 2021-12-17 | 2021-12-17 | 一种实现联动功能的方法、装置、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114385148A (zh) |
WO (1) | WO2023109074A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023109074A1 (zh) * | 2021-12-17 | 2023-06-22 | 深圳前海微众银行股份有限公司 | 一种实现联动功能的方法、装置、设备、存储介质和程序 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117472372B (zh) * | 2023-10-27 | 2024-04-09 | 北京真内控科技有限公司 | 一种响应式表单搭建方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10776083B2 (en) * | 2018-09-21 | 2020-09-15 | Salesforce.Com, Inc. | Application builder with connected components |
CN112487112B (zh) * | 2020-12-17 | 2024-09-20 | 江苏苏宁云计算有限公司 | 一种组件联动配置的方法、装置、计算机设备及存储介质 |
CN113094561B (zh) * | 2021-05-08 | 2024-03-19 | 中国工商银行股份有限公司 | 网页生成方法、网页生成装置、电子设备以及存储介质 |
CN114385148A (zh) * | 2021-12-17 | 2022-04-22 | 深圳前海微众银行股份有限公司 | 一种实现联动功能的方法、装置、设备和存储介质 |
-
2021
- 2021-12-17 CN CN202111552350.5A patent/CN114385148A/zh active Pending
-
2022
- 2022-06-23 WO PCT/CN2022/100726 patent/WO2023109074A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023109074A1 (zh) * | 2021-12-17 | 2023-06-22 | 深圳前海微众银行股份有限公司 | 一种实现联动功能的方法、装置、设备、存储介质和程序 |
Also Published As
Publication number | Publication date |
---|---|
WO2023109074A1 (zh) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Gao et al. | Checking smart contracts with structural code embedding | |
CN107704265B (zh) | 一种面向业务流可配置的规则生成方法 | |
CN107644323B (zh) | 一种面向业务流的智能审核系统 | |
EP3502896B1 (en) | Generation of an adapters configuration user interface using a data structure | |
KR101755365B1 (ko) | 레코드 포맷 정보의 관리 | |
US10684849B2 (en) | Automating generation of library suggestion engine models | |
US9483387B1 (en) | Tree comparison functionality for services | |
US11893385B2 (en) | Methods and systems for automated software natural language documentation | |
EP3674918B1 (en) | Column lineage and metadata propagation | |
US11314503B2 (en) | Software development documentation using machine learning | |
WO2023109074A1 (zh) | 一种实现联动功能的方法、装置、设备、存储介质和程序 | |
CN117632710A (zh) | 测试代码的生成方法、装置、设备及存储介质 | |
Zhu et al. | A neural network architecture for program understanding inspired by human behaviors | |
CN113703739B (zh) | 基于omiga引擎的跨语言融合计算方法、系统及终端 | |
CN117008920A (zh) | 引擎系统、请求处理方法、装置、计算机设备及存储介质 | |
CN113806647A (zh) | 识别开发框架的方法及相关设备 | |
CN116346609A (zh) | 基于go语言实现路由配置和参数绑定的方法 | |
Singh | Ajax asynchronous database refresh | |
Dyer et al. | Boa: An enabling language and infrastructure for ultra-large-scale msr studies | |
Agape et al. | P4fuzz: A compiler fuzzer for securing p4 programmable dataplanes | |
US11960560B1 (en) | Methods for analyzing recurring accessibility issues with dynamic web site behavior and devices thereof | |
US20240202458A1 (en) | Generating prompt recommendations for natural language processing tasks | |
US20240202466A1 (en) | Adapting prompts selected from prompt task collections | |
Maras et al. | Reverse engineering legacy Web applications with phpModeler | |
WO2024192401A2 (en) | Method and apparatus for api extractor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |