掌桥专利:专业的专利平台
掌桥专利
首页

一种插件化脚本编程的方法及系统

文献发布时间:2023-06-19 10:27:30


一种插件化脚本编程的方法及系统

技术领域

本发明涉及计算机软件编程技术领域,具体而言,涉及一种插件化脚本编程的方法及系统。

背景技术

对于许多创新创业型网络科技公司来说,项目量很大,功能复杂,业务变化太多、太快,开发周期较短,因此导致项目代码挤压式地堆积,而绝大部分的代码冗余,无法公用且重复度较高;开发过于以业务功能结果为导向,而忽略代码的抽象、公用等设计方式,致使代码可读性较差,加大了新进入同事的融入业务的时间,增加了公司成本。

对于上架企业微信同一类型不同业务的多个应用,并且还有的不确定需要由实际客户需求及公司产品方向决定,而服务端不可能因有几个应用就生成几个指定的服务端服务,这样人力资源不够也会增加硬件成本,同时会导致服务端项目无法维护。

另外,有的业务用的数据存储是mysql,目前由于数据量过大,可能导致mysql后期无法良好支撑,因此把该业务数据用cassandra存储,研发人员认为该业务代码不能一刀切,不能直接通过更改原来的方式把数据写入切换至cassandra,这时就需要不更改原来API,直接在原来API前后做处理。

还有,SaaS平台产品里面有个文章功能,该功能是通用的标准产品功能,然而有的客户需要在发布文章的同时给该客户自己内部系统发送一个通知,由于不是标准产品功能属于定制化功能,如果单独修改该功能就会影响别的企业正常使用。

发明内容

鉴于此,本发明旨在实现代码插件化、脚本化;脚本动态化、热更新;解决代码冗余,无法公用且重复度高的问题;。

为了实现上述目的,本发明提供了一种插件化脚本编程的方法,包括如下步骤:

S1、从目标项目的主应用程序抽离出功能操作点;

S2、引入核心脚本文件包,识别目标项目的功能操作点,获取调度配置文件;

优选地,引入核心jar包;所述核心jar包含有脚本插件化关键组件;所述核心jar包用于:

识别被引用目标项目的功能操作点;

具体地,创建用户addUser,发布文章publishArticle;

获取调度配置文件;

具体地,发布文章前执行某个脚本publishArticle:before:testGroovy;

通过调度配置处理个性化定制业务,根据调度配置执行需要个性化的业务脚本;

具体地,在文章发布前给某企业管理人员推送一个通知;

S3、配置所述目标项目需要扫表的脚本文件包、文件服务地址;

集成脚本插件的各个项目,项目内含有需要插入操作或需要个性化处理的功能操作点,即具体某个方法;

S4、开启扫描目标项目,配置接口文件,识别所述功能操作点;

优选地,目标项目开启扫描,配置applicationContext.xml,和/或注册MethodInterceptorConfig配置;扫描识别需要集成项目里面的所有功能操作点,即需要处理的方法;

S5、调度配置处理个性化定制业务,根据调度配置执行需要个性化的脚本文件;

根据调度配置,把指定脚本在指定位置执行,功能操作点前后运行指定脚本;

S6、通过所述文件服务,管理所有脚本文件及调度配置文件。

进一步地,所述S3步骤中,配置所述目标项目需要扫表的脚本文件包的过程是:集成脚本文件的各个项目,项目内含有需要插入操作或需要个性化处理的功能操作点,即具体某个方法。。

进一步地,所述目标项目里的功能操作点与所述脚本文件之间进行参数传递,相互并行。

进一步地,所述S6步骤中,所述管理所有脚本文件及调度配置文件的方法包括保存记录调度配置文件、脚本文件。

本发明还提供一种插件化脚本编程的方法的系统,其特征在于,包括:

目标项目模块:用于抽离出所需功能操作点,配置目标项目需要扫表的包、文件服务地址;目标项目开启扫描,配置接口文件,识别目标项目里的功能操作点;

优选地,目标项目开启扫描,配置applicationContext.xml,和/或注册MethodInterceptorConfig配置;

脚本文件包模块:用于引入核心脚本文件包,识别被引用目标项目的方法;获取调度配置文件;通过调度配置处理个性化定制业务,根据调度配置执行需要个性化的业务脚本;

