CN113190283A - 一种基于Groovy语言可视化计算公式实现的方法 - Google Patents

一种基于Groovy语言可视化计算公式实现的方法 Download PDF

Info

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
Application number
CN202110406528.9A
Other languages
English (en)
Inventor
万翔
胡守云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Seeyon Internet Software Corp
Original Assignee
Beijing Seeyon Internet Software Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Seeyon Internet Software Corp filed Critical Beijing Seeyon Internet Software Corp
Priority to CN202110406528.9A priority Critical patent/CN113190283A/zh
Publication of CN113190283A publication Critical patent/CN113190283A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote 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语言可视化计算公式实现的方法。
背景技术
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引擎执行时提供公式所需要的参数变量信息。
CN202110406528.9A 2021-04-15 2021-04-15 一种基于Groovy语言可视化计算公式实现的方法 Pending CN113190283A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 北京卓信智恒数据科技股份有限公司 基于业务动态建模的数据指标解析与执行方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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