CN113190283A - 一种基于Groovy语言可视化计算公式实现的方法 - Google Patents
一种基于Groovy语言可视化计算公式实现的方法 Download PDFInfo
- Publication number
- CN113190283A CN113190283A CN202110406528.9A CN202110406528A CN113190283A CN 113190283 A CN113190283 A CN 113190283A CN 202110406528 A CN202110406528 A CN 202110406528A CN 113190283 A CN113190283 A CN 113190283A
- Authority
- CN
- China
- Prior art keywords
- calculation formula
- formula
- calculation
- groovy
- visual
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 78
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000000007 visual effect Effects 0.000 title claims abstract description 27
- 238000004458 analytical method Methods 0.000 claims abstract description 17
- 238000013215 result calculation Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 3
- 244000035744 Hura crepitans Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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
- 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/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于Groovy语言可视化计算公式实现的方法,首先由开发人员建立底层方法库,随后底层方法库录入计算公式方法库,管理人员将可视化设计界面采用调用计算公式方法库的方法进行配置,根据用户的需要,配置并选择好的计算公式,将配置好的计算公式进行方法解析,随后采用Groovy执行,随后将热点计算公式进行自动缓存,针对解析后相同的公式字符串,对相同的公式进行编译后的字节码缓存,进行多线程公式计算引擎输出计算结果计算公式方法库,本发明计算公式可视化配置界面,便于操作;可视化配置的计算公式解析编译引擎,用于Groovy可识别公式,实现与其他计算公式进行联动。
Description
技术领域
本发明涉及基于Groovy语言可视化计算公式实现的方法技术领域,具体为一种基于Groovy语言可视化计算公式实现的方法。
背景技术
Groovy是一种动态语言,基于JVM的敏捷开发语言,可直接运行在Java虚拟机中,并且具备脚本语言的特点。当运行Groovy脚本时,由于已经集成了Java类库,脚本会被编译成Java类字节码,这样Groovy脚本即可用于任何装有Java虚拟机的服务。目前的Groovy计算需要专业人员配置,使用复杂,对普通人员不具备易用性,一方面计算公式配置繁琐,另一方面结果无法作用于其他计算公式进行联动,因此,亟待一种改进的技术来解决现有技术中所存在的这一问题。
发明内容
本发明的目的在于提供一种基于Groovy语言可视化计算公式实现的方法,计算公式可视化配置界面,便于操作,可视化配置的计算公式解析编译引擎,用于Groovy可识别公式,实现与其他计算公式进行联动,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于Groovy语言可视化计算公式实现的方法,包括以下步骤:
步骤一:首先由开发人员建立底层方法库,随后底层方法库录入计算公式方法库;
步骤二:管理人员将可视化设计界面采用调用计算公式方法库的方法进行配置;
步骤三:根据用户的需要,配置并选择好的计算公式;
步骤四:将配置好的计算公式进行方法解析,随后采用Groovy执行,随后将热点计算公式进行自动缓存,针对解析后相同的公式字符串,对相同的公式进行编译后的字节码缓存;
步骤五:进行多线程公式计算引擎输出计算结果计算公式方法库。
优选的,所述步骤一中计算公式方法库包括普通文本拼接,数字的数学计算、大小比较,日期取值、大小比较、日期差,系统信息取值,组织机构信息取值,枚举下拉取值、比较,针对CAP表单特性,提供明细表的操作特性及自定义方法库实现。
优选的,所述普通文本拼接包括函数and、or、(、)、in、not in等高级运算符拼接以及常规的操作符比较。
优选的,所述步骤二中调用采用selfFunc调用。
优选的,所述步骤二中配置包括普通设置及高级设置。
优选的,所述步骤四中方法解析采用公式解析编译引擎,根据可视化界面配置的公式字符串,使用基础方法库将公式解析为Groovy可执行的公式代码,并在调用Groovy引擎执行时提供公式所需要的参数变量信息。
与现有技术相比,本发明的有益效果是:
本发明计算公式可视化配置界面,便于操作;可视化配置的计算公式解析编译引擎,用于Groovy可识别公式,实现与其他计算公式进行联动;热点计算公式的自动缓存,针对热点公式无需再次编译字节码即可使用缓存执行。
附图说明
图1为本发明流程示意图。
图2为计算公式设置界面示意图。
图3为计算公式操作界面示意图。
图4为递归计算原理示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明提供一种技术方案:一种基于Groovy语言可视化计算公式实现的方法,包括以下步骤:
步骤一:首先由开发人员建立底层方法库,随后底层方法库录入计算公式方法库;
步骤二:管理人员将可视化设计界面采用调用计算公式方法库的方法进行配置;
步骤三:根据用户的需要,配置并选择好的计算公式;
步骤四:将配置好的计算公式进行方法解析,随后采用Groovy执行,随后将热点计算公式进行自动缓存,针对解析后相同的公式字符串,对相同的公式进行编译后的字节码缓存;
步骤五:进行多线程公式计算引擎输出计算结果计算公式方法库。
其中,步骤一中计算公式方法库包括普通文本拼接,数字的数学计算、大小比较,日期取值、大小比较、日期差,系统信息取值,组织机构信息取值,枚举下拉取值、比较,针对CAP表单特性,提供明细表的操作特性及自定义方法库实现。
其中,普通文本拼接包括函数and、or、(、)、in、not in等高级运算符拼接以及常规的操作符比较。方法库针对不同类型建立分组,比如数字、日期以及取值表单数据域的值等,并且方法库支持自定义实现(自行实现方法库,在可视化界面即可使用selfFunc调用)。
其中,步骤二中配置包括普通设置及高级设置,提供高级计算公式设置,增加公式作为前置条件,针对不同的前置条件,执行不同的分支结果。计算公式执行模块支持结果的递归计算。在运用场景中,A/B/C/D/E五个字段设置计算公式,计算最终的结果F,如图4所示。可视化界面计算公式配置提供公式的有效性校验,保证易用性。
其中,步骤四中方法解析采用公式解析编译引擎,根据可视化界面配置的公式字符串,使用基础方法库将公式解析为Groovy可执行的公式代码,并在调用Groovy引擎执行时提供公式所需要的参数变量信息。
热点计算公式的自动缓存,针对解析后相同的公式字符串,对相同的公式进行编译后的字节码缓存,避免性能损耗在重复执行Groovy编译,提升计算公式的执行效率。
多线程公式计算引擎,充分利用电脑提供的线程数,并发性执行计算引擎得到结果。针对公式作为粒度拆分,提升复杂的多表单、多公式的计算能力。
计算引擎通过Sandbox机制限制公式中的危险操作,如Runtime、System、ClassLoader、Thread级别的操作,限制JDBC访问和IO操作。
本发明计算公式可视化配置界面,便于操作;可视化配置的计算公式解析编译引擎,用于Groovy可识别公式,实现与其他计算公式进行联动;热点计算公式的自动缓存,针对热点公式无需再次编译字节码即可使用缓存执行。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (6)
1.一种基于Groovy语言可视化计算公式实现的方法,其特征在于:包括以下步骤:
步骤一:首先由开发人员建立底层方法库,随后底层方法库录入计算公式方法库;
步骤二:管理人员将可视化设计界面采用调用计算公式方法库的方法进行配置;
步骤三:根据用户的需要,配置并选择好的计算公式;
步骤四:将配置好的计算公式进行方法解析,随后采用Groovy执行,随后将热点计算公式进行自动缓存,针对解析后相同的公式字符串,对相同的公式进行编译后的字节码缓存;
步骤五:进行多线程公式计算引擎输出计算结果计算公式方法库。
2.根据权利要求1所述的一种基于Groovy语言可视化计算公式实现的方法,其特征在于:所述步骤一中计算公式方法库包括普通文本拼接,数字的数学计算、大小比较,日期取值、大小比较、日期差,系统信息取值,组织机构信息取值,枚举下拉取值、比较,针对CAP表单特性,提供明细表的操作特性及自定义方法库实现。
3.根据权利要求2所述的一种基于Groovy语言可视化计算公式实现的方法,其特征在于:所述普通文本拼接包括函数and、or、(、)、in、not in等高级运算符拼接以及常规的操作符比较。
4.根据权利要求1所述的一种基于Groovy语言可视化计算公式实现的方法,其特征在于:所述步骤二中调用采用selfFunc调用。
5.根据权利要求1所述的一种基于Groovy语言可视化计算公式实现的方法,其特征在于:所述步骤二中配置包括普通设置及高级设置。
6.根据权利要求1所述的一种基于Groovy语言可视化计算公式实现的方法,其特征在于:所述步骤四中方法解析采用公式解析编译引擎,根据可视化界面配置的公式字符串,使用基础方法库将公式解析为Groovy可执行的公式代码,并在调用Groovy引擎执行时提供公式所需要的参数变量信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110406528.9A CN113190283A (zh) | 2021-04-15 | 2021-04-15 | 一种基于Groovy语言可视化计算公式实现的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110406528.9A CN113190283A (zh) | 2021-04-15 | 2021-04-15 | 一种基于Groovy语言可视化计算公式实现的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113190283A true CN113190283A (zh) | 2021-07-30 |
Family
ID=76977110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110406528.9A Pending CN113190283A (zh) | 2021-04-15 | 2021-04-15 | 一种基于Groovy语言可视化计算公式实现的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113190283A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113885961A (zh) * | 2021-10-09 | 2022-01-04 | 上海得帆信息技术有限公司 | 一种aPaaS平台的公式规则可视化实现的方法 |
CN114115872A (zh) * | 2021-11-10 | 2022-03-01 | 天津健康医疗大数据有限公司 | 一种业务表达式生成和解析工具的实现方法及装置 |
CN115035990A (zh) * | 2022-04-20 | 2022-09-09 | 天津健康医疗大数据有限公司 | 医院评审定量评价考核方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943474B1 (en) * | 2011-10-26 | 2015-01-27 | The Mathworks, Inc. | Code generation and execution for dynamic programming languages |
CN105354023A (zh) * | 2015-10-20 | 2016-02-24 | 四川华控图形科技有限公司 | 可视化逻辑编辑运行引擎 |
CN108647049A (zh) * | 2018-03-18 | 2018-10-12 | 平安科技(深圳)有限公司 | 基于规则引擎的可配置化系统、方法、设备和存储介质 |
CN110647549A (zh) * | 2019-09-29 | 2020-01-03 | 北京卓信智恒数据科技股份有限公司 | 基于业务动态建模的数据指标解析与执行方法和装置 |
-
2021
- 2021-04-15 CN CN202110406528.9A patent/CN113190283A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8943474B1 (en) * | 2011-10-26 | 2015-01-27 | The Mathworks, Inc. | Code generation and execution for dynamic programming languages |
CN105354023A (zh) * | 2015-10-20 | 2016-02-24 | 四川华控图形科技有限公司 | 可视化逻辑编辑运行引擎 |
CN108647049A (zh) * | 2018-03-18 | 2018-10-12 | 平安科技(深圳)有限公司 | 基于规则引擎的可配置化系统、方法、设备和存储介质 |
CN110647549A (zh) * | 2019-09-29 | 2020-01-03 | 北京卓信智恒数据科技股份有限公司 | 基于业务动态建模的数据指标解析与执行方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113885961A (zh) * | 2021-10-09 | 2022-01-04 | 上海得帆信息技术有限公司 | 一种aPaaS平台的公式规则可视化实现的方法 |
CN114115872A (zh) * | 2021-11-10 | 2022-03-01 | 天津健康医疗大数据有限公司 | 一种业务表达式生成和解析工具的实现方法及装置 |
CN115035990A (zh) * | 2022-04-20 | 2022-09-09 | 天津健康医疗大数据有限公司 | 医院评审定量评价考核方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113190283A (zh) | 一种基于Groovy语言可视化计算公式实现的方法 | |
US9836390B2 (en) | Static analysis of computer code to determine impact of change to a code component upon a dependent code component | |
US7725883B1 (en) | Program interpreter | |
US8516443B2 (en) | Context-sensitive analysis framework using value flows | |
US8533669B2 (en) | Analysis of dynamic elements in bounded time | |
US8347266B2 (en) | Declarative object identity | |
Gyori et al. | Crossing the gap from imperative to functional programming through refactoring | |
US20070011651A1 (en) | Customized annotation editing | |
US10558458B2 (en) | Query optimizer for CPU utilization and code refactoring | |
Shu et al. | Javapdg: A new platform for program dependence analysis | |
US20070074185A1 (en) | Identifier expressions | |
Kang et al. | Semantic Patches for Java Program Transformation | |
CN104965687A (zh) | 基于指令集生成的大数据处理方法及装置 | |
US8875089B2 (en) | Workspace model for interrelated projects | |
Khatchadourian et al. | [Engineering Paper] A Tool for Optimizing Java 8 Stream Software via Automated Refactoring | |
US8578352B1 (en) | Optimizing object oriented programs using limited customization | |
US20120117551A1 (en) | Optimization of declarative queries | |
Aotani et al. | SCoPE: an AspectJ compiler for supporting user-defined analysis-based pointcuts | |
US8495595B2 (en) | Method of selecting an expression evaluation technique for domain-specific language compilation | |
US20110271261A1 (en) | Modifiable high-level intermediate representation of source code | |
US7873949B2 (en) | In source code suppression of binary analysis | |
US11435989B2 (en) | Thread-local return structure for asynchronous state machine | |
Spear et al. | Making performance analysis and tuning part of the software development cycle | |
Payet et al. | Checking array bounds by abstract interpretation and symbolic expressions | |
US20240241697A1 (en) | Extensible built-in object management |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210730 |
|
RJ01 | Rejection of invention patent application after publication |