CN113472903A - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN113472903A CN113472903A CN202111023776.1A CN202111023776A CN113472903A CN 113472903 A CN113472903 A CN 113472903A CN 202111023776 A CN202111023776 A CN 202111023776A CN 113472903 A CN113472903 A CN 113472903A
- Authority
- CN
- China
- Prior art keywords
- switch
- target
- item
- state
- control center
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/567—Integrating service provisioning from a plurality of service providers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
Abstract
本申请公开了一种数据处理方法及装置,其中方法包括:获取目标应用的开关配置信息,目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关配置信息包括N个写接口,每个写接口对应一个协议方法;调用开关组控制中心根据开关配置信息,将N个写接口中的各个写接口暴露给对应的业务模块;若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,通过开关组控制中心采用目标写接口对应的协议方法,修改目标开关项的当前开关状态,可实现对目标应用中多个开关项的统一管理,目标应用可以是与多媒体相关的应用,且目标应用可以运行于手机、电脑、智能语音交互设备、智能家电、车载终端等终端中。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法及装置。
背景技术
在任一应用的开发过程中,技术人员通常会为该应用开发多个业务模块和多个开关项;一个开关项可对应一个或多个业务模块,且不同的业务模块可根据自己的业务逻辑对该开关项的开关状态进行控制。例如,针对视频播放应用而言,其可包括视频播放业务模块和视频搜索业务模块等多个业务模块,以及“青少年模式”等多个开关项;视频播放业务模块和视频搜索业务模块均可对“青少年模式”这一开关项的开关状态进行控制。由于目前通常是由各个业务模块独立控制相应开关项的开关状态的,这样的处理方式会导致应用的代码重复率较高,不利于应用的维护和扩展;因此,如何对应用的各个开关项的开关状态进行控制成为了当下的研究热点。
发明内容
本申请实施例提供了一种数据处理方法及装置,可实现对目标应用中多个开关项的统一管理。
一方面,本申请实施例提供了一种数据处理方法,包括:
获取目标应用的开关配置信息,所述目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关组控制中心用于统一管理所述N个开关项,所述多个业务模块中每个业务模块对应所述N个开关项中的至少一个开关项,所述开关配置信息包括N个写接口,一个写接口对应一个开关项,且每个写接口对应一个协议方法;
调用所述开关组控制中心根据所述开关配置信息,将所述N个写接口中的各个写接口暴露给对应的业务模块;
若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态;所述当前开关状态是指所述目标写接口被调用时,所述目标开关项所处的开关状态。
再一方面,本申请实施例提供了一种数据处理装置,包括:
获取单元,用于获取目标应用的开关配置信息,所述目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关组控制中心用于统一管理所述N个开关项,所述多个业务模块中每个业务模块对应所述N个开关项中的至少一个开关项,所述开关配置信息包括N个写接口,一个写接口对应一个开关项,且每个写接口对应一个协议方法;
处理单元,用于调用所述开关组控制中心根据所述开关配置信息,将所述N个写接口中的各个写接口暴露给对应的业务模块;
修改单元,用于若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态;所述当前开关状态是指所述目标写接口被调用时,所述目标开关项所处的开关状态。
再一方面,本申请实施例提供了一种数据处理设备,包括:
处理器,适于实现一条或多条指令;
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令由所述处理器加载并执行如下步骤:
获取目标应用的开关配置信息,所述目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关组控制中心用于统一管理所述N个开关项,所述多个业务模块中每个业务模块对应所述N个开关项中的至少一个开关项,所述开关配置信息包括N个写接口,一个写接口对应一个开关项,且每个写接口对应一个协议方法;调用所述开关组控制中心根据所述开关配置信息,将所述N个写接口中的各个写接口暴露给对应的业务模块;若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态;所述当前开关状态是指所述目标写接口被调用时,所述目标开关项所处的开关状态。
再一方面,本申请实施例提供了一种存储介质,其特征在于,所述存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行:
获取目标应用的开关配置信息,所述目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关组控制中心用于统一管理所述N个开关项,所述多个业务模块中每个业务模块对应所述N个开关项中的至少一个开关项,所述开关配置信息包括N个写接口,一个写接口对应一个开关项,且每个写接口对应一个协议方法;调用所述开关组控制中心根据所述开关配置信息,将所述N个写接口中的各个写接口暴露给对应的业务模块;若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态;所述当前开关状态是指所述目标写接口被调用时,所述目标开关项所处的开关状态。
再一方面,本申请实施例提供了一种计算机程序产品或计算机程序,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机存储介质中;处理器从计算机存储介质中读取所述计算机程序,处理器执行所述计算机程序,使得数据处理设备执行:
获取目标应用的开关配置信息,所述目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关组控制中心用于统一管理所述N个开关项,所述多个业务模块中每个业务模块对应所述N个开关项中的至少一个开关项,所述开关配置信息包括N个写接口,一个写接口对应一个开关项,且每个写接口对应一个协议方法;调用所述开关组控制中心根据所述开关配置信息,将所述N个写接口中的各个写接口暴露给对应的业务模块;若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态;所述当前开关状态是指所述目标写接口被调用时,所述目标开关项所处的开关状态。
在本申请实施例中,由于在目标应用中创建了开关组控制中心,使得目标应用中的N个开关项可以得到统一的管理;此外,本申请实施例中,目标应用通过开关组控制中心在业务模块与开关项之间建立了对应关系,并且通过开关组控制中心向开关项对应的一个或多个业务模块暴露了开关项的写接口,使得该一个或多个业务模块中的任一业务模块均可以通过调用接口的方式,实现对开关项的修改操作,简化了业务模块的开发流程,同时降低了目标应用的代码重复率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理系统的架构示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3是本申请实施例提供的又一种数据处理方法的流程示意图;
图4是本申请实施例提供的一种修改开关状态的流程示意图;
图5是本申请实施例提供的一种数据处理装置的架构示意图;
图6是本申请实施例提供的一种数据处理设备的架构示意图。
具体实施方式
在本申请实施例中,后续所提及的目标应用是指:包括N个开关项的任一应用程序,N为正整数;应用程序可以理解为:为了提供某项或某几项特定功能而被开发的,可以运行于操作系统之上的计算机程序。示例性地,目标应用可以是与多媒体相关的应用程序,如:视频播放应用程序、音频播放应用程序、拍照应用程序等。当然,目标应用还可以是与车联网应用场景相关的应用,或者是与智慧交通相关的应用;在此情况下,示例性地,目标应用可以涉及以下任一方面:消息、提醒、语音、电台、广告、听书、汽车(具体如:加油、充电、停车、速度、能耗、行程分享、分享行程、车位等)、旅游等。具体应用中,目标应用可包括多个业务模块和N个开关项;其中,业务模块可以用于执行业务处理,以使得该业务模块可以向使用该目标应用的用户提供业务服务。例如,当目标应用为视频播放应用程序时,该目标应用可包括但不限于如下业务模块:用于提供视频播放服务的视频播放业务模块、用于提供视频搜索服务的视频搜索业务模块,等等;当目标应用为音频播放应用程序时,该目标应用可包括但不限于如下业务模块:用于提供音频播放服务的音频播放业务模块、用于提供音频推送服务的音频推送业务模块,等等。
在实际应用中,一个业务模块可以对应N个开关项中的一个或多个开关项,每个业务模块在提供业务服务的过程中,均可以参考对应的开关项的开关状态。以视频播放应用程序中的视频播放业务模块为例,其在提供视频播放这一业务服务的过程中,可以参考“青少年模式”这一开关项的开关状态;那么,若“青少年模式”这一开关项的开关状态为开启状态,则视频播放业务模块在提供视频播放这一业务服务时,会避免为用户播放存在血腥或暴力画面的视频内容;若“青少年模式”这一开关项的开关状态为关闭状态,则视频播放业务模块在提供视频播放这一业务服务时,可不作任何视频筛选操作,即无需避免为用户播放存在血腥或暴力画面的视频内容。由此可见,本申请实施例所提及的开关项可以理解为:用于开启或关闭目标应用中一项或多项业务功能的组件,如:开启避免播放存在血腥或暴力视频的组件、开启视频弹幕的组件等;或是理解为:用于调整对应的业务模块的业务功能的功能强弱的组件,如:调整背景图片的透明度的组件、调整声音的大小的组件、调整图像的色彩鲜明度的组件等。需要说明的是,上述提及的开关状态可以理解为开关项的取值,那么,示例性地,开关状态可以用id(identity document,身份标识)类型的数据表示,也就是说,开关状态可以用字符串、数值、数组、二维矩阵等表示。
基于上述描述,为了实现在对目标应用的各个开关项的开关状态进行控制的情况下,减少目标应用的代码重复率,以便于目标应用的维护和扩展,本申请实施例提出了一种数据处理方法;该数据处理方法通过在目标应用中增加一个开关组控制中心,可以实现对目标应用中的N(N为正整数)个开关项进行统一管理,也就是说,本申请实施例所提出的目标应用可以至少包括:开关组控制中心、多个业务模块以及N个开关项。其中,开关组控制中心可以理解为:用于对目标应用中的N个开关项的开关状态进行统一管理的程序代码。
在实际应用中,本申请可以基于分类技术、代理模式和Runtime技术实现上述数据处理方法,所谓的分类技术指的是:Objective-C(一种面向对象的程序设计语言)中的Category(分类),“分类”是对代理模式的一种具体实现,其主要作用是在不改变原有类的前提下,动态地给这个类添加一些方法;在本申请实施例中,主要是利用分类技术为开关项扩展专属的功能。由于Objective-C扩展了C语言,并加入了面向对象特性和 Smalltalk(一种面向对象的程序设计语言)式的消息传递机制,而这个扩展的核心是一个用 C 和编译语言写的 Runtime 库,因此,可以理解,Runtime技术是Objective-C 面向对象和动态机制的基石;在本申请实施例中,主要是利用Runtime技术在程序运行的过程中动态地修改开关项的开关状态。此外,上述提及的代理模式指的是:为其他对象(如:业务模块)提供一种代理,以控制对某个对象(如:开关项)的访问,在本申请实施例中,主要利用代理模式实现通过调用接口对开关项的开关状态进行修改。
在具体应用中,上述提及的数据处理方法可以应用于如图1所示的数据处理系统中,如图1所示,该系统包括:目标应用10以及一个或多个服务器11,其中,目标应用10可以与一个或多个服务器11中的每个服务器均建立通信连接,又由前述可知,目标应用10中可以包括一个或多个业务模块,那么,这一个或多个业务模块中任一业务模块,可以对应上述提及的一个或多个服务器11中的任一个服务器。需要说明的是,上述提及的目标应用10可以运行于终端中,该终端可包括但不限于:智能手机、平板电脑、笔记本电脑、台式计算机、车载终端、智能语音交互设备、智能家电等;上述提及的一个或多个服务器11中的任一个服务器,既可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,等等,本申请对此不作限制。
请参见图2,图2是本申请实施例提供的一种数据处理方法的流程示意图,该方法可由上述提及的目标应用来执行,如图2所示,该方法包括步骤S201-S203:
S201,获取目标应用的开关配置信息。
其中,开关配置信息可以理解为:与目标应用中的各个开关项相关的信息,具体如:各个开关项的类型信息(如:字符串类型、数值类型、数组类型、二维矩阵类型等)、各个开关项的开关状态信息(如:开启状态、关闭状态等)、各个开关项的开关状态的存储位置信息(如:服务器的数据库、本地存储空间等),以及与各个开关项相关的用户标识等等。
本申请实施例中,开关配置信息至少可以包括N个写接口,该N个写接口与目标应用中的N个开关项一一对应;所谓的一一对应可以理解为:一个写接口对应一个开关项,且不同的写接口对应不同的开关项。那么,若N个开关项中任一开关项表示为目标开关项,可以理解,N个写接口中存在目标写接口与该目标开关项对应。在具体实现中,为了满足不同业务模块对同一开关项的开关状态的设置需求,N个写接口中的每个写接口的参数可以为“void*”类型(即:万能指针类型),以使得void*可以指向任何对象和基本数据类型的地址,进而使得业务模块为该写接口对应的开关项设置的开关状态可以基于布尔值(如:是、否)实现、也可以基于非布尔值(如:高亮度、中亮度、低亮度)实现。此外,每个写接口还可以对应一个协议方法,目标应用可以通过开关组控制中心来调用该协议方法,从而实现对该写接口对应开关项的开关状态的修改。其中,所谓的协议方法,其本质可以理解为:用于对开关项的开关状态进行修改的一个或多个代码块。需要说明的是,每个写接口对应的协议方法可以位于该写接口对应的写方法中,“写方法”是指:为开关项增加属性(或称:开关状态)的方法。其中,“写方法”除了包括协议方法外,还可以包括目标回调方法,目标回调方法指的是:一种可以被当作参数进行传递的方法,需要说明的是,此处提及的“方法”具体可以理解为一段程序代码。在本申请实施例中,目标回调方法可以用于向目标应用中的业务模块反馈写方法的调用结果。具体地,若目标应用中存在任一业务模块对目标回调方法设置了监听事件,则目标回调方法可以在检测到写方法被调用后,向该任一业务模块反馈该写方法的调用结果。需要说明的是,上述的“写方法”以及“目标回调方法”中的“方法”,可以参照C语言(一种编程语言)中的“回调函数”进行理解,也就是说,上述提及的“方法”具体指的是:具有方法名的编程语句序列,其本质上是代码块。
可选地,本申请实施例中的开关配置信息还可以包括:N个开关项中各个开关项在多个生效维度下的生效信息;其中,此处所提及的多个生效维度至少可以包括:对象绑定维度、存储维度以及前置依赖维度。那么,以N个开关项中的任一目标开关项(以下称:目标开关项)为例,对象绑定维度下的生效信息可以用于指示:目标开关项的绑定对象;存储维度下的生效信息可以用于指示:目标开关项的开关状态的存储位置;前置依赖维度下的生效信息可以用于指示:目标开关项是否存在前置依赖关系。举例来说,假设目标应用为视频播放应用程序,那么,N个开关项可以包括:青少年模式、自动跳过片头片尾、播放器手势操作、快进时显示截图、缓存视频时禁止自动熄屏、个人直播后台播放、允许运营商网络上传视频、消息中心免打扰等。那么,基于此,开关配置信息所包括的各个开关项在多个生效维度下的生效信息可示例性地参见下述表1所示:
表1
开关项 | 对象绑定维度 (用户/设备) | 存储维度 (服务器/本地) | 前置依赖维度 (有前置依赖关系/无前置依赖关系) |
青少年模式 | 用户 | 服务器 | 是 |
自动跳过片头片尾 | 设备 | 本地 | 否 |
播放器手势操作 | 设备 | 本地 | 否 |
快进时显示截图 | 设备 | 本地 | 否 |
缓存视频时禁止自动熄屏 | 设备 | 本地 | 否 |
个人直播后台播放 | 用户 | 本地 | 否 |
允许运营商网络上传视频 | 用户 | 服务器 | 是 |
消息中心免打扰 | 设备 | 本地 | 否 |
由表1可知,针对“青少年模式”这一开关项而言,其在对象绑定维度下的生效信息为:用户;这表示“青少年模式”这一开关项的开关状态是与用户绑定的。“青少年模式”在存储维度下的生效信息为:服务器;这表示“青少年模式”这一开关项的开关状态是存储在服务器中的。“青少年模式”在前置依赖维度下的生效信息为:是;这表示“青少年模式”这一开关项具备前置依赖关系。
S202,调用开关组控制中心根据开关配置信息,将N个写接口中的各个写接口暴露给对应的业务模块。
其中,目标应用可以通过开关组控制中心,将N个写接口中各个写接口暴露给对应的业务模块,也就是说,针对N个写接口中任一写接口,目标应用可以通过开关组控制中心将该任一写接口开放给:与该任一写接口对应的开关项相关的一个或多个业务模块,以使得该一个或多个业务模块中的任一模块可以调用该任一写接口来对该开关项进行开关状态添加操作、开关状态修改操作等,需要说明的是,该一个或多个业务模块均是该N个写接口所在的目标应用中的业务模块;当然,目标应用也可以通过开关组控制中心将N个写接口中各个写接口暴露给该目标应用中所有的业务模块,以使得所有业务模块中的任一业务模块可以调用各个写接口,本申请对此不做限制。
S203,若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过开关组控制中心采用目标写接口对应的协议方法,修改目标开关项的当前开关状态。
基于上述描述可知,目标写接口为:N个写接口中,与目标开关项对应的写接口。那么,该目标写接口也可以对应一个协议方法。在具体应用中,目标写接口对应的协议方法可以包括三个子协议方法,每个子协议方法均遵循开关组控制中心对开关项进行管理(如:修改开关项、删除开关项等)的管理规则。示例性地,三个子协议方法可以包括:第一子协议方法、第二子协议方法和第三子协议方法,其中,目标应用通过开关组控制中心调用第一子协议方法可以实现:确定开关项的目标开关状态;目标应用通过开关组控制中心调用第二子协议方法可以实现:将开关项的当前开关状态修改为目标开关状态;目标应用通过开关组控制中心调用第三子协议方法可以实现:将开关项的目标开关状态进行存储。
其中,上述提及的目标开关状态可以理解为:目标应用对目标开关项的当前开关状态进行修改后,目标开关项所需处于的开关状态。当前开关状态是指:目标写接口被调用时,目标开关项所处的开关状态。举例来说,假设用户启动目标应用A后,开关项B的开关状态为状态b1,此时,若目标应用A中存在业务模块想通过调用开关项B对应的写接口,来将开关项B的开关状态由“b1”修改为“b2”,且目标应用支持该业务模块将开关项B的开关状态由“b1”修改为“b2”。那么,在此示例中,开关项B的当前开关状态指的是“b1”,目标开关状态指的是“b2”。当然,不难理解,若目标应用A中存在业务模块想通过调用开关项B对应的写接口,来将开关项B的开关状态由“b1”修改为“b2”,但目标应用不支持该业务模块将开关项B的开关状态由“b1”修改为“b2”,那么,开关项B的当前开关状态指的是“b1”,目标开关状态指的也是“b1”。
本申请实施例通过在目标应用中设置开关组控制中心,使得目标应用可以对N个开关项进行统一的管理;又由于每个开关项可以对外提供写接口和读接口,因此,当存在业务模块需要修改目标开关项的开关状态时,调用写接口便能实现对目标开关项的开关状态进行修改;当存在业务模块需要读取目标开关项的开关状态时,通过调用读接口便能直接获取目标开关项的开关状态,无需进行代码编写;可见,本申请实施例提供的数据处理方法有效地降低了代码的重复率,并且在一定程度上提升了开发人员的开发效率,使得开发人员可以更多关注在业务功能的开发上。
请参见图3,图3是本申请实施例提供的又一种数据处理方法的流程示意图,该方法也可以在上述所提及的目标应用中执行;需要说明的是,上述提及的目标应用可以包括:开关组控制中心、多个业务模块、N个开关项、配置信息获取模块。如图3所示,该方法包括步骤S301-S305:
S301,配置信息获取模块获取目标应用的开关配置信息。
其中,配置信息获取模块的本质可以理解为:用于获取开关配置信息的一段程序代码。在实际应用中,目标应用可以通过配置信息获取模块先获取目标应用的开关配置表,当该配置信息模块获取到开关配置表后,目标应用可以将开关配置表解析成数据对象,进而开关组控制中心可以将解析得到的数据对象作为目标应用的开关配置信息。其中,数据对象可以理解为:集合了各个开关项的开关信息的对象,此处的“对象”是编程语言中的关于面向对象(Object Oriented)的术语,它既表示客观世界问题空间中的某个具体的事物,又表示软件系统解空间中的基本元素;那么,也就是说,此处的对象具体可以是一个变量,也可以是一个数据结构,还可以是一个函数,本申请对此不做限制。
S302,开关组控制中心根据开关配置信息,将N个写接口中的各个写接口暴露给对应的业务模块。
在一个实施例中,步骤S302的相关实施例可以参见步骤S202的相关描述,本申请实施例在此不再赘述。
S303,开关组控制中心根据任一业务模块传入的候选开关状态,确定目标开关项的目标开关状态。
其中,候选开关状态可以理解为:该任一业务模块期望目标开关项所处的状态。实际应用中,候选开关状态可以是该任一业务模块在调用目标写接口时,通过发送携带候选开关状态的开关状态修改请求,来向目标应用传入的;那么,示例性地,在本申请实施例中,可以由开关组控制中心来对任一业务模块针对目标开关项发送的开关状态修改请求进行解析,以得到目标开关项的候选开关状态。进一步地,当开关组控制中心得到目标开关项的候选开关状态之后,可以判断该目标开关项是否存在前置依赖关系。具体地,开关组控制中心可以判断目标开关项的开关状态是否需要依赖于其他开关项的开关状态才能生效,从而实确定该目标开关项是否存在前置依赖关系。举例来说,假设“接收好友消息通知”这一开关项的开启状态,需要在“离线模式”这一开关项处于关闭状态时才能生效,那么,开关组控制中心可以认为:“接收好友消息通知”这一开关项存在前置依赖关系;若“接收好友消息通知”这一开关项可以在任意情况下设置为该开关项对应的任意开关状态(如:“开启”状态或“关闭”状态),那么,开关组控制中心可以认为“接收好友消息通知”这一开关项不存在前置依赖关系。
基于上述描述可以理解,若目标开关项不存在前置依赖关系,则开关组控制中心可以将任一业务模块传入的候选开关状态,确定为目标开关项的目标开关状态;若目标开关项存在前置依赖关系,则开关组控制中心可以基于该目标开关项的前置依赖关系,从N个开关项中递归获取该目标开关项所依赖的一个或多个依赖开关项;当然,开关组控制中心不仅可以从目标开关项的前置依赖关系中获取一个或多个依赖开关项,还可以获取该目标开关项所依赖的与目标应用相关的其他状态(如:用户登录状态、用户网络连接状态等),为了便于描述,以下均以开关组控制中心递归获取该目标开关项所依赖的一个或多个依赖开关项为例进行阐述。那么,进一步地,开关组控制中心可以根据该一个或多个依赖开关项中各个依赖开关项的当前开关状态,以及该任一业务模块传入的候选开关状态,来确定目标开关项的目标开关状态。具体地,若该一个或多个依赖开关项的开关状态,均满足目标应用将目标开关项的开关状态设置为候选开关状态的条件,开关组控制中心则可以将目标开关状态确定为:候选开关状态;若该一个或多个依赖开关项中任一开关项的开关状态,不满足目标应用将目标开关项的开关状态设置为候选开关状态的条件,那么,开关组控制中心则可以将目标开关状态确定为:当前开关状态。
需要说明的是,上述提及的一个或多个依赖开关项可以包括:该目标开关项直接依赖的直接依赖开关项,还可以包括:该目标开关项间接依赖的间接依赖开关项。其中,直接依赖开关项可以理解为:直接影响该目标开关项的开关状态的依赖开关项;间接依赖开关项可以理解为:间接影响该目标开关项的开关状态的依赖开关项,且间接依赖开关项具体可以包括:直接影响该目标开关项的直接依赖开关项的依赖开关项,以及间接影响该目标开关项的直接依赖开关项的依赖开关项。举例来说,假设“A(a)→B(b)”表示:开关项A的开关状态a依赖于开关项B的开关状态b,即:开关项A的开关状态a,需要在开关项B的开关状态处于b时生效;那么,基于此,在依赖关系“消息特别提醒(开启)→接收好友消息通知(开启)→离线模式(关闭)”中,可以理解,开关项“消息特别提醒”的依赖开关项包括:“接收好友消息通知”、“离线模式”;其中,开关项“消息特别提醒”的直接依赖开关项为:接收好友消息通知;开关项“接收好友消息通知”的直接依赖开关项为:离线模式;开关项“消息特别提醒”的间接依赖开关项为:离线模式。
基于上述描述,为了更好地理解本申请实施例提供的数据处理方法,以下将结合上述依赖关系“消息特别提醒(开启)→接收好友消息通知(开启)→离线模式(关闭)”,来对本申请实施例中开关组控制中心确定目标开关项的目标开关状态的步骤进行详细阐述。假设目标开关项为“消息特别提醒”,且“消息特别提醒”的当前开关状态为“关闭”状态,那么,在此情况下,若存在业务模块想将目标开关项“消息特别提醒”的开关状态设置为“开启”状态(即:候选开关状态为:“开启”状态),那么,在此情况下,开关组控制中心可以先确定“消息特别提醒”这一目标开关项是否存在前置依赖关系,不难看出,“消息特别提醒”存在前置依赖关系,且“消息特别提醒”的依赖开关项为:“接收好友消息通知”、“离线模式”;那么,进一步地,开关组控制中心可以根据“接收好友消息通知”、“离线模式”这两个开关项的当前开关状态,来确定“消息特别提醒”这一开关状态是否可以设置为“开启”状态。具体地,若“接收好友消息通知”处于“开启”状态,且“离线模式”处于“关闭”状态,那么,开关组控制中心则可以确定:“消息特别提醒”的目标开关状态为“开启”状态;对应地,若“接收好友消息通知”处于“开启”状态,且“离线模式”处于“开启”状态,那么,开关组控制中心则可以确定:“消息特别提醒”的目标开关状态为“关闭”状态。
S304,开关组控制中心基于目标开关项的绑定对象,确定目标开关项的状态修改方式。
其中,绑定对象可以包括但不限于:用户、设备;状态修改方式可以理解为:将目标开关项的当前开关状态修改为目标开关状态所采用的方法。其中,不同的绑定对象可以对应不同的状态修改方式。可选地,当绑定对象为用户时,状态修改方式可以为:开关组控制中心通过调用对象绑定方法,来将当前开关状态修改为目标开关状态,示例性地,对象绑定方法可以为:objc_setAssociatedObject方法;当绑定对象为设备时,状态修改方式可以为:开关组控制中心生成目标键值对,并用目标键值对覆盖当前键值对,从而将当前开关状态修改为目标开关状态。具体地,上述提及的对象绑定方法可以理解为:将目标开关项的当前开关状态修改为目标开关状态的代码块;具体地,对象绑定方法可以包括:调用目标写接口的业务模块针对目标开关项编写的、对该目标开关项的开关状态进行修改的代码块;那么,在此情况下,对象绑定方法可以从开关配置信息中获取。可选地,对象绑定方法还可以包括:技术人员在开发目标应用时,为该目标开关项编写的、对该目标开关项的开关状态进行修改的代码块;那么,在此情况下,对象绑定方法可以从目标应用的开发数据包中获取。
S305,开关组控制中心采用状态修改方式,将目标开关项的当前开关状态修改为目标开关状态。
在一个实施例中,基于上述步骤S304的相关描述可知,当绑定对象为用户时,开关组控制中心可以通过调用对象绑定方法,来将当前开关状态修改为目标开关状态。具体实现中,开关组控制中心可以调用对象绑定方法,生成包含目标开关状态的目标开关数据,并将目标开关数据和登录目标应用的用户标识进行绑定。其中,目标开关数据指的是:对目标开关项的写接口发起调用的业务模块,期望与目标开关项进行关联存储的开关数据;示例性地,目标开关数据可以包括但不限于:目标开关项的开关项标识,以及目标开关项的目标开关状态。进一步地,当上述开关组控制中心将目标开关数据与用户标识进行绑定之后,可以生成目标绑定结果,进而使得开关组控制中心可以将绑定得到的目标绑定结果存储至目标应用所处的设备的本地空间,以覆盖目标开关项的当前开关状态对应的当前绑定结果,从而实现将目标开关项的当前开关状态修改为目标开关状态。
在又一个实施例中,基于上述步骤S304的相关描述可知,当绑定对象为设备时,开关组控制中心可以生成目标键值对,并用目标键值对来对当前键值对进行覆盖,从而实现将当前开关状态修改为目标开关状态。具体实现中,开关组控制中心可以基于目标开关项的开关标识和目标开关状态生成目标键值对,其中,目标键值对中的“键”可以为:目标开关项的开关项标识;目标键值对中的“值”可以为:目标开关状态。进一步地,开关组控制中心可以将目标键值对存储至目标应用所处的设备的本地空间,以覆盖目标开关项的当前开关状态对应的当前键值对,进而实现将目标开关项的当前开关状态修改为目标开关状态。
在一个实施例中,基于上述步骤S301-步骤S305的相关描述,当开关组控制中心将目标开关项的当前开关状态修改为目标开关状态后,还可以确定目标开关项的开关状态的存储位置,以对目标开关状态进行存储。其中,存储位置可以包括但不限于:服务器,目标应用所处的设备的本地空间。那么,若存储位置为服务器,开关组控制中心可以先获取服务器地址参数,进一步地,开关组控制中心可以将目标开关项的目标开关状态存储至服务器地址参数对应的服务器。其中,服务器地址参数可以是:任一业务模块在调用目标开关项的写接口时,向开关组控制中心传入的地址参数(以下称:第一地址参数);第一地址参数可以用于指示该任一业务模块对应的服务器。可选地,服务器地址参数也可以是:目标应用的开发数据包中携带的地址参数(以下称:第二地址参数);第二地址参数可以用于指示该目标应用默认的用于存储数据(如:目标开关状态)的服务器。实际应用中,第一地址参数的优先级可以高于第二地址参数,也就是说,开关组控制中心可以优先获取第一地址参数作为服务器地址参数,若第一地址参数获取失败,开关组控制中心则转而从开发数据包中获取第二地址参数作为服务器地址参数。此外,由步骤S305中的相关描述可知:当目标开关项的当前开关状态被修改为目标开关状态之后,开关组控制中心会将目标开关状态存储至该目标应用所处设备的本地空间,那么,不难理解,若目标应用调用开关组控制中心确定出的存储位置为:目标应用所处设备的本地空间,则开关组控制中心可以不再进行任何存储操作。
在又一个实施例中,当开关组控制中心将目标开关项的当前开关状态修改为目标开关状态后,还可以获取对目标开关项的当前开关项进行修改的修改结果,并在得到修改结果后,根据修改结果生成修改反馈信息,此处的修改反馈信息可以理解为上述步骤S201中提及的“写方法的调用结果”。修改反馈信息在此处可以具体为:目标开关项对应的写方法的调用结果。进一步地,当开关组控制中心生成修改反馈信息之后,可以将修改反馈信息传递给任一业务模块,以使任一业务模块可以根据修改反馈信息执行业务处理。具体应用中,该任一业务模块可以在调用目标开关项的写接口后,对该写接口对应写方法中的目标回调方法进行监听,那么,开关组控制中心将修改反馈信息传递给任一业务模块可以通过如下方式实现:开关组控制中心将修改反馈信息传入目标回调方法中,使该任一业务模块在监听到目标回调方法被传入修改反馈信息后,从目标回调方法中获取修改反馈信息。
在又一个实施例中,业务模块还可以向目标应用发送开关项删除请求,以删除该业务模块与目标开关项的对应关系。那么,具体地,开关组控制中心可以在接收到开关项删除请求之后,删除该业务模块与目标开关项的对应关系,从而取消该业务模块对目标开关项的接口(如:写接口、读接口等)进行调用的权限。
在一个实施例中,基于上述图2和图3的相关描述,实现对目标应用中的各个开关项的开关状态进行修改的完整流程,可以参见图4所示。如图4所示,目标应用可以在启动后,通过配置信息获取模块获取开关配置表,具体地,可以通过配置信息获取模块在检测到目标应用在安装周期内首次启动时,向开关控制台发送配置信息获取请求,以获取开关配置表。其中,开关控制台可以是技术人员预先在目标应用的后台服务器中创建的。需要说明的是,在具体应用中,若配置信息获取模块成功获取到开关配置表,则目标应用可以将该开关配置表解析成数据对象,以便于后续开关组控制中心对各个开关项进行初始化(如:暴露开关项的写接口和读接口、获取开关项的初始开关状态等);对应地,若配置信息获取模块获取开关配置表失败,则可以转而从目标应用对应的开发数据包中获取默认的开关配置表,为了便于说明,以下均以配置信息模块成功获取到开关控制台中的开关配置表为例对本申请提供的数据处理方法进行详细阐述。
当配置信息获取模块得到数据对象之后,开关组控制中心可以在目标应用启动时,按照数据对象中存储的各个开关项的位置顺序,来对各个开关项进行初始化操作,其中,各个开关项的位置顺序可以是上述提及的开关控制台在下发开关配置表时设置的。举例来说,假设开关配置表中的开关项包括“wifi下自动播放广告”、“开启青少年模式”、“屏蔽通知消息”这三个开关项,且这三个开关项的排列顺序为:“开启青少年模式”、“wifi下自动播放广告”、“屏蔽通知消息”,那么,开关组控制中心将最先对“开启青少年模式”这一开关项进行初始化,然后对该“wifi下自动播放广告”这一开关项进行初始化,最后对“屏蔽通知消息”这一开关项进行初始化。
在具体实现中,开关组控制中心对各个开关项进行初始化可以包括:为各个开关项赋予初始开关状态,以及将各个开关项的写接口和读接口暴露给其他对应的业务模块。那么,开关组控制中心可以先确定各个开关项的开关状态的存储位置,然后调用开关状态获取方法从各个开关项的开关状态的存储位置对应的存储空间中,获取各个开关项的开关状态,进而将获取到的任一开关项的开关状态作为该任一开关项的初始开关状态。具体地,当任一开关项的开关状态的存储位置为服务器时,开关组控制中心可以将该服务器对应的服务器地址参数传入至开关状态获取方法中,并通过调用该开关状态获取方法来获取该任一开关项的开关状态,示例性地,开关状态获取方法可以例如是:objc_getAssociatedObject方法。
进一步地,若存在任一业务模块想要对目标开关项的开关状态进行修改,那么,该业务模块可以向目标应用传入候选开关状态;然后,该业务模块可以调用该目标开关项的写接口对应的协议方法,使得开关组控制中心可以基于该协议方法和候选开关状态完成对目标开关项的开关状态的修改。可选地,若目标开关项的写接口对应有目标回调方法(即:Block方法),那么,开关组控制中心还可以将开关修改结果(如:设置成功,或设置失败)传入给Block方法,并调用Block方法以向对Block方法设置了监听事件的各个业务模块反馈开关修改结果。具体地,Block方法可以向上述各个业务模块发送通知消息,以通知各个业务模块获取开关修改结果,那么,进一步地,若业务模块获取到的开关修改结果为“设置成功”,该业务模块则可以将修改后的开关状态写入开关配置表,并在目标应用关闭时,将该开关配置表上传至服务器;对应地,若业务模块获取到的开关修改结果为“设置失败”,那么,该业务模块则可以执行其他业务处理,如:重新调用该目标开关项的写接口,以再次对目标开关项的开关状态进行修改,本申请对此不作限制。
本申请实施例中,由于开关组控制中心向业务模块提供了开关项的写接口、读接口等接口,这使得各个业务模块可以直接通过调用接口的方式,来对开关项进行增加或维护;又由于业务模块在对开关项进行增加或维护时,无需手动编写对应的程序代码,因此,目标应用在迭代过程中的开发成本得到了降低。此外,还由于开关配置信息中存储有各个开关项的前置依赖关系,这使得任一业务模块可以基于开关配置信息直接获取任一开关项的前置依赖关系,无需编写独立的程序代码去添加开关项的前置依赖关系或者获取开关项的前置依赖关系,在一定程度上简化了目标应用内各个开关项之间的依赖关系;基于此,又由于开关配置信息可以解析成数据对象,该数据对象能够更直观地表达各个开关项的开关状态或其他相关信息,那么,针对开关项的前置依赖关系这一信息而言,本申请实施例提供的数据处理方法中,前置依赖关系的存储链路更加清晰。
基于上述数据处理方法相关实施例的描述,本申请实施例还提供了一种数据处理装置,该数据处理装置可以是运行与上述所提及的数据处理设备中的一个计算机程序(包括程序代码)。该数据处理装置可以执行图2或图3所示的方法。请参见图5,所述数据处理装置可以包括:获取单元501,处理单元502以及修改单元503。
获取单元501,用于获取目标应用的开关配置信息,所述目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关组控制中心用于统一管理所述N个开关项,所述多个业务模块中每个业务模块对应所述N个开关项中的至少一个开关项,所述开关配置信息包括N个写接口,一个写接口对应一个开关项,且每个写接口对应一个协议方法;
处理单元502,用于调用所述开关组控制中心根据所述开关配置信息,将所述N个写接口中的各个写接口暴露给对应的业务模块;
修改单元503,用于若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态;所述当前开关状态是指所述目标写接口被调用时,所述目标开关项所处的开关状态。
在一种实现方式中,所述任一业务模块在调用所述目标写接口时,向所述开关组控制中心传入了所述目标开关项的候选开关状态;所述修改单元503还可以用于执行:
根据所述任一业务模块传入的候选开关状态,确定所述目标开关项的目标开关状态;所述目标开关状态是指:对所述目标开关项的当前开关状态进行修改后,所述目标开关项所需处于的开关状态;
基于所述目标开关项的绑定对象,确定所述目标开关项的状态修改方式;
采用所述状态修改方式,将所述目标开关项的当前开关状态修改为所述目标开关状态。
在又一种实现方式中,所述修改单元503还可以用于执行:
若所述目标开关项存在前置依赖关系,则基于所述前置依赖关系从所述N个开关项中,递归获取所述目标开关项所依赖的一个或多个依赖开关项;并根据所述各个依赖开关项的当前开关状态和所述任一业务模块传入的候选开关状态,确定所述目标开关项的目标开关状态;
若所述目标开关项不存在前置依赖关系,则将所述任一业务模块传入的候选开关状态,确定为所述目标开关项的目标开关状态。
在又一种实现方式中,若所述目标开关项的绑定对象为用户,所述修改单元503还可以用于执行:
调用对象绑定方法生成包含所述目标开关状态的目标开关数据,并将所述目标开关数据和登录所述目标应用的用户标识进行绑定,将绑定得到的目标绑定结果存储至所述目标应用所处的设备的本地空间,以覆盖所述目标开关项的当前开关状态对应的当前绑定结果,实现将所述目标开关项的当前开关状态修改为所述目标开关状态;
若所述目标开关项的绑定对象为设备,则所述修改单元503还可以用于执行:
基于所述目标开关项的开关标识和所述目标开关状态,生成目标键值对;并将所述目标键值对存储至所述目标应用所处的设备的本地空间,以覆盖所述目标开关项的当前开关状态对应的当前键值对,实现将所述目标开关项的当前开关状态修改为所述目标开关状态。
在又一种实现方式中,所述修改单元503还可以用于执行:
所述开关组控制中心在将所述目标开关项的当前开关状态修改为所述目标开关状态后,确定所述目标开关项的开关状态的存储位置;
若所述存储位置为服务器,则通过所述开关组控制中心获取服务器地址参数,并将所述目标开关项的目标开关状态存储至所述服务器地址参数对应的服务器;
其中,所述服务器地址参数是:所述任一业务模块在调用所述目标写接口时,向所述开关组控制中心传入的地址参数;或者所述服务器地址参数是:所述目标应用的开发数据包中携带的地址参数。
在又一种实现方式中,所述开关配置信息还包括:所述目标开关项在多个生效维度下的生效信息;所述多个生效维度至少包括:对象绑定维度、存储维度以及前置依赖维度;其中:
所述对象绑定维度下的生效信息用于指示:所述目标开关项的绑定对象;所述存储维度下的生效信息用于指示:所述目标开关项的开关状态的存储位置;所述前置依赖维度下的生效信息用于指示:所述目标开关项是否存在前置依赖关系。
在又一种实现方式中,所述数据处理装置还包括反馈单元504,该反馈单元504可以用于执行:
所述开关组控制中心在修改所述目标开关项的当前开关项,得到修改结果后,根据所述修改结果生成修改反馈信息;
所述开关组控制中心将所述修改反馈信息传递给所述任一业务模块,使所述任一业务模块根据所述修改反馈信息执行业务处理。
在又一种实现方式中,所述目标写接口对应的协议方法位于所述目标写接口的写方法中,所述目标写接口的写方法还包括目标回调方法;当所述任一业务模块调用所述目标写接口后,所述任一业务模块监听所述目标回调方法;所述反馈单元504还可以用于执行:
所述开关组控制中心将所述修改反馈信息传入所述目标回调方法中,使所述任一业务模块在监听到所述目标回调方法被传入所述修改反馈信息后,从所述目标回调方法中获取所述修改反馈信息。
在又一种实现方式中,所述获取单元501可以用于执行:
获取所述目标应用的开关配置表;
将所述开关配置表解析成数据对象,并将解析得到的数据对象作为所述目标应用的开关配置信息。
根据本申请实施例的另一个实施例,图2和图3所示的方法所涉及的各个步骤可以是由图5所示的数据处理装置中的各个单元来执行的。例如:图2所示的步骤S201可以由图5所示的数据处理装置中的获取单元501来执行;步骤S202可由图5所示的数据处理装置中的处理单元502来执行;步骤S203可由图5所示的数据处理装置中的修改单元503来执行;再如,图3所示的步骤S301可以由图5所示的数据处理装置中的获取单元501来执行;步骤S302可以由图5所示的数据处理装置中的处理单元502来执行;步骤S303-步骤S305均可由图5所示的数据处理装置中的修改单元503来执行。
根据本申请实施例的另一个实施例,图5所示的数据处理装置中的各个单元是基于逻辑功能划分的,上述各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请实施例的技术效果的实现。在本申请实施例的其它实施例中,基于数据处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请实施例的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2或图3所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图5中所示的数据处理装置,以及来实现本申请实施例的数据处理方法。所述计算机程序可以记载于例如计算机存储介质上,并通过计算机存储介质装载于上述数据处理设备中,并在其中运行。
在本申请实施例中,由于在目标应用中创建了开关组控制中心,使得目标应用中的N个开关项可以得到统一的管理;此外,本申请实施例中,目标应用通过开关组控制中心在业务模块与开关项之间建立了对应关系,并且通过控制组中心向开关项对应的一个或多个业务模块暴露了开关项的写接口,使得该一个或多个业务模块中的任一业务模块均可以通过调用接口的方式,实现对开关项的修改操作,简化了业务模块的开发流程,同时降低了目标应用的代码重复率。
基于上述方法实施例以及装置实施例的描述,本申请实施例还提供了一种数据处理设备。请参见图6,该数据处理设备至少包括处理器601和计算机存储介质602,且数据处理设备内的处理器601和计算机存储介质602可以通过总线或其他方式连接。
所述计算机存储介质602是数据处理设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质602既可以包括数据处理设备中的内置存储介质,当然也可以包括数据处理设备所支持的扩展存储介质。计算机存储介质602提供存储空间,该存储空间存储了计算机设备的操作系统。并且,在该存储空间中还存放了适于被处理器601加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。所述处理器601(或称CPU(Central Processing Unit,中央处理器))是数据处理设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,可由处理器601加载并执行计算机存储介质602中存放的一条或多条指令,以实现上述有关图2和图3所示的数据处理方法实施例中的相应方法步骤;具体实现中,计算机存储介质602中的一条或多条指令由处理器601加载并执行如下步骤:
获取目标应用的开关配置信息,所述目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关组控制中心用于统一管理所述N个开关项,所述多个业务模块中每个业务模块对应所述N个开关项中的至少一个开关项,所述开关配置信息包括N个写接口,一个写接口对应一个开关项,且每个写接口对应一个协议方法;通过所述开关组控制中心根据所述开关配置信息,将所述N个写接口中的各个写接口暴露给对应的业务模块;若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态;所述当前开关状态是指所述目标写接口被调用时,所述目标开关项所处的开关状态。
在一种实现方式中,所述任一业务模块在调用所述目标写接口时,向所述开关组控制中心传入了所述目标开关项的候选开关状态;所述处理器601可以用于加载并执行:
根据所述任一业务模块传入的候选开关状态,确定所述目标开关项的目标开关状态;所述目标开关状态是指:对所述目标开关项的当前开关状态进行修改后,所述目标开关项所需处于的开关状态;
基于所述目标开关项的绑定对象,确定所述目标开关项的状态修改方式;
采用所述状态修改方式,将所述目标开关项的当前开关状态修改为所述目标开关状态。
在又一种实现方式中,所述处理器601可以用于加载并执行:
若所述目标开关项存在前置依赖关系,则基于所述前置依赖关系从所述N个开关项中,递归获取所述目标开关项所依赖的一个或多个依赖开关项;并根据所述各个依赖开关项的当前开关状态和所述任一业务模块传入的候选开关状态,确定所述目标开关项的目标开关状态;
若所述目标开关项不存在前置依赖关系,则将所述任一业务模块传入的候选开关状态,确定为所述目标开关项的目标开关状态。
在又一种实现方式中,若所述目标开关项的绑定对象为用户,所述处理器601可以用于加载并执行:
调用对象绑定方法生成包含所述目标开关状态的目标开关数据,并将所述目标开关数据和登录所述目标应用的用户标识进行绑定,将绑定得到的目标绑定结果存储至所述目标应用所处的设备的本地空间,以覆盖所述目标开关项的当前开关状态对应的当前绑定结果,实现将所述目标开关项的当前开关状态修改为所述目标开关状态;
若所述目标开关项的绑定对象为设备,则所述处理器601可以用于加载并执行:
基于所述目标开关项的开关标识和所述目标开关状态,生成目标键值对;并将所述目标键值对存储至所述目标应用所处的设备的本地空间,以覆盖所述目标开关项的当前开关状态对应的当前键值对,实现将所述目标开关项的当前开关状态修改为所述目标开关状态。
在又一种实现方式中,所述处理器601可以用于加载并执行:
所述开关组控制中心在将所述目标开关项的当前开关状态修改为所述目标开关状态后,确定所述目标开关项的开关状态的存储位置;
若所述存储位置为服务器,则通过所述开关组控制中心获取服务器地址参数,并将所述目标开关项的目标开关状态存储至所述服务器地址参数对应的服务器;
其中,所述服务器地址参数是:所述任一业务模块在调用所述目标写接口时,向所述开关组控制中心传入的地址参数;或者所述服务器地址参数是:所述目标应用的开发数据包中携带的地址参数。
在又一种实现方式中,所述开关配置信息还包括:所述目标开关项在多个生效维度下的生效信息;所述多个生效维度至少包括:对象绑定维度、存储维度以及前置依赖维度;其中:
所述对象绑定维度下的生效信息用于指示:所述目标开关项的绑定对象;所述存储维度下的生效信息用于指示:所述目标开关项的开关状态的存储位置;所述前置依赖维度下的生效信息用于指示:所述目标开关项是否存在前置依赖关系。
在又一种实现方式中,所述处理器601可以用于加载并执行:
所述开关组控制中心在修改所述目标开关项的当前开关项,得到修改结果后,根据所述修改结果生成修改反馈信息;
所述开关组控制中心将所述修改反馈信息传递给所述任一业务模块,使所述任一业务模块根据所述修改反馈信息执行业务处理。
在又一种实现方式中,所述目标写接口对应的协议方法位于所述目标写接口的写方法中,所述目标写接口的写方法还包括目标回调方法;当所述任一业务模块调用所述目标写接口后,所述任一业务模块监听所述目标回调方法;所述处理器601可以用于加载并执行:
所述开关组控制中心将所述修改反馈信息传入所述目标回调方法中,使所述任一业务模块在监听到所述目标回调方法被传入所述修改反馈信息后,从所述目标回调方法中获取所述修改反馈信息。
在又一种实现方式中,所述处理器601可以用于加载并执行:
获取所述目标应用的开关配置表;
将所述开关配置表解析成数据对象,并将解析得到的数据对象作为所述目标应用的开关配置信息。
在本申请实施例中,由于在目标应用中创建了开关组控制中心,使得目标应用中的N个开关项可以得到统一的管理;此外,本申请实施例中,目标应用通过开关组控制中心在业务模块与开关项之间建立了对应关系,并且通过控制组中心向开关项对应的一个或多个业务模块暴露了开关项的写接口,使得该一个或多个业务模块中的任一业务模块均可以通过调用接口的方式,实现对开关项的修改操作,简化了业务模块的开发流程,同时降低了目标应用的代码重复率。
本申请实施例还提供了一种存储介质,该存储介质中存储了上述数据处理方法的计算机程序,该计算机程序包括程序指令,当一个或多个处理器加载并执行该程序指令,可以实现实施例中对数据处理方法的描述,在此不再赘述。对采用相同方法的有益效果的描述,在此不再赘述。可以理解的是,程序指令可以被部署在一个或多个能够相互通信的设备上执行。
需要说明的是,根据本申请实施例的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。数据处理设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该数据处理设备执行上述图2和图3所示的数据处理方法相关实施例方面的各种可选方式中提供的方法。
并且,应理解的是,以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
获取目标应用的开关配置信息,所述目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关组控制中心用于统一管理所述N个开关项,所述多个业务模块中每个业务模块对应所述N个开关项中的至少一个开关项,所述开关配置信息包括N个写接口,一个写接口对应一个开关项,且每个写接口对应一个协议方法;
调用所述开关组控制中心根据所述开关配置信息,将所述N个写接口中的各个写接口暴露给对应的业务模块;
若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态;所述当前开关状态是指所述目标写接口被调用时,所述目标开关项所处的开关状态。
2.如权利要求1所述的方法,其特征在于,所述任一业务模块在调用所述目标写接口时,向所述开关组控制中心传入了所述目标开关项的候选开关状态;所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态的方式包括:
根据所述任一业务模块传入的候选开关状态,确定所述目标开关项的目标开关状态;所述目标开关状态是指:对所述目标开关项的当前开关状态进行修改后,所述目标开关项所需处于的开关状态;
基于所述目标开关项的绑定对象,确定所述目标开关项的状态修改方式;
采用所述状态修改方式,将所述目标开关项的当前开关状态修改为所述目标开关状态。
3.如权利要求2所述的方法,其特征在于,所述根据所述任一业务模块传入的候选开关状态,确定所述目标开关项的目标开关状态,包括:
若所述目标开关项存在前置依赖关系,则基于所述前置依赖关系从所述N个开关项中,递归获取所述目标开关项所依赖的一个或多个依赖开关项;并根据所述各个依赖开关项的当前开关状态和所述任一业务模块传入的候选开关状态,确定所述目标开关项的目标开关状态;
若所述目标开关项不存在前置依赖关系,则将所述任一业务模块传入的候选开关状态,确定为所述目标开关项的目标开关状态。
4.如权利要求2所述的方法,其特征在于,
若所述目标开关项的绑定对象为用户,则所述采用所述状态修改方式,将所述目标开关项的当前开关状态修改为所述目标开关状态,包括:
调用对象绑定方法生成包含所述目标开关状态的目标开关数据,并将所述目标开关数据和登录所述目标应用的用户标识进行绑定,将绑定得到的目标绑定结果存储至所述目标应用所处的设备的本地空间,以覆盖所述目标开关项的当前开关状态对应的当前绑定结果,实现将所述目标开关项的当前开关状态修改为所述目标开关状态;
若所述目标开关项的绑定对象为设备,则所述采用所述状态修改方式,将所述目标开关项的当前开关状态修改为所述目标开关状态,包括:
基于所述目标开关项的开关标识和所述目标开关状态,生成目标键值对;并将所述目标键值对存储至所述目标应用所处的设备的本地空间,以覆盖所述目标开关项的当前开关状态对应的当前键值对,实现将所述目标开关项的当前开关状态修改为所述目标开关状态。
5.如权利要求2所述的方法,其特征在于,所述方法还包括:
所述开关组控制中心在将所述目标开关项的当前开关状态修改为所述目标开关状态后,确定所述目标开关项的开关状态的存储位置;
若所述存储位置为服务器,则通过所述开关组控制中心获取服务器地址参数,并将所述目标开关项的目标开关状态存储至所述服务器地址参数对应的服务器;
其中,所述服务器地址参数是:所述任一业务模块在调用所述目标写接口时,向所述开关组控制中心传入的地址参数;或者,所述服务器地址参数是:所述目标应用的开发数据包中携带的地址参数。
6.如权利要求2-5任一项所述的方法,其特征在于,所述开关配置信息还包括:所述目标开关项在多个生效维度下的生效信息;所述多个生效维度至少包括:对象绑定维度、存储维度以及前置依赖维度;其中:
所述对象绑定维度下的生效信息用于指示:所述目标开关项的绑定对象;所述存储维度下的生效信息用于指示:所述目标开关项的开关状态的存储位置;所述前置依赖维度下的生效信息用于指示:所述目标开关项是否存在前置依赖关系。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述开关组控制中心在修改所述目标开关项的当前开关项,得到修改结果后,根据所述修改结果生成修改反馈信息;
所述开关组控制中心将所述修改反馈信息传递给所述任一业务模块,使所述任一业务模块根据所述修改反馈信息执行业务处理。
8.如权利要求7所述的方法,其特征在于,所述目标写接口对应的协议方法位于所述目标写接口的写方法中,所述目标写接口的写方法还包括目标回调方法;当所述任一业务模块调用所述目标写接口后,所述任一业务模块监听所述目标回调方法;
所述开关组控制中心将所述修改反馈信息传递给所述任一业务模块,包括:所述开关组控制中心将所述修改反馈信息传入所述目标回调方法中,使所述任一业务模块在监听到所述目标回调方法被传入所述修改反馈信息后,从所述目标回调方法中获取所述修改反馈信息。
9.根据权利要求1所述的方法,其特征在于,所述获取目标应用的开关配置信息,包括:
获取所述目标应用的开关配置表;
将所述开关配置表解析成数据对象,并将解析得到的数据对象作为所述目标应用的开关配置信息。
10.一种数据处理装置,其特征在于,包括:
获取单元,用于获取目标应用的开关配置信息,所述目标应用包括开关组控制中心、多个业务模块以及N个开关项,N为正整数;所述开关组控制中心用于统一管理所述N个开关项,所述多个业务模块中每个业务模块对应所述N个开关项中的至少一个开关项,所述开关配置信息包括N个写接口,一个写接口对应一个开关项,且每个写接口对应一个协议方法;
处理单元,用于调用所述开关组控制中心根据所述开关配置信息,将所述N个写接口中的各个写接口暴露给对应的业务模块;
修改单元,用于若存在任一业务模块通过调用目标写接口修改目标开关项的开关值的操作,则通过所述开关组控制中心采用所述目标写接口对应的协议方法,修改所述目标开关项的当前开关状态;所述当前开关状态是指所述目标写接口被调用时,所述目标开关项所处的开关状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111023776.1A CN113472903B (zh) | 2021-09-02 | 2021-09-02 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111023776.1A CN113472903B (zh) | 2021-09-02 | 2021-09-02 | 一种数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113472903A true CN113472903A (zh) | 2021-10-01 |
CN113472903B CN113472903B (zh) | 2021-11-16 |
Family
ID=77867481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111023776.1A Active CN113472903B (zh) | 2021-09-02 | 2021-09-02 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113472903B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106873947A (zh) * | 2015-12-11 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 应用程序中开关类控件的控制方法及装置 |
CN106970805A (zh) * | 2016-01-14 | 2017-07-21 | 平安科技(深圳)有限公司 | 功能配置方法和系统 |
CN108683550A (zh) * | 2018-07-11 | 2018-10-19 | 武汉斗鱼网络科技有限公司 | 一种配置接口的调用方法以及相关设备 |
CN109683944A (zh) * | 2018-11-16 | 2019-04-26 | 平安科技(深圳)有限公司 | 应用功能开关管理方法、装置、设备及可读存储介质 |
CN110399119A (zh) * | 2019-06-18 | 2019-11-01 | 五八有限公司 | 一种组件化构建方法、装置、电子设备及存储介质 |
CN111158659A (zh) * | 2019-11-27 | 2020-05-15 | 华为技术有限公司 | 自动驾驶应用程序在不同开发平台间对接的方法 |
WO2020199594A1 (zh) * | 2019-04-04 | 2020-10-08 | 平安科技(深圳)有限公司 | 业务组件加载方法、装置、计算机设备和存储介质 |
CN112114804A (zh) * | 2020-08-26 | 2020-12-22 | 长沙市到家悠享网络科技有限公司 | 应用程序的生成方法、装置及系统 |
CN112130850A (zh) * | 2020-08-28 | 2020-12-25 | 北京达佳互联信息技术有限公司 | 应用程序中功能的实现方法和装置 |
CN113448653A (zh) * | 2020-03-27 | 2021-09-28 | 北京猎户星空科技有限公司 | 一种业务处理方法、系统、电子设备和计算机可读介质 |
-
2021
- 2021-09-02 CN CN202111023776.1A patent/CN113472903B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106873947A (zh) * | 2015-12-11 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 应用程序中开关类控件的控制方法及装置 |
CN106970805A (zh) * | 2016-01-14 | 2017-07-21 | 平安科技(深圳)有限公司 | 功能配置方法和系统 |
CN108683550A (zh) * | 2018-07-11 | 2018-10-19 | 武汉斗鱼网络科技有限公司 | 一种配置接口的调用方法以及相关设备 |
CN109683944A (zh) * | 2018-11-16 | 2019-04-26 | 平安科技(深圳)有限公司 | 应用功能开关管理方法、装置、设备及可读存储介质 |
WO2020199594A1 (zh) * | 2019-04-04 | 2020-10-08 | 平安科技(深圳)有限公司 | 业务组件加载方法、装置、计算机设备和存储介质 |
CN110399119A (zh) * | 2019-06-18 | 2019-11-01 | 五八有限公司 | 一种组件化构建方法、装置、电子设备及存储介质 |
CN111158659A (zh) * | 2019-11-27 | 2020-05-15 | 华为技术有限公司 | 自动驾驶应用程序在不同开发平台间对接的方法 |
CN113448653A (zh) * | 2020-03-27 | 2021-09-28 | 北京猎户星空科技有限公司 | 一种业务处理方法、系统、电子设备和计算机可读介质 |
CN112114804A (zh) * | 2020-08-26 | 2020-12-22 | 长沙市到家悠享网络科技有限公司 | 应用程序的生成方法、装置及系统 |
CN112130850A (zh) * | 2020-08-28 | 2020-12-25 | 北京达佳互联信息技术有限公司 | 应用程序中功能的实现方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113472903B (zh) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210216700A1 (en) | Information Processing Method and System | |
CN108536524B (zh) | 资源更新方法、装置、终端及存储介质 | |
CN113110941B (zh) | 使用应用容器管理代码和依赖性数据的传递 | |
CN111726399B (zh) | Docker容器安全访问方法及装置 | |
US11706331B2 (en) | Information processing method and apparatus, storage medium, and electronic device | |
CN110688232B (zh) | 应用程序调用方法、终端设备及计算机可读存储介质 | |
US20140143647A1 (en) | Method for improving browser cache by reducing duplicate stored content | |
WO2023093429A1 (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
US11782756B2 (en) | Method and apparatus for scheduling processor core, and storage medium | |
CN109618176B (zh) | 一种直播业务的处理方法、设备和存储介质 | |
CN112260853B (zh) | 容灾切换方法、装置、存储介质及电子设备 | |
CN102073507A (zh) | 微件Widget调用的方法、装置和系统 | |
CN108882053B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN110297718B (zh) | 界面元素联动处理方法、装置和设备 | |
CN111679790A (zh) | 远程软件开发存储空间分配方法及装置 | |
CN106055348B (zh) | 一种通知系统属性更新的方法和装置 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN113472903B (zh) | 一种数据处理方法及装置 | |
CN112114804A (zh) | 应用程序的生成方法、装置及系统 | |
WO2023179183A1 (zh) | 子程序同步处理 | |
CN109005468B (zh) | 弹幕消息分发方法、装置、设备及存储介质 | |
CN114077368B (zh) | 车载小程序运行方法、装置、计算机设备及存储介质 | |
CN111343172A (zh) | 网络访问权限动态处理方法及装置 | |
CN112988170B (zh) | 应用显示的方法及装置 | |
CN110618874B (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 |