CN112597057A - 一种蓝图数据的差异化处理方法和装置 - Google Patents
一种蓝图数据的差异化处理方法和装置 Download PDFInfo
- Publication number
- CN112597057A CN112597057A CN202110005029.9A CN202110005029A CN112597057A CN 112597057 A CN112597057 A CN 112597057A CN 202110005029 A CN202110005029 A CN 202110005029A CN 112597057 A CN112597057 A CN 112597057A
- Authority
- CN
- China
- Prior art keywords
- data
- instance
- difference
- target
- version
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种蓝图数据的差异化处理方法及装置,通过获取蓝图数据的目标实例,其中,蓝图数据可以包括多个类别数据,接着对各个类别数据进行差异化分析,生成针对目标实例的差异数据,然后根据差异数据,生成与目标实例匹配的差异文件,可以在后台中根据目标实例对蓝图数据的各个类别数据进行数据监控分析,得到差异数据,降低了测试人员的工作负担,提高了监控的精度,减少程序错误发生的风险,通过根据差异数据,生成与目标实例对应的差异文件,使得差异数据能够被第三方工具读取,提高了自动化监控的扩展性,测试人员能够在后台进行监控的过程中,同时通过监控工具进行检测,实现自动纠正与预警,保证了工程开发的质量。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种蓝图数据的差异化处理方法和一种蓝图数据的差异化处理装置。
背景技术
在应用程序的开发过程中,为了把控应用程序的产品质量,通常需要对各类代码、数据以及文件进行监控。在开发人员对代码、数据以及文件等进行任何修改后,自动获取修改内容,以便测试人员进行确认,避免在测试人员不知情的情况下,因操作失误或修改错误而导致的应用问题。然而,在监控的过程中,对于测试人员而言,通常需要监控用户对重要数据的修改是否正确,由于数据量庞大,不仅人工成本高,而且容易出现人工疏漏;其次,当需要对开发缺陷进行定位时,需要用户手动逐项进行查找,一方面容易出现遗漏,另一方面查找效率较低,十分影响项目的开发;并且,监控工具的功能具有局限性,只能做到常规的检监控,随着项目开发的推进,无法适应开发与测试等需求。
发明内容
本发明实施例是提供一种蓝图数据的差异化处理方法,以解决现有技术中对数据进行差异分析处理过程中局限性大,无法进行扩展以及成本高的问题。
相应的,本发明实施例还提供了一种蓝图数据的差异化处理装置,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种蓝图数据的差异化处理方法,包括:
获取蓝图数据的目标实例,所述蓝图数据包括多个类别数据;
对所述类别数据进行差异分析,生成针对所述目标实例的差异数据;
根据所述差异数据,生成与所述目标实例匹配的差异文件。
可选地,还包括:
响应于针对所述差异数据的用户操作,确定与所述用户操作对应的排序信息;
按照所述排序信息,对所述差异数据进行展示。
可选地,还包括:
响应检测到针对所述差异数据的选择操作,获取与所述选择操作匹配的目标数据,并展示所述目标数据对应的差异分析结果。
可选地,还包括:
若所述差异数据中包括针对所述目标实例中指定数据的差异分析结果,则生成针对所述指定数据的提醒信息;
其中,所述指定数据包括所述目标实例中被标记的数据。
可选地,所述获取蓝图数据的目标版本实例,包括:
获取蓝图数据的更新信息;
从所述更新信息中,提取所述蓝图数据的版本信息;
从所述版本信息中,选定版本号,并获取与所述版本号对应的目标实例。
可选地,所述目标实例包括历史版本实例以及目标版本实例,所述对所述类别数据进行差异分析,生成针对所述目标实例的差异数据,包括:
对所述历史版本实例与所述目标版本实例进行数据转换,获得历史实例数据与目标实例数据;
将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据。
可选地,所述类别数据包括MyBlueprint类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
获取所述历史实例数据中所述MyBlueprint类数据的第一属性信息,以及所述目标实例数据中所述MyBlueprint类数据的第二属性信息;
将所述第一属性信息与所述第二属性信息进行比对,生成针对所述MyBlueprint类数据的属性差异结果。
可选地,所述类别数据包括Default类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
获取所述历史实例数据中所述Default类数据的第一默认数据,以及所述目标实例数据中所述Default类数据的第二默认数据;
将所述第一默认数据与所述第二默认数据进行比对,生成针对所述第一默认数据与所述第二默认数据的第一比对数组;
采用所述第一比对数组,生成针对所述Default类数据的数据差异结果。
可选地,所述类别数据包括Component类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
获取所述历史实例数据中所述Component类数据的第一类对象,以及所述目标实例数据中所述Component类数据的第二类对象;
若所述第一类对象与所述第二类对象为Actoer子类对象,则获取所述第一类对象的第一数据子对象,以及所述第二类对象的第二数据子对象;
将所述第一数据子对象与所述第二数据子对象进行比对,生成针对所述omponent类数据的对象差异结果。
可选地,所述类别数据包括Graph类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
获取所述历史实例数据中所述Graph类数据的第一事件数组,以及所述目标实例数据中所述Graph类数据的第二事件数组;
将所述第一事件数组与所述第二事件数组进行比对,生成针对所述历史实例数据与所述目标实例数据的第二比对数组;
采用所述第二比对数组,生成针对所述Graph类数据的事件差异结果。
可选地,所述类别数据包括Others类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
将所述历史实例数据中的Others类数据与所述目标实例数据中的Others类数据进行比对,生成数据比对结果;
若所述数据比对结果为表征工具类的差异结果,则确定与所述数据比对结果对应的第三比对数组;
采用所述第三比对数组,生成针对所述目标实例中Others类数据的第一差异结果。
可选地,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,还包括:
若所述数据比对结果不为所述表征工具类的差异结果,则确定与所述数据比对结果对应的第四比对数组,并获取所述数据比对结果的数据类型;
按照所述数据类型,对所述第四比对数组进行记录,生成针对所述目标实例中Others类数据的第二差异结果。
可选地,所述根据所述差异数据,生成与所述目标实例匹配的差异文件,包括:
获取所述目标版本实例的路径信息,与针对所述差异数据的语法信息;
对所述差异数据进行数据转换,生成目标差异数据;
采用所述语法信息、所述路径信息以及所述目标差异数据,生成与所述目标实例匹配的差异文件。
本发明实施例还公开了一种蓝图数据的差异化处理装置,包括:
目标实例获取模块,用于获取蓝图数据的目标实例,所述蓝图数据包括多个类别数据;
差异数据生成模块,用于对所述类别数据进行差异分析,生成针对所述目标实例的差异数据;
差异文件生成模块,用于根据所述差异数据,生成与所述目标实例匹配的差异文件。
可选地,还包括:
排序信息确定模块,用于响应于针对所述差异数据的用户操作,确定与所述用户操作对应的排序信息;
差异数据展示模块,用于按照所述排序信息,对所述差异数据进行展示。
可选地,还包括:
差异分析结果展示模块,用于响应检测到针对所述差异数据的选择操作,获取与所述选择操作匹配的目标数据,并展示所述目标数据对应的差异分析结果。
可选地,还包括:
提醒信息生成模块,用于若所述差异数据中包括针对所述目标实例中指定数据的差异分析结果,则生成针对所述指定数据的提醒信息;
其中,所述指定数据包括所述目标实例中被标记的数据。
可选地,所述目标实例获取模块包括:
更新信息获取子模块,用于获取蓝图数据的更新信息;
版本信息提取子模块,用于从所述更新信息中,提取所述蓝图数据的版本信息;
目标实例获取子模块,用于从所述版本信息中,选定版本号,并获取与所述版本号对应的目标实例。
可选地,所述目标实例包括历史版本实例以及目标版本实例,所述差异数据生成模块包括:
实例数据获取子模块,用于对所述历史版本实例与所述目标版本实例进行数据转换,获得历史实例数据与目标实例数据;
实例数据比对子模块,用于将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据。
可选地,所述类别数据包括MyBlueprint类数据,所述实例数据比对子模块具体用于:
获取所述历史实例数据中所述MyBlueprint类数据的第一属性信息,以及所述目标实例数据中所述MyBlueprint类数据的第二属性信息;
将所述第一属性信息与所述第二属性信息进行比对,生成针对所述MyBlueprint类数据的属性差异结果。
可选地,所述类别数据包括Default类数据,所述实例数据比对子模块具体用于:
获取所述历史实例数据中所述Default类数据的第一默认数据,以及所述目标实例数据中所述Default类数据的第二默认数据;
将所述第一默认数据与所述第二默认数据进行比对,生成针对所述第一默认数据与所述第二默认数据的第一比对数组;
采用所述第一比对数组,生成针对所述Default类数据的数据差异结果。
可选地,所述类别数据包括Component类数据,所述实例数据比对子模块具体用于:
获取所述历史实例数据中所述Component类数据的第一类对象,以及所述目标实例数据中所述Component类数据的第二类对象;
若所述第一类对象与所述第二类对象为Actoer子类对象,则获取所述第一类对象的第一数据子对象,以及所述第二类对象的第二数据子对象;
将所述第一数据子对象与所述第二数据子对象进行比对,生成针对所述omponent类数据的对象差异结果。
可选地,所述类别数据包括Graph类数据,所述实例数据比对子模块具体用于:
获取所述历史实例数据中所述Graph类数据的第一事件数组,以及所述目标实例数据中所述Graph类数据的第二事件数组;
将所述第一事件数组与所述第二事件数组进行比对,生成针对所述历史实例数据与所述目标实例数据的第二比对数组;
采用所述第二比对数组,生成针对所述Graph类数据的事件差异结果。
可选地,所述类别数据包括Others类数据,所述实例数据比对子模块具体用于:
将所述历史实例数据中的Others类数据与所述目标实例数据中的Others类数据进行比对,生成数据比对结果;
若所述数据比对结果为表征工具类的差异结果,则确定与所述数据比对结果对应的第三比对数组;
采用所述第三比对数组,生成针对所述目标实例中Others类数据的第一差异结果。
可选地,所述实例数据比对子模块具体还用于:
若所述数据比对结果不为所述表征工具类的差异结果,则确定与所述数据比对结果对应的第四比对数组,并获取所述数据比对结果的数据类型;
按照所述数据类型,对所述第四比对数组进行记录,生成针对所述目标实例中Others类数据的第二差异结果。
可选地,所述差异文件生成模块包括:
信息获取子模块,用于获取所述目标版本实例的路径信息,与针对所述差异数据的语法信息;
数据转换子模块,用于对所述差异数据进行数据转换,生成目标差异数据;
差异文件生成子模块,用于采用所述语法信息、所述路径信息以及所述目标差异数据,生成与所述目标实例匹配的差异文件。
本发明实施例还公开了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上所述的方法。
本发明实施例还公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,可以通过获取蓝图数据的目标实例,其中,蓝图数据可以包括多个类别数据,接着根据目标实例,对各个类别数据进行差异化分析,生成针对目标实例的差异数据,然后根据差异数据,生成与目标实例匹配的差异文件,一方面可以在后台中根据目标实例对蓝图数据的各个类别数据进行数据监控分析,得到差异数据,降低了测试人员的工作负担,提高了监控的精度,减少程序错误发生的风险,另一方面通过根据差异数据,生成与目标实例对应的差异文件,使得差异数据能够被第三方工具读取,提高了自动化监控的扩展性,测试人员能够在后台进行监控的过程中,同时通过监控工具进行检测,实现自动纠正与预警,保证了工程开发的质量。
附图说明
图1是本发明实施例中资源控制的类功能调用关系图;
图2是本发明的一种蓝图数据的差异化处理方法实施例的步骤流程图;
图3是本发明实施例中差异分析的流程图;
图4是本发明实施例中差异分析的示意图;
图5是本发明实施例中差异分析的示意图;
图6是本发明实施例中差异分析的示意图;
图7是本发明实施例中差异分析的示意图;
图8是本发明实施例中差异分析的示意图;
图9是本发明实施例中差异分析的示意图;
图10是本发明的一种蓝图数据的差异化处理装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
作为一种实例,在游戏开发过程中,往往需要依赖于游戏引擎进行开发,游戏引擎的资源文件为以二进制形式对所有类型的资源进行存储的文件,且只能引擎本身能够解析。由于资源文件是在加密处理后以二进制形式存储的,因此想要自动化获取资源的差异信息,需要在后台解析资源数据本身,得到源数据之后,才能进行对比分析从而得到差异信息。
在实际中,游戏引擎仅在图形化编辑器模式下,提供了差异信息查看的功能,在本发明实施例中,以(蓝图类数据)Blueprintclass类型的数据为例进行说明与解释,可以理解的是,还可以能够于其他资源类型,包括BlueprintClass、Gameplay AbilityBlueprint、EditorUtilityBlueprint、EditorUtilityWidget等。具体的,在游戏引擎的图形化编辑器模式下,可以展示差异信息的列表,列表中可以按照不同模块将差异位置罗列出来,并指出修改的具体对象,包含配置项数据(如变量、曲线、资源等)和接口(功能函数、事件等)。当用户点选某个差异信息后,可以会显示出针对此对象在两个不同版本上的详细信息。
其中,对于游戏引擎中实现上述差异分析的功能可以通过如下方式完成:
资源控制SourceControl(下述SC)是游戏引擎中用于充当SCCS(Source CodeControl System,源码控制系统)兼容的模块,其能够支持了版本控制Subversion和性能控制Perforce,同时也允许其它任何SC资源控制功能扩展,比如Git分布式版本控制系统。参考图1,示出了本发明实施例中资源控制的类功能调用关系图。图中箭头代表了从表及里的执行流程,并以SVN(Subversion)版本控制系统和P4(Perforce)版本管理工具为例,附上了派生关系。其中,SVN可以为开放源代码的版本控制系统,通过采用分支管理系统的高效管理,即用于多个人共同开发同一个项目,实现共享资源和集中式的管理;P4为版本管理工具,具有轻便快速特点,支持GUI界面、命令行等多种使用方式。
其中,ContentBrowser可以为最顶层的图形交互界面,用于完成图形化展示功能;SourceControlWindow可以为SC相关的图形功能,如窗口、控件;ISourceControlModule可以为SC的管理者,起到管理Provider的作用,可以对应于P4版本管理工具的FperforceSourceControl Module与版本控制系统的FSubversion SourceControl Module;ISourceControlProvider可以为SC的执行者,执行SC的各种操作,比如更新、提交之类,可以对应于P4版本管理工具的Fperforce SourceControl Provider与版本控制系统的FSubversion SourceControl Provider;ISourceControlState可以用于描述某个文件在SC上的各种信息,如版本、时间等,可以对应于P4版本管理工具的FperforceSourceControl State与版本控制系统的FSubversion SourceControl State。
每个资源文件在SC上的任何操作,都会伴随一份声明(State),并且交由模块(Module)统一管理,而Provider为两者之间的中转站,用于执行一系列常规的SC操作,并且将操作结果上下同步至Module和State,以便图形层使用。可选地,对于常规操作和信息,随着SCCS的不同而产生差异,因此可以在各环节派生做针对的差异化支持。
游戏引擎对资源文件差异信息的获取和展示,可以通过一套功能类,包括可以通过自定义资源AssetTypeActions实现各种资源相关的具体操作,包括资源差异化AssetDiff的操作,根据不同的资源类型,进行不同的Diff处理和展示。具体的,在针对蓝图类数据的情况下,可以以FassetTypeActions Blueprint为例进行蓝图数据的差异分析,包括通过FassetTypeActions Blueprint中的SblueprintDiff在构造函数中完成所有的Diff解析,并创建可视化面板,然后在上层图形窗口展示结果,其中,SblueprintDiff中的差异列表DiffList的获取与SblueprintDiff中面板功能panel结合十分紧密,包括Diff跳转、展示、详细数值等,尤其是配置项数据的具体数值,都是通过编辑器图形接口在底层获取的,十分零散,并不是交由某个资源模块统一管理。
由此可见,在上述数据的差异分析过程,对于测试人员来说,需要对数据的修改确认是否正确,若修改数据量较大,仅靠人力确认,不仅成本高,而且容易出现遗漏;差异信息可以帮助开发与测试人员进行缺陷定位、查证以及追责,因此查看差异信息的详细内容十分重要,而在上述过程中,仅支持在游戏引擎的图形编辑器上进行操作,且需要手动查找对应的资源,不仅不利于用户查看,而且容易出现遗漏;进一步,游戏引擎提供的差异分析功能仅仅只能够展示数据修改的差异,而无法进行其他功能的拓展,例如,自动化检测、报警、纠错等,以及实时在第三方工具中进行分析处理等,局限性较大。
对此,本发明实施例的核心发明点之一在于通过在游戏引擎的后台获取蓝图数据的目标实例,并根据目标实例对蓝图数据的不同类别数据进行差异分析,生成针对目标实例的差异数据,然后以指定的格式对差异数据进行保存,生成差异文件,在实现自动化检测的情况下,通过生成差异文件,使得已有的各种监控工具,能够在差异数据的基础上进行拓展应用,提高了扩展性。
具体的,参照图2,示出了本发明的一种蓝图数据的差异化处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201,获取蓝图数据的目标实例,所述蓝图数据包括多个类别数据;
在本发明实施例中,可以应用于游戏引擎,通过游戏引擎提供的SCCS和蓝图类数据分析技术,对蓝图数据进行自动化的差异分析,其中,蓝图数据可以为在游戏引擎中能够通过图形编辑器进行差异信息查看的资源,可以包括BlueprintClass、Gameplay AbilityBlueprint、EditorUtilityBlueprint、EditorUtilityWidget等蓝图相关的数据资源。可选地,本发明实施例中以SBlueprintClass为例进行示例性说明,本发明对此不作限制。
其中,蓝图数据可以包括多个类别数据,可以通过蓝图数据的实现结构对蓝图数据进行划分,得到不同的类别数据。目标实例包括蓝图数据底层实现的源码数据。
在一种示例中,对于SblueprintClass的实现结构可以划分为MyBlueprint、Defaults、Component、Graph以及Others等类别数据。其中,MyBlueprint类数据可以包括接口、变量、自定义宏以及调度器等;Defaults类数据可以包括类相关的默认数据,以及各种不同类型的静态初始数据;Component类数据可以包括组件及相关初始数据、变量、接口等;Graph类数据可以包括各类事件,包括节点事件、连接事件以及接口事件等等;Others类数据可以包括各类widget控件以及其他数据,例如可以包括按钮、编辑框等控件数据。
在本发明的一种可选实施例中,可以通过获取蓝图数据的更新信息,接着从更新信息中,提取蓝图数据的版本信息,然后从版本信息中选定目标版本号,并获取与版本号对应的目标实例。
在具体实现中,可以通过相关函数载入需要进行差异分析的蓝图数据,其中,蓝图数据可以包括资源、资源包、资源包相关路径、名称、类型以及更新信息等信息。可选地,更新信息可以包括提交历史、版本信息以及修改的资源实例等等,从而可以从更新信息中,提取蓝图数据的版本信息,版本信息包括蓝图数据的历史版本号以及当前版本号,进而可以选定需要进行差异分析的版本号,然后获取对应的目标实例。例如,可以从蓝图数据的版本信息中,选择当前版本号,以及与当前版本号对应的上一版本号,并获取两者的实例,以进行差异分析。
步骤202,对所述类别数据进行差异分析,生成针对所述目标实例的差异数据;
在本发明实施例中,目标实例中包括蓝图数据底层的源码数据,则可以通过源码数据对各个类别数据进行差异分析,生成针对目标实例的差异数据。
目标实例可以包括历史版本实例以及目标版本实例,其中,对于目标版本实例可以任意指定版本的蓝图数据的实例,而历史版本实例可以为目标版本实例之前一个版本的实例,例如,若目标版本实例为当前最新版本的实例,则历史版本实例可以为当前实例的上一版本的实例;若目标版本实例为第n版的实例,则历史版本实例可以为n-1版的实例,从而可以通过对相邻的两个版本的实例进行差异分析,获得差异数据。
在具体实现中,可以对历史版本实例与目标版本实例进行数据转换,以得到蓝图类形式的历史实例数据以及目标实例数据,然后可以将历史实例数据与目标实例数据进行比对,生成针对历史版本实例与目标版本实例的差异数据,实现在游戏引擎后台对蓝图数据进行自动化监测,生成差异数据,不再局限于游戏引擎的图形功能,降低了局限性。
对于实例数据,可以按照实现结构将其划分为不同的类别数据,包括将历史实例数据划分为MyBlueprint类数据、Defaults类数据、Component类数据、Graph类数据以及Others类数据等类别数据,从而通过将历史实例数据与目标实例数据解析为不同的类别数据,进行相应的差异分析,确定历史版本实例与目标版本实例之间的差异,实现在脱离游戏引擎图形编辑器的情况下,对蓝图数据进行差异分析,生成差异数据。
对于MyBlueprint类数据,可以通过获取历史实例数据中MyBlueprint类数据对象的第一属性信息,以及目标实例数据中MyBlueprint类数据的第二属性信息,接着将第一属性信息与第二属性信息进行比对,生成针对MyBlueprint类数据的属性差异结果。其中,属性信息可以为MyBlueprint类数据的修饰属性,即Uproperty,其允许变量被复制、被序列化,并可从蓝图中进行访问。可选地,属性信息可以为MyBlueprint类数据对象的class对象,其可以用于表示MyBlueprint类数据对象的类型信息。
在具体实现中,将历史版本实例与目标版本实例转换为蓝图类形式的历史实例数据以及目标实例数据之后,可以分别从中获取MyBlueprint类数据的第一class对象以及第二class对象,然后可以遍历史实例数据中所有的第一class对象,并在目标实例数据中查找同名属性的第二class对象,若不存在于目标实例数据中,即表示class对象被删除,记录被删除的class对象;若存在,即表示class对象被修改,记录历史实例数据与目标实例数据中对应class对象。此外,除了可以通过遍历历史实例数据中的第一class对象,还可以通过遍历目标实例数据中的第二class对象,并执行与上述过程相同的比对过程,在此不再赘述,在两个版本实例之间对MyBlueprint类数据的class对象比对完毕后,可以生成对应的属性差异结果。其中,属性差异结果可以包括记录属性变更的内容,例如,变更属性的属性名、操作类型、属性值等等。
对于Default类数据,可以通过获取历史实例数据中Default类数据的第一默认数据,以及目标实例数据中Default类数据的第二默认数据,接着将第一默认数据与第二默认数据进行比对,生成针对第一默认数据与第二默认数据的第一比对数组,然后采用第一比对数组,生成针对Default类数据的数据差异结果。其中,默认数据可以包括类相关的数据,以及各种不同类型的静态初始数据等,第一比对数组可以包括UProperty和不同类型DiffType的数组。可选地,默认数据可以为CDO(Collaboration Data Objects,合作数据对象)对象集合,其可以用于表示协同作业应用程序中的核心组件与接口。
在具体实现中,可以分别从历史实例数据与目标实例数据中获取Default类数据的第一CDO对象与第二CDO对象,然后通过DiffUtils::CompareUnrelatedObjects函数方法对两者进行直接比对,得到针对第一CDO对象与第二CDO对象的比对数组,比对数组可以包括UProperty和DiffType等数组,接着可以遍历该比对数组,逐个读取差异信息,并根据更新类型,生成针对Default类数据的数据差异结果。具体的,若更新类型为删除,则记录历史实例数据中的升级信息,表示旧数据已经被删除;若更新类型为新增,则记录目标实例数据中的升级信息,表示新增加了数据;若更新类型为修改,则记录历史实例数据与目标实例数据中的升级信息以及属性值,从而在两个版本实例之间对Default类数据的CDO对象比对完毕之后,可以生成对应的数据差异结果。
对于Component类数据,可以通过获取历史实例数据中Component类数据的第一类对象,以及目标版本实例数据中Component类数据的第二类对象,若第一类对象与第二类对象为Actor子类对象,则获取第一类对象的第一数据子对象,以及第二类对象的第二数据子对象,然后将第一数据子对象与第二数据子对象进行比对,生成针对Component类数据的对象差异结果。其中,Component类数据可以包括至少一类对象以及相应的描述信息。可选地,类对象可以为Component类数据的class对象,可以用于表示Component类的属性、事件、行为等不同类功能。
在具体实现中,可以分别从历史实例数据与目标实例数据中获取Component类数据的第一class对象与第二class对象,然后分别判断第一class对象与第二class对象是否为Actor子类对象,例如是否为actor子类,只有当第一class对象与第二class对象为Actor子类对象时,才与Component类数据对应。若第一class对象与第二class对象为Actor子类对象,则分别GetDefaultSubobjects函数方法获取第一类对象的第一数据子对象(CDO子对象),以及第二类对象的第二数据子对象(CDO子对象),然后分别遍历历史实例数据与目标实例数据中的数据子对象,并记录他们的Component类数据列表(即Component_list),包括历史Component类数据列表与目标Component类数据列表,并对两者进行逐一比对,确定两者之间的对象差异结果,从而在两个版本实例之间对Component类数据的类对象比对完毕之后,可以生成对应的对象差异结果。其中,对象差异结果可以包括Component类数据删除、Component类数据新增以及Component类数据修改等,可选地,对于历史版本实例与目标版本实例,可以分别记录对应的变化,例如,对于历史版本实例,可以记录某一Component类数据的删除、修改,对于目标版本实例,可以记录某一Component类数据的新增、修改等。
对于Graph类数据,可以通过获取历史实例数据中Graph类数据的第一事件数组,以及目标实例数据中Graph类数据的第二事件数组,接着将第一事件数组与第二事件数组进行比对,生成针对历史实例数据与目标实例数据的第二比对数组,然后采用第二比对数组,生成针对Graph类数据的事件差异结果。可选地,事件数组可以为UEdGraph数组,其可以用于表示图标编辑器数组。
在具体实现中,可以通过GetAllGraphs函数方法分别从历史实例数据与目标实例数据中获取Graph类数据的第一UEdGraph数组与第二UEdGraph数组,则可以通过对两个UEdGraph数组进行差异比对,得到针对历史实例数据与目标实例数据的第二比对数组,第二比对数组可以为包括各种节点信息和不同类型的数组。对于Graph类数据,由于UEdGraph数组不同类型数量较大,可以直接将第二比对数组,即第一UEdGraph数组与第二UEdGraph数组之间的比对结果,作为历史版本实例与目标版本实例之间Graph类数据的差异结果,从而在两个版本实例之间对Component类数据的UEdGraph数组比对完毕之后,可以生成对应的UEdGraph数组差异结果。
对于Others类数据,可以通过获取历史实例数据中Others类数据的第一控件数据,以及目标实例数据中Others类数据的第二控件数据,接着将历史实例数据中的Others类数据与目标实例数据中的Others类数据进行比对,生成数据比对结果;若数据比对结果为表征工具类的差异结果,则确定与数据比对结果对应的第三比对数组;采用第三比对数组,生成针对目标实例中Others类数据的第一差异结果。此外,若数据比对结果不为表征工具类的差异结果,则确定与数据比对结果对应的第四比对数组,并获取数据比对结果的数据类型;按照数据类型,对第四比对数组进行记录,生成针对目标实例中Others类数据的第二差异结果。
在具体实现中,可以分别从历史实例数据与目标实例数据中获取Others类数据,然后可以通过将两者进行差异分析,生成针对历史实例数据与目标实例数据的数据比对结果。接着可以遍历数据比对结果,并根据不同的类型进行处理。若数据比对结果为表征工具类的结果,如为ObjectsDiff类型,则可以确定与数据比对结果对应的第三比对数组,其中,第三比对数组可以为FSingleObjectDiffEntry类型的数组,包括与第一Others类数据对应的第一数组,以及与第二Others类数据对应的第二数组,接着可以将第一数组与第二数组进行逐一比对,生成针对Others类数据的第一差异结果,该结果可以包括单个对象不同条目的数组;若不为ObjectsDiff类型,则可以直接返回与数据比对结果对应的第四比对数组,第四比对数组可以为表征Others类数据在历史实例数据与目标实例数据中差异的FDiffSingleResult数组,然后可以遍历第四比对数组,并按照数据比对结果的数据类型进行记录,生成第二差异结果,从而在两个版本实例之间对Others类数据的控件数据比对完毕之后,可以生成对应的控件差异结果。其中,数据类型可以包括删除、新增以及修改等。
通过上述对历史实例数据与目标实例数据中MyBlueprint类数据、Default类数据、Component类数据、Graph类数据以及Others类数据等进行差异分析,得到对应的差异数据,从而实现了在游戏引擎后台对蓝图数据的目标实例进行差异解析,进而实现了自动化监控,降低了人工参与,保证数据监控的精度,降低了错误产生的风险。
需要说明的是,对于各个类别数据可以按照一定的顺序依次进行差异分析,也可以同时对各个类别数据进行差异分析,本发明对此不作限制。
步骤203,根据所述差异数据,生成与所述目标实例匹配的差异文件。
在本发明实施例中,当对蓝图数据的目标实例差异分析完毕,得到差异数据后,可以获取目标实例的路径信息,与针对差异数据的语法信息,接着对差异数据进行数据转换,生成目标差异数据,然后采用语法信息、路径信息以及目标差异数据,生成与目标实例匹配的差异文件。
基于游戏引擎的数据封装存在记录数据接口不统一、序列化操作较为复杂的问题,不利于代码编写和功能集成。因此,本发明实施例,可以通过将针对差异数据的语法信息记录于差异数据中,形成统一的数据记录接口。
具体的,可以先对差异数据进行序列化,转换为以json格式进行存储的目标差异数据,接着可以通过SetStringField方法记录string数据到目标差异数据中,通过SetNumberField方法记录浮点数据到目标差异数据中,通过SetObjectField方法记录Json对象到目标差异数据中,完成嵌套,以及通过SetArrayField方法记录Json数组到目标差异数据中,同时也支持将Json对象加入到已嵌套的Json数组中去,完成数组的双向嵌套,从而将不同数据记录接口的功能同一配置为目标差异数据中的SetKeyValueField接口。然后可以将游戏引擎提供的目标实例的路径信息直接写入目标差异数据中,生成与目标实例对应的差异文件,通过生成针对目标实例的差异文件,使得第三方工具能够直接从差异文件中读取明文数据,为用户进行功能扩展提供了便利,同时使得测试人员能够在后台进行监控的过程中,同时通过监控工具进行检测,实现自动纠正与预警,保证了工程开发的质量。
参考图3,示出了本发明实施例中差异分析的流程图,在加载资源之后,获取SC的历史升级列表,然后选定版本号,得到历史版本实例以及目标版本实例,接着通过上述对历史实例数据与目标实例数据中MyBlueprint类数据、Default类数据、Component类数据、Graph类数据以及Others类数据等进行差异分析,得到对应的差异数据,并进行差异数据处理,最终转换为json文件从而实现了在游戏引擎后台对蓝图数据的目标实例进行差异解析,进而实现了自动化监控,降低了人工参与,保证数据监控的精度,降低了错误产生的风险。
在本发明的一种可选实施例中,通过生成差异文件,使得游戏引擎中差异数据从以加密方式存储转换为明文存储的方式,进而可以通过读取明文的差异数据,并在该基础上进行二次应用。此外,在对差异文件中蓝图数据的差异数据进行展示的过程中,还可以通过响应于针对差异数据的用户操作,确定与用户操作对应的排序信息,并按照排序信息,对差异数据进行展示,从而可以根据用户需求自定义进行展示,进而提高了差异数据查找的效率。
在具体实现中,可以通过自动化监控差异文件(如BlueprintClass类型的文件),然后将差异文件中的差异数据按照一定的排序规则,展示于web面上,从而方便开发、测试人员进行查验或追溯。例如,当开发人员提交了针对蓝图数据的修改信息后,可以通过上述实施例中差异分析过程,实时进行自动化检测,并按照一定的排序(包括版本、修改文件、修改原因、修改时间以及用户顺序等)对修改前后的数据差异进行展示,以便进行数据的查验与追溯。
此外,为了保证修改的准确性,可以对差异数据进行检测,若差异数据中包括针对实例中指定数据的差异分析结果,即表示存在指定数据发生了修改,可以生成针对指定数据的提醒信息,以提醒开发或测试人员进行数据的检查和纠错。其中,指定数据可以为蓝图数据中重要数据,通过对相应的重要数据进行标记,使得进行自动化检测过程中,若检测到发生了变更,则进行提醒,以保证数据的有效修改。
具体的,为了确保用户对资源文件的修改准确性,可以在用户修改资源后立即对资源文件进行针对现的检测。例如,将BlueprintClass类型资源的某些关键数据做上标记,在用户修改时可自动检查修改的内容,若为有标记的关键数据,则进行报警,提醒相关测试人员某些关键数据已经被修改,通过及时通知人工进行正确性确认,有利于更早地发现和解决问题,还可以对关键数据指定期望的标准数值,当发生修改且和标准数值不一致时,直接报警给用户,由用户自行修改或纠正标准数值,降低测试人员的参与,保证数据的准确性。
在本发明的另一种可选实施例中,在实现对蓝图数据的自动化差异分析的情况下,可以响应检测到针对差异数据的选择操作,获取与选择操作匹配的目标数据,并可视化展示目标数据对应的差异分析结果。
在具体实现中,用户直接在游戏引擎内查看差异数据并不方便,效率低下,而本发明实施例已经实现自动提取差异数据的情况下,可在Web前端对差异数据进行展示时,增加一键复制功能,用户可以选择自身想要查看的目标数据,然后复制相关的必要信息,并在游戏引擎内开发快速查看通道,允许用户一键粘贴后,可视化展示对应的差异分析结果,而不需要用户自行查找目标资源文件和历史。从而在保留游戏引擎本身图形化差异数据功能的同时,提高用户的操作效率。
需要说明的是,本发明实施例包括但不限于上述示例,可以理解的是,在本发明实施例的思想指导下,本领域技术人员可以根据实际情况进行设置,本发明对此不作限制。
在本发明实施例中,可以通过获取蓝图数据的目标实例,其中,蓝图数据可以包括多个类别数据,接着对各个类别数据进行差异化分析,生成针对目标实例的差异数据,然后根据差异数据,生成与目标实例匹配的差异文件,一方面可以在后台中根据目标实例对蓝图数据的各个类别数据进行数据监控分析,得到差异数据,降低了测试人员的工作负担,提高了监控的精度,减少程序错误发生的风险,另一方面通过根据差异数据,生成与目标实例对应的差异文件,使得差异数据能够被第三方工具读取,提高了自动化监控的扩展性,测试人员能够在后台进行监控的过程中,同时通过监控工具进行检测,实现自动纠正与预警,保证了工程开发的质量。
为了使本领域技术人员更好地理解本发明实施例,下面通过一个例子进行示例性说明,对于UE引擎中蓝图数据的差异化处理,可以包括如下过程:
1、蓝图数据的获取
参考图4,示出了本发明实施例中差异分析的示意图:
A、通过FassetRegistryModule进行资源加载,得到需要进行Diff分析的资源对象FAssetData,其中包含了资源和资源包相关的路径、名称、类型等信息;
B、创建ISourceControlProvider执行者,并通过Execute方法获取资源对象在SC中的历史更新信息FUpdateStatus,交由执行者管理,用来中转使用;其中,Execute中需要使用资源的绝对路径,而不是UE内置的相对路径,可以将资源包路径通过FPath进行转换获得;
C、从执行者中获取历史更新记录HistoryList,并通过GetAssetObjectFromRevision方法在其中找到指定的用于对比Diff的两个(新旧)版本号(SC中的每一次更新都会有一个编号,用来标识本次更新的版本)的版本实例,同时也可以获得日期、提交人等其它想要的信息。
可选地,关于第三方SC(如SVN、Perforce),提交信息的格式会稍有不同,可以根据实际需求进行获取。如果找不到指定版本号的实例,则直接获取当前资源对象,即为当前本地版本,同时将资源对象、版本实例、提交信息保存下来,留作后续使用。
2、蓝图数据的差异化分析
2.1Myblueprint类数据
参考图5,示出了本发明实施例中差异分析的示意图,将版本实例转换为UBlueprint类型,并获取class对象,包括旧版本对象与新版本对象的class对象。接着遍历旧class对象中的所有属性(即UProperty)并在新class对象中找同名属性,若不存在,则该属性判定为被删除,记录该属性;若存在,则该属性判定为修改,记录新旧class对象中的该属性。同时,遍历新class对象中的所有属性,并在旧class对象中找同名属性,若不存在,则该属性判定为新增,记录该属性,然后记录Myblueprint类数据的差异类型和结果。可选地,记录内容包括属性名、操作类型、属性值等。
2.2Default类数据
参考图6,示出了本发明实施例中差异分析的示意图,将版本实例转换为UBlueprint类型,新旧两个CDO类对象,并使用DiffUtils::CompareUnrelatedObjects方法直接对新旧两个CDO类对象进行对比获取Diff结果,返回值为FSingleObjectDiffEntry类型(包含UProperty和DiffType)的数组,然后遍历数组,逐个读取Diff数据,并根据DiffType进行处理,若为删除,则记录旧版本实例中的UProperty;若为新增,则记录新版本实例中的UProperty;若为修改,则记录新旧版本实例中的UProperty和Value,然后记录Default类数据的差异类型和结果。
2.3Component类数据
参考图7,示出了本发明实施例中差异分析的示意图,将版本实例转换为UBlueprint类型并获取类对象,包括旧版本对象与新版本对象的类对象。接着判断类对象是否是Actor子类(如组件子对象),若是Actor子类,则通过GetDefaultSubobjects获取类对象的组件子对象列表(Component List),然后遍历旧版组件子对象列表,将组件子对象列表中的组件逐一和新版对应的组件子对象列表中的组件进行比对,若旧版本中无、新版本中有,则为新增组件;若旧版本中有、新版本中无,则为删除组件;若新旧版本均有,则为新增组件,则为组件修改,记录变化,返回FSingleObjectDiffEntry,使用DiffUtils::CompareUnrelatedObjects方法直接对比并获取Diff结果,返回值为FSingleObjectDiffEntry类型的数组,遍历数组,逐个读取Diff数据,识别不同的差异类型和结果,并记录差异类型和结果。
2.4Graph类数据
参考图8,示出了本发明实施例中差异分析的示意图,将版本实例转换为UBlueprint类型,得到新旧两个版本对象的类对象,接着分别通过GetAllGraphs方法获取所有的Graph,记录为UEdGraph数组,接着通过FGraphDiffControl::DiffGraphs方法直接对比并获取Diff结果,返回值为FDiffSingleResult类型的数组,并记录差异类型和结果。
2.5Others类数据
参考图9,示出了本发明实施例中差异分析的示意图,将版本实例转换为UBlueprint类型,得到新旧两个版本对象的类对象,然后通过FindDiffs方法直接对比并获取Diff结果,返回值为FDiffResults类型的数组,遍历FDiffResults的数组,根据差异类型做不同的处理,若为ObjectsDiff类型,则使用DiffUtils::CompareUnrelatedObjects方法直接对比并获取差异数据,返回值为FSingleObjectDiffEntry类型的数组,然后遍历数组,逐个读取Diff数据,并根据DiffType进行处理,若为删除,则记录旧版本实例中的UProperty,若为新增,则记录新版本实例中的UProperty,若为修改,则记录新旧版本实例中的UProperty和Value,然后记录Default类数据的差异类型和结果;若为其它类型,直接记录Diff结果,返回值为FDiffSingleResult数组,然后遍历FDiffSingleResult数组并根据DiffType做处理,记录对应内容。
通过上述2.1-2.5可以完成了对BlueprintClass类型的数据Diff解析,并且完全脱离UE的图形功能,直接获得需要的Diff数据,可以直接在后台通过UCommandlet功能进行执行。
3、差异文件的生成
基于UE提供的FJsonObject进行二次封装,因为在转存Json的过程中发现其直接使用并不方便,记录数据接口不统一、序列化操作较复杂,不利于代码编写和功能集成,故重新封装,结构和功能如下:
3.1统一数据记录接口
通过SetStringField方法记录string数据到Json对象中;通过SetNumberField方法记录浮点数据到Json对象中;通过SetObjectField方法记录Json对象到Json对象中,完成嵌套;通过SetArrayField方法记录Json数组到Json对象中,同时也支持将Json对象加入到已嵌套的Json数组中去,完成数组的双向嵌套,从而以上所有功能都统一为一个重载接口SetKeyValueField。可选地,对于其它数据类型,也可以直接在该接口进行扩展。
3.2文件的序列化封装
可以通过GetFStringInJsonFormat方法对Json对象进行序列化封装,得到差异数据的字符串数据,进而可以存储为任意格式的文件。
3.3文件的快速读写
因FFileHelper读取和保存文件需要使用完整路径,在代码编写时使用不便,也将其进行二次封装,提供UE相对路径即可直接读写Json文件,并且对同名文件进行覆盖、重命名、不保存三种可选操作,提高保存功能的安全性。
通过上述1-3的过程,可以得到Json文件保存的差异化数据,使得差异数据能够被第三方工具读取,提高了自动化监控的扩展性,测试人员能够在后台进行监控的过程中,同时通过监控工具进行检测,实现自动纠正与预警,保证了工程开发的质量。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图10,示出了本发明的一种蓝图数据的差异化处理装置实施例的结构框图,具体可以包括如下模块:
目标实例获取模块1001,用于获取蓝图数据的目标实例,所述蓝图数据包括多个类别数据;
差异数据生成模块1002,用于对所述类别数据进行差异分析,生成针对所述目标实例的差异数据;
差异文件生成模块1003,用于根据所述差异数据,生成与所述目标实例匹配的差异文件。
在本发明的一种可选实施例中,还包括:
排序信息确定模块,用于响应于针对所述差异数据的用户操作,确定与所述用户操作对应的排序信息;
差异数据展示模块,用于按照所述排序信息,对所述差异数据进行展示。
在本发明的一种可选实施例中,还包括:
差异分析结果展示模块,用于响应检测到针对所述差异数据的选择操作,获取与所述选择操作匹配的目标数据,并展示所述目标数据对应的差异分析结果。
在本发明的一种可选实施例中,还包括:
提醒信息生成模块,用于若所述差异数据中包括针对所述目标实例中指定数据的差异分析结果,则生成针对所述指定数据的提醒信息;
其中,所述指定数据包括所述目标实例中被标记的数据。
在本发明的一种可选实施例中,所述目标实例获取模块1001包括:
更新信息获取子模块,用于获取蓝图数据的更新信息;
版本信息提取子模块,用于从所述更新信息中,提取所述蓝图数据的版本信息;
目标实例获取子模块,用于从所述版本信息中,选定版本号,并获取与所述版本号对应的目标实例。
在本发明的一种可选实施例中,所述目标实例包括历史版本实例以及目标版本实例,所述差异数据生成模块1002包括:
实例数据获取子模块,用于对所述历史版本实例与所述目标版本实例进行数据转换,获得历史实例数据与目标实例数据;
实例数据比对子模块,用于将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据。
在本发明的一种可选实施例中,所述类别数据包括MyBlueprint类数据,所述实例数据比对子模块具体用于:
获取所述历史实例数据中所述MyBlueprint类数据的第一属性信息,以及所述目标实例数据中所述MyBlueprint类数据的第二属性信息;
将所述第一属性信息与所述第二属性信息进行比对,生成针对所述MyBlueprint类数据的属性差异结果。
在本发明的一种可选实施例中,所述类别数据包括Default类数据,所述实例数据比对子模块具体用于:
获取所述历史实例数据中所述Default类数据的第一默认数据,以及所述目标实例数据中所述Default类数据的第二默认数据;
将所述第一默认数据与所述第二默认数据进行比对,生成针对所述第一默认数据与所述第二默认数据的第一比对数组;
采用所述第一比对数组,生成针对所述Default类数据的数据差异结果。
在本发明的一种可选实施例中,所述类别数据包括Component类数据,所述实例数据比对子模块具体用于:
获取所述历史实例数据中所述Component类数据的第一类对象,以及所述目标实例数据中所述Component类数据的第二类对象;
若所述第一类对象与所述第二类对象为Actoer子类对象,则获取所述第一类对象的第一数据子对象,以及所述第二类对象的第二数据子对象;
将所述第一数据子对象与所述第二数据子对象进行比对,生成针对所述omponent类数据的对象差异结果。
在本发明的一种可选实施例中,所述类别数据包括Graph类数据,所述实例数据比对子模块具体用于:
获取所述历史实例数据中所述Graph类数据的第一事件数组,以及所述目标实例数据中所述Graph类数据的第二事件数组;
将所述第一事件数组与所述第二事件数组进行比对,生成针对所述历史实例数据与所述目标实例数据的第二比对数组;
采用所述第二比对数组,生成针对所述Graph类数据的事件差异结果。
在本发明的一种可选实施例中,所述类别数据包括Others类数据,所述实例数据比对子模块具体用于:
将所述历史实例数据中的Others类数据与所述目标实例数据中的Others类数据进行比对,生成数据比对结果;
若所述数据比对结果为表征工具类的差异结果,则确定与所述数据比对结果对应的第三比对数组;
采用所述第三比对数组,生成针对所述目标实例中Others类数据的第一差异结果。
在本发明的一种可选实施例中,所述实例数据比对子模块具体还用于:
若所述数据比对结果不为所述表征工具类的差异结果,则确定与所述数据比对结果对应的第四比对数组,并获取所述数据比对结果的数据类型;
按照所述数据类型,对所述第四比对数组进行记录,生成针对所述目标实例中Others类数据的第二差异结果。
在本发明的一种可选实施例中,所述差异文件生成模块1003包括:
信息获取子模块,用于获取所述目标版本实例的路径信息,与针对所述差异数据的语法信息;
数据转换子模块,用于对所述差异数据进行数据转换,生成目标差异数据;
差异文件生成子模块,用于采用所述语法信息、所述路径信息以及所述目标差异数据,生成与所述目标实例匹配的差异文件。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行本发明实施例所述的方法。
本发明实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种蓝图数据的差异化处理方法和一种蓝图数据的差异化处理装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (16)
1.一种蓝图数据的差异化处理方法,其特征在于,包括:
获取蓝图数据的目标实例,所述蓝图数据包括多个类别数据;
对所述类别数据进行差异分析,生成针对所述目标实例的差异数据;
根据所述差异数据,生成与所述目标实例匹配的差异文件。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于针对所述差异数据的用户操作,确定与所述用户操作对应的排序信息;
按照所述排序信息,对所述差异数据进行展示。
3.根据权利要求2所述的方法,其特征在于,还包括:
响应检测到针对所述差异数据的选择操作,获取与所述选择操作匹配的目标数据,并展示所述目标数据对应的差异分析结果。
4.根据权利要求1所述的方法,其特征在于,还包括:
若所述差异数据中包括针对所述目标实例中指定数据的差异分析结果,则生成针对所述指定数据的提醒信息;
其中,所述指定数据包括所述目标实例中被标记的数据。
5.根据权利要求1所述的方法,其特征在于,所述获取蓝图数据的目标版本实例,包括:
获取蓝图数据的更新信息;
从所述更新信息中,提取所述蓝图数据的版本信息;
从所述版本信息中,选定版本号,并获取与所述版本号对应的目标实例。
6.根据权利要求1或5所述的方法,其特征在于,所述目标实例包括历史版本实例以及目标版本实例,所述对所述类别数据进行差异分析,生成针对所述目标实例的差异数据,包括:
对所述历史版本实例与所述目标版本实例进行数据转换,获得历史实例数据与目标实例数据;
将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据。
7.根据权利要求6所述的方法,其特征在于,所述类别数据包括MyBlueprint类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
获取所述历史实例数据中所述MyBlueprint类数据的第一属性信息,以及所述目标实例数据中所述MyBlueprint类数据的第二属性信息;
将所述第一属性信息与所述第二属性信息进行比对,生成针对所述MyBlueprint类数据的属性差异结果。
8.根据权利要求6所述的方法,其特征在于,所述类别数据包括Default类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
获取所述历史实例数据中所述Default类数据的第一默认数据,以及所述目标实例数据中所述Default类数据的第二默认数据;
将所述第一默认数据与所述第二默认数据进行比对,生成针对所述第一默认数据与所述第二默认数据的第一比对数组;
采用所述第一比对数组,生成针对所述Default类数据的数据差异结果。
9.根据权利要求6所述的方法,其特征在于,所述类别数据包括Component类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
获取所述历史实例数据中所述Component类数据的第一类对象,以及所述目标实例数据中所述Component类数据的第二类对象;
若所述第一类对象与所述第二类对象为Actoer子类对象,则获取所述第一类对象的第一数据子对象,以及所述第二类对象的第二数据子对象;
将所述第一数据子对象与所述第二数据子对象进行比对,生成针对所述omponent类数据的对象差异结果。
10.根据权利要求6所述的方法,其特征在于,所述类别数据包括Graph类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
获取所述历史实例数据中所述Graph类数据的第一事件数组,以及所述目标实例数据中所述Graph类数据的第二事件数组;
将所述第一事件数组与所述第二事件数组进行比对,生成针对所述历史实例数据与所述目标实例数据的第二比对数组;
采用所述第二比对数组,生成针对所述Graph类数据的事件差异结果。
11.根据权利要求6所述的方法,其特征在于,所述类别数据包括Others类数据,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,包括:
将所述历史实例数据中的Others类数据与所述目标实例数据中的Others类数据进行比对,生成数据比对结果;
若所述数据比对结果为表征工具类的差异结果,则确定与所述数据比对结果对应的第三比对数组;
采用所述第三比对数组,生成针对所述目标实例中Others类数据的第一差异结果。
12.根据权利要求11所述的方法,其特征在于,所述将所述历史实例数据与所述目标实例数据进行比对,对所述类别数据进行差异分析,生成针对所述历史版本实例与所述目标版本实例的差异数据,还包括:
若所述数据比对结果不为所述表征工具类的差异结果,则确定与所述数据比对结果对应的第四比对数组,并获取所述数据比对结果的数据类型;
按照所述数据类型,对所述第四比对数组进行记录,生成针对所述目标实例中Others类数据的第二差异结果。
13.根据权利要求1所述的方法,其特征在于,所述根据所述差异数据,生成与所述目标实例匹配的差异文件,包括:
获取所述目标版本实例的路径信息,与针对所述差异数据的语法信息;
对所述差异数据进行数据转换,生成目标差异数据;
采用所述语法信息、所述路径信息以及所述目标差异数据,生成与所述目标实例匹配的差异文件。
14.一种蓝图数据的差异化处理装置,其特征在于,包括:
目标实例获取模块,用于获取蓝图数据的目标实例,所述蓝图数据包括多个类别数据;
差异数据生成模块,用于对所述类别数据进行差异分析,生成针对所述目标实例的差异数据;
差异文件生成模块,用于根据所述差异数据,生成与所述目标实例匹配的差异文件。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-13任一项所述的方法。
16.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110005029.9A CN112597057B (zh) | 2021-01-04 | 2021-01-04 | 一种蓝图数据的差异化处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110005029.9A CN112597057B (zh) | 2021-01-04 | 2021-01-04 | 一种蓝图数据的差异化处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112597057A true CN112597057A (zh) | 2021-04-02 |
CN112597057B CN112597057B (zh) | 2023-10-20 |
Family
ID=75206826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110005029.9A Active CN112597057B (zh) | 2021-01-04 | 2021-01-04 | 一种蓝图数据的差异化处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112597057B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10293683A (ja) * | 1997-04-17 | 1998-11-04 | Toshiba Corp | プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体 |
US20020184213A1 (en) * | 2001-06-01 | 2002-12-05 | International Business Machines Corporation | Data instance transformation tool for transforming a source instance to a target instance |
US20030084424A1 (en) * | 2001-07-26 | 2003-05-01 | Reddy Sreedhar Sannareddy | Pattern-based comparison and merging of model versions |
US20030227482A1 (en) * | 2002-06-05 | 2003-12-11 | Thomas Bach | User interface builder |
WO2005008440A2 (en) * | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | System and method for common storage object model |
US20050080811A1 (en) * | 2003-10-10 | 2005-04-14 | Cendura Corporation | Configuration management architecture |
CN101645074A (zh) * | 2009-09-07 | 2010-02-10 | 浪潮集团山东通用软件有限公司 | 一种访问不同类型关系型数据库的方法 |
CN109408102A (zh) * | 2018-09-04 | 2019-03-01 | 珠海格力电器股份有限公司 | 一种版本比对方法和装置、家电设备、网络设备 |
CN110324169A (zh) * | 2018-03-30 | 2019-10-11 | 北京京东尚科信息技术有限公司 | 一种接口管理的方法和装置 |
CN110427215A (zh) * | 2019-07-30 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 一种应用于前端开发的程序版本差异展示方法及装置 |
US20190347082A1 (en) * | 2018-05-11 | 2019-11-14 | Slack Technologies, Inc. | Installing third party applications requiring variable host address identification in a group-based communication system |
CN110463162A (zh) * | 2017-09-19 | 2019-11-15 | 华为技术有限公司 | 应用部署方法、装置及系统 |
US20200169574A1 (en) * | 2018-11-27 | 2020-05-28 | General Electric Company | Framework to develop cyber-physical system behavior-based monitoring |
CN111580832A (zh) * | 2020-04-29 | 2020-08-25 | 电科云(北京)科技有限公司 | 应用于异构多云环境的应用发布系统及方法 |
-
2021
- 2021-01-04 CN CN202110005029.9A patent/CN112597057B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10293683A (ja) * | 1997-04-17 | 1998-11-04 | Toshiba Corp | プログラムの比較解析装置、プログラムの比較解析方法、及びプログラムの比較解析プログラムを記録した機械読み取り可能な記録媒体 |
US20020184213A1 (en) * | 2001-06-01 | 2002-12-05 | International Business Machines Corporation | Data instance transformation tool for transforming a source instance to a target instance |
US20030084424A1 (en) * | 2001-07-26 | 2003-05-01 | Reddy Sreedhar Sannareddy | Pattern-based comparison and merging of model versions |
US20030227482A1 (en) * | 2002-06-05 | 2003-12-11 | Thomas Bach | User interface builder |
WO2005008440A2 (en) * | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | System and method for common storage object model |
US20050080811A1 (en) * | 2003-10-10 | 2005-04-14 | Cendura Corporation | Configuration management architecture |
CN101645074A (zh) * | 2009-09-07 | 2010-02-10 | 浪潮集团山东通用软件有限公司 | 一种访问不同类型关系型数据库的方法 |
CN110463162A (zh) * | 2017-09-19 | 2019-11-15 | 华为技术有限公司 | 应用部署方法、装置及系统 |
CN110324169A (zh) * | 2018-03-30 | 2019-10-11 | 北京京东尚科信息技术有限公司 | 一种接口管理的方法和装置 |
US20190347082A1 (en) * | 2018-05-11 | 2019-11-14 | Slack Technologies, Inc. | Installing third party applications requiring variable host address identification in a group-based communication system |
CN109408102A (zh) * | 2018-09-04 | 2019-03-01 | 珠海格力电器股份有限公司 | 一种版本比对方法和装置、家电设备、网络设备 |
US20200169574A1 (en) * | 2018-11-27 | 2020-05-28 | General Electric Company | Framework to develop cyber-physical system behavior-based monitoring |
CN110427215A (zh) * | 2019-07-30 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 一种应用于前端开发的程序版本差异展示方法及装置 |
CN111580832A (zh) * | 2020-04-29 | 2020-08-25 | 电科云(北京)科技有限公司 | 应用于异构多云环境的应用发布系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112597057B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3129885B1 (en) | Software test automation system and method | |
CN109840206B (zh) | 数据测试方法、装置、终端及存储介质 | |
KR20010013719A (ko) | 저비용으로 용이하게 사용할 수 있는 자동 테스트 시스템소프트웨어 | |
US7536678B2 (en) | System and method for determining the possibility of adverse effect arising from a code change in a computer program | |
CN112817865A (zh) | 一种基于组件化分布式系统的覆盖精准测试方法及其系统 | |
AU4098700A (en) | Circuit arrangement for measuring the resistances of a pressure-sensitive resistance mat | |
AU2019398023B2 (en) | Improved spreadsheet and method for updating same | |
Wagner et al. | On the relationship of inconsistent software clones and faults: An empirical study | |
CN112905441A (zh) | 测试用例生成方法、测试方法、装置及设备 | |
CN112799718A (zh) | 一种枚举文档的生成方法、装置、电子设备及存储介质 | |
CN113986741A (zh) | 一种组件调试方法、装置及计算机设备 | |
CN113900962B (zh) | 代码差异检测方法及装置 | |
JP2016024477A (ja) | ソフトウェア欠陥予測装置、ソフトウェア欠陥予測方法、およびソフトウェア欠陥予測プログラム | |
CN112597057B (zh) | 一种蓝图数据的差异化处理方法和装置 | |
Valenzuela-Toledo et al. | EGAD: A moldable tool for GitHub Action analysis | |
CN114328185B (zh) | 持续集成信息聚合系统 | |
CN113577775A (zh) | 美术资源文件的检查方法及装置、电子设备、存储介质 | |
JP2000215038A (ja) | 情報管理装置および記録媒体 | |
WO2022093178A1 (en) | Ci/cd pipeline code recommendations | |
CN118377726B (zh) | web应用自动化测试方法、计算机装置 | |
US11995146B1 (en) | System and method for displaying real-time code of embedded code in a browser-window of a software application | |
CN118444970B (zh) | 一种应用分发平台的版本管理系统 | |
EP4290368A1 (en) | Computer-implemented method and system for generating a command pipeline for controlling a technical device | |
US20210026622A1 (en) | Automated generation and consistency checking of software objects | |
CN117909041A (zh) | 一种linux操作系统应用软件迁移的快速评估方法 |
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 |