CN116679941A - 一种基于Java的低代码公式引擎方法 - Google Patents
一种基于Java的低代码公式引擎方法 Download PDFInfo
- Publication number
- CN116679941A CN116679941A CN202310777020.9A CN202310777020A CN116679941A CN 116679941 A CN116679941 A CN 116679941A CN 202310777020 A CN202310777020 A CN 202310777020A CN 116679941 A CN116679941 A CN 116679941A
- Authority
- CN
- China
- Prior art keywords
- formula
- function
- platform
- java
- execution
- 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 30
- 230000006870 function Effects 0.000 claims abstract description 60
- IWEDIXLBFLAXBO-UHFFFAOYSA-N dicamba Chemical compound COC1=C(Cl)C=CC(Cl)=C1C(O)=O IWEDIXLBFLAXBO-UHFFFAOYSA-N 0.000 claims abstract description 9
- 238000010195 expression analysis Methods 0.000 claims abstract description 5
- 238000009472 formulation Methods 0.000 claims description 10
- 239000000203 mixture Substances 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 abstract description 9
- 238000012545 processing Methods 0.000 abstract description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及数据处理技术领域,具体为一种基于Java的低代码公式引擎方法,包括用户根据需要在平台内选择一个或多个函数进行组合、嵌套,并选择表单字段作为公式入参,配置形成公式并保存到平台中;平台的预埋节点获取用户保存的公式,并将公式输入到表达式解析框架Aviator的执行器内进行编译解析为可执行的表达式;平台的预埋节点获取用户提交的数据,将数据代入可执行的表达式内执行,并将执行的结果反馈给执行器的调用方,本发明中提出了基于公式化函数实现低代码平台复杂逻辑的方法,这种方法不仅可以提高开发效率,还可以降低开发成本和复杂性,通过引入插件化架构和动态化执行机制,实现低代码平台的可定制性和扩展性,从而适用于更多应用场景。
Description
技术领域
本发明涉及数据处理技术领域,具体为一种基于Java的低代码公式引擎方法。
背景技术
Java是一种广泛用于构建应用程序和系统的计算机编程语言。它被设计为一种跨平台语言,支持面向对象编程范式,并且具有广泛的工具和库,使其适用于多种不同的应用程序场景。
随着信息技术的发展,越来越多的企业希望通过数字化转型来提升业务效率和创新能力。低代码平台是近年来应运而生的一种解决方案,它可以帮助企业快速构建业务应用程序,降低开发成本和风险,并提供更高的可靠性和可维护性,对于外行人员操作比较友好。作为常年流行于企业级应用的开发语言,Java自然而然成为各个低代码平台的技术选型。
现有的低代码平台的自动化程度不够,需要人工实现复杂逻辑和业务规则,并且平台的扩展性和可定制性不够,无法满足不同企业的需求,同时平台的性能和响应时间受到限制,无法支持高并发和大数据量的业务场景。为此,我们提出了一种基于Java的低代码公式引擎方法投入使用,以解决上述问题。
发明内容
本发明的目的在于提供一种基于Java的低代码公式引擎实现低代码平台复杂逻辑的方法,可以降低开发成本和提高开发效率,快速构建出符合需求的复杂逻辑功能,并简化维护流程。
为实现上述目的,本发明提供如下技术方案:一种基于Java的低代码公式引擎方法,包括以下步骤:
S1:用户根据需要在平台内选择一个或多个函数进行组合、嵌套,并选择表单字段作为公式入参,配置形成公式并保存到平台中;
S2:平台的预埋节点获取用户保存的公式,并将公式输入到表达式解析框架Aviator的执行器内进行编译解析为可执行的表达式;
S3:用户向平台内输入数据;
S4:平台的预埋节点获取用户提交的数据,将数据代入可执行的表达式内执行,并将执行的结果反馈给执行器的调用方。
优选的,所述步骤S1中的公式入参值也可以为手填值。
优选的,所述步骤S2中解析框架Aviator的编译过程具体为:将公式里的一个个函数定义识别出来,并在函数库中查找是否存在,如果存在,则将公式编译为可执行的表达式,如果不存在,终止执行。
优选的,所述步骤S4中的执行顺序为:根据函数在公式中的位置,从左到右,由里到外逐步执行,如果不存在终止执行。
优选的,所述步骤S4中返回的数据可以由解析引擎递归处理,作为外层函数的入参进行处理,一层层传递,直到最后一个函数执行完毕。
优选的,所述步骤S4的执行过程具体为:解析引擎会找出函数库中对应的函数对象,将函数中的参数定义通过同名映射成实际的数据,传递到函数对象的实现方法中。
与现有技术相比,本发明的有益效果为:
本发明中提出了基于公式化函数实现低代码平台复杂逻辑的方法,这种方法不仅可以提高开发效率,还可以降低开发成本和复杂性,通过引入插件化架构和动态化执行机制,实现低代码平台的可定制性和扩展性,从而适用于更多应用场景。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的公式配置示意图;
图2为本发明的公式引擎解析流程图;
图3为本发明的公式引擎执行流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
请参阅图1-3,本发明提供的技术方案为:
一种基于Java的低代码公式引擎方法,包括以下步骤:
S1:用户根据需要在平台内选择一个或多个函数进行组合、嵌套,并选择表单字段作为公式入参,配置形成公式并保存到平台中;
S2:平台的预埋节点获取用户保存的公式,并将公式输入到表达式解析框架Aviator的执行器内进行编译解析为可执行的表达式;
S3:用户向平台内输入数据;
S4:平台的预埋节点获取用户提交的数据,将数据代入可执行的表达式内执行,并将执行的结果反馈给执行器的调用方。
具体的,所述步骤S1中的公式入参值也可以为手填值。
具体的,所述步骤S2中解析框架Aviator的编译过程具体为:将公式里的一个个函数定义识别出来,并在函数库中查找是否存在,如果存在,则将公式编译为可执行的表达式,如果不存在,终止执行。
具体的,所述步骤S4中的执行顺序为:根据函数在公式中的位置,从左到右,由里到外逐步执行,如果不存在终止执行。
具体的,所述步骤S4中返回的数据可以由解析引擎递归处理,作为外层函数的入参进行处理,一层层传递,直到最后一个函数执行完毕。
具体的,所述步骤S4的执行过程具体为:解析引擎会找出函数库中对应的函数对象,将函数中的参数定义通过同名映射成实际的数据,传递到函数对象的实现方法中。
参照图1-3所示,本发明的实施例一为:
一种基于Java的低代码公式引擎方法,包括以下步骤:
S1:用户根据需要在平台内选择一个或多个函数进行组合、嵌套,并选择表单字段作为公式入参,配置形成公式并保存到平台中;
S2:平台的预埋节点获取用户保存的公式,并将公式输入到表达式解析框架Aviator的执行器内进行编译解析为可执行的表达式;
本实施例中,步骤S2中解析框架Aviator的编译过程具体为:将公式里的一个个函数定义识别出来,并在函数库中查找是否存在,如果存在,则将公式编译为可执行的表达式,如果不存在,终止执行;
S3:用户向平台内输入数据;
S4:平台的预埋节点获取用户提交的数据,将数据代入可执行的表达式内执行,并将执行的结果反馈给执行器的调用方;
本实施例中,步骤S4的执行过程具体为:解析引擎会找出函数库中对应的函数对象,将函数中的参数定义通过同名映射成实际的数据,传递到函数对象的实现方法中,且步骤S4中的执行顺序为:根据函数在公式中的位置,从左到右,由里到外逐步执行,如果不存在终止执行。
本实施例中,所述步骤S1中的公式入参值也可以为手填值。
本实施例中,所述步骤S4中返回的数据可以由解析引擎递归处理,作为外层函数的入参进行处理,一层层传递,直到最后一个函数执行完毕。
本实施例以根据身份证号获取出生日期的例子来进一步说明本技术方案:
其中假设有身份证号的数据为:350200202306200631,有公式:IF(EQ(LEN(身份证号),18),CONCATENATE(MID(身份证号,7,4),“-”,MID(身份证号,11,2),“-”MID(身份证号,13,2)),“”)
执行步骤则是:
执行LEN(身份证号),代入身份证号的值,得到结果18;
执行EQ(18,18),得到结果true
执行MID(身份证号,7,4),得到结果“2023”
执行MID(身份证号,11,2),得到结果“06”
执行MID(身份证号,13,2),得到结果“20”
执行CONCATENATE(“2023”,“-”,“06”,“-”,“20”),得到结果“2023-06-20”;
最后执行IF(true,“2023-06-20”,“”),得到结果“2023-06-20”。
其中,其中LEN为字符长度计算函数,EQ为逻辑相等判断函数,MID函数可以获取文本指定位置指定长度的字符,CONCATENATE函数可以拼接字符,IF函数则是逻辑判断函数——IF(逻辑表达式,为true时返回的值,为false时返回的值)。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行变型,本发明的范围由所附权利要求及其等同物限定。
Claims (6)
1.一种基于Java的低代码公式引擎方法,其特征在于:包括以下步骤:
S1:用户根据需要在平台内选择一个或多个函数进行组合、嵌套,并选择表单字段作为公式入参,配置形成公式并保存到平台中;
S2:平台的预埋节点获取用户保存的公式,并将公式输入到表达式解析框架Aviator的执行器内进行编译解析为可执行的表达式;
S3:用户向平台内输入数据;
S4:平台的预埋节点获取用户提交的数据,将数据代入可执行的表达式内执行,并将执行的结果反馈给执行器的调用方。
2.根据权利要求1所述的一种基于Java的低代码公式引擎方法,其特征在于:所述步骤S1中的公式入参值也可以为手填值。
3.根据权利要求2所述的一种基于Java的低代码公式引擎方法,其特征在于:所述步骤S2中解析框架Aviator的编译过程具体为:将公式里的一个个函数定义识别出来,并在函数库中查找是否存在,如果存在,则将公式编译为可执行的表达式,如果不存在,终止执行。
4.根据权利要求1所述的一种基于Java的低代码公式引擎方法,其特征在于:所述步骤S4中的执行顺序为:根据函数在公式中的位置,从左到右,由里到外逐步执行,如果不存在终止执行。
5.根据权利要求1所述的一种基于Java的低代码公式引擎方法,其特征在于:所述步骤S4中返回的数据可以由解析引擎递归处理,作为外层函数的入参进行处理,一层层传递,直到最后一个函数执行完毕。
6.根据权利要求1所述的一种基于Java的低代码公式引擎方法,其特征在于:所述步骤S4的执行过程具体为:解析引擎会找出函数库中对应的函数对象,将函数中的参数定义通过同名映射成实际的数据,传递到函数对象的实现方法中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310777020.9A CN116679941A (zh) | 2023-06-29 | 2023-06-29 | 一种基于Java的低代码公式引擎方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310777020.9A CN116679941A (zh) | 2023-06-29 | 2023-06-29 | 一种基于Java的低代码公式引擎方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116679941A true CN116679941A (zh) | 2023-09-01 |
Family
ID=87790891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310777020.9A Pending CN116679941A (zh) | 2023-06-29 | 2023-06-29 | 一种基于Java的低代码公式引擎方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116679941A (zh) |
-
2023
- 2023-06-29 CN CN202310777020.9A patent/CN116679941A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885580B (zh) | 实时数据流编程中模式驱动反应的组合 | |
CN109241184B (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
CN101246486A (zh) | 用于改进的表达式处理的方法和装置 | |
CN111324619B (zh) | 微服务系统中的对象更新方法、装置、设备和存储介质 | |
CN110647316B (zh) | 通用业务对象的生成方法、装置、计算机设备及存储介质 | |
CN108664665A (zh) | 数据格式转化方法、装置、设备及可读存储介质 | |
CN103488655A (zh) | 复合模型数据处理方法及系统 | |
CN114722036A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
CN110941655B (zh) | 一种数据格式转换方法及装置 | |
CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
US20200110584A1 (en) | Automated code generation for functional testing of software applications | |
CN112328231B (zh) | python字典和结构体间的快速转换方法 | |
US11755631B2 (en) | Workflow-based dynamic data model and application generation | |
CN116679941A (zh) | 一种基于Java的低代码公式引擎方法 | |
KR102407941B1 (ko) | Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 사용자 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치 | |
CN113051173B (zh) | 测试流程的编排执行方法、装置、计算机设备和存储介质 | |
EP3113038B1 (en) | A data handling method | |
US11726818B1 (en) | System for executing tasks in different programming languages | |
GB2539898B (en) | A data handling method | |
CN114625372A (zh) | 组件自动编译方法、装置、计算机设备及存储介质 | |
CN113778401A (zh) | 一种页面生成的方法和装置 | |
CN110502483A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN110457260B (zh) | 文件处理方法、装置、设备及计算机可读存储介质 | |
CN109284097A (zh) | 实现复杂数据分析的方法、设备、系统及存储介质 | |
CN117149100B (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 |