CN103294456A - 一种业务插件的自动发布方法和设备 - Google Patents
一种业务插件的自动发布方法和设备 Download PDFInfo
- Publication number
- CN103294456A CN103294456A CN2012100474865A CN201210047486A CN103294456A CN 103294456 A CN103294456 A CN 103294456A CN 2012100474865 A CN2012100474865 A CN 2012100474865A CN 201210047486 A CN201210047486 A CN 201210047486A CN 103294456 A CN103294456 A CN 103294456A
- Authority
- CN
- China
- Prior art keywords
- structure variable
- unit
- variable
- released
- issuing service
- 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
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种业务插件的自动发布方法和设备,该方法包括:获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量;比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;根据比较结果确定是否发布待发布业务插件。本发明实施例中,通过提供一种结构体变量的扫描和比较方式,可检测出所有影响业务插件发布的结构体变量,以保证业务插件能够顺利发布,提高互联网服务的普及率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种业务插件的自动发布方法和设备。
背景技术
随着IM(即时通讯)软件的普及,单一的聊天功能已经不能满足用户多样化的需求,越来越多的公司在IM软件上加载各种互联网业务。例如,QQ软件上承载了大量的互联网业务(如一键进入QQ邮箱和QQ空间等)。需要注意的是,互联网业务的功能是随着IM软件下发给用户的,即需要将互联网业务的功能打包到IM软件的最新版本中,然后发布出去;因此,为了体验新的互联网业务,用户需要下载IM软件的最新版本才能体验这些互联网业务。
在实现本发明的过程中,发明人发现现有技术中至少存在以下问题:
由于新的互联网业务只能打包到IM软件的最新版本中,导致仍在使用老版本的用户无法体验新的互联网业务;而为了体验互联网业务,用户需要下载最新版本的IM软件,影响了用户的使用感受,且不利于互联网业务的推广。
发明内容
本发明实施例提供一种业务插件的自动发布方法和设备,以提高互联网服务的普及率。
为了达到上述目的,本发明实施例提供一种业务插件的自动发布方法,该方法包括:
获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量;
比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;
根据比较结果确定是否发布待发布业务插件。
优选的,所述获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量,包括:
对所述待发布业务插件对应的所有文件进行扫描,获得所述待发布业务插件的结构体变量;以及,对所述已发布业务软件对应的所有文件进行扫描,获得所述已发布业务软件的结构体变量;
其中,所述待发布业务插件和所述已发布业务软件的根是Solution,若干个Project组成了一个Solution,且若干个文件组成了一个Project。
优选的,对文件进行扫描获得结构体变量的过程,进一步包括:
从文件中获得嵌套到指定类别中的结构体变量,并利用DTE自动化模型从文件中获得未被嵌套的结构体变量;
所述嵌套到指定类别中的结构体变量包括以下之一或任意组合:嵌套到类中的结构体变量、嵌套到名字空间中的结构体变量、嵌套到函数中的结构体变量、以及嵌套到结构体变量中的结构体变量。
优选的,所述获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量,之后还包括:
在MySQL数据库的ls_struct表中保存所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,并在所述MySQL数据库的ls_struct_details表中保存所述待发布业务插件的结构体变量的成员以及所述已发布业务软件的结构体变量的成员。
优选的,比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同,包括:
查询ls_struct表,获得所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,所述ls_struct表用于保存结构体变量;
当有结构体变量只为所述待发布业务插件的结构体变量,或者有结构体变量只为所述已发布业务软件的结构体变量时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;
当没有结构体变量只为所述待发布业务插件的结构体变量,且没有结构体变量只为所述已发布业务软件的结构体变量时,则通过查询ls_struct_details表比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;所述ls_struct_details表用于保存结构体变量的成员。
优选的,所述通过查询ls_struct_details表比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同,进一步包括:
查询所述ls_struct_details表,获得所述待发布业务插件的结构体变量的所有成员以及所述已发布业务软件的结构体变量的所有成员;
当有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,或者有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;
当没有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,且没有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则比较所述待发布业务插件的结构体变量的所有成员值与所述已发布业务软件的结构体变量的所有成员值是否相同;
如果有结构体变量的成员值不同,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;否则,确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量相同。
优选的,所述结构体变量的成员包括以下之一或任意组合:
名字name、类型type、位置pos、子位置subpos;
所述subpos用于表示嵌套在内部结构体变量的所有成员位置值;
如果type为成员函数,则name为该成员函数的全名;如果type为成员变量,则name为该成员变量名。
本发明实施例提供一种业务插件的自动发布设备,该设备包括:
获得模块,用于获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量;
比较模块,用于比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;
确定模块,用于根据比较结果确定是否发布待发布业务插件。
优选的,所述获得模块,具体用于对所述待发布业务插件对应的所有文件进行扫描,获得所述待发布业务插件的结构体变量;以及,对所述已发布业务软件对应的所有文件进行扫描,获得所述已发布业务软件的结构体变量;
其中,所述待发布业务插件和所述已发布业务软件的根是Solution,若干个Project组成了一个Solution,且若干个文件组成了一个Project。
优选的,所述获得模块,进一步用于从文件中获得嵌套到指定类别中的结构体变量,并利用DTE自动化模型从文件中获得未被嵌套的结构体变量;
所述嵌套到指定类别中的结构体变量包括以下之一或任意组合:嵌套到类中的结构体变量、嵌套到名字空间中的结构体变量、嵌套到函数中的结构体变量、以及嵌套到结构体变量中的结构体变量。
优选的,还包括:存储模块,用于在获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量之后,在MySQL数据库的ls_struct表中保存所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,并在所述MySQL数据库的ls_struct_details表中保存所述待发布业务插件的结构体变量的成员以及所述已发布业务软件的结构体变量的成员。
优选的,所述比较模块,具体用于查询ls_struct表,获得所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,所述ls_struct表用于保存结构体变量;
当有结构体变量只为所述待发布业务插件的结构体变量,或者有结构体变量只为所述已发布业务软件的结构体变量时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;
当没有结构体变量只为所述待发布业务插件的结构体变量,且没有结构体变量只为所述已发布业务软件的结构体变量时,则通过查询ls_struct_details表比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;所述ls_struct_details表用于保存结构体变量的成员。
优选的,所述比较模块,进一步用于查询所述ls_struct_details表,获得所述待发布业务插件的结构体变量的所有成员以及所述已发布业务软件的结构体变量的所有成员;
当有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,或者有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;
当没有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,且没有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则比较所述待发布业务插件的结构体变量的所有成员值与所述已发布业务软件的结构体变量的所有成员值是否相同;
如果有结构体变量的成员值不同,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;否则,确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量相同。
优选的,所述结构体变量的成员包括以下之一或任意组合:
名字name、类型type、位置pos、子位置subpos;
所述subpos用于表示嵌套在内部结构体变量的所有成员位置值;
如果type为成员函数,则name为该成员函数的全名;如果type为成员变量,则name为该成员变量名。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,通过提供一种结构体变量的扫描和比较方式,可检测出所有影响业务插件发布的结构体变量,以保证业务插件能够顺利发布,提高互联网服务的普及率。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种业务插件的自动发布方法流程示意图;
图2是本发明实施例一中结构体变量的扫描逻辑示意图;
图3是本发明实施例一中ls_struct表和ls_struct_details表的结构示意图;
图4是本发明实施例一中比较待发布业务插件的结构体变量与已发布业务软件的结构体变量是否相同的过程示意图;
图5是本发明实施例二提供的一种业务插件的自动发布设备的结构示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
由于新的互联网业务(新功能和服务)只能打包到业务软件(如IM软件)的最新版本中,导致仍在使用老版本的用户无法体验新的互联网业务;且为了体验互联网业务,用户需要下载最新版本的业务软件,影响了用户的使用感受;基于此,提出了业务插件升级的概念;其中,业务插件为业务软件上承载的各种互联网业务,以二进制DLL(Dynamic Link Library,动态链接库)形式存在;业务插件升级为不随着最新版本的业务软件发布互联网业务,将互联网业务以独立插件DLL形式直接推送到已对外发布的业务软件上。
具体的,为了实现业务插件升级,需要将业务插件(其为待发布业务插件,用于实现新的互联网业务)发布到当前已经发布的业务软件(其为已发布业务软件,为用户当前使用的业务软件,可为老版本的IM软件)上,该方式不需要将新的互联网业务打包到最新版本的业务软件中,且用户可以体验新的互联网业务,从而提升了业务功能的普及速度,为业务的发展提供推动。
进一步的,待发布业务插件的发布需要依赖于导出函数,接口,枚举值和结构体;当待发布业务插件的导出函数与已发布业务软件的导出函数相同,且待发布业务插件的接口与已发布业务软件的接口相同,且待发布业务插件的枚举值与已发布业务软件的枚举值相同,且待发布业务插件的结构体与已发布业务软件的结构体相同时,则可以进行待发布业务插件的发布,实现业务插件升级;否则,不能进行待发布业务插件的发布。
基于此,为了保证待发布业务插件的顺利发布,可开发一个检测工具,通过监控待发布业务插件的导出函数,接口,枚举值和结构体,并和已发布业务软件的导出函数,接口,枚举值和结构体进行比较;继而确定是否可以进行待发布业务插件的发布,以实现业务插件升级。
需要注意的是,对于导出函数,接口,枚举值等的检测和比较过程,本发明实施例中不再赘述,后续以均相同为例进行说明;结构体是构成程序代码的数据类型之一,由多个基本数据类型组成,属于最常用和最为复杂的元素;结构体变量是结构体类型的变量,为构成程序代码的变量类型之一,由多个成员变量组成;如何检测结构体变量,并比较结构体变量是否相同,以判断结构体变量是否影响待发布业务插件的发布,本发明实施例将详细说明。
基于上述分析,本发明实施例一提供一种业务插件的自动发布方法,通过提供一种结构体变量的检测和比较方式,以保证检测到待发布业务插件中的结构体变量以及已发布业务软件中的结构体变量,并对结构体变量进行高效准确的比较,从而确定出是否可以进行待发布业务插件的发布,以实现业务插件升级;如图1所示,该方法包括可以以下步骤:
步骤101,获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量。在实际应用中,可以开发一个检测工具,该检测工具中具有用于获得结构体变量的SnapAddin插件,即可以通过SnapAddin插件扫描待发布业务插件和已发布业务软件,获得待发布业务插件中的所有结构体变量以及已发布业务软件中的所有结构体变量。
本发明实施例中,由于结构体变量和源代码相关,需要通过扫描源代码才能获得结构体变量;且待发布业务插件和已发布业务软件的根是Solution,若干个Project组成一个Solution,若干个文件组成一个Project;因此文件是扫描结构体变量的最小单位,需要依次进行每个文件的扫描,直到所有文件被扫描完毕,获取文件中的结构体变量;具体的,获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量包括:对待发布业务插件对应的所有文件进行扫描,获得待发布业务插件的结构体变量;以及对已发布业务软件对应的所有文件进行扫描,获得已发布业务软件的结构体变量。
本发明实施例中,可以从文件中获得嵌套到指定类别中的结构体变量,并利用DTE自动化模型从文件中获得未被嵌套的结构体变量;其中,该嵌套到指定类别中的结构体变量包括但不限于以下之一或任意组合:嵌套到类中的结构体变量、嵌套到名字空间中的结构体变量、嵌套到函数中的结构体变量、以及嵌套到结构体变量中的结构体变量。
如图2所示,为结构体变量的扫描逻辑示意图,DTE自动化模型提供了一套自动化接口,可利用DTE自动化模型识别简单的结构体变量,获得未被嵌套的结构体变量;在实际应用中,结构体类型非常复杂,结构体变量可嵌套在类,名字空间(NameSpace),函数等复杂代码元素中,且结构体变量本身还可嵌套结构体变量,因此需要在DTE自动化模型的基础上,增加对复杂类型的结构体变量的分析和处理,使得所有结构体变量均可以被扫描到。
上述复杂类型的结构体变量包括:嵌套到类中的结构体变量、嵌套到名字空间中的结构体变量、嵌套到函数中的结构体变量、嵌套到结构体变量中的结构体变量等情况,以及更复杂的三层甚至多层嵌套;在这些情况下,需要进一步的递归分析,以得到简单的结构体变量。
此外,结构体变量本身除了成员变量之外,还可以包含成员函数;且由于结构体成员变量和成员函数略有不同,因此还可以增加一个成员函数处理模块,以对成员函数进行处理,在此不再详加赘述。
综上所述,本发明实施例中,在源代码和DTE自动化模型的基础上,提出了一种结构体变量的扫描方式,可以检测出所有影响业务插件升级的结构体变量,保证业务插件能够顺利实现跨版本升级,提高互联网业务的普及率。
步骤102,比较待发布业务插件的结构体变量与已发布业务软件的结构体变量是否相同。在实际应用中,可以开发一个检测工具,该检测工具中具有用于比较结构体变量的CodeReporter插件,即通过CodeReporter插件比较待发布业务插件的结构体变量与已发布业务软件的结构体变量是否相同。
本发明实施例中,在获得了待发布业务插件的结构体变量以及已发布业务软件的结构体变量之后,需要将待发布业务插件的结构体变量以及已发布业务软件的结构体变量存储到MySQL数据库中。
为了加快比较效率,简化比较流程,且考虑到结构体变量的情况,本发明实施例的一种优选实施方式中,如图3所示,可以设计ls_struct表(用于保存结构体变量)和ls_struct_details表(用于保存结构体变量的所有成员),并在MySQL数据库的ls_struct表中保存待发布业务插件的结构体变量以及已发布业务软件的结构体变量,在MySQL数据库的ls_struct_details表中保存待发布业务插件的结构体变量的成员以及已发布业务软件的结构体变量的成员。
需要说明的是,该结构体变量的成员包括但不限于以下之一或任意组合:名字(name)、类型(type)、位置(pos)、子位置(subpos);其中,为了解决结构体变量嵌套的问题,引入了subpos这个成员,该subpos用于表示嵌套在内部结构体变量的所有成员位置值,例如,如果无嵌套情况,则该值为0(实际应用中可任意选择);此外,如果type为成员函数,则name为该成员函数的全名(由函数返回值,函数名,所有参数拼接起来组成的特殊字符串);如果type为成员变量,则name为该成员变量名。
本步骤中,如图4所示,比较待发布业务插件的结构体变量与已发布业务软件的结构体变量是否相同的过程,具体包括:
查询ls_struct表,获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量;并逐一比较获得的待发布业务插件的结构体变量与已发布业务软件的结构体变量。
当有结构体变量只为待发布业务插件的结构体变量时,则说明待发布业务插件中增加了结构体变量,该情况下确定待发布业务插件的结构体变量与已发布业务软件的结构体变量不同,结束比较过程;或者,当有结构体变量只为已发布业务软件的结构体变量时,则说明待发布业务插件中删除了结构体变量,该情况下确定待发布业务插件的结构体变量与已发布业务软件的结构体变量不同,结束比较过程。
当没有结构体变量只为待发布业务插件的结构体变量,且没有结构体变量只为已发布业务软件的结构体变量时,则通过查询ls_struct_details表比较待发布业务插件的结构体变量与已发布业务软件的结构体变量是否相同。
具体的,查询ls_struct_details表,获得待发布业务插件的结构体变量的所有成员以及已发布业务软件的结构体变量的所有成员;并逐一比较获得的待发布业务插件的结构体变量的所有成员以及已发布业务软件的结构体变量的所有成员是否相同,
当有结构体变量的成员只为待发布业务插件的结构体变量的成员时,则说明待发布业务插件中增加了结构体变量的成员,该情况下确定待发布业务插件的结构体变量与已发布业务软件的结构体变量不同,结束比较过程;或者,当有结构体变量的成员只为已发布业务软件的结构体变量的成员时,则说明待发布业务插件中删除了结构体变量的成员,该情况下确定待发布业务插件的结构体变量与已发布业务软件的结构体变量不同,结束比较过程。
当没有结构体变量的成员只为待发布业务插件的结构体变量的成员,且没有结构体变量的成员只为已发布业务软件的结构体变量的成员时,则比较待发布业务插件的结构体变量的所有成员值与已发布业务软件的结构体变量的所有成员值是否相同;如果有结构体变量的成员值不同,则确定待发布业务插件的结构体变量与已发布业务软件的结构体变量不同,结束比较过程;如果所有结构体变量的成员值相同,则确定待发布业务插件的结构体变量与已发布业务软件的结构体变量相同,结束比较过程。
综上所述,本发明实施例中,通过将待发布业务插件的结构体变量和已发布业务软件的结构体变量存储在MySQL数据库中;并进一步通过ls_struct表保存结构体变量,以及通过ls_struct_details表保存结构体变量的所有成员,从而基于此提出了一种结构体变量的比较方式,可以比较出结构体变量是否相同,以保证业务插件能够顺利实现跨版本升级,提高互联网业务的普及率。
步骤103,根据比较结果确定是否发布待发布业务插件,实现业务插件升级。其中,当比较结构为待发布业务插件的结构体变量与已发布业务软件的结构体变量相同时,则确定可以发布待发布业务插件,实现业务插件升级;当比较结构为待发布业务插件的结构体变量与已发布业务软件的结构体变量不同不同时,则确定不可以发布待发布业务插件,无法实现业务插件升级。
进一步的,在确定了是否可以发布待发布业务插件之后,可以输出最后的结果邮件,以给出业务插件是否能够升级的判断。
综上所述,本发明实施例中,通过提供一种结构体变量的扫描和比较方式,可检测出所有影响业务插件发布的结构体变量,以保证业务插件能够顺利发布,提高互联网服务的普及率。
实施例二
基于与上述方法同样的发明构思,本发明实施例中还提供了一种业务插件的自动发布设备,如图5所示,该设备包括:
获得模块51,用于获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量;
比较模块52,用于比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;
确定模块53,用于根据比较结果确定是否发布待发布业务插件。
所述获得模块51,具体用于对所述待发布业务插件对应的所有文件进行扫描,获得所述待发布业务插件的结构体变量;以及,对所述已发布业务软件对应的所有文件进行扫描,获得所述已发布业务软件的结构体变量;其中,所述待发布业务插件和所述已发布业务软件的根是Solution,若干个Project组成了一个Solution,且若干个文件组成了一个Project。
所述获得模块51,进一步用于从文件中获得嵌套到指定类别中的结构体变量,并利用DTE自动化模型从文件中获得未被嵌套的结构体变量;所述嵌套到指定类别中的结构体变量包括以下之一或任意组合:嵌套到类中的结构体变量、嵌套到名字空间中的结构体变量、嵌套到函数中的结构体变量、以及嵌套到结构体变量中的结构体变量。
该设备还包括:存储模块54,用于在获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量之后,在MySQL数据库的ls_struct表中保存所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,并在所述MySQL数据库的ls_struct_details表中保存所述待发布业务插件的结构体变量的成员以及所述已发布业务软件的结构体变量的成员。
所述比较模块52,具体用于查询ls_struct表,获得所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,所述ls_struct表用于保存结构体变量;当有结构体变量只为所述待发布业务插件的结构体变量,或者有结构体变量只为所述已发布业务软件的结构体变量时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;当没有结构体变量只为所述待发布业务插件的结构体变量,且没有结构体变量只为所述已发布业务软件的结构体变量时,则通过查询ls_struct_details表比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;所述ls_struct_details表用于保存结构体变量的成员。
所述比较模块52,进一步用于查询所述ls_struct_details表,获得所述待发布业务插件的结构体变量的所有成员以及所述已发布业务软件的结构体变量的所有成员;当有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,或者有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;当没有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,且没有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则比较所述待发布业务插件的结构体变量的所有成员值与所述已发布业务软件的结构体变量的所有成员值是否相同;如果有结构体变量的成员值不同,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;否则,确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量相同。
本发明实施例中,所述结构体变量的成员包括以下之一或任意组合:名字name、类型type、位置pos、子位置subpos;所述subpos用于表示嵌套在内部结构体变量的所有成员位置值;如果type为成员函数,则name为该成员函数的全名;如果type为成员变量,则name为该成员变量名。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (14)
1.一种业务插件的自动发布方法,其特征在于,该方法包括:
获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量;
比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;
根据比较结果确定是否发布待发布业务插件。
2.如权利要求1所述的方法,其特征在于,所述获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量,包括:
对所述待发布业务插件对应的所有文件进行扫描,获得所述待发布业务插件的结构体变量;以及,对所述已发布业务软件对应的所有文件进行扫描,获得所述已发布业务软件的结构体变量;
其中,所述待发布业务插件和所述已发布业务软件的根是Solution,若干个Project组成了一个Solution,且若干个文件组成了一个Project。
3.如权利要求2所述的方法,其特征在于,对文件进行扫描获得结构体变量的过程,进一步包括:
从文件中获得嵌套到指定类别中的结构体变量,并利用DTE自动化模型从文件中获得未被嵌套的结构体变量;
所述嵌套到指定类别中的结构体变量包括以下之一或任意组合:嵌套到类中的结构体变量、嵌套到名字空间中的结构体变量、嵌套到函数中的结构体变量、以及嵌套到结构体变量中的结构体变量。
4.如权利要求1所述的方法,其特征在于,所述获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量,之后还包括:
在MySQL数据库的ls_struct表中保存所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,并在所述MySQL数据库的ls_struct_details表中保存所述待发布业务插件的结构体变量的成员以及所述已发布业务软件的结构体变量的成员。
5.如权利要求1所述的方法,其特征在于,比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同,包括:
查询ls_struct表,获得所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,所述ls_struct表用于保存结构体变量;
当有结构体变量只为所述待发布业务插件的结构体变量,或者有结构体变量只为所述已发布业务软件的结构体变量时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;
当没有结构体变量只为所述待发布业务插件的结构体变量,且没有结构体变量只为所述已发布业务软件的结构体变量时,则通过查询ls_struct_details表比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;所述ls_struct_details表用于保存结构体变量的成员。
6.如权利要求5所述的方法,其特征在于,所述通过查询ls_struct_details表比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同,进一步包括:
查询所述ls_struct_details表,获得所述待发布业务插件的结构体变量的所有成员以及所述已发布业务软件的结构体变量的所有成员;
当有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,或者有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;
当没有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,且没有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则比较所述待发布业务插件的结构体变量的所有成员值与所述已发布业务软件的结构体变量的所有成员值是否相同;
如果有结构体变量的成员值不同,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;否则,确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量相同。
7.如权利要求5或6所述的方法,其特征在于,所述结构体变量的成员包括以下之一或任意组合:
名字name、类型type、位置pos、子位置subpos;
所述subpos用于表示嵌套在内部结构体变量的所有成员位置值;
如果type为成员函数,则name为该成员函数的全名;如果type为成员变量,则name为该成员变量名。
8.一种业务插件的自动发布设备,其特征在于,该设备包括:
获得模块,用于获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量;
比较模块,用于比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;
确定模块,用于根据比较结果确定是否发布待发布业务插件。
9.如权利要求8所述的设备,其特征在于,
所述获得模块,具体用于对所述待发布业务插件对应的所有文件进行扫描,获得所述待发布业务插件的结构体变量;以及,对所述已发布业务软件对应的所有文件进行扫描,获得所述已发布业务软件的结构体变量;
其中,所述待发布业务插件和所述已发布业务软件的根是Solution,若干个Project组成了一个Solution,且若干个文件组成了一个Project。
10.如权利要求9所述的设备,其特征在于,
所述获得模块,进一步用于从文件中获得嵌套到指定类别中的结构体变量,并利用DTE自动化模型从文件中获得未被嵌套的结构体变量;
所述嵌套到指定类别中的结构体变量包括以下之一或任意组合:嵌套到类中的结构体变量、嵌套到名字空间中的结构体变量、嵌套到函数中的结构体变量、以及嵌套到结构体变量中的结构体变量。
11.如权利要求8所述的设备,其特征在于,还包括:
存储模块,用于在获得待发布业务插件的结构体变量以及已发布业务软件的结构体变量之后,在MySQL数据库的ls_struct表中保存所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,并在所述MySQL数据库的ls_struct_details表中保存所述待发布业务插件的结构体变量的成员以及所述已发布业务软件的结构体变量的成员。
12.如权利要求8所述的设备,其特征在于,
所述比较模块,具体用于查询ls_struct表,获得所述待发布业务插件的结构体变量以及所述已发布业务软件的结构体变量,所述ls_struct表用于保存结构体变量;
当有结构体变量只为所述待发布业务插件的结构体变量,或者有结构体变量只为所述已发布业务软件的结构体变量时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;
当没有结构体变量只为所述待发布业务插件的结构体变量,且没有结构体变量只为所述已发布业务软件的结构体变量时,则通过查询ls_struct_details表比较所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量是否相同;所述ls_struct_details表用于保存结构体变量的成员。
13.如权利要求12所述的设备,其特征在于,
所述比较模块,进一步用于查询所述ls_struct_details表,获得所述待发布业务插件的结构体变量的所有成员以及所述已发布业务软件的结构体变量的所有成员;
当有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,或者有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;
当没有结构体变量的成员只为所述待发布业务插件的结构体变量的成员,且没有结构体变量的成员只为所述已发布业务软件的结构体变量的成员时,则比较所述待发布业务插件的结构体变量的所有成员值与所述已发布业务软件的结构体变量的所有成员值是否相同;
如果有结构体变量的成员值不同,则确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量不同;否则,确定所述待发布业务插件的结构体变量与所述已发布业务软件的结构体变量相同。
14.如权利要求12或13所述的设备,其特征在于,所述结构体变量的成员包括以下之一或任意组合:
名字name、类型type、位置pos、子位置subpos;
所述subpos用于表示嵌套在内部结构体变量的所有成员位置值;
如果type为成员函数,则name为该成员函数的全名;如果type为成员变量,则name为该成员变量名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100474865A CN103294456A (zh) | 2012-02-28 | 2012-02-28 | 一种业务插件的自动发布方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100474865A CN103294456A (zh) | 2012-02-28 | 2012-02-28 | 一种业务插件的自动发布方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103294456A true CN103294456A (zh) | 2013-09-11 |
Family
ID=49095400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012100474865A Pending CN103294456A (zh) | 2012-02-28 | 2012-02-28 | 一种业务插件的自动发布方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103294456A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107578338A (zh) * | 2017-07-26 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 一种业务发布方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003102722A2 (en) * | 2002-05-01 | 2003-12-11 | Bea Systems, Inc. | Collaborative business plug-in framework |
CN101119517A (zh) * | 2007-07-12 | 2008-02-06 | 深圳市融合视讯科技有限公司 | 一种从网络服务器自动下载软件的方法 |
CN101566954A (zh) * | 2009-05-31 | 2009-10-28 | 珠海金山软件股份有限公司 | 一种管理插件的方法及管理插件的装置 |
CN101840340A (zh) * | 2009-02-20 | 2010-09-22 | 国际商业机器公司 | 测试***配置方法和*** |
-
2012
- 2012-02-28 CN CN2012100474865A patent/CN103294456A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003102722A2 (en) * | 2002-05-01 | 2003-12-11 | Bea Systems, Inc. | Collaborative business plug-in framework |
CN101119517A (zh) * | 2007-07-12 | 2008-02-06 | 深圳市融合视讯科技有限公司 | 一种从网络服务器自动下载软件的方法 |
CN101840340A (zh) * | 2009-02-20 | 2010-09-22 | 国际商业机器公司 | 测试***配置方法和*** |
CN101566954A (zh) * | 2009-05-31 | 2009-10-28 | 珠海金山软件股份有限公司 | 一种管理插件的方法及管理插件的装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107578338A (zh) * | 2017-07-26 | 2018-01-12 | 阿里巴巴集团控股有限公司 | 一种业务发布方法、装置及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10860339B2 (en) | Autonomous creation of new microservices and modification of existing microservices | |
CN109684053B (zh) | 大数据的任务调度方法和*** | |
US10013339B2 (en) | System and method for automating testing without scripting | |
CN102236672A (zh) | 一种数据导入方法及装置 | |
CN104572085A (zh) | 应用程序的分析方法及装置 | |
CN103473076A (zh) | 一种代码版本的发布方法及*** | |
CN110889582A (zh) | 一种基于TeamCenter实现PBOM可视化的方法 | |
CN108629052B (zh) | Kettle任务调度方法、***、计算机设备和存储介质 | |
CN106557419B (zh) | 程序的测试方法及装置 | |
CN107092502B (zh) | 一种基于云操作***的应用自动配置方法和装置 | |
CN108897678B (zh) | 静态代码检测方法和静态代码检测***、存储设备 | |
CN110851343A (zh) | 一种基于决策树的测试方法和装置 | |
CN105138612A (zh) | 数据一致性差异原因的分析和定位的方法及*** | |
CN103294456A (zh) | 一种业务插件的自动发布方法和设备 | |
US10360022B2 (en) | Software discovery scan optimization based on product priorities | |
CN104461618A (zh) | 加载模块的方法及装置 | |
CN106610899B (zh) | 一种测试用例生成方法及装置 | |
CN115269548A (zh) | 一种数据仓库开发模型的生成方法、***及相关设备 | |
CN104237680A (zh) | 电能质量监测数据检测方法、设备和*** | |
CN102262527B (zh) | 生成网络服务的方法和*** | |
CN107368321B (zh) | 一种软件版本演进方法及*** | |
CN111142927A (zh) | 配置文件的合并、拆分处理方法及装置 | |
CN113535221A (zh) | 应用版本管理的方法和装置 | |
KR20160025881A (ko) | 공유 라이브러리 파일의 악성을 진단하기 위한 장치 및 방법 | |
CN115250231B (zh) | 应用配置方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130911 |