CN117850754A - 一种低代码支持多平台的表达式处理和执行的方法及*** - Google Patents
一种低代码支持多平台的表达式处理和执行的方法及*** Download PDFInfo
- Publication number
- CN117850754A CN117850754A CN202410068028.2A CN202410068028A CN117850754A CN 117850754 A CN117850754 A CN 117850754A CN 202410068028 A CN202410068028 A CN 202410068028A CN 117850754 A CN117850754 A CN 117850754A
- Authority
- CN
- China
- Prior art keywords
- expression
- scene
- abstract syntax
- syntax tree
- database
- 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
- 230000014509 gene expression Effects 0.000 title claims abstract description 118
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000012545 processing Methods 0.000 title claims abstract description 25
- 238000013461 design Methods 0.000 claims abstract description 30
- 239000012634 fragment Substances 0.000 claims abstract description 13
- 230000008569 process Effects 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 37
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 230000001419 dependent effect Effects 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010195 expression analysis Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及低代码技术领域,提供低代码支持多平台的表达式处理和执行的方法及***,所述方法包括:通过表达式编写业务逻辑,通过表达式解析器将表达式解析成抽象语法树;在一般性设计场景时,直接在执行环境中调用抽象语法树中元素对应的java类并基于逻辑流的上下文直接解释执行并获得结果值;在数据库查询场景时,抽象语法树数转换成对应数据库类型的SQL语句片段,并将SQL语句应用至生成代码中。本发明提供一套完整的适用于低代码设计平台的表达式编辑器,允许用户快速的编写逻辑,使用编写表达式的方式处理或者读取数据,且此表达式在逻辑流中处理一般性需求或者在数据库查询中的使用具有高度的一致性,同一个函数在识别环境下,做出合适的操作。
Description
技术领域
本发明涉及低代码技术领域,特别涉及低代码支持多平台的表达式处理和执行的方法及***。
背景技术
低代码平台是一种无需编码或通过少量代码就可以快速生成应用程序的开发平台。它允许开发人员使用易于理解的可视化工具来构建业务流程、逻辑和数据模型,并在必要时添加自己的代码。在低代码平台中我们使用逻辑流来让用户设计自己业务逻辑,逻辑流实现了常规编写代码所需控制流能力,但缺少对对象数据操作的能力,比如通过逻辑流查询出用户表的一条数据,现在想修改下这条数据的名称属性,或者读取出这条数据的年龄属性的值,暂时没有简易的普通人也能顺序操作的方式去处理。
因此需要本领域技术人员设计一种可以在图形化的业务逻辑设计界面中,实现精细化操纵各种数据,对业务数据的读取和修改,配合逻辑流实现大部分的用户业务操作场景。
发明内容
为了实现上述目的,本发明提供以下技术方案:
本发明提供一种低代码支持多平台的表达式处理和执行的方法,所述表达式处理和执行依托于低代码平台,所述方法包括:
通过表达式编写业务逻辑,通过表达式解析器将表达式解析成抽象语法树;
在一般性设计场景时,直接在执行环境中调用抽象语法树中元素对应的java类并基于逻辑流的上下文直接解释执行并获得结果值;每一类型的抽象语法树中的元素类型(对象)都存在对应的java类,每一个java类都存在一个执行方法,用于获取执行后的值,可以在逻辑流中直接获取表达式的计算结果;所述抽象语法树对象包括函数调用对象、常量对象、变量对象或操作符对象。
在数据库查询场景时,抽象语法树对象数转换成对应数据库类型的SQL语句片段,并将SQL语句应用至生成代码中。
进一步的,表达式编辑器基于开源项目monaco-editor增加了一个列表,列表内包含了表达式可使用的函数,可使用的各种参数变量值,同时支持用户编写的表达式的合法性校验,如果设计有误会提示错误的位置。
进一步的,所述表达式解析器将字符串形式的表达式切割,获取表达式中所有的元素,并将元素分类,分割好的元素从中缀表达式切换到后缀表达式,最后重新组装成带层次的java对象,即抽象语法树;
元素包括操作符、操作数、函数调用、左右括号、逗号中的至少两个,其中操作数又包括为常量和变量。
进一步的,所述一般性设计场景包括赋值节点时,参数的初始值时,打印节点时或循环节点时。
进一步的,所述数据库查询场景包括逻辑流使用了查询节点或SQL节点、用户基于实体表创建的管理页中的带分页的数据查询,导出功能。
进一步的,所述抽象语法树转换成对应数据库类型的SQL语句片段的具体过程为:
基于根据抽象语法树中每个元素的类型转换成对应的预定义的java对象类型,通过调用每种java对象类型定义的转换对应数据库版本SQL语法的方法将表达式转换成对应的SQL语句片段。
进一步的,支持表达式内的函数转换成的数据库的类型包括mysql,oracle,dm和SQL Server。
进一步的,所述表达式包括函数调用的用户设计的表达式字符串。
本发明还提供一种支持多平台的表达式处理和执行的***,所述***包括:
设计单元,利用表达式编写业务逻辑;
获取单元,用于获取设计单元中的表达式;
解析单元,用于将表达式解析成抽象语法树;
场景判断单元,用于判断表达式在逻辑流中所处的场景,所述场景包括一般性设计场景和数据库查询场景;
第一执行单元,用于调用抽象语法树中元素对应的java类并基于逻辑流的上下文直接解释执行并获得结果值;
转换单元,用于将表达式内的函数转换成对应数据库类型的SQL语句片段;
第二执行单元,用于将换成的SQL语句应用至生成代码中;
当场景判断单元判断为一般性设计场景时,直接执行第一执行单元;
当场景判断单元判断为数据库查询场景时,执行转换单元和第二执行单元。
进一步的,所述一般性设计场景包括赋值节点、参数的初始值,打印节点或循环节点;
数据库查询场景包括逻辑流使用了查询节点或SQL节点、用户基于实体表创建的管理页中的带分页的数据查询,导出功能。
所述表达式解析器将字符串形式的表达式切割,获取表达式中所有的元素,并将元素分类,分割好的元素从中缀表达式切换到后缀表达式,最后重新组装成带层次的java对象;元素包括操作符、操作数、函数调用、左右括号、逗号中的至少两个,其中操作数又包括为常量和变量。
本发明具有以下有益效果:
(1)本发明提供一套完整的适用于低代码设计平台的表达式编辑器,允许用户快速的编写逻辑,使用编写表达式的方式处理或者读取数据,且此表达式在逻辑流中处理一般性场景或者在数据库查询中的使用具有高度的一致性,同一个函数在识别环境下,做出合适的操作。
(2)本发明通过相对简易的表达式编写让低代码平台实现了低成本方式操作和处理数据的能力,提升了用户的设计效率,降低的低代码平台的使用门槛。并且没发明针对表达式在代码执行环境和数据库执行环境都做了统一的适配,提升了表达式在不同环境的行为的一致性和泛用性。
(3)本发明实现了用户在低代码平台通过低成本的方式快速实现自己的业务逻辑,尤其是实现对数据的操作能力。
(4)本发明可以在图形化的业务逻辑设计界面中,实现如何精细化操纵各种数据,实现业务数据的读取和修改,配合逻辑流实现大部分的用户业务操作场景。
附图说明
图1是本发明整体流程示意图。
图2是本发明处理数据库查询场景下的逻辑示意图。
图3是本方法处理逻辑流一般性场景的示意图。
图4是本发明中***的单元示意图。
具体实施方式
以下结合附图对本发明的具体实施方式做详细描述,应当指出的是,实施例只是对发明的具体阐述,不应视为对发明的限定,实施例的目的是为了让本领域技术人员更好地理解和再现本发明的技术方案,本发明的保护范围仍应当以权利要求书所限定的范围为准。
如图1所示,本发明提供一种低代码支持多平台的表达式处理和执行的方法,所述表达式处理和执行依托于低代码平台,所述方法包括:
通过表达式编写业务逻辑,通过表达式解析器将表达式解析成抽象语法树,具体过程为:所述表达式解析器将字符串形式的表达式切割,获取表达式中所有的元素,并将元素分类,分割好的元素从中缀表达式切换到后缀表达式,最后重新组装成带层次的java对象,即抽象语法树;
元素包括操作符、操作数、函数调用、左右括号、逗号中的至少两个,其中操作数又包括为常量和变量。
相对扁平形式的表达式(纯字符串),对于计算机而言是无法识别和处理的,通过本发明中的表达式编辑器将字符串形式的表达式解析成带层测结构的java对象,然后进行表达式的内容解析,转换成SQL语句,或者直接计算的功能。表达式解析后的元素都有特定的类型,比如常量,变量,某个函数调用,这些类型都有对应的java类,这些java类包含了一般性环境直接执行或者转换成SQL的能力。
如图2所示,在赋值节点,参数的初始值时,打印节点时或循环节点时等一般性设计场景时,直接在执行环境中调用抽象语法树中元素对应的java类并基于逻辑流的上下文直接解释执行并获得结果值;每一类型的抽象语法树元素类型(对象)都存在对应的java类,每一个java类都存在一个执行方法,用于获取执行后的值,可以在逻辑流中直接获取表达式的计算结果;所述抽象语法树对象包括函数调用对象、常量对象、变量对象或操作符对象。表达式中的每个元素类型,都存在一个java类与之对应,这个类能存储与该元素相关的元素的对象,比如表达式里的常量值,对应表达式解析器中的Constant类,常量被解析成抽象语法树后会变成Constant类实例;又比如表达式“1+1”,其中的加号被解析成Add函数,对应Add类。Add函数表示加法计算,需要两个参数,所以内部存储了所需的两个常量对象(数字1),此时在一般性场景中Add能直接计算出结果值2,在数据库场景一般执行输出“1+1”,因为数据库能直接执行加法计算。
如图3所示,在逻辑流使用了查询节点或SQL节点、用户基于实体表创建的管理页中的带分页的数据查询,导出功能等数据库查询场景时,抽象语法树对象转换成对应数据库类型的SQL语句片段,并将SQL语句应用至生成代码中,具体过程为:
基于根据抽象语法树中每个元素的类型转换成对应的预定义的java对象类型,通过调用每种java对象类型定义的转换对应数据库版本SQL语法的方法将表达式转换成对应的SQL语句片段。
在一些优选方案中,支持表达式内的函数转换成的数据库的类型包括mysql,oracle,dm和SQL Server。
在一些优选方案中,所述表达式包括函数调用的用户设计的表达式字符串。
如图4所示,本发明还提供一种支持多平台的表达式处理和执行的***,所述***包括:
设计单元,利用表达式编写业务逻辑;
获取单元,用于获取设计单元中的表达式;
解析单元,用于将表达式解析成抽象语法树;
场景判断单元,用于判断表达式在逻辑流中所处的场景,所述场景包括一般性设计场景和数据库查询场景;
第一执行单元,用于调用抽象语法树中元素对应的java类并基于逻辑流的上下文直接解释执行并获得结果值;
转换单元,用于将表达式内的函数转换成对应数据库类型的SQL语句片段;
第二执行单元,用于将换成的SQL语句应用至生成代码中;
当场景判断单元判断为一般性设计场景时,直接执行第一执行单元;
当场景判断单元判断为数据库查询场景时,执行转换单元和第二执行单元。
在一些优选方案中,所述一般性设计场景包括赋值节点、参数的初始值,打印节点或循环节点;
数据库查询场景包括逻辑流使用了查询节点或SQL节点、用户基于实体表创建的管理页中的带分页的数据查询,导出功能。
所述表达式解析器将字符串形式的表达式切割,获取表达式中所有的元素,并将元素分类,分割好的元素从中缀表达式切换到后缀表达式,最后重新组装成带层次的java对象;元素包括操作符、操作数、函数调用、左右括号、逗号中的至少两个,其中操作数又包括为常量和变量。
表达式编辑器基于开源项目monaco-editor增加了一个列表,列表内包含了表达式可使用的函数,可使用的各种参数变量值,同时支持用户编写的表达式的合法性校验,如果设计有误会提示错误的位置。
表达式编辑器的界面包括文本编辑区、快捷键按钮区、内嵌函数区、资源描述区等等,允许用户快速的编写逻辑,使用编写表达式的方式处理或者读取数据,且此表达式在逻辑流中处理一般性场景或者在数据库查询中的使用具有高度的一致性,同一个函数在识别环境下,做出合适的操作。
比如表达式里写了1+1,在一般性场景执行输出2,在数据库场景也应该输出2,更复杂的场景也是如此。在比如表达式里使用了CurrentDate()函数,这个函数是获取当前的日期,那么一般性场景下,需要调用java中对应的函数获取日期,在数据库场景下需要调用now()之类的函数获取日期,确保同一个函数在两个场景下的含义是一致的。
本发明还提供一种数据库处理***,
包括:
存储器,所述存储器存储有程序;
处理器,所述处理器执行所述程序时实现上述的支持多平台的表达式处理和执行的方法。
本发明提供一种存储介质,其上存储有程序,
所述程序被处理器执行时实现上述的支持多平台的表达式处理和执行的方法。
需注意的是,本发明中所未详细描述的技术特征,均可以通过任一现有技术实现。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
Claims (10)
1.一种低代码支持多平台的表达式处理和执行的方法,其特征在于,所述表达式处理和执行依托于低代码平台,所述方法包括:
通过表达式编写业务逻辑,通过表达式解析器将表达式解析成抽象语法树;
在一般性设计场景时,直接在执行环境中调用抽象语法树中元素对应的java类并基于逻辑流的上下文直接解释执行并获得结果值;
在数据库查询场景时,抽象语法树转换成对应数据库类型的SQL语句片段,并将SQL语句应用至生成代码中。
2.根据权利要求1所述的一种低代码支持多平台的表达式处理和执行的方法,其特征在于,所述表达式编辑器基于开源项目monaco-editor增加了一个列表,列表内包含了表达式可使用的函数和各种参数变量值。
3.根据权利要求1所述的一种低代码支持多平台的表达式处理和执行的方法,其特征在于,所述表达式解析器将字符串形式的表达式切割,获取表达式中所有的元素,并将元素分类,分割好的元素从中缀表达式切换到后缀表达式,最后重新组装成带层次的java对象,即抽象语法树;
元素包括操作符、操作数、函数调用、左右括号、逗号中的至少两个,其中操作数又包括为常量和变量。
4.根据权利要求1所述的一种低代码支持多平台的表达式处理和执行的方法,其特征在于,所述一般性设计场景包括赋值节点,参数的初始值,打印节点或循环节点。
5.根据权利要求1所述的一种低代码支持多平台的表达式处理和执行的方法,其特征在于,所述数据库查询场景包括逻辑流使用了查询节点或SQL节点、用户基于实体表创建的管理页中的带分页的数据查询,导出功能。
6.根据权利要求3所述的一种低代码支持多平台的表达式处理和执行的方法,其特征在于,所述抽象语法树转换成对应数据库类型的SQL语句片段的具体过程为:
基于抽象语法树中每个元素的类型转换成对应的预定义的java对象类型,通过调用每种java对象类型定义的转换对应数据库版本SQL语法的方法将表达式转换成对应的SQL语句片段。
7.根据权利要求1所述的一种低代码支持多平台的表达式处理和执行的方法,其特征在于,所述表达式包括函数调用的用户设计的表达式字符串。
8.一种低代码支持多平台的表达式处理和执行的***,其特征在于,所述***适用于权利要求1至7中任一所述的方法,所述***包括:
设计单元,利用表达式编写业务逻辑;
获取单元,用于获取设计单元中的表达式;
解析单元,用于将表达式解析成抽象语法树;
场景判断单元,用于判断表达式在逻辑流中所处的场景,所述场景包括一般性设计场景和数据库查询场景;
第一执行单元,用于调用抽象语法树中元素对应的java类并基于逻辑流的上下文直接解释执行并获得结果值;
转换单元,用于将表达式内的函数转换成对应数据库类型的SQL语句片段;
第二执行单元,用于将换成的SQL语句应用至生成代码中;
当场景判断单元判断为一般性设计场景时,直接执行第一执行单元;
当场景判断单元判断为数据库查询场景时,执行转换单元和第二执行单元。
9.根据权利要求8所述的一种支持多平台的表达式处理和执行***,其特征在于,所述一般性设计场景包括赋值节点、参数的初始值,打印节点或循环节点;
数据库查询场景包括逻辑流使用了查询节点或SQL节点、用户基于实体表创建的管理页中的带分页的数据查询,导出功能。
10.根据权利要求8所述的一种支持多平台的表达式处理和执行***,其特征在于,所述表达式解析器将字符串形式的表达式切割,获取表达式中所有的元素,并将元素分类,分割好的元素从中缀表达式切换到后缀表达式,最后重新组装成带层次的java对象;元素包括操作符、操作数、函数调用、左右括号、逗号中的至少两个,其中操作数又包括为常量和变量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410068028.2A CN117850754A (zh) | 2024-01-17 | 2024-01-17 | 一种低代码支持多平台的表达式处理和执行的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410068028.2A CN117850754A (zh) | 2024-01-17 | 2024-01-17 | 一种低代码支持多平台的表达式处理和执行的方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117850754A true CN117850754A (zh) | 2024-04-09 |
Family
ID=90530228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410068028.2A Pending CN117850754A (zh) | 2024-01-17 | 2024-01-17 | 一种低代码支持多平台的表达式处理和执行的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117850754A (zh) |
-
2024
- 2024-01-17 CN CN202410068028.2A patent/CN117850754A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6449620B1 (en) | Method and apparatus for generating information pages using semi-structured data stored in a structured manner | |
US6581062B1 (en) | Method and apparatus for storing semi-structured data in a structured manner | |
CN110955410B (zh) | 一种代码自动生成方法、装置、设备及介质 | |
CN110705237B (zh) | 文档的自动生成方法、数据处理设备及存储介质 | |
CN113032362A (zh) | 数据血缘分析方法、装置、电子设备和存储介质 | |
CN111249736B (zh) | 代码处理方法及装置 | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
CN112416787A (zh) | 基于java的项目源码扫描分析方法、***及存储介质 | |
CN111367524B (zh) | 枚举类型设计方法及装置 | |
CN111626028A (zh) | 基于函数解析的报表生成方法、装置、设备及计算机介质 | |
CN115202626A (zh) | 一种支持多技术栈组件的低代码前端开发方法 | |
CN113901083A (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
CN111124380A (zh) | 一种前端代码生成方法 | |
US7657869B2 (en) | Integration of external tools into an existing design environment | |
CN117850754A (zh) | 一种低代码支持多平台的表达式处理和执行的方法及*** | |
CN115033249A (zh) | 文件编译方法以及装置 | |
CN114089980A (zh) | 编程处理方法、装置、解释器及非易失性存储介质 | |
CN112685435A (zh) | 一种基于Vue和Mybatis的表格查询方法及*** | |
CN114756554B (zh) | 一种基于MyBatis框架的数据查询处理方法 | |
CN112799638B (zh) | 无侵入式快速开发方法、平台、终端及存储介质 | |
CN117193781B (zh) | 一种面向simscript语言的抽象语法树构建方法和装置 | |
CN110968634B (zh) | 大数据场景下基于xml描述实现利用可编程函数式进行etl转换处理的方法 | |
CN116756184B (zh) | 数据库实例处理方法、装置、设备、存储介质及程序产品 | |
CN114385664A (zh) | 一种单体项目微服务的拆分方法、***、装置及存储介质 | |
CN117473957A (zh) | 一种可支持多语言文本解析的装置及其方法 |
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 |