CN108762809A - 软件功能扩展方法、装置、计算机设备及存储介质 - Google Patents
软件功能扩展方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN108762809A CN108762809A CN201810508798.9A CN201810508798A CN108762809A CN 108762809 A CN108762809 A CN 108762809A CN 201810508798 A CN201810508798 A CN 201810508798A CN 108762809 A CN108762809 A CN 108762809A
- Authority
- CN
- China
- Prior art keywords
- processing logic
- script
- software
- code
- event
- 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 45
- 238000012545 processing Methods 0.000 claims abstract description 244
- 238000013515 script Methods 0.000 claims abstract description 163
- 238000003780 insertion Methods 0.000 claims abstract description 9
- 230000037431 insertion Effects 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 86
- 238000004590 computer program Methods 0.000 claims description 13
- 238000012216 screening Methods 0.000 claims description 5
- 238000012986 modification Methods 0.000 abstract description 5
- 230000004048 modification Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Library & Information Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种软件功能扩展方法、装置、计算机设备及存储介质。所述方法包括:根据软件界面中原有处理逻辑对应代码设定埋点位置,其中,所述埋点位置为新增处理逻辑对应脚本的插入位置,所述新增处理逻辑对应脚本为软件扩展功能所对应的脚本;在所述埋点位置处,获取新增处理逻辑对应脚本需处理的数据所对应的对象;将获取的对象传入到新增处理逻辑对应脚本中;在所述脚本处理完成后,将所述对象返回至原有处理逻辑对应代码中。本发明实施例实现在不修改原有处理逻辑对应代码的基础上对软件功能进行扩展,保持了原有代码的完整性;而且,可以随时对软件进行修改同时随时看到修改结果,提高了软件开发的效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种软件功能扩展方法、装置、计算机设备及存储介质。
背景技术
在软件开发如开发后期的过程中或者在软件后期维护的过程中,若用户的需求改变,在原有处理逻辑不满足用户需求的情况下,那么可能会增加新的处理逻辑。同时会存在不同用户对该软件的需求不一致的情况,如此需要新增的处理逻辑也不相同。若在原有处理逻辑对应代码内进行修改,以添加新的处理逻辑对应脚本,则需要大量的开发和测试成本,同时也破坏了原有处理逻辑对应代码的完整性。如需要对提交的数据做一些自定义检查或者过滤,若在原有的提交事件的处理逻辑对应代码内添加进行检查或者过滤的处理逻辑对应代码,若添加的进行检查或者过滤的处理逻辑对应代码出现问题,可能会导致整个系统无法正常运行,开发的效率较低,同时破坏了原有代码的完整性。因此需要一个无需修改原有处理逻辑对应代码的方案来实现新增处理逻辑的功能,以减少开发成本,提高开发效率。
发明内容
本发明实施例提供一种软件功能扩展方法、装置、计算机设备及存储介质,可以在不修改原有处理逻辑的基础上对软件功能进行扩展,保持原有代码的完整性。
第一方面,本发明实施例提供了一种软件功能扩展方法,该方法包括:
根据软件界面中原有处理逻辑对应代码设定埋点位置,其中,所述埋点位置为新增处理逻辑对应脚本的插入位置,所述新增处理逻辑对应脚本为软件扩展功能所对应的脚本;在所述埋点位置处,获取所述新增处理逻辑对应脚本需处理的数据所对应的对象;将获取的对象传入到所述新增处理逻辑对应脚本中;在所述脚本处理完成后,将所述对象返回至原有处理逻辑对应代码中。
第二方面,本发明实施例提供了一种软件功能扩展装置,该装置包括用于执行上述第一方面所述一种软件功能扩展方法对应的单元。
第三方面,本发明实施例提供了一种计算机设备,所述计算机设备包括存储器,以及与所述存储器相连的处理器;
所述存储器用于存储计算机程序,所述处理器用于运行所述存储器中存储的计算机程序,以执行上述第一方面所述的软件功能扩展方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,实现上述第一方面所述的软件功能扩展方法。
本发明实施例通过在软件界面中进行埋点处理的方式,在埋点处添加软件扩展功能所对应的新增处理逻辑的脚本代码,实现在不修改原有处理逻辑对应代码的基础上对软件功能进行扩展,保持了原有代码的完整性;而且,可以随时对软件进行修改同时随时看到修改结果,而无需等待漫长的产品发布流程,提高了软件开发的效率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种软件功能扩展方法的流程示意图;
图2是本发明实施例提供的一种软件功能扩展方法的子流程示意图;
图3是本发明实施例提供的一种软件功能扩展方法的另一子流程示意图;
图4a是本发明实施例提供的软件界面中所对应的特定事件和添加的触发事件的示意图;
图4b是本发明实施例提供的不同用户组所对应的不同触发事件的示意图;
图5是本发明实施例提供的一种软件功能扩展方法的又一子流程示意图;
图6是本发明实施例提供的一种软件功能扩展装置的示意性框图;
图7是本发明实施例提供的埋点设定单元的示意性框图;
图8是本发明另一实施例提供的埋点设定单元的示意性框图;
图9是本发明实施例提供的传入单元的示意性框图;
图10是本发明实施例提供的一种计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中描述的终端包括但不限于移动电话、膝上型计算机或平板计算机之类的便携式设备。还应当理解的是,在某些实施例中,所述终端还包括非便携式设备,如台式计算机等。以下方法实施例可以应用在任一终端上,该终端以服务器的形式存在。
图1是本发明实施例提供的一种软件功能扩展方法的流程示意图。该方法应用于终端中。该方法包括以下步骤S101-S104。
S101,根据软件界面中原有处理逻辑对应代码设定埋点位置,其中,该埋点位置为新增处理逻辑对应脚本的插入位置,该新增处理逻辑对应脚本为软件扩展功能所对应的脚本。
其中,埋点指的是针对特定用户行为或事件进行捕获、处理和发送的相关技术及其实施过程,一般用来对用户行为数据进行采集。埋点位置是根据用户的需求来设定的,即根据不同用户实现的不同扩展功能来设定,也可以理解为不同扩展功能所对应的埋点位置不同。将设定的埋点位置作为新增处理逻辑对应脚本的插入位置,也就是新增处理逻辑对应脚本的执行位置。其中,新增处理逻辑对应脚本即为软件扩展功能所对应的脚本。
在一实施例中,如图2所示,步骤S101包括以下步骤S201-S202。
S201,将软件界面中原有处理逻辑对应代码进行切片。
根据用户需要实现的扩展功能对原有处理逻辑对应代码进行切片,如根据代码中定义的特定事件来对原有处理逻辑对应代码进行切片,其中,事件指的是可以被控件识别的操作,如按下按钮、双击、点击等操作。特定事件指的是与新增处理逻辑相关的事件。具体地:检测原有处理逻辑对应代码中的特定事件;根据特定事件将原有处理逻辑对应代码进行切片。如可以根据事件的事件名称来检测特定事件。若特定事件只有一个,将该特定事件之前的代码作为一部分,将特定事件对应的代码作为一部分,将特定事件之后对应的代码作为一部分;若有多个特定事件,将上一个特定事件之后对应的代码和当前特定事件之前对应的代码作为一部分,将当前特定事件对应的代码作为一部分,将当前特定事件之后对应的代码和下一个特定事件之前对应的代码作为一部分。需要注意的是,这里的切片并不是真的把原有处理逻辑对应代码从物理上完全分开,而是一种逻辑上的划分,这种划分并不会改变原有处理逻辑。
S202,根据切片位置确定埋点位置。
具体地,在本实施例中,将切片位置作为埋点位置。如若原有处理逻辑中的特定事件只有一个,那么切片位置在该特定事件之前和该特定事件之后,即有两个切片位置。也可以理解为,将片与片之间的位置作为埋点位置,在片与片之间插入新增处理逻辑对应脚本,也可以理解为新增处理逻辑对应脚本要在特定事件之前和/或之后来完成。
在其他实施例中,也可以根据其他特定函数来对原有处理逻辑对应代码进行切片,其中,特定函数指的是与新增处理逻辑相关的函数。
在一实施例中,如图3所示,步骤S101包括以下步骤S301-S303。
S301,检测软件界面中原有处理逻辑对应代码中的特定事件,其中,该特定事件指的是与新增处理逻辑相关的事件。可根据事件的事件名称检测该特定事件。
S302,添加该特定事件前对应的触发事件和/或该特定事件后对应的触发事件。如特定事件为提交事件,那么该特定事件前对应的触发事件为提交前事件,该特定事件后对应的触发事件为提交后事件。其中,可以在该软件界面对应的配置文件中添加该特定事件前对应的触发事件和/或该特定事件后对应的触发事件,也可以直接在软件界面对应的代码中添加该特定事件前对应的触发事件和/或该特定事件后对应的触发事件。需要注意的是,该实施例的前提是,软件界面中原有处理逻辑对应代码中并没有用到该特定事件前对应的触发事件和/或该特定事件后对应的触发事件。
S303,将该特定事件前对应的触发事件和/或该特定事件后对应的触发事件作为埋点位置。可以理解地,将软件扩展功能所对应的新增处理逻辑对应脚本插入到该特定事件前对应的触发事件和/或该特定事件后对应的触发事件中。
在一些实施例中,若一个软件界面中存在有不同用户组,针对不同用户组看到的同一个软件界面上的信息是不同的。对应地,步骤S301包括:检测软件界面中原有处理逻辑对应代码中不同用户组所对应的事件;从不同用户组所对应的事件中筛选出不同用户组所对应的特定事件,其中,将不同用户组所对应的特定事件作为不同的特定事件。可以理解地,在同一软件界面中不同用户组所对应的事件可能有多个,从多个对应的事件中筛选出不同用户组所对应的特定事件。如多个对应的事件中与新增处理逻辑对应的事件是提交事件,同样对于提交事件,不同用户组所对应的提交事件也不相同,从提交事件中筛选出与新增处理逻辑相关的用户组所对应的提交事件作为特定事件。与新增处理逻辑相关的用户组可以有多个,也可以只有一个,具体与软件扩展的功能有关。
如图4所示,为不同用户组所对应的不同触发事件的示意图。图4a为软件界面中所对应的特定事件和添加的触发事件的示意图。在图4a所示的申请单界面中对应的特定事件为submit,为提交事件,该提交事件在原有处理逻辑对应代码中已经存在,是原始就有的。在配置文件中或者在原有处理逻辑对应代码中添加submit-before和submit-after,submit-before和submit-after分别为提交前事件、提交后事件。提交前事件、提交后事件是新增的触发事件。图4b对应的是不同用户组所对应的不同触发事件的示意图。图4b是在软件处于编辑状态时显示的。其中,不同机构中涉及到不同的角色,一个机构和一个角色对应一个用户组,不同用户组所对应的是不同的触发事件。每个用户组可以选择对应的触发事件,在新增处理逻辑对应的代码中增加对应触发事件的代码,以完成软件功能扩展。
S102,在埋点位置处,获取新增处理逻辑对应脚本需处理的数据所对应的对象。
根据用户的需求来确定新增处理逻辑对应脚本要完成的扩展功能,根据要完成的扩展功能确定新增处理逻辑对应脚本需处理的数据,获取新增处理逻辑对应脚本需处理的数据。具体地,从埋点位置之前的代码中获取新增处理逻辑对应脚本需处理的数据。如若需对用户提交的数据进行自定义检查或者过滤,那么需处理的数据包括用户提交的所有数据。如若需要把注册用户的数据提交到第三方软件,那么需处理的数据包括注册用户涉及的所有数据。需处理的数据在原有处理逻辑对应代码中就已经以对象的方式存在了,获取需处理的数据所对应的对象。
S103,将获取的对象传入到新增处理逻辑对应脚本中。
可以理解地,以对象的方式将需处理的数据传入到新增处理逻辑对应脚本中。其中,新增处理逻辑对应脚本可以使用JavaScript来进行编写。新增处理逻辑对应脚本可以实现用户想要完成的扩展功能。如需对用户提交的数据进行自定义检查或者过滤,那新增处理逻辑对应脚本实现的是自定义检查或者过滤的功能。如需把注册用户的数据提交到第三方软件,那新增处理逻辑对应脚本实现的是把注册用户的数据提交到第三方软件的功能。
在一实施例中,如图5所示,步骤S103包括S501-S503。
S501,引用脚本引擎。其中,脚本引擎可以使用V8引擎。V8引擎是Google Chrome浏览器内置的JavaScript脚本引擎。它把JavaScript脚本直接编译成机器码运行,比起传统的“中间代码+解释器”的引擎,大大提高了脚本的执行速度。引用V8引擎之前,需要先下载并安装V8引擎,在环境变量path下添加V8引擎安装目录路径,添加环境变量的目的是为了方便引用V8引擎。若没有在环境变量path下添加V8引擎安装目录路径,那么在引用脚本引擎时需要把V8引擎的整个目录引用进来。添加环境变量的情况下,通过代码:#include"v8.h;using namespace v8",来引用。在其他实施例中,脚本引擎也可以为其他的可以提高脚本执行速度的引擎。
S502,根据脚本引擎形成新增处理逻辑对应脚本。根据脚本引擎形成新增处理逻辑对应脚本,指的是调用脚本引擎中的方法函数来实现新增处理逻辑以形成新增处理逻辑对应脚本。引用脚本引擎后,就可以调用脚本引擎中的函数来实现新增处理逻辑了。以V8引擎为例,根据脚本引擎形成新增处理逻辑对应脚本,包括:创建V8执行上下文,如通过jsContext=Context::New();来创建;获取并添加全局对象,如通过Handle<Object>global=jsContext->Global()来获取全局对象,通过AddObjectToSrcipt(global)来添加全局对象;设置当前上下文,如Context::Scope contextScope(jsContext);获取相应函数对象,如将全局对象通过相应设置形成函数对象;准备相应函数对应的参数,根据对应的函数对象和对应的参数调用函数以完成对应的扩展功能。
S503,将获取的对象作为脚本引擎的对象传入到新增处理逻辑对应脚本中。具体地,通过将获取的对象作为全局对象传入到新增处理逻辑对应脚本中,来实现软件扩展功能。
S104,在新增处理逻辑对应脚本处理完成后,将对象返回至原有处理逻辑对应代码中。
具体地,在新增处理逻辑对应脚本处理完成后,将对象返回给原有处理逻辑对应代码中,包括:在新增处理逻辑对应脚本处理完成后,判断脚本处理结果是否有返回值;若脚本处理结果有返回值,将返回值对应的信息写入软件中,并将对象返回至原有处理逻辑对应代码中;若脚本处理结果没有返回值,则将对象返回至原有处理逻辑对应代码中。可以理解地,将对象返回至原有处理逻辑对应代码中,指的是原有处理逻辑对应代码中继续使用该对象,使用的该对象为经过新增处理逻辑对应脚本处理过的对象。其中,判断脚本处理结果是否有返回值,可以通过判断是否有return等代码来判断。其中,将返回值对应的信息写入软件中,包括:将返回值对应的信息写入到软件界面中,也可以指写入到除软件界面以外的任意文件中,如配置文件、日志文件中。具体地,将返回值对应的信息写入到软件界面中,包括:将返回值对应的信息写入到软件界面对应的超文本标记语言HTML中,以便通过界面展示对应的信息。在软件界面写入返回值对应的信息后,可以立刻展示对应的信息,也可以是在用户主动执行请求查看该信息的操作后,再展示相关信息。
以上实现步骤S102-S104对应的代码是埋点对应的代码,埋点对应的代码包括新增处理逻辑对应脚本。埋点对应的代码插入到埋点位置处。如埋点位置对应的是特定事件前对应的触发事件,埋点对应的代码写在特定事件前对应的触发事件中。埋点对应的代码也可以理解为新增处理逻辑所对应的完整代码。
埋点对应的代码可以实现很多软件的扩展功能。如对需处理的数据进行验证,验证时可以通过第三方接口获取数据来进行验证等;如可以在原有处理逻辑处理结果的基础上添加数据,例如可以将验证的结果加入到页面中,譬如写完联系人时,可以直接带出联系人地址的信息,如此就无需用户再填写联系人地址信息;也可以对原有处理逻辑的处理结果进行修改;还可以将原有处理逻辑对应代码中的数据提交到第三方平台,如在用户信息的界面上,需要填写用户信息,某天接收到上级的要求,需要将填写的用户信息提交到第三方平台,那么通过该方法,可以将用户填写的信息提交到第三方平台。
本发明实施例通过埋点的方式,在埋点处添加埋点对应的代码,由于埋点对应的代码可以实现很多扩展功能,如此可以在不修改原有处理逻辑对应代码的基础上对软件功能进行扩展,保持了原有代码的完整性;而且,运维人员可以根据不同客户的需求,随时对软件进行修改同时随时看到修改结果,而无需等待漫长的软件产品发布流程。
图6是本发明实施例提供的一种软件功能扩展装置的示意性框图。该装置应用于终端中。如图6所示,该装置60包括埋点设定单元601、获取单元602、传入单元603、返回单元604。
埋点设定单元601,用于根据软件界面中原有处理逻辑对应代码设定埋点位置,其中,该埋点位置为新增处理逻辑对应脚本的插入位置,该新增处理逻辑对应脚本为软件扩展功能所对应的脚本。
埋点位置是根据用户的需求来设定的,即根据不同用户实现的不同扩展功能来设定,也可以理解为不同扩展功能所对应的埋点位置不同。将设定的埋点位置作为新增处理逻辑对应脚本的插入位置,也就是新增处理逻辑对应脚本的执行位置。其中,新增处理逻辑对应脚本即为软件扩展功能所对应的脚本。
在一实施例中,如图7所示,埋点设定单元601包括切片单元701、埋点确定单元702。
切片单元701,用于将软件界面中原有处理逻辑对应代码进行切片。根据用户需要实现的扩展功能对原有处理逻辑对应代码进行切片,如根据代码中定义的特定事件来对原有处理逻辑对应代码进行切片,其中,事件指的是可以被控件识别的操作,如按下按钮、双击、点击等操作。特定事件指的是与新增处理逻辑相关的事件。具体地:检测原有处理逻辑对应代码中的特定事件;根据特定事件将原有处理逻辑对应代码进行切片。如可以根据事件的事件名称来检测特定事件。若特定事件只有一个,将该特定事件之前的代码作为一部分,将特定事件对应的代码作为一部分,将特定事件之后对应的代码作为一部分;若有多个特定事件,将上一个特定事件之后对应的代码和当前特定事件之前对应的代码作为一部分,将当前特定事件对应的代码作为一部分,将当前特定事件之后对应的代码和下一个特定事件之前对应的代码作为一部分。需要注意的是,这里的切片并不是真的把原有处理逻辑对应代码从物理上完全分开,而是一种逻辑上的划分,这种划分并不会改变原有处理逻辑。
埋点确定单元702,用于根据切片位置确定埋点位置。具体地,在本实施例中,将切片位置作为埋点位置。如若原有处理逻辑对应代码中的特定事件只有一个,那么切片位置在该特定事件之前和该特定事件之后,即有两个切片位置。也可以理解为,将片与片之间的位置作为埋点位置,在片与片之间插入新增处理逻辑对应脚本,也可以理解为新增处理逻辑对应脚本要在特定事件之前和/或之后来完成。
在其他实施例中,也可以根据其他特定函数来对原有处理逻辑对应代码进行切片,其中,特定函数指的是与新增处理逻辑相关的函数。
在一实施例中,如图8所示,埋点设定单元601包括事件检测单元801、事件添加单元802、埋点确定单元803。其中,
事件检测单元801,用于检测软件界面中原有处理逻辑对应代码中的特定事件,其中,该特定事件指的是与新增处理逻辑相关的事件。可根据事件的事件名称检测该特定事件。
事件添加单元802,用于添加该特定事件前对应的触发事件和/或该特定事件后对应的触发事件。如特定事件为提交事件,那么该特定事件前对应的触发事件为提交前事件,该特定事件后对应的触发事件为提交后事件。其中,可以在该软件界面对应的配置文件中添加该特定事件前对应的触发事件和/或该特定事件后对应的触发事件,也可以直接在软件界面对应的代码中添加该特定事件前对应的触发事件和/或该特定事件后对应的触发事件。需要注意的是,该实施例的前提是,软件界面中原有处理逻辑对应代码中并没有用到该特定事件前对应的触发事件和/或该特定事件后对应的触发事件。
埋点确定单元803,用于将该特定事件前对应的触发事件和/或该特定事件后对应的触发事件作为埋点位置。可以理解地,将软件扩展功能所对应的新增处理逻辑对应脚本插入到该特定事件前对应的触发事件和/或该特定事件后对应的触发事件中。
在一些实施例中,若一个软件界面中存在有不同用户组,针对不同用户组看到的同一个软件界面上的信息是不同的。对应地,事件检测单元801,用于检测软件界面中原有处理逻辑对应代码中不同用户组所对应的事件;从不同用户组所对应的事件中筛选出不同用户组所对应的特定事件,其中,将不同用户组所对应的特定事件作为不同的特定事件。可以理解地,在统一软件界面中不同用户组所对应的事件可能有多个,从多个对应的事件中筛选出不同用户组所对应的特定事件。如多个对应的事件中与新增处理逻辑对应的事件是提交事件,同样对于提交事件,不同用户组所对应的提交事件也不相同,从提交事件中筛选出与新增处理逻辑相关的用户组所对应的提交事件作为特定事件。与新增处理逻辑相关的用户组可以有多个,也可以只有一个,具体与软件扩展的功能有关。
获取单元602,用于在埋点位置处,获取新增处理逻辑对应脚本需处理的数据所对应的对象。
根据用户的需求来确定新增处理逻辑对应脚本要完成的扩展功能,根据要完成的扩展功能确定新增处理逻辑对应脚本需处理的数据,获取新增处理逻辑对应脚本需处理的数据。具体地,从埋点位置之前的代码中获取新增处理逻辑对应脚本需处理的数据。如若需对用户提交的数据进行自定义检查或者过滤,那么需处理的数据包括用户提交的所有数据。如若需要把注册用户的数据提交到第三方软件,那么需处理的数据包括注册用户涉及的所有数据。需处理的数据在原有处理逻辑对应代码中就已经以对象的方式存在了,获取需处理的数据所对应的对象。
传入单元603,用于将获取的对象传入到新增处理逻辑对应脚本中。
可以理解地,以对象的方式将需处理的数据传入到新增处理逻辑对应脚本中。其中,新增处理逻辑可以使用JavaScript来进行编写,以形成对应的脚本。新增处理逻辑对应脚本可以实现用户想要完成的扩展功能。如需对用户提交的数据进行自定义检查或者过滤,那新增处理逻辑对应脚本实现的是自定义检查或者过滤的功能。如需把注册用户的数据提交到第三方软件,那新增处理逻辑对应脚本实现的是把注册用户的数据提交到第三方软件的功能。
在一实施例中,如图9所示,传入单元603包括引用单元901、脚本形成单元902、对象传入单元903。其中,
引用单元901,用于引用脚本引擎。其中,脚本引擎可以使用V8引擎。V8引擎是Google Chrome浏览器内置的JavaScript脚本引擎。它把JavaScript脚本直接编译成机器码运行,比起传统的“中间代码+解释器”的引擎,大大提高了脚本的执行速度。引用V8引擎之前,需要先下载并安装V8引擎,在环境变量path下添加V8引擎安装目录路径,添加环境变量的目的是为了方便引用V8引擎。若没有在环境变量path下添加V8引擎安装目录路径,那么在引用脚本引擎时需要把V8引擎的整个目录引用进来。添加环境变量的情况下,通过代码:#include"v8.h;using namespace v8",来引用。在其他实施例中,脚本引擎也可以为其他的可以提高脚本执行速度的引擎。
脚本形成单元902,用于根据脚本引擎形成新增处理逻辑对应脚本。根据脚本引擎形成新增处理逻辑对应脚本,指的是调用脚本引擎中的方法函数来实现新增处理逻辑以形成新增处理逻辑对应脚本。引用脚本引擎后,就可以调用脚本引擎中的函数来实现新增处理逻辑了。以V8引擎为例,根据脚本引擎形成新增处理逻辑对应脚本,包括:创建V8执行上下文,如通过jsContext=Context::New();来创建;获取并添加全局对象,如通过Handle<Object>global=jsContext->Global()来获取全局对象,通过AddObjectToSrcipt(global)来添加全局对象;设置当前上下文,如Context::Scope contextScope(jsContext);获取相应函数对象,如将全局对象通过相应设置形成函数对象;准备相应函数对应的参数,根据对应的函数对象和对应的参数调用函数以完成对应的扩展功能。
对象传入单元903,用于将获取的对象作为脚本引擎的对象传入到新增处理逻辑对应脚本中。具体地,通过将获取的对象作为全局对象传入到新增处理逻辑对应脚本中,来实现软件扩展功能。
返回单元604,用于在新增处理逻辑对应脚本处理完成后,将对象返回至原有处理逻辑对应代码中。
具体地,返回单元604包括结果检测单元、对象返回单元、写入单元。其中,结果检测单元,用于在新增处理逻辑对应脚本处理完成后,检测脚本处理结果是否有返回值。写入单元,用于若脚本处理结果有返回值,将返回值对应的信息写入软件中。对象返回单元,用于对象返回至原有处理逻辑对应代码中。对象返回单元,还用于若脚本处理结果没有返回值,则将对象返回至原有处理逻辑对应代码中。可以理解地,将对象返回至原有处理逻辑对应代码中,指的是原有处理逻辑对应代码中继续使用该对象,使用的该对象为经过新增处理逻辑对应脚本处理过的对象。其中,写入单元中将返回值对应的信息写入到软件界面中,也可以指写入到除软件界面以外的任意文件中,如配置文件、日志文件中。具体地,写入单元,用于将返回值对应的信息写入到软件界面对应的超文本标记语言HTML中,以便通过界面展示对应的信息。在软件界面写入返回值对应的信息后,可以立刻展示对应的信息,也可以是在用户主动执行请求查看该信息的操作后,再展示相关信息。
上述装置中的获取单元502、传入单元503、返回单元504所对应的代码是埋点对应的代码,所完成的功能是埋点位置处需要完成的功能。
埋点对应的代码可以实现很多软件的扩展功能。如对需处理的数据进行验证,验证时可以通过第三方接口获取数据来进行验证等;如可以在原有处理逻辑对应代码处理结果的基础上添加数据,例如可以将验证的结果加入到页面中,譬如写完联系人时,可以直接带出联系人地址的信息,如此就无需用户再填写联系人地址信息;也可以对原有处理逻辑对应代码的处理结果进行修改;还可以将原有处理逻辑对应代码中的数据提交到第三方平台,如在用户信息的界面上,需要填写用户信息,某天接收到上级的要求,需要将填写的用户信息提交到第三方平台,那么通过该方法,可以将用户填写的信息提交到第三方平台。
本发明实施例通过埋点的方式,在埋点处添加埋点对应的代码,由于埋点对应的代码可以实现很多扩展功能,如此可以在不修改原有处理逻辑对应代码的基础上对软件功能进行扩展,保持了原有代码的完整性;而且,运维人员可以根据不同客户的需求,随时对软件进行修改同时随时看到修改结果,而无需等待漫长的软件产品发布流程。
上述装置实施例的实现过程和达到的有益效果可参看对应的方法实施例对应的描述。
上述装置可以实现为一种计算机程序的形式,计算机程序可以在如图10所示的计算机设备上运行。
图10为本发明实施例提供的一种计算机设备的示意性框图。该设备100包括通过系统总线101连接的处理器102、存储器和网络接口103,其中,存储器可以包括非易失性存储介质104和内存储器105。
该非易失性存储介质104可存储操作系统1041和计算机程序1042。该计算机程序1042被执行时,可使得处理器102执行一种软件功能扩展方法。该处理器102用于提供计算和控制能力,支撑整个设备100的运行。该内存储器105为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器102执行时,可使得处理器102执行一种软件功能扩展方法。该网络接口103用于进行网络通信,如接收消息等。本领域技术人员可以理解,图100中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的设备100的限定,具体的设备100可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器102用于运行存储在存储器中的计算机程序,以实现如下步骤:
根据软件界面中原有处理逻辑对应代码设定埋点位置,其中,所述埋点位置为新增处理逻辑对应脚本的插入位置,所述新增处理逻辑对应脚本为软件扩展功能所对应的脚本;在所述埋点位置处,获取所述新增处理逻辑对应脚本需处理的数据所对应的对象;将获取的对象传入到所述新增处理逻辑对应脚本中;在所述脚本处理完成后,将所述对象返回至原有处理逻辑对应代码中。
在一实施例中,所述处理器102在执行所述将获取的对象传入到所述新增处理逻辑对应脚本中时,具体执行:
引用JavaScript脚本引擎;根据JavaScript脚本引擎形成新增处理逻辑对应脚本;将获取的对象作为参数传入到所述新增处理逻辑对应脚本中。
在一实施例中,所述处理器102在执行所述根据软件界面中原有处理逻辑对应代码设定埋点位置时,具体执行:
将软件界面中原有处理逻辑对应代码进行切片;根据切片位置确定埋点位置。
在一实施例中,所述处理器102在执行所述根据软件界面中原有处理逻辑对应代码设定埋点位置时,具体执行:
检测软件界面中原有处理逻辑对应代码中的特定事件,其中,所述特定事件指的是与新增处理逻辑相关的事件;添加所述特定事件前对应的触发事件或者所述特定事件后对应的触发事件;将所述触发事件作为埋点位置。
在一实施例中,若一个软件界面中存在有不同用户组,所述处理器102在执行所述检测软件界面中原有处理逻辑对应代码中的特定事件时,具体执行:
检测软件界面中原有处理逻辑对应代码中不同用户组所对应的事件;从不同用户组所对应的事件中筛选出不同用户组所对应的特定事件,其中,将不同用户组所对应的特定事件作为不同的特定事件。
在一实施例中,所述处理器102在执行所述在所述脚本处理完成后,将所述对象返回至原有处理逻辑对应代码中时,具体执行:
在所述脚本处理完成后,检测脚本处理结果是否有返回值;若脚本处理结果有返回值,将所述返回值对应的信息写入软件中,并将所述对象返回至原有处理逻辑对应代码中;若脚本处理结果没有返回值,将所述对象返回至原有处理逻辑对应代码中。
在一实施例中,所述处理器102在执行所述将所述返回值对应的信息写入软件中时,具体执行:
将所述返回值对应的信息写入到软件界面对应的超文本标记语言HTML中,以便通过界面展示对应的信息。
应当理解,在本发明实施例中,所称处理器102可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时实现以下步骤:
根据软件界面中原有处理逻辑对应代码设定埋点位置,其中,所述埋点位置为新增处理逻辑对应脚本的插入位置,所述新增处理逻辑对应脚本为软件扩展功能所对应的脚本;在所述埋点位置处,获取所述新增处理逻辑对应脚本需处理的数据所对应的对象;将获取的对象传入到所述新增处理逻辑对应脚本中;在所述脚本处理完成后,将所述对象返回至原有处理逻辑对应代码中。
在一实施例中,所述处理器在执行所述将获取的对象传入到所述新增处理逻辑对应脚本中时,具体实现:
引用JavaScript脚本引擎;根据JavaScript脚本引擎形成新增处理逻辑对应脚本;将获取的对象作为参数传入到所述新增处理逻辑对应脚本中。
在一实施例中,所述处理器在执行所述根据软件界面中原有处理逻辑对应代码设定埋点位置时,具体实现:
将软件界面中原有处理逻辑对应代码进行切片;根据切片位置确定埋点位置。
在一实施例中,所述处理器在执行所述根据软件界面中原有处理逻辑对应代码设定埋点位置时,具体实现:
检测软件界面中原有处理逻辑对应代码中的特定事件,其中,所述特定事件指的是与新增处理逻辑相关的事件;添加所述特定事件前对应的触发事件或者所述特定事件后对应的触发事件;将所述触发事件作为埋点位置。
在一实施例中,若一个软件界面中存在有不同用户组,所述处理器在执行所述检测软件界面中原有处理逻辑对应代码中的特定事件时,具体实现:
检测软件界面中原有处理逻辑对应代码中不同用户组所对应的事件;从不同用户组所对应的事件中筛选出不同用户组所对应的特定事件,其中,将不同用户组所对应的特定事件作为不同的特定事件。
在一实施例中,所述处理器在执行所述在所述脚本处理完成后,将所述对象返回至原有处理逻辑对应代码中时,具体实现:
在所述脚本处理完成后,检测脚本处理结果是否有返回值;若脚本处理结果有返回值,将所述返回值对应的信息写入软件中,并将所述对象返回至原有处理逻辑对应代码中;若脚本处理结果没有返回值,将所述对象返回至原有处理逻辑对应代码中。
在一实施例中,所述处理器在执行所述将所述返回值对应的信息写入软件中时,具体实现:
将所述返回值对应的信息写入到软件界面对应的超文本标记语言HTML中,以便通过界面展示对应的信息。
所述计算机可读存储介质可以是前述任一实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述计算机可读存储介质也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡等。进一步地,所述计算机可读存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置、设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种软件功能扩展方法,其特征在于,所述方法包括:
根据软件界面中原有处理逻辑对应代码设定埋点位置,其中,所述埋点位置为新增处理逻辑对应脚本的插入位置,所述新增处理逻辑对应脚本为软件扩展功能所对应的脚本;
在所述埋点位置处,获取所述新增处理逻辑对应脚本需处理的数据所对应的对象;
将获取的对象传入到所述新增处理逻辑对应脚本中;
在所述脚本处理完成后,将所述对象返回至原有处理逻辑对应代码中。
2.根据权利要求1所述的方法,其特征在于,所述将获取的对象传入到所述新增处理逻辑对应脚本中,包括:
引用JavaScript脚本引擎;
根据JavaScript脚本引擎形成新增处理逻辑对应脚本;
将获取的对象作为参数传入到所述新增处理逻辑对应脚本中。
3.根据权利要求1所述的方法,其特征在于,所述根据软件界面中原有处理逻辑对应代码设定埋点位置,包括:
将软件界面中原有处理逻辑对应代码进行切片;
根据切片位置确定埋点位置。
4.根据权利要求1所述的方法,其特征在于,所述根据软件界面中原有处理逻辑对应代码设定埋点位置,包括:
检测软件界面中原有处理逻辑对应代码中的特定事件,其中,所述特定事件指的是与新增处理逻辑相关的事件;
添加所述特定事件前对应的触发事件或者所述特定事件后对应的触发事件;
将所述触发事件作为埋点位置。
5.根据权利要求4所述的方法,其特征在于,若一个软件界面中存在有不同用户组,所述检测软件界面中原有处理逻辑对应代码中的特定事件,包括:
检测软件界面中原有处理逻辑对应代码中不同用户组所对应的事件;
从不同用户组所对应的事件中筛选出不同用户组所对应的特定事件,其中,将不同用户组所对应的特定事件作为不同的特定事件。
6.根据权利要求1所述的方法,其特征在于,所述在所述脚本处理完成后,将所述对象返回至原有处理逻辑对应代码中,包括:
在所述脚本处理完成后,检测脚本处理结果是否有返回值;
若脚本处理结果有返回值,将所述返回值对应的信息写入软件中,并将所述对象返回至原有处理逻辑对应代码中;
若脚本处理结果没有返回值,将所述对象返回至原有处理逻辑对应代码中。
7.根据权利要求6所述的方法,其特征在于,所述将所述返回值对应的信息写入软件中,包括:
将所述返回值对应的信息写入到软件界面对应的超文本标记语言HTML中,以便通过界面展示对应的信息。
8.一种软件功能扩展装置,其特征在于,所述软件功能扩展装置包括用于执行如权利要求1-7任一项所述方法的单元。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器,以及与所述存储器相连的处理器;
所述存储器用于存储计算机程序;所述处理器用于运行所述存储器中存储的计算机程序,以执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810508798.9A CN108762809A (zh) | 2018-05-24 | 2018-05-24 | 软件功能扩展方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810508798.9A CN108762809A (zh) | 2018-05-24 | 2018-05-24 | 软件功能扩展方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108762809A true CN108762809A (zh) | 2018-11-06 |
Family
ID=64005390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810508798.9A Pending CN108762809A (zh) | 2018-05-24 | 2018-05-24 | 软件功能扩展方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108762809A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783140A (zh) * | 2018-12-27 | 2019-05-21 | 远光软件股份有限公司 | 一种统推集成接口差异化的共存处理方法及系统 |
CN111753229A (zh) * | 2020-06-10 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 一种页面配置方法、装置及设备 |
CN112015467A (zh) * | 2020-09-04 | 2020-12-01 | 杭州网易再顾科技有限公司 | 埋点方法、介质、装置和计算设备 |
CN112099824A (zh) * | 2020-08-31 | 2020-12-18 | 通号城市轨道交通技术有限公司 | 地面atp系统软件升级方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094879A (zh) * | 2014-05-23 | 2015-11-25 | 西安中兴新软件有限责任公司 | 软件升级方法及移动终端 |
CN106844217A (zh) * | 2017-01-26 | 2017-06-13 | 网易(杭州)网络有限公司 | 对应用的控件进行埋点的方法及装置、可读存储介质 |
CN107203402A (zh) * | 2017-04-06 | 2017-09-26 | 珠海金山网络游戏科技有限公司 | 一种对运行代码进行热修复的方法 |
CN107562620A (zh) * | 2017-08-24 | 2018-01-09 | 阿里巴巴集团控股有限公司 | 一种埋点自动设置方法和装置 |
CN107784504A (zh) * | 2017-07-31 | 2018-03-09 | 平安科技(深圳)有限公司 | 客户回访事件的生成方法及终端设备 |
CN107894889A (zh) * | 2017-10-16 | 2018-04-10 | 努比亚技术有限公司 | 埋点方法、设备及计算机可读存储介质 |
CN108052334A (zh) * | 2017-12-22 | 2018-05-18 | 平安养老保险股份有限公司 | 页面跳转方法、装置、计算机设备和存储介质 |
-
2018
- 2018-05-24 CN CN201810508798.9A patent/CN108762809A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105094879A (zh) * | 2014-05-23 | 2015-11-25 | 西安中兴新软件有限责任公司 | 软件升级方法及移动终端 |
CN106844217A (zh) * | 2017-01-26 | 2017-06-13 | 网易(杭州)网络有限公司 | 对应用的控件进行埋点的方法及装置、可读存储介质 |
CN107203402A (zh) * | 2017-04-06 | 2017-09-26 | 珠海金山网络游戏科技有限公司 | 一种对运行代码进行热修复的方法 |
CN107784504A (zh) * | 2017-07-31 | 2018-03-09 | 平安科技(深圳)有限公司 | 客户回访事件的生成方法及终端设备 |
CN107562620A (zh) * | 2017-08-24 | 2018-01-09 | 阿里巴巴集团控股有限公司 | 一种埋点自动设置方法和装置 |
CN107894889A (zh) * | 2017-10-16 | 2018-04-10 | 努比亚技术有限公司 | 埋点方法、设备及计算机可读存储介质 |
CN108052334A (zh) * | 2017-12-22 | 2018-05-18 | 平安养老保险股份有限公司 | 页面跳转方法、装置、计算机设备和存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783140A (zh) * | 2018-12-27 | 2019-05-21 | 远光软件股份有限公司 | 一种统推集成接口差异化的共存处理方法及系统 |
CN111753229A (zh) * | 2020-06-10 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 一种页面配置方法、装置及设备 |
CN112099824A (zh) * | 2020-08-31 | 2020-12-18 | 通号城市轨道交通技术有限公司 | 地面atp系统软件升级方法及装置 |
CN112015467A (zh) * | 2020-09-04 | 2020-12-01 | 杭州网易再顾科技有限公司 | 埋点方法、介质、装置和计算设备 |
CN112015467B (zh) * | 2020-09-04 | 2024-05-17 | 杭州网易再顾科技有限公司 | 埋点方法、介质、装置和计算设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10055507B2 (en) | Infinite scrolling | |
JP6488508B2 (ja) | ウェブページのアクセス方法、装置、デバイス及びプログラム | |
JP6129402B2 (ja) | ページスナップショットの作成 | |
CN108762809A (zh) | 软件功能扩展方法、装置、计算机设备及存储介质 | |
US9916390B2 (en) | Managing web browser cache for offline browsing | |
US8346889B1 (en) | Event-driven module loading | |
CN103078945B (zh) | 对浏览器崩溃数据进行处理的方法与系统 | |
CN106547580B (zh) | 挂钩函数的方法、装置、移动终端及存储介质 | |
WO2013106255A1 (en) | Custom browser-side spreadsheet functions | |
CN111813629A (zh) | 一种Web页面的监控数据生成方法、装置及设备 | |
CN107480117B (zh) | 自动化页面表单数据的恢复方法及装置 | |
US20150249675A1 (en) | Browser-based fetch of external libraries | |
US10594764B2 (en) | Request cache to improve web applications performance | |
CN103761241A (zh) | 一种图片数据的上传方法和浏览器 | |
CN111309743A (zh) | 报表推送方法及装置 | |
CN109582889A (zh) | 图片加载方法、装置、计算机设备及存储介质 | |
CN106547485B (zh) | 数据迁移方法及装置 | |
CN106775445B (zh) | 数据迁移方法及装置 | |
CN112667934A (zh) | 动态模拟图展示方法、装置、电子设备和计算机可读介质 | |
CN115495372A (zh) | 一种模拟数据处理方法、装置、设备及介质 | |
US8793663B2 (en) | Smart cache for a server test environment in an application development tool | |
CN113961298A (zh) | 一种页面切换方法、装置、设备及介质 | |
CN108846141B (zh) | 一种离线缓存加载方法及装置 | |
CN113467867A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN113220296A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181106 |
|
RJ01 | Rejection of invention patent application after publication |