发明内容
本说明书目的在于提供一种在线可视化编程方法及装置,能够满足各种不同业务场景诉求的应急方案,提高了业务处理流程的灵活性,可以适用于多种复杂的业务场景的处理。
一方面本说明书实施例提供了一种在线可视化编程方法,包括:
获取业务处理流程的配置信息,所述配置信息包括:所述业务处理流程对应的节点以及节点参数,所述节点包括:数据捞取节点、数据订正节点、第三方应用节点、第三方接口节点、计算节点中的至少一个;
根据所述业务处理流程,对所述节点进行连线,构建所述业务处理流程的有向图;
通过流程遍历算法遍历所述有向图中的节点,完成所述业务处理流程的在线可视化编程。
进一步地,所述方法的另一个实施例中,所述通过流程遍历算法遍历所述有向图中的节点,包括:
初始化遍历队列、不可达节点集合、可达节点集合;
若所述遍历队列不为空,获取所述遍历队列中的首元素,作为初始节点;
根据所述有向图,获取所述初始节点的邻节点;
判断所述邻节点是否可达,若是,则将所述邻节点加入所述可达节点集合,否则将所述邻节点加入所述不可达节点集合;
将所述邻节点作为所述初始节点,获取所述初始节点的邻节点,继续遍历,直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果。
进一步地,所述方法的另一个实施例中,所述判断所述邻节点是否可达,包括:
判断所述初始节点与所述邻节点对应的边的变迁条件是否满足,若不满足,则确定所述邻节点不可达,将所述邻节点以及以所述邻节点为起始节点的节点均加入所述不可达节点集合;
若满足,则判断所述邻节点的入度边对应的起始节点的状态,若所述起始节点的状态为失败或不可达,则确定所述邻节点不可达;
若所述初始节点与所述邻节点对应的边的变迁条件满足,且所述邻节点的入度边对应的起始节点的状态为成功或可达,则确定所述邻节点可达。
进一步地,所述方法的另一个实施例中,所述可达节点集合包括成功节点集合和失败节点集合,相应地,所述方法还包括:
若所述邻节点可达,则获取所述邻节点的执行结果,若所述邻节点的执行结果返回成功,则将所述邻节点加入所述成功节点集合,若所述执行结果返回失败,则将所述邻节点加入所述失败节点集合,以及,将以所述邻节点为起始节点的节点均加入所述不可达节点集合。
进一步地,所述方法的另一个实施例中,所述直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果,包括:
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和相同,则获取遍历结果,结束遍历;
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和不相同,则设置定时任务,通过流程遍历算法定时遍历所述有向图中的节点,直至所述有向图中的节点已遍历或不可达。
进一步地,所述方法的另一个实施例中,所述构建所述业务处理流程的有向图,包括:
利用Groovy脚本将所述节点进行编排串联,构建所述有向图。
另一方面,本说明书提供了一种在线可视化编程装置,包括:
业务流程配置模块,用于获取业务处理流程的配置信息,所述配置信息包括:所述业务处理流程对应的节点以及节点参数,所述节点包括:数据捞取节点、数据订正节点、第三方应用节点、第三方接口节点、计算节点中的至少一个;
有向图构建模块,用于根据所述业务处理流程,对所述节点进行连线,构建所述业务处理流程的有向图;
节点遍历模块,用于通过流程遍历算法遍历所述有向图中的节点,完成所述业务处理流程的在线可视化编程。
进一步地,所述装置的另一个实施例中,所述节点遍历模块具体用于:
初始化遍历队列、不可达节点集合、可达节点集合;
若所述遍历队列不为空,获取所述遍历队列中的首元素,作为初始节点;
根据所述有向图,获取所述初始节点的邻节点;
判断所述邻节点是否可达,若是,则将所述邻节点加入所述可达节点集合,否则将所述邻节点加入所述不可达节点集合;
将所述邻节点作为所述初始节点,获取所述初始节点的邻节点,继续遍历,直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果。
进一步地,所述装置的另一个实施例中,所述节点遍历模块具体用于:
判断所述初始节点与所述邻节点对应的边的变迁条件是否满足,若不满足,则确定所述邻节点不可达,将所述邻节点以及以所述邻节点为起始节点的节点均加入所述不可达节点集合;
若满足,则判断所述邻节点的入度边对应的起始节点的状态,若所述起始节点的状态为失败或不可达,则确定所述邻节点不可达;
若所述初始节点与所述邻节点对应的边的变迁条件满足,且所述邻节点的入度边对应的起始节点的状态为成功或可达,则确定所述邻节点可达。
进一步地,所述装置的另一个实施例中,所述可达节点集合包括成功节点集合和失败节点集合,相应地,所述节点遍历模块还用于:
若所述邻节点可达,则获取所述邻节点的执行结果,若所述邻节点的执行结果返回成功,则将所述邻节点加入所述成功节点集合,若所述执行结果返回失败,则将所述邻节点加入所述失败节点集合,以及,将以所述邻节点为起始节点的节点均加入所述不可达节点集合。
进一步地,所述装置的另一个实施例中,所述节点遍历模块还用于:
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和相同,则获取遍历结果,结束遍历;
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和不相同,则设置定时任务,通过流程遍历算法定时遍历所述有向图中的节点,直至所述有向图中的节点已遍历或不可达。
进一步地,所述装置的另一个实施例中,所述有向图构建模块具体用于:
利用Groovy脚本将所述节点进行编排串联,构建所述有向图。
再一方面,本说明书提供了一种在线可视化编程的处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述的在线可视化编程方法。
还一方面,本说明书提供了一种在线可视化编程系统,包括至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述的在线可视化编程方法。
本说明书提供的在线可视化编程方法、装置、处理设备、系统,根据业务场景需求,配置业务处理流程,获取业务处理流程所需的节点,构建业务处理流程对应的有向图,再利用流程遍历算法遍历所述有向图中的节点,完成所述业务处理流程的在线可视化编程。可以实现将不同的数据源与第三方应用、第三方接口等节点,进行编排串联,通过可视化编排快速组装出满足不同业务场景的应急处置方案,以满足不同的应急场景诉求。并且,本说明书实施例中的可视化编程方法可以不需要代码的变更,可以直接在网页浏览器上进行编写,各组件之间的逻辑接近自然编程代码的逻辑,提高了业务处理流程的灵活性,可以适用于多种复杂的业务场景的处理。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
在线编程也称在线IDE,是指不需要经过安装编程的环境,直接在互联网浏览器上编写程序,并且可以运行得出结果。通常情况下编程逻辑往往是很复杂的,导致用户在阅读和维护过程中,需要投入非常多的精力才能明白其中的复杂逻辑与含义,因为无法一眼就看明白代码的处理逻辑与分块用途。可视化编程,是一种将复杂逻辑简单化的过程,通过组件将复杂的业务逻辑,简单化、可视化的展现在用户面前,一眼就能看明白其中的含义与复杂逻辑。利用可视化编程方法,可以将不同的组件进行组合,以满足不同的业务需求。
本说明书实施例中提供了一种在线可视化编程方法,可以通过可视化编排快速组装出满足不同业务场景的应急处置方案,以满足不同的应急场景诉求。并且,本说明书实施例中的可视化编程方法可以不需要代码的变更,各组件之间的逻辑接近自然编程代码的逻辑,实现了的可视化编程的灵活配置,提升业务的应急止血兜底能力。
本说明书中在线可视化编程方法可以应用在客户端或服务器中,客户端可以是智能手机、平板电脑、智能可穿戴设备(智能手表、虚拟现实眼镜、虚拟现实头盔等)、智能车载设备等电子设备。
具体的,图1是本说明书一个实施例中在线可视化编程方法的流程示意图,如图1所示,本说明书一个实施例中提供的在线可视化编程方法的整体过程可以包括:
步骤102、获取业务处理流程的配置信息,所述配置信息包括:所述业务处理流程对应的节点以及节点参数,所述节点包括:数据捞取节点、数据订正节点、第三方应用节点、第三方接口节点、计算节点中的至少一个。
在具体的实施过程中,可以根据业务场景的需求,配置业务处理流程,如:可以配置需要哪些节点模块,各节点模块之间的逻辑顺序等。本说明书实施例中的业务场景可以分为以下几类:
1、降级类:如:快照自动降级、入职流水自动降级、离在线混部日志自动降级等;
2、配置类:如:并发缓冲自动配置、账户限流自动配置、汇总自动配置等等;
3、容灾类:如:缓存自适应fo(Failover,故障切换机制)等;
4、降噪类(分区、安全拦截、CTU(Collect Transfer Unit,即采集传输单元)):如:基于DB(Database,数据库)核对的降噪、基于拦截日志的降噪等;
5、处置类:应急事件发生后,基于事后的配置与处理;
6、其它场景。
根据不同的业务场景需求,配置业务处理流程,获取业务处理流程对应的节点,本说明书实施例中,节点可以包括:数据捞取节点、数据订正节点、第三方应用节点、第三方接口节点、计算节点中的至少一个。其中:
数据捞取节点和数据订正节点主要可以包括DSQL(一种数据库操作语言)、数仓、TT(一种分钟级数据同步)、DD(一种分钟级数据同步)、TAIR(可以表示一个Key/Value结构数据的解决方案,默认支持基于内存和文件的两种存储方式,分别与缓存和持久化存储对应,TAIR的功能是get、put、delete以及批量接口)、ODPS(一种数据仓库解决方案)等数据渠道,可以支持主站、网商、58金融云、金融云paas(Platform-as-a-Service,平台即服务)多个站点的数据捞取/订正。通过以上数据渠道打通,业务流程可以访问以上站点任意应用的数据,供业务流程全局上下文使用。
第三方应用节点可以包括DRM(Distributed Resource Manager,分布式资源管理器)、Schedule(定时任务)、StarAgent(分布式命令客户端)、AntProcess(工单流程)、Notify(通知)等节点。其中:StarAgent节点,主要提供应用日志类数据访问权限,可以访问全站所有应用的任意服务器,可以拉取日志数据、执行特定脚本命令等,以具备无状态型应用的数据权限,供业务逻辑数据,比如,基于日志的核对降噪(在安全拦截、CTU场景使用非常多)。
第三方接口节点即第三方API(Application Programming Interface,应用程序编程接口)节点,主要提供对应用API的访问权限,通过动态热部署实现对第三方API的配置化接入,实现API的动态调用,支持事务,主要用于应急处置、纠错、补发、调整、记账等场景。
计算节点可以使用Groovy节点,主要承载业务流程的计算能力,与JAVA原生语法完全兼容,可以很好的适配各种复杂的业务逻辑计算场景,比如SQL(Structured QueryLanguage,结构化查询语言)拼装计算,业务逻辑计算,数据对比计算等。
在配置业务处理流程时,获取到业务处理流程所需的节点后,可以配置每个节点的入度、出度,本说明书实施例中各个节点的入度和出度没有限制,即入度可以大于1(多路汇总),出度也可以大于1(多点可达)。节点的出边条数可以称为该节点的出度,节点的入边条数可以称为该节点的入度。
技术人员根据需要配置好业务处理流程所需的节点等配置信息后,处理器即在线可视化编程装置可以通过设备监控等信息,获取到技术人员配置的业务处理流程的配置信息。
此外,配置信息中还可以包括节点对应的节点参数,配置好业务处理流程,获取业务处理流程需要的节点后,可以根据实际需要设置各节点的节点参数。节点参数可以包括:基础属性、节点执行所需的参数、节点上下文等;基础属性可以包括节点ID(身份标识号)、节点名称等;节点执行所需的参数即该节点执行其功能时使用的参数、函数、公式等;节点上下文即节点的上游节点、下游节点等,节点的上下文配置可以表示节点在全流程共享的自定义上下文配置,用于节点数据的上下文透传。
步骤104、根据所述业务处理流程,对所述节点进行连线,构建所述业务处理流程的有向图。
配置好业务处理流程并设置好各节点的节点参数后,可以根据业务处理流程将各节点进行连线,两个节点之间只能有一条边,构建出业务处理流程的有向图。有向图可以表示由一组顶点和一组有方向的边组成的图形,每条有方向的边都连接着有序的一对顶点。本说明书中的有向图中可以包括业务处理流程所需的节点,各节点之间的上下游关系,各节点的执行条件等。可以根据业务处理流程的逻辑,利用编程控制等方法将各个节点进行连接,本说明书一个实施例中可以利用Groovy脚本将所述节点进行编排串联,构建所述有向图。Groovy可以表示用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。
本说明书一个实施例中,根据业务场景需求,配置业务处理流程,获取业务处理流程所需的节点,构建业务处理流程对应的有向图后,再利用流程遍历算法遍历所述有向图中的节点,完成所述业务处理流程的在线可视化编程。可以实现将数据源(如:DB、TAIR、TT、DD)等数据与第三方应用(如:DRM、Schedule、StarAgent、AntProcess、Notify)、第三方接口等,进行编排串联,通过可视化编排快速组装出满足不同业务场景的应急处置方案,以满足不同的应急场景诉求。并且,本说明书实施例中的可视化编程方法可以不需要代码的变更,可以直接在网页浏览器上进行编写,各组件之间的逻辑接近自然编程代码的逻辑,提高了业务处理流程的灵活性,可以适用于多种复杂的业务场景的处理。
需要说明的是,在对业务处理流程所需的节点进行编排串联时,两个节点之间的边可以带有Groovy条件,也可以不带Groovy条件,可以根据实际业务场景需求进行设置。
步骤106、通过流程遍历算法遍历所述有向图中的节点,完成所述业务处理流程的在线可视化编程。
构建出业务处理流程的有向图后,可以启动应急流程,创建业务流程实例,即遍历有向图中的各个节点,各节点执行相应的任务,完成业务处理流程的在线可视化编程。在遍历有向图时,可以采用流程遍历算法如:二叉树遍历算法、深度优先遍历算法、广度优先遍历算法等。遍历是指沿着某条搜索路线,依次对有向图中每个节点均做一次且仅做一次访问,访问节点所做的操作依赖于具体的应用问题。
本说明书实施例提供的在线可视化编程方法,根据业务场景需求,配置业务处理流程,获取业务处理流程所需的节点,构建业务处理流程对应的有向图,再利用流程遍历算法遍历所述有向图中的节点,完成所述业务处理流程的在线可视化编程。可以实现将数据源(如:DB、TAIR、TT、DD)等数据与第三方应用(如:DRM、Schedule、StarAgent、AntProcess、Notify)、第三方接口等,进行编排串联,编排出能够满足各种不同业务场景诉求的应急方案。提高了业务处理流程的灵活性,可以适用于多种复杂的业务场景的处理。
在上述实施例的基础上,本说明书一个实施例中,所述通过流程遍历算法遍历所述有向图中的节点,可以包括:
初始化遍历队列、不可达节点集合、可达节点集合;
若所述遍历队列不为空,获取所述遍历队列中的首元素,作为初始节点;
根据所述有向图,获取所述初始节点的邻节点;
判断所述邻节点是否可达,若是,则将所述邻节点加入所述可达节点集合,否则将所述邻节点加入所述不可达节点集合;
将所述邻节点作为所述初始节点,获取所述初始节点的邻节点,继续遍历,直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果。
在具体的实施过程中,可以先初始化遍历队列、不可达节点集合、可达节点集合,其中,不可达节点集合用于存储不可达节点,可达节点集合用于存储可达节点,本说明书一个实施例中,可达节点集合可以包括成功节点集合和失败节点集合,即节点可达,但是节点执行任务时可能会存在执行成功或执行失败,执行成功的节点可以存储在成功节点集合,执行失败的节点可以存储在失败节点集合。
初始化的过程可以参考如下:
捞取已遍历节点列表I,如果已遍历节点列表I不为空,节点加入遍历队列Q;
如果已遍历节点I为空,则开始节点加入遍历队列Q;
根据已遍历节点I,完成对失败节点集合F、不可达节点集合U的初始化,如:可以采用递归算法,如果当前节点访问失败,则以当前节点为起始节点的所有节点均不可达,当前节点加入失败节点集合F,以当前节点为起始节点的所有节点加入不可达节点集合U。递归,就是在运行的过程中调用自己,通过递归算法可以知道已遍历节点遍历完成。成功节点集合初始化时可以为空集,节点访问成功后,可以将节点加入成功节点集合。
若遍历队列Q不为空,则获取遍历队列Q中的首元素,将首元素作为初始节点m,根据有向图获取初始节点m的邻节点n,邻节点可以表示与初始节点之间存在边,并且方向以初始节点为开始的节点,也可以理解为初始节点的下游节点。图2是本说明书一个实施例中有向图的结构示意图,如图2所示,节点m的邻节点为节点n,节点n的邻节点为节点p。若邻节点有多个,则可以根据邻节点在有向图中的坐标由小到大或由大到小依次遍历邻节点。判断邻节点是否可达,若是,则可以将邻节点加入可达节点集合,若邻节点不可达,则可以将邻节点加入不可达节点集合。并且,当邻节点不可达时,可以说明以邻节点为起始节点的节点均不可达,可以将以邻节点为起始节点的节点均加入不可达节点集合U。将邻节点作为初始节点,重复上述遍历过程,直至有向图的所有节点遍历完成或者不可达,获取节点的执行结果,完成业务处理流程的在线可视化编程处理。当然,实际遍历时,还可以将成功的邻节点或者可达的邻节点作为初始节点,重复上述遍历过程。若初始节点的邻节点为不可达节点,则可以跳过不可达节点,继续遍历。
本说明书实施例提供的有向图的遍历方法接近自然程序语言的逻辑,使得业务流程的执行顺序更加灵活,提高了的在线可视化编程的灵活性,可以适用于多种复杂的业务场景的处理。
邻节点可达可以表示初始节点到邻节点之间的路径是通的,在上述实施例的基础上,本说明书一个实施例中,所述判断所述邻节点是否可达,可以包括:
判断所述初始节点与所述邻节点对应的边的变迁条件是否满足,若不满足,则确定所述邻节点不可达,将所述邻节点以及以所述邻节点为起始节点的节点均加入所述不可达节点集合;
若满足,则判断所述邻节点的入度边对应的起始节点的状态,若所述起始节点的状态为失败或不可达,则确定所述邻节点不可达;
若所述初始节点与所述邻节点对应的边的变迁条件满足,且所述邻节点的入度边对应的起始节点的状态为成功或可达,则确定所述邻节点可达。
在具体的实施过程中,遍历有向图的节点时,可以通过节点之间的边的变迁条件判断节点是否可达,变迁条件也可以理解为执行条件,例如:计算初始节点m到邻节点n之间的边的变迁条件是否满足,若变迁条件不满足,则可以认为初始节点m到邻节点n之间的路径不通,即邻节点n不可达。邻节点n不可达,则以所述邻节点n为起始节点的节点均不可达,可以将以邻节点n为起始节点的节点均加入不可达节点集合,在继续遍历时,可以跳过以邻节点n为起始节点的路径。
若起始节点m到邻节点n之间的边的变迁条件满足,则可以再获取以邻节点n的入度边对应的起始节点的状态,如图2所示,若邻节点n的入度为3,如图2所示,节点m到邻节点n,节点h到邻节点n,节点k到邻节点n。入度边可以表示节点的入边,如图2中,邻节点n的入度边有m-n、k-n、h-n,则邻节点n的入度边m-n、k-n、h-n的起始节点分别为m、k、h。获取邻节点n的入度边的起始节点m、k、h的状态,若起始节点m、k、h中存在失败节点、不可达节点,则邻节点n为不可达节点,将邻节点n加入不可达节点集合,跳过邻节点n,继续向后遍历。跳过邻节点n可以理解为不访问邻节点n即不执行邻节点n的功能,可以将邻节点n作为初始节点,获取邻节点n的邻节点,继续上述遍历过程。
需要说明的是,邻节点n的入度边对应的起始节点可以是一个、两个或多个,只要起始节点中存在失败节点或不可达节点,则说明邻节点n的上游节点出现异常,可以认为邻节点n不可达。失败节点可以表示节点虽然可达,但是在执行该节点的功能时,执行结果失败。
若起始节点m与邻节点n之间的变迁条件满足,且邻节点n的入度边对应的起始节点的状态为成功或可达(即邻节点n的入度边对应的起始节点均为成功节点或可达节点),则可以认为邻节点n可达。成功节点可以表示节点可达并且该节点执行节点任务时成功。
本说明书实施例,利用节点之间的变迁条件判断节点是否可达,并在变迁条件满足时,通过节点的入度边对应的起始节点的状态,进一步判断节点是否可达,避免当前节点的变迁条件满足,但是节点的入度边对应的起始节点存在不可达或失败节点,导致节点访问失败的问题,提高节点遍历结果的准确性和效率。
在上述实施例的基础上,本说明书一个实施例中,所述可达节点集合包括成功节点集合和失败节点集合,相应地,所述方法还包括:
若所述邻节点可达,则获取所述邻节点的执行结果,若所述邻节点的执行结果返回成功,则将所述邻节点加入所述成功节点集合,若所述执行结果返回失败,则将所述邻节点加入所述失败节点集合,以及,将以所述邻节点为起始节点的节点均加入所述不可达节点集合。
在具体的实施过程中,如判断邻节点可达,如:通过变迁条件判断初始节点m到邻节点n之间的边的变迁条件满足,则可以执行邻节点n的遍历,获取邻节点n的执行结果。执行结果可以表示该节点的计算结果,如:若节点为数据捞取节点,则执行结果可以表示该数据捞取节点捞取的数据,若节点为计算节点,则该节点的执行结果即根据设置的计算公式的计算结果。判断邻节点n的执行结果是否返回成功,若是,则说明邻节点n正常,将邻节点n加入成功节点集合,若邻节点n的执行结果返回失败,则说明邻节点n不能正常执行,将邻节点n加入失败节点集合。邻节点n访问失败,则以邻节点n为起始节点的其他节点不能正常访问,可以认为以邻节点n为起始节点的其他节点为不可达节点,可以将以邻节点n为起始节点的节点均加入不可达节点集合。
本说明书实施例,在确定节点可达时,执行该节点的遍历,获取节点的执行结果,通过执行结果进一步判断节点是否能够正常执行其功能,提高了的节点遍历结果的准确性。
在上述实施例的基础上,本说明书一个实施例中,所述直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果,包括:
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和相同,则获取遍历结果,结束遍历;
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和不相同,则设置定时任务,通过流程遍历算法定时遍历所述有向图中的节点,直至所述有向图中的节点已遍历或不可达。
在遍历业务处理流程的有向图时,节点的遍历结果分为成功、失败、不可达,若成功节点集合、失败节点集合、不可达节点集合中的节点的总和与有向图中所有节点的总和相同,则可以认为有向图遍历完成,可以统计各个节点的执行结果,完成业务处理流程的在线可视化编程处理。若成功节点集合、失败节点集合、不可达节点集合中的节点的总和与有向图中所有节点的总和不同,则可以认为有向图遍历没有完成,有节点没有遍历或者遍历结果失误,可以通过设置定时任务,利用上述实施例的遍历方法,定时遍历有向图中的节点,直至有向图中所有节点已经遍历或可达,即直至成功节点集合、失败节点集合、不可达节点集合中的节点的总和与有向图中所有节点的总和相同。
本说明书实施例提供的在线可视化编程方法,针对不同的业务场景,通过执行组件对原子能力进行编排,实现满足不同业务场景诉求的应急方案,获得不同业务场景对应的有向图,并采用类似自然编程语言的逻辑对有向图进行遍历执行,完成不同业务场景的在线可视化编程处理,提高了在线可视化编程方法的灵活性和适用性。
图3是本说明一个实施例中采用流程遍历算法遍历有向图节点的流程示意图,如图3所示,本说明书一个实施例中可以采用如下方法对业务处理流程的有向图进行遍历:
步骤301、初始化遍历队列、失败节点集合、不可达节点集合、成功节点集合。初始化的方法可以根据实际需要进行设置,本说明书实施例不作具体限定。如:先获取已遍历节点列表,若已遍历节点列表不为空,则将已遍历节点列表中的节点加入遍历队列,若已遍历节点列表为空,则获取有向图中的开始节点,将开始节点加入遍历队列。初始化时,可以将失败节点集合、不可达节点集合、成功节点集合均设置为空集。遍历过程中若节点访问失败,则将节点加入失败节点集合,若节点不可达,则将节点加入不可达节点集合,若节点访问成功即可达且节点的执行结果返回成功,则将节点加入成功节点集合中。
步骤302、获取遍历队列中的首元素,作为初始节点。当遍历队列不为空时,遍历队列中的首元素作为初始节点。
步骤303、获取初始节点的邻节点。可以根据有向图,获取初始节点的邻节点。若初始节点的邻节点有多个,则可以按照邻节点在有向图中的坐标从小到大依次计算邻节点,即按照坐标从小到大依次遍历初始节点的邻节点。
步骤304、判断初始节点到邻节点的变迁条件是否满足。若变迁条件满足,则执行步骤305,否则,执行步骤314。
步骤305、获取邻节点的入度边对应的起始节点的状态。
步骤306、判断邻节点的入度边对应的起始节点是否为不可达节点或失败节点。若邻节点的入度边对应的起始节点存在不可达节点或失败节点,则执行步骤315,若邻节点的入度边对应的起始节点均为成功节点或可达节点,则执行步骤307。
步骤307、获取邻节点的执行结果。即访问邻节点,执行邻节点的功能。
步骤308、判断邻节点的执行结果返回是否成功。若是,则执行步骤309,否则,执行步骤316。
步骤309、将邻节点加入成功节点集合。
步骤310、判断成功节点集合、失败节点集合、不可达节点集合中的节点总和是否等于有向图中所有节点的总和,即判断成功节点+失败节点+可达节点=节点总和,若是,则执行步骤313,否则,执行步骤311。
步骤311、将邻节点作为初始节点。
步骤312、设置定时任务,定时触发上述遍历,直至有向图中所有节点均已遍历或不可达。即若成功节点集合、失败节点集合、不可达节点集合中的节点总和不等于有向图中所有节点的总和,则将即将邻节点作为初始节点,返回步骤303,重复上述遍历过程。
步骤313、统计遍历执行结果,更新流程状态,结束遍历。
步骤314、将邻节点以及以邻节点为起始节点的节点均加入不可达节点集合,执行步骤311。
步骤315、将邻节点加入不可达节点集合,跳过邻节点,继续遍历,执行步骤311。
步骤316、将邻节点加入失败节点集合,将以邻节点为起始节点的节点均加入不可达节点集合,执行步骤311。
图4是本说明书一个实施例中在线可视化编程结果的结构示意图,下面结合图4,介绍本说明书实施例中在线可视化编程的具体过程:
1、配置业务应急处理流程,如图4所示,在配置业务应急处理流程时,可以获取对应的节点,包含但不仅限于数据捞取、数据订正、DRM、Schedule、StarAgent、AntProcess、Notify、Groovy、第三方API等节点,通过不同节点的边(变迁条件),配置groovy表达式判断后续节点是否可达。还可以配置业务应急处理流程中各节点的入度和出度,每一个节点对于入度或出度没有限制,也即入度可以大于1(多路汇总),出度也可以大于1(多点可达)。
2、配置每个节点,主要包括配置节点的基础属性(节点ID、名称等),节点配置参数(节点执行所需的参数配置),节点上下文(节点在全流程共享的自定义上下文配置,用于节点数据的上下文透传)。如图4所示,图4中每个节点可以根据节点的功能配置相应的名称,如:Groovy解析报警内容、线上日志捞取、Groovy判断接口类型、工单审批、DRM推送降级、推送结果通知、通知cfpcenter值班等。图4的有向图最开始的空心圆可以表示起始节点,末尾实心圆可以表示结束节点。
3、任意两个节点之间,有且只有一条边。如图4所示,通过对业务流程中的所有节点进行连线得到边(可以带有Groovy条件,也可以不带Groovy条件),完成自定义应急处置流程的有向图配置。
4、启动应急流程,创建业务流程实例。通过可视化配置构造有向图,通过流程遍历算法完成图4中有向图中所有节点的遍历。流程遍历算法简化流程如下:
(1)初始化遍历队列Q、失败节点集合F、不可达节点集合U;
(2)捞取已遍历节点列表I,如果已遍历节点列表I不为空,节点入遍历队列Q;
(3)如果已遍历节点I为空,开始节点入遍历队列Q;
(4)根据已遍历节点I,完成对失败节点集合F、不可达节点的集合U的初始化(递归,如果当前节点访问失败,则以当前节点为起始节点的所有节点均不可达,递归知道已遍历节点遍历完成);
(5)while(遍历队列Q非空)
(5.1)遍历队列Q的首元素出队,得到初始节点m;
(5.2)按照坐标由小到大计算初始节点m的邻节点n;
(5.3)计算m->n对应的边的变迁条件R是否满足;如果R满足,继续后一步;如果R条件不满足,则表示邻节点n为不可达,同时递归完成对以邻节点n为起始节点的所有节点均不可达,加入不可达集合U;
(5.4)计算所有以可达的邻节点n的入度边对应的起始节点的状态;如果起始节点存在状态为失败、不可达的节点,则邻节点n不可达,跳过邻节点n,继续遍历执行;
(5.5)执行邻节点n的遍历,返回执行结果T;
(5.6)如果执行结果T返回成功,将当前节点接入成功节点集合;如果执行结果T返回失败,添加邻节点n到失败节点集合,同时递归完成对以邻节点n为起始节点的所有节点均不可达,加入不可达集合U;
(6)如果成功节点+失败节点+不可达节点=节点总和,则统计执行结果,更新流程状态,结束遍历;否则后续定时任务继续触发上述遍历,直到所有节点已遍历或不可达。
本说明书实施例提供的在线可视化编程方法,能够将数据源(DB、TAIR、TT、DD)等数据与第三方应用(DRM、Schedule、StarAgent、AntProcess、Notify)、第三方接口等,通过Groovy脚本对不同能力进行编排串联,以编排出能够满足各种不同业务场景诉求的应急方案。大量自动止血和核对降噪场景可以通过本说明书实施例提供的在线可视化编程方法配置接入,解决了核对自动降噪、业务复杂应急场景支持不灵活、应急能力接入缓慢、应急事后处置能力低等多个痛点问题,极大的夯实了业务应急体系和自动应急体系,并且在自动fo切换,自动容灾切换等场景已看到可能,为未来向自动化应急处置奠定了基础。
本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。
基于上述所述的在线可视化编程方法,本说明书一个或多个实施例还提供一种在线可视化编程装置。所述的装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
具体地,图5是本说明书提供的在线可视化编程装置一个实施例的模块结构示意图,如图5所示,本说明书中提供的在线可视化编程装置包括:业务流程配置模块51、有向图构建模块52、节点遍历模块53,其中:
业务流程配置模块51,可以用于获取业务处理流程的配置信息,所述配置信息包括:所述业务处理流程对应的节点以及节点参数,所述节点包括:数据捞取节点、数据订正节点、第三方应用节点、第三方接口节点、计算节点中的至少一个;
有向图构建模块52,可以用于根据所述业务处理流程,对所述节点进行连线,构建所述业务处理流程的有向图;
节点遍历模块53,可以用于通过流程遍历算法遍历所述有向图中的节点,完成所述业务处理流程的在线可视化编程。
本说明书实施例提供的在线可视化编程装置,根据业务场景需求,配置业务处理流程,获取业务处理流程所需的节点,构建业务处理流程对应的有向图,再利用流程遍历算法遍历所述有向图中的节点,完成所述业务处理流程的在线可视化编程。可以实现将数据源(如:DB、TAIR、TT、DD)等数据与第三方应用(如:DRM、Schedule、StarAgent、AntProcess、Notify)、第三方接口等,进行编排串联,编排出能够满足各种不同业务场景诉求的应急方案。提高了业务处理流程的灵活性,可以适用于多种复杂的业务场景的处理。
在上述实施例的基础上,所述节点遍历模块具体用于:
初始化遍历队列、不可达节点集合、可达节点集合;
若所述遍历队列不为空,获取所述遍历队列中的首元素,作为初始节点;
根据所述有向图,获取所述初始节点的邻节点;
判断所述邻节点是否可达,若是,则将所述邻节点加入所述可达节点集合,否则将所述邻节点加入所述不可达节点集合;
将所述邻节点作为所述初始节点,获取所述初始节点的邻节点,继续遍历,直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果。
本说明书实施例提供的有向图的遍历方法接近自然程序语言的逻辑,使得业务流程的执行顺序更加灵活,提高了的在线可视化编程的灵活性,可以适用于多种复杂的业务场景的处理。
在上述实施例的基础上,所述节点遍历模块具体用于:
判断所述初始节点与所述邻节点对应的边的变迁条件是否满足,若不满足,则确定所述邻节点不可达,将所述邻节点以及以所述邻节点为起始节点的节点均加入所述不可达节点集合;
若满足,则判断所述邻节点的入度边对应的起始节点的状态,若所述起始节点的状态为失败或不可达,则确定所述邻节点不可达;
若所述初始节点与所述邻节点对应的边的变迁条件满足,且所述邻节点的入度边对应的起始节点的状态为成功或可达,则确定所述邻节点可达。
本说明书实施例提供的在线可视化编程装置,利用节点之间的变迁条件判断节点是否可达,并在变迁条件满足时,通过节点的入度边对应的起始节点的状态,进一步判断节点是否可达,避免当前节点的变迁条件满足,但是节点的入度边对应的起始节点存在不可达或失败节点,导致节点访问失败的问题,提高节点遍历结果的准确性和效率。
在上述实施例的基础上,所述可达节点集合包括成功节点集合和失败节点集合,相应地,所述节点遍历模块还用于:
若所述邻节点可达,则获取所述邻节点的执行结果,若所述邻节点的执行结果返回成功,则将所述邻节点加入所述成功节点集合,若所述执行结果返回失败,则将所述邻节点加入所述失败节点集合,以及,将以所述邻节点为起始节点的节点均加入所述不可达节点集合。
本说明书实施例,在确定节点可达时,执行该节点的遍历,获取节点的执行结果,通过执行结果进一步判断节点是否能够正常执行其功能,提高了的节点遍历结果的准确性。
在上述实施例的基础上,所述节点遍历模块还用于:
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和相同,则获取遍历结果,结束遍历;
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和不相同,则设置定时任务,通过流程遍历算法定时遍历所述有向图中的节点,直至所述有向图中的节点已遍历或不可达。
本说明书实施例,针对不同的业务场景,通过执行组件对原子能力进行编排,实现满足不同业务场景诉求的应急方案,获得不同业务场景对应的有向图,并采用类似自然编程语言的逻辑对有向图进行遍历执行,完成不同业务场景的在线可视化编程处理,提高了在线可视化编程方法的灵活性和适用性。
在上述实施例的基础上,所述有向图构建模块具体用于:
利用Groovy脚本将所述节点进行编排串联,构建所述有向图。
本说明书实施例,通过Groovy脚本对不同能力进行编排串联,以编排出能够满足各种不同业务场景诉求的应急方案。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本说明书实施例还提供一种在线可视化编程的处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述实施例的在线可视化编程方法,如:
配置业务处理流程,获取所述业务处理流程对应的节点,所述节点包括:数据捞取节点、数据订正节点、第三方应用节点、第三方接口节点、计算节点中的至少一个;
设置所述节点的节点参数;
根据所述业务处理流程,对所述节点进行连线,构建所述业务处理流程的有向图;
通过流程遍历算法遍历所述有向图中的节点,完成所述业务处理流程的在线可视化编程。
所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
需要说明的,上述所述的处理设备根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本说明书提供的在线可视化编程系统可以为单独的在线可视化编程系统,也可以应用在多种数据分析处理系统中。所述系统可以包括上述实施例中任意一个在线可视化编程装置。所述的系统可以为单独的服务器,也可以包括使用了本说明书的一个或多个所述方法或一个或多个实施例装置的服务器集群、系统(包括分布式系统)、软件(应用)、实际操作装置、逻辑门电路装置、量子计算机等并结合必要的实施硬件的终端装置。所述在线可视化编程系统可以包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现上述任意一个或者多个实施例中所述方法的步骤。
本说明书实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图6是应用本申请实施例的在线可视化编程服务器的硬件结构框图。如图6所示,服务器10可以包括一个或多个(图中仅示出一个)处理器100(处理器100可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器200、以及用于通信功能的传输模块300。本邻域普通技术人员可以理解,图6所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图6中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如数据库或多级缓存、GPU,或者具有与图6所示不同的配置。
存储器200可用于存储应用软件的软件程序以及模块,如本说明书实施例中的在线可视化编程方法对应的程序指令/模块,处理器100通过运行存储在存储器200内的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器200可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器200可进一步包括相对于处理器100远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块300用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块300包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块300可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
图7是本说明书一个实施例中在线可视化编程的整体框架示意图,如图7所示,本说明书实施例中提供的在线可视化编程可以应用于不同的应急场景如:自动降级、自动降噪、自动配置、应急处置、自动容灾等,还可以用于各种第三方应用以及第三方接口等。如图7所示,本说明书实施例中的在线可视化编程还可以进行风险识别以及应急数据沉淀,其中风险识别中的xflash就是用js+xml方式来写flash程序的技术,图中,T+H表示延迟为Hour(小时)的一种核对手段,T+M表示延迟为Miniute(分钟)的一种核对手段,执行组件可以理解为节点,图中英文的具体含义和功能可以参考上述实施例的记载,此处不再赘述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。
本说明书实施例提供的上述在线可视化编程方法或装置可以在计算机中由处理器执行相应的程序指令来实现,如使用windows操作系统的c++语言在PC端实现、linux系统实现,或其他例如使用android、iOS系统程序设计语言在智能终端实现,以及基于量子计算机的处理逻辑实现等。
需要说明的是说明书上述所述的装置、计算机存储介质、系统根据相关方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照对应方法实施例的描述,在此不作一一赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例并不局限于必须是符合行业通信标准、标准计算机数据处理和数据存储规则或本说明书一个或多个实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书实施例的可选实施方案范围之内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。