优选地,引入核心jar包;

文件服务模块:用于保存记录调度配置文件、执行的脚本文件,文件随时上传,随时编辑。

本发明还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现所述插件化脚本编程的方法的步骤。

本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现所述插件化脚本编程的方法的步骤。

与现有技术相比,本发明有益效果是:提高代码的标准化、规范化;在不改变原有业务和代码的同时,通过编写脚本的形式用插件的方式集成进来,每个不同业务的应用通过不同脚本动态的发布,既不影响原来应用使用,又能不停机的发布新功能,且服务端只有一个项目,大幅提升了对产品多样性的支持;加快了产品快速更新迭代;增加了个性化定制能力,扩大了产品的宽度。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。

在附图中:

图1为本发明一种插件化脚本编程的方法的流程图;

图2为本发明一种插件化脚本编程的方法的工作框架图;

图3为本发明实施例提供的一种计算机设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本发明实施例一种插件化脚本编程的方法,对于spring+struts2+hibernate项目框架,参阅附图图1所示,包括如下步骤:

S1、从目标项目的主应用程序抽离出功能操作点;

S2、引入核心脚本文件包,识别目标项目的功能操作点,获取调度配置文件;

优选地,引入核心jar包;所述核心jar包含有脚本插件化关键组件;所述核心jar包用于:

识别被引用目标项目的功能操作点;

具体地,创建用户addUser,发布文章publishArticle;

获取调度配置文件;

具体地,发布文章前执行某个脚本publishArticle:before:testGroovy;

通过调度配置处理个性化定制业务,根据调度配置执行需要个性化的业务脚本;

具体地,在文章发布前给某企业管理人员推送一个通知;

S3、配置所述目标项目需要扫表的脚本文件包、文件服务地址;

集成脚本插件的各个项目,项目内含有需要插入操作或需要个性化处理的功能操作点,即具体某个方法;

脚本aop包的scanner获取方式是配置文件获取的,故在项目resource文件夹下添加application.properties文件(如存在则不需添加),然后在文件中配置指定项groovy.execution的值;

具体地,

#需要扫描的包

groovy.execution=execution(com.vsvz.shopguide.*.web..*.*(..))

||execution(*com.vsvz.api..*.*(..))

#脚本文件方法的文件服务地址

groovy.script_dispatcher_url=http://test.xxynet.com/distributions/groovy/;

S4、开启扫描目标项目,配置接口文件,识别所述功能操作点;

优选地,目标项目开启扫描,配置applicationContext.xml,和/或注册MethodInterceptorConfig配置;扫描识别需要集成项目里面的所有功能操作点,即需要处理的方法;

优选地,目标项目开启扫描,配置applicationContext.xml,和/或注册MethodInterceptorConfig配置;扫描识别需要集成项目里面的所有功能操作点,即需要处理的方法;

具体地,

applicationContext.xml

添加插件配置文件的扫描包,并开启aop服务(spring 3.0.*不支持@EnableAspectJAutoProxy故需此操作)

配置如下:

其中com.groovyaop.config*为脚本拦截的包,固定写法

配置属性读取的文件

S5、调度配置处理个性化定制业务,根据调度配置执行需要个性化的脚本文件;

根据调度配置,把指定脚本在指定位置执行,功能操作点前后运行指定脚本;

具体地,

调度文件:GroovyDispatcher.groovy

调度文件关键方法:initInterceptorMethod

配置方法:

initInterceptorMethod方法会返回一个键值对形式对象,key为目标方法的全路径,value为GroovyHandlerBean对象,里面包含拦截位置、执行的脚本名、执行方法、脚本路径

GroovyHandlerBean groovyHandlerBean=new GroovyHandlerBean()

groovyHandlerBean.setGroovyPoint("before")//拦截的位置

groovyHandlerBean.setGroovyName("Test.groovy")//待执行的脚本groovyHandlerBean.setGroovyMetod("run")//待执行脚本中的方法

groovyHandlerBean.setReadUrl("http://test.xxynet.com/distributions/groovy/")

beanHashMap.put("com.vsvz.shopguide.contmgn.web.ArticleAction#list",groovyHandlerBean)//方法拦截,key为包#方法;

S6、通过所述文件服务,管理所有脚本文件及调度配置文件;

本发明的工作框架图参阅附图图2所示。

进一步地,所述S3步骤中,配置所述目标项目需要扫表的脚本文件包的过程是:集成脚本文件的各个项目,项目内含有需要插入操作或需要个性化处理的功能操作点,即具体某个方法。。

进一步地,所述目标项目里的功能操作点与所述脚本文件之间进行参数传递,相互并行。

进一步地,所述S6步骤中,所述管理所有脚本文件及调度配置文件的方法包括保存记录调度配置文件、脚本文件。

本发明实施例,对于springmvc项目框架,包括如下步骤:

引入核心jar包;

具体地,

compile('com.groovyaop:scriptpond:0.1.20200908120613')

注册MethodInterceptorConfig配置;

配置目标项目需要扫表的包、文件服务地址;

具体地,

#需要扫描的包

groovy.execution=execution(com.vsvz.shopguide.*.web..*.*(..))

||execution(*com.vsvz.api..*.*(..))

#脚本文件方法的文件服务地址

groovy.script_dispatcher_url=http://test.xxynet.com/distributions/groovy/。

本发明还提供一种插件化脚本编程的方法的系统,其特征在于,包括:

目标项目模块:用于抽离出所需功能操作点,配置目标项目需要扫表的包、文件服务地址;目标项目开启扫描,配置接口文件,识别目标项目里的功能操作点;

优选地,目标项目开启扫描,配置applicationContext.xml,和/或注册MethodInterceptorConfig配置;

脚本文件包模块:用于引入核心脚本文件包,识别被引用目标项目的方法;获取调度配置文件;通过调度配置处理个性化定制业务,根据调度配置执行需要个性化的业务脚本;

优选地,引入核心jar包;

文件服务模块:用于保存记录调度配置文件、执行的脚本文件,文件随时上传,随时编辑。

本发明有益效果是:提高代码的标准化、规范化;在不改变原有业务和代码的同时,通过编写脚本的形式用插件的方式集成进来,每个不同业务的应用通过不同脚本动态的发布,既不影响原来应用使用,又能不停机的发布新功能,且服务端只有一个项目,大幅提升了对产品多样性的支持;加快了产品快速更新迭代;增加了个性化定制能力,扩大了产品的宽度。

本发明实施例还提供了一种计算机设备,该计算机设备可集成本发明实施例提供的插件化脚本编程的方法;附图图3是本发明实施例提供的一种计算机设备的结构示意图;参阅图3所示,该计算机设备包括:输入装置33、输出装置34、存储器32和处理器31;所述存储器32,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器31执行,使得所述一个或多个处理器31实现如上述实施例提供的插件化脚本编程的控制方法;其中输入装置33、输出装置34、存储器32和处理器31可以通过总线或者其他方式连接,图3中以通过总线连接为例。

存储器32作为一种计算设备可读写存储介质,可用于存储软件程序、计算机可执行程序,如本发明实施例所述的一种插件化脚本编程的控制方法对应的程序指令;存储器32可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等;此外,存储器32可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件;在一些实例中,存储器32可进一步包括相对于处理器31远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置33可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入;输出装置34可包括显示屏等显示设备。

处理器31通过运行存储在存储器32中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的插件化脚本编程的方法。

上述提供的计算机设备可用于执行上述实施例提供的插件化脚本编程的方法,具备相应的功能和有益效果。

本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的一种插件化脚本编程的方法,存储介质是任何的各种类型的存储器设备或存储设备,存储介质包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等;存储介质可以还包括其它类型的存储器或其组合;另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统;第二计算机系统可以提供程序指令给第一计算机用于执行。存储介质包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上实施例所述的插件化脚本编程的方法,还可以执行本发明任意实施例所提供的插件化脚本编程的方法。

至此,已经结合附图所示的优选实施方式描述了本发明的技术方案,但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

以上所述仅为本发明的优选实施例,并不用于限制本发明;对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种插件化脚本编程的方法及系统
  • 一种应用程序插件化的方法、系统以及相关装置
技术分类

06120112554367