CN115268924A - 一种基于aPaaS平台的公式计算引擎服务方法及系统 - Google Patents
一种基于aPaaS平台的公式计算引擎服务方法及系统 Download PDFInfo
- Publication number
- CN115268924A CN115268924A CN202210655443.9A CN202210655443A CN115268924A CN 115268924 A CN115268924 A CN 115268924A CN 202210655443 A CN202210655443 A CN 202210655443A CN 115268924 A CN115268924 A CN 115268924A
- Authority
- CN
- China
- Prior art keywords
- private
- executor
- function
- target script
- enterprise code
- 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.)
- Granted
Links
Images
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
-
- 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/425—Lexical analysis
-
- 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/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出了一种基于aPaaS平台的公式计算引擎服务方法及系统,涉及计算机技术领域。该方法包括:当执行目标脚本时,获取该用户对应的企业编码。根据语法对目标脚本进行拆解,得到多个拆解文本。在对多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树。根据抽象语法树可以翻译生成机器指令。当处理器接收到机器指令时,根据企业编码获取私有执行器,以利用私有执行器执行目标脚本,当获取不到私有执行器时,则使用默认执行器执行目标脚本。利用私有执行器和默认执行器执行目标脚本时,不仅满足了个性化多租户应用公式的需求,而且将具有业务含义的参数类型封装为统一的业务类型,方便了在出入参时与apaas规范参数对齐。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种基于aPaaS平台的公式计算引擎服务方法及系统。
背景技术
aPaaS或应用平台即服务是一类基于云的软件,它为用户提供了一个开发、部署和管理应用程序的平台,为软件应用程序的开发和运行提供环境。而程序语言是用来定义计算机指令执行流程的形式化语言。每种程序语言都包含一整套词汇和语法规范。这些规范通常包括数据类型和数据结构、指令类型和指令控制、调用机制和库函数以及不成文的规定(如递进书写、变量命名等)。
目前,对于任意一种程序语言来说,其参数类型都不具有业务含义。例如在JAVA中一共有八种基本数据类型,他们分别是byte、short、int、long、float、double、char、boolean整型。则在JAVA中,业务金额可以用short、int、long表示,即用程序语言来表示业务金额就会有若干种表示方法,并没有统一的规范。由于现有程序语言的参数类型都不具有业务含义,也并不能对参数类型进行规范,则现有程序语言不能在出参、入参时对参数进行转换,以将具有业务含义的参数类型封装为统一的业务类型,则对于多租户而言,也就无法提供个性化多租户应用公式和函数的能力。
发明内容
本发明的目的在于提供一种基于aPaaS平台的公式计算引擎服务方法及系统,用以改善现有技术中不能提供个性化多租户应用公式和函数的能力的问题。
本发明的实施例是这样实现的:
第一方面,本申请实施例提供一种基于aPaaS平台的公式计算引擎服务方法,其包括如下步骤:
当响应于用户操作执行目标脚本时,获取该用户对应的企业编码;
根据语法对目标脚本进行拆解,得到多个拆解文本;
对多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树;
根据抽象语法树,生成机器指令;
根据企业编码获取私有执行器,若成功获取私有执行器,则根据机器指令,利用私有执行器执行目标脚本,若获取失败,则根据机器指令,利用默认执行器执行目标脚本,其中,私有执行器和默认执行器均用于将目标脚本中的参数类型封装为统一的业务类型。
在本发明的一些实施例中,上述根据企业编码获取私有执行器的步骤之前,该方法还包括:
通过企业编码注册对应的私有执行器。
在本发明的一些实施例中,上述通过企业编码注册对应的私有执行器的步骤包括:
当响应于用户注册执行器请求时,加载公共函数,并根据企业编码加载jar包中对应的私有函数;
根据公共函数和私有函数,构造该企业编码对应的私有执行器;
将所有私有执行器按照企业编码进行缓存。
在本发明的一些实施例中,上述根据公共函数和私有函数,构造该企业编码对应的私有执行器的步骤包括:
对公共函数和私有函数进行扫描后,将公共函数和私有函数添加至执行器的函数容器中,以构造私有执行器。
在本发明的一些实施例中,上述根据企业编码加载jar包中对应的私有函数的步骤之前,该方法还包括:
获取并根据用户需求参数,按照预设规范自定义至少一个私有函数;
将私有函数添加至jar包中。
在本发明的一些实施例中,上述通过企业编码注册对应的私有执行器的步骤还包括:
若对jar包进行替换,则加载最新jar包中的私有函数作为最新私有函数;
若jar包中的私有函数存在修改,则将修改后的私有函数作为最新私有函数;
利用最新私有函数,构造该企业编码对应的最新私有执行器;
利用最新私有执行器替换该企业编码之前的私有执行器。
在本发明的一些实施例中,上述根据机器指令,利用默认执行器执行目标脚本的步骤之前,该方法还包括:
对公共函数进行扫描,得到注册信息;
根据注册信息,构造默认执行器。
第二方面,本申请实施例提供一种基于aPaaS平台的公式计算引擎服务系统,其包括:
企业编码获取模块,用于当响应于用户操作执行目标脚本时,获取该用户对应的企业编码;
语法拆解模块,用于根据语法对目标脚本进行拆解,得到多个拆解文本;
解析模块,用于对多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树;
机器指令生成模块,用于根据抽象语法树,生成机器指令;
目标脚本执行模块,用于根据企业编码获取私有执行器,若成功获取私有执行器,则根据机器指令,利用私有执行器执行目标脚本,若获取失败,则根据机器指令,利用默认执行器执行目标脚本,其中,私有执行器和默认执行器均用于将目标脚本中的参数类型封装为统一的业务类型。
第三方面,本申请实施例提供一种电子设备,其包括存储器,用于存储一个或多个程序;处理器。当一个或多个程序被处理器执行时,实现如上述第一方面中任一项的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项的方法。
相对于现有技术,本发明的实施例至少具有如下优点或有益效果:
本发明提供一种基于aPaaS平台的公式计算引擎服务方法及系统,其包括如下步骤:当响应于用户操作执行目标脚本时,获取该用户对应的企业编码。然后根据语法对目标脚本进行拆解,得到多个拆解文本。并在对多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树,通过抽象语法树可以表明目标脚本的运行过程。进而根据抽象语法树可以翻译生成机器指令,机器指令可以被处理器接收,以控制处理器进行目标脚本执行工作。当处理器接收到机器指令时,首先根据企业编码获取私有执行器,以利用私有执行器执行目标脚本,当获取不到私有执行器时,则使用默认执行器执行目标脚本。利用私有执行器执行目标脚本,可以更好满足企业的个性化需求。由于私有执行器和默认执行器均可以将目标脚本中的参数类型封装为统一的业务类型,则利用私有执行器和默认执行器执行目标脚本时,不仅满足了个性化多租户应用公式的需求,而且可以将具有业务含义的参数类型封装为统一的业务类型,方便了在出入参时与apaas规范参数对齐。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的一种基于aPaaS平台的公式计算引擎服务方法的流程图;
图2为本发明实施例提供的一种执行器创建更新的框图结构;
图3为本发明实施例提供的一种执行器注册的逻辑框图;
图4为本发明实施例提供的一种生成机器指令的逻辑框图;
图5为本发明实施例提供的一种基于aPaaS平台的公式计算引擎服务系统的结构框图;
图6为本发明实施例提供的一种电子设备的示意性结构框图。
图标:110-企业编码获取模块;120-语法拆解模块;130-解析模块;140-机器指令生成模块;150-目标脚本执行模块;101-存储器;102-处理器;103-通信接口。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,若出现术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,若出现由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在本申请的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该申请产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
在本申请的描述中,还需要说明的是,除非另有明确的规定和限定,若出现术语“设置”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的各个实施例及实施例中的各个特征可以相互组合。
实施例
请参照图1,图1所示为本发明实施例提供的一种基于aPaaS平台的公式计算引擎服务方法的流程图。本申请实施例提供一种基于aPaaS平台的公式计算引擎服务方法,其包括如下步骤:
S110:当响应于用户操作执行目标脚本时,获取该用户对应的企业编码;
其中,上述用户可以指使用该公式计算引擎服务的企业。上述目标脚本可以为用户输入的待处理的公式函数。
S120:根据语法对目标脚本进行拆解,得到多个拆解文本;
S130:对多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树;
S140:根据抽象语法树,生成机器指令;
请参照图4,图4所示为本发明实施例提供的一种生成机器指令的逻辑框图。示例性的,步骤S120至步骤S140的详细步骤如下:若目标脚本为“sum=0;for(i=0;i<10;i=i+1){sum=sum+i;};return sum;”,则在用户输入目标脚本后,利用token分解,根据语法对目标脚本进行拆解,分解为Word[A]即拆解文本,其中A分别为“sum”、“=”、“,”、“0”、“;”、“for”等等。然后利用token解析,使得每一个Word[A]变得有意义,即判断每个Word[A]为常量、变量、符号或分割符号等等。根据解析后的拆解文本,利用AST文法匹配得到抽象语法树,通过抽象语法树可以表明目标脚本的运行过程。进而根据抽象语法树可以翻译生成机器指令,机器指令可以被处理器102接收,以控制处理器102进行目标脚本执行工作。在计算机科学中,抽象语法树(Abstract Syntax Tree,AST)是源代码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。抽象语法树属于现有技术,在此不必赘述。
示例性的,抽象语法树的具体实施例如下:
一:模式匹配,即使用定义好的表达式,去解析传入的字符串,比如这个表达式:“OP_LEVEL4:TYPE=OPERATOR,DEFINE=*|/|mod|%”,name是OP_LEVEL4,类型是运算符,有五种定义,乘、除、mod、取余、和instassof。定义的常量在KeyWordDefine4Java.nodeTypedefines[]中。QLPatternNode.isTreeNode,是否是根节点,上面的*乘法表达式就是根节点。QLPatternNode#splitChild(),把子节点加入到pattern中,比如*QLPatternNode乘法运算符的Listchildren子匹配中,存在CONST_INTEGER类型的QLPatternNode。在递归的时候,会遍历乘法运算符的子pattern,即整数匹配模式,使用整数匹配模式,匹配乘法前后的数值单词。在splitChild()的时候,根据nodeTypeDefines同一个表达式的分隔符的定义,会确定pattern的模式。同一级别的如加减乘除就是OR模式,而一些函数就是AND模式。
二.构造树:词法分析较为简单,根据传入的表达式内容,按照对应的分隔符进行分隔,然后匹配类型即可。使用了findMatchStatementWithAddRootOptimizeStack(MatchParamsPack,QLPatternNode,intpoint,intdeep)递归函数来进行树的构造。看递归表达式,应该着眼于每次递归变化后传递下去的和用来保存递归结果的部分。递归表达式中的变量是QLPatternNode,表达式中,根据node的三种matchMode:DETAIL、AND、OR,进行处理。OR:遍历patter.children,寻找合适的词法解析格式。AND:也是遍历pattern.children但是最后有一些变量的处理和缓存处理。DETAIL:左括号、右括号、注释符、EOF等使用。递归表达式较为复杂,最终函数的副作用,就是生成了一个树形结构QLMatchResultTree。然后在递归表达式的外层,即调用方,拿到树的根节点,即ExpressNode。遍历ExpressNode的左右子节点,设置其parent节点。把ExpressNode转换为InstructionSet。createInstructionSetPrivate(InstructionSet,Stack,ExpressNode),根据node的type,获取不同子类InstructionoFactory,调用createInstrctionSet(ExpressRunner,InstructionSet)方法。根节点的ExpressNode对应的nodetypekind是block,即先调用BolckInstructionFactory#createInstructionSet(ExpressRunner,InstructionSet),在block的factory方法中,会遍历所有children节点的nodetypekind对应的factory方法,来创建instructionSet。node获取children的顺序是先左边全部,再右边全部。最终会return一个instructionSet对象,对象中有个属性是Instruction[],用来存放parse的结果。
S150:根据企业编码获取私有执行器,若成功获取私有执行器,则根据机器指令,利用私有执行器执行目标脚本,若获取失败,则根据机器指令,利用默认执行器执行目标脚本,其中,私有执行器和默认执行器均用于将目标脚本中的参数类型封装为统一的业务类型。
请参照图3,图3所示为本发明实施例提供的一种执行器注册的逻辑框图。其中,默认执行器的函数容器中只保留有公共函数,默认执行器是所有租户(企业)都可以使用的执行器。而每个企业可以注册一个私有执行器,且私有执行器只能被该企业使用。私有执行器的注册步骤如下:首先根据用户需求参数,按照apaas规范参数对私有函数进行定义和编写,将私有函数保存至jar包中,并根据不同企业编码区分私有函数。然后启动注册程序,加载公共函数和jar包中的私有函数,以为每个企业构造一个私有执行器,私有执行器的函数容器中保留公共函数和私有函数并集。则利用私有执行器执行目标脚本,可以满足企业的个性化需求。由于私有执行器和默认执行器都符合apaas规范参数,则利用私有执行器和默认执行器执行目标脚本时,不仅满足了个性化多租户应用公式的需求,而且可以将具有业务含义的参数类型封装为统一的业务类型,方便了在出入参时与apaas规范参数对齐。
上述实现过程中,该方法首先响应于用户操作获取到目标脚本,然后根据语法对目标脚本进行拆解,得到多个拆解文本。并在对多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树,通过抽象语法树可以表明目标脚本的运行过程。进而根据抽象语法树可以翻译生成机器指令,机器指令可以被处理器102接收,以控制处理器102进行目标脚本执行工作。当处理器102接收到机器指令时,首先根据企业编码获取私有执行器,以利用私有执行器执行目标脚本,当获取不到私有执行器时,则使用默认执行器执行目标脚本。利用私有执行器执行目标脚本,可以更好满足企业的个性化需求。由于私有执行器和默认执行器均可以将目标脚本中的参数类型封装为统一的业务类型,则利用私有执行器和默认执行器执行目标脚本时,不仅满足了个性化多租户应用公式的需求,而且可以将具有业务含义的参数类型封装为统一的业务类型,方便了在出入参时与apaas规范参数对齐。
示例性的,上述业务类型包括ID、短文本、长文本、富文本、整数、小数、逻辑字段等通用类型。例如,在现有程序语言中,业务金额可以用short、int、long等表示,其并没有统一规范。而在apaas平台中,业务金额只能用数字表示,则对业务金额这个参数进行了统一规范。
在本实施例的一些实施方式中,上述根据企业编码获取私有执行器的步骤之前,该方法还包括:
通过企业编码注册对应的私有执行器。
具体的,每个企业可以注册一个私有执行器,通过企业编码进行区分,则一个私有执行器只能被一个企业使用,进一步保证了为每个个性化租户提供应用公式的能力。
在本实施例的一些实施方式中,上述通过企业编码注册对应的私有执行器的步骤包括:
当响应于用户注册执行器请求时,加载公共函数,并根据企业编码加载jar包中对应的私有函数;
根据公共函数和私有函数,构造该企业编码对应的私有执行器;
将所有私有执行器按照企业编码进行缓存。从而实现了为每个企业分别注册私有执行器的同时,利用企业编码进行区分的目的。
作为本实施例的一种实施方式,在apaas平台上事先储存有多个内置函数,以供构造执行器使用。示例性的,内置函数可以包括“Concatenate”、“Left”等文本函数。其中,Concatenate函数的释义是将多个文本字符串合并成一个文本字符串,Concatenate函数的参数参见表1:
表1:Concatenate函数的参数:
参数名称 | 业务类型 | 示例 | 描述 |
strs | 所有文本类型 | 123 | 要拼接的字符串 |
应用Concatenate函数的实例如下:
实例:
Concatenate("123","456")
结果:
"123456"。
在本实施例的一些实施方式中,上述根据公共函数和私有函数,构造该企业编码对应的私有执行器的步骤包括:
对公共函数和私有函数进行扫描后,将公共函数和私有函数添加至执行器的函数容器中,以构造私有执行器。从而实现了构造私有执行器的目的。
在本实施例的一些实施方式中,上述根据企业编码加载jar包中对应的私有函数的步骤之前,该方法还包括:
获取并根据用户需求参数,按照预设规范自定义至少一个私有函数;
其中,预设规范为aPaaS规范参数。
将私有函数添加至jar包中。
上述实现过程中,以满足用户需求参数为条件,按照预设规范自定义对应的私有函数,并将私有函数添加至jar包中,根据不同企业编码区分私有函数,以供构建私有执行器使用。
例如,有一个业务类型B,必须要按照预设规范用函数C来描述业务类型B,函数C即为自定义编写的私有函数。从而通过这样编写的私有函数构造的私有执行器才能在提供个性化多租户应用公式的能力的同时,在出入参时与aPaaS规范参数对齐。
在本实施例的一些实施方式中,上述通过企业编码注册对应的私有执行器的步骤还包括:
若对jar包进行替换,则加载最新jar包中的私有函数作为最新私有函数;
若jar包中的私有函数存在修改,则将修改后的私有函数作为最新私有函数;
利用最新私有函数,构造该企业编码对应的最新私有执行器;
利用最新私有执行器替换该企业编码之前的私有执行器。从而保证各个企业编码所对应的私有执行器是最新,也就是最符合当前用户需求的私有执行器。
请参照图2,图2所示为本发明实施例提供的一种执行器创建更新的框图结构。在apaas平台中包含全局公共函数、本地公共业务函数和本地业务函数,以及私有函数。私有函数可以随jar包的更新替换和私有函数本身的修改进行动态更新。
在本实施例的一些实施方式中,上述根据机器指令,利用默认执行器执行目标脚本的步骤之前,该方法还包括:
对公共函数进行扫描,得到注册信息;
根据注册信息,构造默认执行器。
具体的,默认执行器只能执行公共函数,则默认执行器是所有租户都可以使用的执行器。且公共函数是按照apaas规范参数编写,则利用默认执行器执行目标脚本也可以对业务类型进行统一,以与apaas规范参数对齐。
请参照图5,图5所示为本发明实施例提供的一种基于aPaaS平台的公式计算引擎服务系统的结构框图。本申请实施例提供一种基于aPaaS平台的公式计算引擎服务系统,其包括:
企业编码获取模块110,用于当响应于用户操作执行目标脚本时,获取该用户对应的企业编码;
语法拆解模块120,用于根据语法对目标脚本进行拆解,得到多个拆解文本;
解析模块130,用于对多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树;
机器指令生成模块140,用于根据抽象语法树,生成机器指令;
目标脚本执行模块150,用于根据企业编码获取私有执行器,若成功获取私有执行器,则根据机器指令,利用私有执行器执行目标脚本,若获取失败,则根据机器指令,利用默认执行器执行目标脚本,其中,私有执行器和默认执行器均用于将目标脚本中的参数类型封装为统一的业务类型。
上述实现过程中,该系统首先响应于用户操作获取到目标脚本,然后根据语法对目标脚本进行拆解,得到多个拆解文本。并在对多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树,通过抽象语法树可以表明目标脚本的运行过程。进而根据抽象语法树可以翻译生成机器指令,机器指令可以被处理器102接收,以控制处理器102进行目标脚本执行工作。当处理器102接收到机器指令时,首先根据企业编码获取私有执行器,以利用私有执行器执行目标脚本,当获取不到私有执行器时,则使用默认执行器执行目标脚本。利用私有执行器执行目标脚本,可以更好满足企业的个性化需求。由于私有执行器和默认执行器均可以将目标脚本中的参数类型封装为统一的业务类型,则利用私有执行器和默认执行器执行目标脚本时,不仅满足了个性化多租户应用公式的需求,而且可以将具有业务含义的参数类型封装为统一的业务类型,方便了在出入参时与apaas规范参数对齐。
请参照图6,图6为本申请实施例提供的电子设备的一种示意性结构框图。电子设备包括存储器101、处理器102和通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,如本申请实施例所提供的一种基于aPaaS平台的公式计算引擎服务系统对应的程序指令/模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
其中,存储器101可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以理解,图6所示的结构仅为示意,电子设备还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。图6中所示的各组件可以采用硬件、软件或其组合实现。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (10)
1.一种基于aPaaS平台的公式计算引擎服务方法,其特征在于,包括如下步骤:
当响应于用户操作执行目标脚本时,获取该用户对应的企业编码;
根据语法对所述目标脚本进行拆解,得到多个拆解文本;
对所述多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树;
根据所述抽象语法树,生成机器指令;
根据所述企业编码获取私有执行器,若成功获取所述私有执行器,则根据所述机器指令,利用所述私有执行器执行所述目标脚本,若获取失败,则根据所述机器指令,利用默认执行器执行所述目标脚本,其中,所述私有执行器和所述默认执行器均用于将所述目标脚本中的参数类型封装为统一的业务类型。
2.根据权利要求1所述的基于aPaaS平台的公式计算引擎服务方法,其特征在于,根据所述企业编码获取私有执行器的步骤之前,还包括:
通过企业编码注册对应的私有执行器。
3.根据权利要求2所述的基于aPaaS平台的公式计算引擎服务方法,其特征在于,所述通过企业编码注册对应的私有执行器的步骤包括:
当响应于用户注册执行器请求时,加载公共函数,并根据所述企业编码加载jar包中对应的私有函数;
根据所述公共函数和所述私有函数,构造该企业编码对应的私有执行器;
将所有私有执行器按照企业编码进行缓存。
4.根据权利要求3所述的基于aPaaS平台的公式计算引擎服务方法,其特征在于,根据所述公共函数和所述私有函数,构造该企业编码对应的私有执行器的步骤包括:
对所述公共函数和所述私有函数进行扫描后,将所述公共函数和所述私有函数添加至执行器的函数容器中,以构造私有执行器。
5.根据权利要求3所述的基于aPaaS平台的公式计算引擎服务方法,其特征在于,根据所述企业编码加载jar包中对应的私有函数的步骤之前,还包括:
获取并根据用户需求参数,按照预设规范自定义至少一个私有函数;
将所述私有函数添加至jar包中。
6.根据权利要求3所述的基于aPaaS平台的公式计算引擎服务方法,其特征在于,所述通过企业编码注册对应的私有执行器的步骤还包括:
若对jar包进行替换,则加载最新jar包中的私有函数作为最新私有函数;
若jar包中的私有函数存在修改,则将修改后的私有函数作为最新私有函数;
利用所述最新私有函数,构造该企业编码对应的最新私有执行器;
利用所述最新私有执行器替换该企业编码之前的私有执行器。
7.根据权利要求1所述的基于aPaaS平台的公式计算引擎服务方法,其特征在于,根据所述机器指令,利用默认执行器执行所述目标脚本的步骤之前,还包括:
对公共函数进行扫描,得到注册信息;
根据所述注册信息,构造默认执行器。
8.一种基于aPaaS平台的公式计算引擎服务系统,其特征在于,包括:
企业编码获取模块,用于当响应于用户操作执行目标脚本时,获取该用户对应的企业编码;
语法拆解模块,用于根据语法对所述目标脚本进行拆解,得到多个拆解文本;
解析模块,用于对所述多个拆解文本进行解析后,根据解析后的拆解文本生成抽象语法树;
机器指令生成模块,用于根据所述抽象语法树,生成机器指令;
目标脚本执行模块,用于根据所述企业编码获取私有执行器,若成功获取所述私有执行器,则根据所述机器指令,利用所述私有执行器执行所述目标脚本,若获取失败,则根据所述机器指令,利用默认执行器执行所述目标脚本,其中,所述私有执行器和所述默认执行器均用于将所述目标脚本中的参数类型封装为统一的业务类型。
9.一种电子设备,其特征在于,包括:
存储器,用于存储一个或多个程序;
处理器;
当所述一个或多个程序被所述处理器执行时,实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210655443.9A CN115268924B (zh) | 2022-06-10 | 2022-06-10 | 一种基于aPaaS平台的公式计算引擎服务方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210655443.9A CN115268924B (zh) | 2022-06-10 | 2022-06-10 | 一种基于aPaaS平台的公式计算引擎服务方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115268924A true CN115268924A (zh) | 2022-11-01 |
CN115268924B CN115268924B (zh) | 2023-05-02 |
Family
ID=83759883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210655443.9A Active CN115268924B (zh) | 2022-06-10 | 2022-06-10 | 一种基于aPaaS平台的公式计算引擎服务方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115268924B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108986A (zh) * | 2017-12-29 | 2018-06-01 | 广州市玄武无线科技股份有限公司 | 一种客户关系管理系统的设计方法、装置及电子设备 |
CN108536444A (zh) * | 2018-02-26 | 2018-09-14 | 平安普惠企业管理有限公司 | 插件编译方法、装置、计算机设备和存储介质 |
CN109274731A (zh) * | 2018-09-04 | 2019-01-25 | 北京京东金融科技控股有限公司 | 基于多租户技术的web服务的部署、调用方法和装置 |
CN110297840A (zh) * | 2019-05-22 | 2019-10-01 | 平安银行股份有限公司 | 基于规则引擎的数据处理方法、装置、设备及存储介质 |
CN110908640A (zh) * | 2019-11-26 | 2020-03-24 | 京东数字科技控股有限公司 | 实现业务功能的方法和脚本引擎 |
CN112380502A (zh) * | 2020-11-13 | 2021-02-19 | 苏州三六零智能安全科技有限公司 | Web应用程序的处理方法及装置、服务器、终端设备 |
CN113885961A (zh) * | 2021-10-09 | 2022-01-04 | 上海得帆信息技术有限公司 | 一种aPaaS平台的公式规则可视化实现的方法 |
CN114546351A (zh) * | 2022-01-24 | 2022-05-27 | 珠海迈科智能科技股份有限公司 | 一种基于Java MVC架构的统一出参入参封装类结构、方法及电子设备 |
-
2022
- 2022-06-10 CN CN202210655443.9A patent/CN115268924B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108986A (zh) * | 2017-12-29 | 2018-06-01 | 广州市玄武无线科技股份有限公司 | 一种客户关系管理系统的设计方法、装置及电子设备 |
CN108536444A (zh) * | 2018-02-26 | 2018-09-14 | 平安普惠企业管理有限公司 | 插件编译方法、装置、计算机设备和存储介质 |
CN109274731A (zh) * | 2018-09-04 | 2019-01-25 | 北京京东金融科技控股有限公司 | 基于多租户技术的web服务的部署、调用方法和装置 |
CN110297840A (zh) * | 2019-05-22 | 2019-10-01 | 平安银行股份有限公司 | 基于规则引擎的数据处理方法、装置、设备及存储介质 |
CN110908640A (zh) * | 2019-11-26 | 2020-03-24 | 京东数字科技控股有限公司 | 实现业务功能的方法和脚本引擎 |
CN112380502A (zh) * | 2020-11-13 | 2021-02-19 | 苏州三六零智能安全科技有限公司 | Web应用程序的处理方法及装置、服务器、终端设备 |
CN113885961A (zh) * | 2021-10-09 | 2022-01-04 | 上海得帆信息技术有限公司 | 一种aPaaS平台的公式规则可视化实现的方法 |
CN114546351A (zh) * | 2022-01-24 | 2022-05-27 | 珠海迈科智能科技股份有限公司 | 一种基于Java MVC架构的统一出参入参封装类结构、方法及电子设备 |
Non-Patent Citations (2)
Title |
---|
SKY凌乱的微笑: "Scala之旅-统一类型(UNIFIED TYPES)", 《HTTPS://BLOG.CSDN.NET/SMILE_FROM_2015/ARTICLE/DETAILS/80173263》 * |
初冬小手冰凉: "如何评价国内的低代码开发平台(apaas)", 《HTTPS://WWW.ZHIHU.COM/QUESTION/498207337》 * |
Also Published As
Publication number | Publication date |
---|---|
CN115268924B (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10740215B2 (en) | System and method for implementing an API validator tool | |
CN110196719B (zh) | 一种基于自然语言处理的业务规则生成方法与系统 | |
CN106991023B (zh) | 一种接口参数校验方法及组件 | |
US9268539B2 (en) | User interface component | |
RU2351976C2 (ru) | Механизм для предусмотрения вывода управляемой данными командной строки | |
US20070266378A1 (en) | Source code generation method, apparatus, and program | |
US20150169320A1 (en) | Verification of backward compatibility of software components | |
US20050154978A1 (en) | Programmatic creation and access of XML documents | |
US20070006134A1 (en) | Data processing method compatible with an object modeling formalism | |
US7130862B2 (en) | Methods, systems and computer program prodcuts for validation of XML instance documents using Java classloaders | |
CN111522558B (zh) | 基于Java的动态配置规则的方法、装置、系统和可读介质 | |
Jackson | Alloy 3.0 reference manual | |
US11275625B2 (en) | System and method for automated application programming interface generation | |
CN110287429A (zh) | 数据解析方法、装置、设备及存储介质 | |
US20230418566A1 (en) | Programmatically generating evaluation data sets for code generation models | |
CN101499015A (zh) | 一种高级语言转换成其它高级语言的方法及转换器 | |
US12014155B2 (en) | Constrained prefix matching for generating next token predictions | |
CN115357286B (zh) | 一种程序文件对比方法、装置、电子设备及存储介质 | |
US20230418565A1 (en) | Validating and providing proactively generated code suggestions | |
US20230419036A1 (en) | Random token segmentation for training next token prediction models | |
CN116467047A (zh) | 针对容器配置合规性的检测方法、装置、存储介质及终端 | |
CN115268924B (zh) | 一种基于aPaaS平台的公式计算引擎服务方法及系统 | |
CN114556238A (zh) | 用于在云计算环境中生成资产信息的数字表示的方法和系统 | |
CN115686515A (zh) | 参数可视化配置界面生成方法、装置、介质和电子设备 | |
CN113342399B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |