发明内容
本说明书目的在于提供一种在线可视化编程的调试方法及装置,实现了可视化编程逻辑的在线调试,确保在线可视化编程逻辑的各分支均符合预期。
一方面本说明书实施例提供了一种在线可视化编程的调试方法,包括:
获取可视化编程对应的有向图中的断点,所述断点设置在所述有向图中节点之间的边上;
通过流程遍历算法遍历所述有向图中的节点,当遍历到所述断点时,获取以所述断点所在的边为出度边的节点的执行参数、执行结果;
切换所述断点的模式为放行模式,继续遍历,直至所述有向图中的节点遍历完成;
根据所述执行参数、所述执行结果,判断所述执行结果是否符合预期,若不符合,则对所述可视化编程进行调试。
进一步地,所述方法的另一个实施例中,所述方法还包括:
根据所述断点的模式,统计所述有向图的已覆盖分支、未覆盖分支。
进一步地,所述方法的另一个实施例中,所述方法还包括:
将所述断点所在的边为出度边的节点的执行参数、执行结果进行持久化。
进一步地,所述方法的另一个实施例中,所述有向图中的节点包括:数据捞取节点、数据订正节点、第三方应用节点、第三方接口节点、计算节点中的至少一个。
进一步地,所述方法的另一个实施例中,所述通过流程遍历算法遍历所述有向图中的节点,包括:
初始化遍历队列、不可达节点集合、可达节点集合;
若所述遍历队列不为空,获取所述遍历队列中的首元素,作为初始节点;
根据所述有向图,获取所述初始节点的邻节点;
判断所述邻节点是否可达,若是,则将所述邻节点加入所述可达节点集合,否则将所述邻节点加入所述不可达节点集合;
将所述邻节点作为所述初始节点,获取所述初始节点的邻节点,继续遍历,直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果。
进一步地,所述方法的另一个实施例中,所述判断所述邻节点是否可达,包括:
判断所述初始节点与所述邻节点对应的边的变迁条件是否满足,若不满足,则确定所述邻节点不可达,将所述邻节点以及以所述邻节点为起始节点的节点均加入所述不可达节点集合;
若满足,则判断所述邻节点的入度边对应的起始节点的状态,若所述起始节点的状态为失败或不可达,则确定所述邻节点不可达;
若所述初始节点与所述邻节点对应的边的变迁条件满足,且所述邻节点的入度边对应的起始节点的状态为成功或可达,则确定所述邻节点可达。
进一步地,所述方法的另一个实施例中,所述可达节点集合包括成功节点集合和失败节点集合,相应地,所述方法还包括:
若所述邻节点可达,则获取所述邻节点的执行结果,若所述邻节点的执行结果返回成功,则将所述邻节点加入所述成功节点集合,若所述执行结果返回失败,则将所述邻节点加入所述失败节点集合,以及,将以所述邻节点为起始节点的节点均加入所述不可达节点集合。
进一步地,所述方法的另一个实施例中,所述直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果,包括:
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和相同,则获取遍历结果,结束遍历;
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和不相同,则设置定时任务,通过流程遍历算法定时遍历所述有向图中的节点,直至所述有向图中的节点已遍历或不可达。
另一方面,本说明书提供了一种在线可视化编程的调试装置,包括:
断点设置模块,用于获取可视化编程对应的有向图中的断点,所述断点设置在所述有向图中节点之间的边上;
节点遍历模块,用于通过流程遍历算法遍历所述有向图中的节点,当遍历到所述断点时,获取以所述断点所在的边为出度边的节点的执行参数、执行结果;
断点放行模块,用于切换所述断点的模式为放行模式,继续遍历,直至所述有向图中的节点遍历完成;
编程调试模块,用于根据所述执行参数、所述执行结果,判断所述执行结果是否符合预期,对所述可视化编程进行调试。
进一步地,所述装置的另一个实施例中,所述装置还包括分支统计模块,用于:
根据所述断点的模式,统计所述有向图的已覆盖分支、未覆盖分支。
进一步地,所述装置的另一个实施例中,所述装置还包括断点记录模块,用于:
将所述断点所在的边为出度的节点的执行参数、执行结果进行持久化。
进一步地,所述装置的另一个实施例中,所述有向图中的节点包括:数据捞取节点、数据订正节点、第三方应用节点、第三方接口节点、计算节点中的至少一个。
进一步地,所述装置的另一个实施例中,所述节点遍历模块具体用于:
初始化遍历队列、不可达节点集合、可达节点集合;
若所述遍历队列不为空,获取所述遍历队列中的首元素,作为初始节点;
根据所述有向图,获取所述初始节点的邻节点;
判断所述邻节点是否可达,若是,则将所述邻节点加入所述可达节点集合,否则将所述邻节点加入所述不可达节点集合;
将所述邻节点作为所述初始节点,获取所述初始节点的邻节点,继续遍历,直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果。
进一步地,所述装置的另一个实施例中,所述节点遍历模块具体用于:
判断所述初始节点与所述邻节点对应的边的变迁条件是否满足,若不满足,则确定所述邻节点不可达,将所述邻节点以及以所述邻节点为起始节点的节点均加入所述不可达节点集合;
若满足,则判断所述邻节点的入度边对应的起始节点的状态,若所述起始节点的状态为失败或不可达,则确定所述邻节点不可达;
若所述初始节点与所述邻节点对应的边的变迁条件满足,且所述邻节点的入度边对应的起始节点的状态为成功或可达,则确定所述邻节点可达。
进一步地,所述装置的另一个实施例中,所述节点遍历模块还用于:
若所述邻节点可达,则获取所述邻节点的执行结果,若所述邻节点的执行结果返回成功,则将所述邻节点加入所述成功节点集合,若所述执行结果返回失败,则将所述邻节点加入所述失败节点集合,以及,将以所述邻节点为起始节点的节点均加入所述不可达节点集合。
进一步地,所述装置的另一个实施例中,所述节点遍历模块还用于:
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和相同,则获取遍历结果,结束遍历;
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和不相同,则设置定时任务,通过流程遍历算法定时遍历所述有向图中的节点,直至所述有向图中的节点已遍历或不可达。
还一方面,本说明书提供了在线可视化编程调试的处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述在线可视化编程的调试方法。
再一方面,本说明书提供了一种在线可视化编程的调试***,包括至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述在线可视化编程的调试方法。
本说明书提供的在线可视化编程的调试方法、装置、处理设备、***,通过在可视化编程的基础上,在有向图中设置断点,通过断点模式切换,遍历有向图中各个节点,并在遍历至断点处时,获取以断点所在边为出度边的节点的执行参数和执行结果。根据节点的执行参数和执行结果是否满足预期,对可视化编程逻辑进行快速的在线调试,以确保可视化编程逻辑的各分支均符合预期,满足不同业务场景的需求,提高了可视化编程的在线调试的灵活性和准确性。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
在线编程也称在线IDE,是指不需要经过安装编程的环境,直接在互联网浏览器上编写程序,并且可以运行得出结果。通常情况下编程逻辑往往是很复杂的,导致用户在阅读和维护过程中,需要投入非常多的精力才能明白其中的复杂逻辑与含义,因为无法一眼就看明白代码的处理逻辑与分块用途。可视化编程,是一种将复杂逻辑简单化的过程,通过组件将复杂的业务逻辑,简单化、可视化的展现在用户面前,一眼就能看明白其中的含义与复杂逻辑。利用可视化编程方法,可以将不同的组件进行组合,以满足不同的业务需求。可视化编程结束后,需要对业务逻辑进行调试,以确保业务逻辑的分支输出符合预期,保证在线可视化编程逻辑的准确性。
本说明书实施例中提供了一种在线可视化编程的调试方法,在可视化编程的基础上,对已编程的业务逻辑发起在线可视化调试,可以确保复杂逻辑的所有分支输出符合预期。并且可以通过可视化编排快速组装出满足不同业务场景的应急处置方案,以满足不同的应急场景诉求,可视化编程方法可以不需要代码的变更,各组件之间的逻辑接近自然编程代码的逻辑,实现了的可视化编程的灵活配置,提升业务的应急止血兜底能力。
本说明书中在线可视化编程的调试方法可以应用在客户端或服务器中,客户端可以是智能手机、平板电脑、智能可穿戴设备(智能手表、虚拟现实眼镜、虚拟现实头盔等)、智能车载设备等电子设备。
具体的,图1是本说明书一个实施例中在线可视化编程的调试方法的流程示意图,如图1所示,本说明书一个实施例中提供的在线可视化编程的调试方法的整体过程可以包括:
步骤102、获取可视化编程对应的有向图中的断点,所述断点设置在所述有向图中节点之间的边上。
在具体的实施过程中,有向图可以表示由一组顶点和一组有方向的边组成的图形,每条有方向的边都连接着有序的一对顶点。本说明书中的有向图中可以包括业务处理流程所需的节点,各节点之间的上下游关系,各节点的执行条件等。本说明书实施例中,采用可视化编程方法构建有向图的方法可参考如下过程:
先根据业务处理流程的需要,配置业务处理流程,选择业务处理流程所需的节点,并设置节点参数,构建业务处理流程对应的有向图,具体过程可以参考如下介绍:
在配置业务处理流程时,可以配置需要哪些节点模块,各节点模块之间的逻辑顺序等。本说明书实施例中的业务场景可以分为以下几类:
1、降级类:如:快照自动降级、入职流水自动降级、离在线混部日志自动降级等;
2、配置类:如:并发缓冲自动配置、账户限流自动配置、汇总自动配置等等;
3、容灾类:如:缓存自适应fo(Formatting Objects,格式化对象)等;
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,结构化查询语言)拼装计算,业务逻辑计算,数据对比计算等。Groovy可以表示用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。
在配置业务处理流程时,获取到业务处理流程所需的节点后,可以配置每个节点的入度、出度,本说明书实施例中各个节点的入度和出度没有限制,即入度可以大于1(多路汇总),出度也可以大于1(多点可达)。节点的出边条数可以称为该节点的出度,节点的入边条数可以称为该节点的入度。
配置好业务处理流程,获取业务处理流程需要的节点后,可以设置各节点的节点参数。节点参数可以包括:基础属性、节点执行所需的参数、节点上下文等,基础属性可以包括节点ID(身份标识号)、节点名称等;节点执行所需的参数即该节点执行其功能时使用的参数、函数、公式等;节点上下文即节点的上游节点、下游节点等;节点的上下文配置可以表示节点在全流程共享的自定义上下文配置,用于节点数据的上下文透传。节点参数设置完成后,可以根据业务处理流程将各节点进行连线,两个节点之间只能有一条边,构建出业务处理流程的有向图,如:可以利用Groovy脚本将所述节点进行编排串联,构建有向图。
需要说明的是,本说明书实施例,在构建好的有向图中的边上设置断点,断点可以表示当有向图中各个节点的任务执行到断点处时,业务流程暂停。根据实际使用需要,可以在有向图中任意边上设置断点,断点的数量可以根据实际需要进行选择,如:可以在所有的边上设置断点,也可以在指定的边上设置断点。断点的设置方式可以是鼠标单击、右击等,具体可以根据在线可视化编程的实际情况进行设置,本说明书实施例不作具体限定。处理器如:可视化编程的调试装置在监测到鼠标在有向图的节点之间的边上进行单击或右击后,可以在鼠标单击或右击的位置处设置一个断点。在进行可视化编程的调试时,可以根据预先的设置方式,获取到有向图中的断点所在的位置。
图2是本说明书一个实施例中带有断点的有向图示意图,如图2所示,图中起始的空心圆、终端处的实心圆、矩形方框可以表示节点,矩形方框中的文字可以表示节点的名称,根据节点的名称可以看出该节点的功能,如:数据捞取节点,可以表示该节点用于捞取指定的数据。图2中,节点之间的边上的小空心圆可以表示断点,如:数据捞取节点和数据订正节点之间的边上设置的空心圆表示断点。图2中的有向图中共有5条边,设置了3个断点,根据实际需要,还可以在另外两条边上也设置断点,或者在指定的边上设置断点。
步骤104、通过流程遍历算法遍历所述有向图中的节点,当遍历到所述断点时,获取以所述断点所在的边为出度边的节点的执行参数、执行结果。
构建出业务处理流程的有向图,并设置好断点后,可以启动应急流程,创建业务流程实例,即遍历有向图中的各个节点,各节点执行相应的任务,通过设置断点,实现可视化编程的在线调试。在遍历有向图时,可以采用流程遍历算法如:二叉树遍历算法、深度优先遍历算法、广度优先遍历算法等。遍历是指沿着某条搜索路线,依次对有向图中每个节点均做一次且仅做一次访问,访问节点所做的操作依赖于具体的应用问题。
在遍历有向图中的节点时,可以从起始节点开始遍历,遍历至断点处时,业务流程暂停,获取以该断点所在的边为出度边的节点的执行参数、执行结果。出度边可以表示节点的出边,即以节点为起点的边。如图2所示,在遍历图2的有向图时,遍历至数据捞取节点和数据订正节点之间的边上的断点时,业务流程暂停,获取数据捞取节点的执行参数和执行结果。执行参数可以表示节点执行任务时的约束条件、函数、公式等。
步骤106、切换所述断点的模式为放行模式,继续遍历,直至所述有向图中的节点遍历完成。
在获取到以断点所在的边为出度边的节点的执行参数和执行结果后,将该断点的模式切换为放行模式,放行模式可以表示为该断点所在的边连通,断点不再阻塞业务流程,可以继续向后执行。遍历流程继续,若遇到下一个断点,重复上述步骤104,即获取以下一个断点所在的边为出度边的节点的执行参数和执行结果,否则继续遍历,直至有向图中的节点都遍历完成。
图3是本说明书一个实施例中断点放行模式的有向图示意图,如图3所示,图3中有向图的边上的实心圆表示放行模式的断点,在上述图2的基础上,将所有的断点设置为放行模式。断点放行模式的设置方式可以为鼠标双击,当然,根据在线可视化编程的需要,还可以使用其他方式设置断点放行模式,本说明书实施例不作具体限定。例如:处理器如可视化编程的调试装置在监测到鼠标在有向图中的断点处进行双击后,可以触发该处的断点模式切换为放行模式,或者采用其他的触发方式切换断点的模式,本说明书实施例不作具体限定。
步骤108、根据所述执行参数、所述执行结果,判断所述执行结果是否符合预期,若不符合,则对所述可视化编程进行调试。
有向图中的节点遍历结束后,可以获取到以各个断点所在边为出度边的节点的执行参数和执行结果,可以查看各个节点的执行结果是否符合预期,即执行结果是否满足预期的目标。若不符合,可以对可视化编程进行调试,如:调整节点的执行条件(可以通过调整节点的执行参数实现),调整节点之间边的变迁条件,调整有向图中节点的逻辑关系,更换、删除、增加有向图中的节点等,根据实际编程需要可以选择合适的方式对可视化编程逻辑进行在线调试,以满足不同场景的业务需求。
需要说明的是,上述步骤106、步骤108之间没有固定的逻辑顺序,可以将有向图中所有的节点遍历完成后,再根据节点的执行参数和执行结果对可视化编程逻辑进行在线调试。也可以在遍历至断点处,获取到节点的执行参数和执行结果后,即判断执行结果是否满足预期,对可视化编程逻辑进行在线调试,直至该断点处的执行结果满足预期,继续遍历,具体可以根据实际需要进行选择。
本说明书一个实施例中,在对有向图进行遍历时,还可以选择指定的断点切换为放行模式,继续该断点后的节点分支的遍历。采用这种方式,可以查看指定节点或指定分支的节点的执行参数和执行结果,实现节点的定向调试。如:若在可视化编程逻辑的调试过程中,发现某一分支A的节点的执行结果不能达到预期结果,则可以将其他分支的断点均设置为断点模式,对分支A进行遍历,依次放行分支A上的断点,对分支A的执行路径上的节点进行调试。
本说明书实施例提供的在线可视化编程的调试方法,通过在可视化编程的基础上,在有向图中设置断点,通过断点模式切换,遍历有向图中各个节点,并在遍历至断点处时,获取以断点所在边为出度边的节点的执行参数和执行结果。根据节点的执行参数和执行结果是否满足预期,对可视化编程逻辑进行快速的在线调试,以确保可视化编程逻辑的各分支均符合预期,满足不同业务场景的需求,提高了可视化编程的在线调试的灵活性和准确性。
在上述实施例的基础上,本说明书一个实施例中,在获取到以断点所在边为出度边的执行参数、执行结果后,可以将执行参数、执行结果进行持久化。持久化即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘),持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中等。有向图遍历完成后,即业务流程整体执行完成后,可以移动到任何一个断点,查看当前断点对应的节点的执行参数、执行结果、执行路径等是否符合预期,即可以实现回放调试结果的功能。
本说明书实施例,新增在线可视化编程断点调试能力,也即通过对不同原子能力的编排(包含但不仅限于DSQL数据捞取/DSQL数据订正/StarAgent/Groovy/第三方API等原子能力),完成业务逻辑的在线组装后,可以通过在线对任意两个节点的任意一条边进行断点设置,跟踪断点所在边的执行结果是否符合预期、是否执行到断点所在的边、是否返回正确的结果等等,进一步判断在线可视化编程逻辑的分支是否符合预期,实现可视化编程逻辑的在线调试。
此外,在上述实施例的基础上,本说明书一个实施例提供的在线可视化编程方法,可以实现对执行结果已覆盖分支、未覆盖分支的标识、统计能力。已覆盖分支可以表示已经遍历的分支,未覆盖分支可以表示未遍历的分支,可以通过断点的模式是断点模式或放行模式统计已覆盖分支、未覆盖分支。如上述图2、图3所示,断点不仅标识了每一个节点的执行参数、执行结果,而且可以准确计算已覆盖的分支、未覆盖的分支,进而准确的计算分支覆盖率,为一个复杂的在线可视化编排逻辑的测试覆盖奠定基础。
本说明书实施例提供的在线可视化编程的调试方法,可以很好的实现在线可视化业务编程逻辑的在线调试、在线验证、在线执行、在线跟踪,从而不仅仅做到了可以在线编排业务逻辑,更可以一个节点一个节点的跟踪每一个步骤的执行参数、执行结果是否都符合预期。同时,通过对业务编排逻辑已覆盖分支的断点调试、统计可以计算当前业务逻辑分支覆盖率,实现对整个在线可视化编排逻辑的100%覆盖。
在上述实施例的基础上,所述通过流程遍历算法遍历所述有向图中的节点,包括:
初始化遍历队列、不可达节点集合、可达节点集合;
若所述遍历队列不为空,获取所述遍历队列中的首元素,作为初始节点;
根据所述有向图,获取所述初始节点的邻节点;
判断所述邻节点是否可达,若是,则将所述邻节点加入所述可达节点集合,否则将所述邻节点加入所述不可达节点集合;
将所述邻节点作为所述初始节点,获取所述初始节点的邻节点,继续遍历,直至所述有向图中的节点遍历完成或不可达。
在具体的实施过程中,构建完成业务流程的有向图后,可以通过遍历有向图中的节点实现可视化编程的在线调试和执行。遍历有向图时,可以先初始化遍历队列、不可达节点集合、可达节点集合,其中,不可达节点集合用于存储不可达节点,可达节点集合用于存储可达节点,本说明书一个实施例中,可达节点集合可以包括成功节点集合和失败节点集合,即节点可达,但是节点执行任务时可能会存在执行成功或执行失败,执行成功的节点可以存储在成功节点集合,执行失败的节点可以存储在失败节点集合。
初始化的过程可以参考如下:
捞取已遍历节点列表I,如果已遍历节点列表I不为空,节点加入遍历队列Q;
如果已遍历节点I为空,则开始节点加入遍历队列Q;
根据已遍历节点I,完成对失败节点集合F、不可达节点集合U的初始化,如:可以采用递归算法,如果当前节点访问失败,则以当前节点为起始节点的所有节点均不可达,当前节点加入失败节点集合F,以当前节点为起始节点的所有节点加入不可达节点集合U。递归,就是在运行的过程中调用自己,通过递归算法可以知道已遍历节点遍历完成。成功节点集合初始化时可以为空集,节点访问成功后,可以将节点加入成功节点集合。
若遍历队列Q不为空,则获取遍历队列Q中的首元素,将首元素作为初始节点m,根据有向图获取初始节点m的邻节点n,邻节点可以表示与初始节点之间存在边,并且方向以初始节点为开始的节点,也可以理解为初始节点的下游节点。若邻节点有多个,则可以根据邻节点在有向图中的坐标由小到大或由大到小依次遍历邻节点。判断邻节点是否可达,若是,则可以将邻节点加入可达节点集合,若邻节点不可达,则可以将邻节点加入不可达节点集合。并且,当邻节点不可达时,可以说明以邻节点为起始节点的节点均不可达,可以将以邻节点为起始节点的节点均加入不可达节点集合U。将邻节点作为初始节点,重复上述遍历过程,直至有向图的所有节点遍历完成或者不可达,获取可视化编程逻辑的执行结果。当然,实际遍历时,还可以将成功的邻节点或者可达的邻节点作为初始节点,重复上述遍历过程。若初始节点的邻节点为不可达节点,则可以跳过不可达节点,继续遍历。
需要说明的是,上述遍历过程中,在遍历至断点处时,遍历流程暂停,采用上述实施例的方法获取以断点所在边为出度边的节点的执行参数和执行结果,获取执行参数和执行结果后,可以将断点的模式切换为放行模式,继续遍历。
此外,本说明书实施例的遍历过程,可以用于可视化编程的调试过程中,在可视化编程调试结束后,还可以用于可视化编程的执行。
本说明书实施例,采用上述遍历方法,可以通过设置在节点之间的边上设置断点,实现断点的跟踪,获取指定节点的执行结果,完成在线可视化编程的在线调试。并且有向图的遍历方法接近自然程序语言的逻辑,使得业务流程的执行顺序更加灵活,提高了的在线可视化编程以及编程调试的灵活性,可以适用于多种复杂的业务场景的处理。
邻节点可达可以表示初始节点到邻节点之间的路径是通的,在上述实施例的基础上,本说明书一个实施例中,所述判断所述邻节点是否可达,可以包括:
判断所述初始节点与所述邻节点对应的边的变迁条件是否满足,若不满足,则确定所述邻节点不可达,将所述邻节点以及以所述邻节点为起始节点的节点均加入所述不可达节点集合;
若满足,则判断所述邻节点的入度边对应的起始节点的状态,若所述起始节点的状态为失败或不可达,则确定所述邻节点不可达;
若所述初始节点与所述邻节点对应的边的变迁条件满足,且所述邻节点的入度边对应的起始节点的状态为成功或可达,则确定所述邻节点可达。
在具体的实施过程中,遍历有向图的节点时,可以通过节点之间的边的变迁条件判断节点是否可达,变迁条件也可以理解为执行条件,例如:计算初始节点m到邻节点n之间的边的变迁条件是否满足,若变迁条件不满足,则可以认为初始节点m到邻节点n之间的路径不通,即邻节点n不可达。邻节点n不可达,则以所述邻节点n为起始节点的节点均不可达,可以将以邻节点n为起始节点的节点均加入不可达节点集合,在继续遍历时,可以跳过以邻节点n为起始节点的路径。
图4是本说明书一个实施例中有向图的结构示意图,如图4所示,起始节点m的邻节点为节点n,节点n的邻节点为节点p。若起始节点m到邻节点n之间的边的变迁条件满足,则可以再获取以邻节点n的入度边对应的起始节点的状态,如图2所示,若邻节点n的入度为3,如图4所示,节点m到邻节点n,节点h到邻节点n,节点k到邻节点n。入度边可以表示节点的入边,如图4中,邻节点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为起始节点的节点均加入不可达节点集合。
本说明书实施例,在确定节点可达时,执行该节点的遍历,获取节点的执行结果,通过执行结果进一步判断节点是否能够正常执行其功能,提高了的节点遍历结果的准确性。
在上述实施例的基础上,本说明书一个实施例中,所述直至所述有向图中的节点遍历完成或不可达,获取各节点的执行结果,包括:
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和相同,则获取遍历结果,结束遍历;
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和不相同,则设置定时任务,通过流程遍历算法定时遍历所述有向图中的节点,直至所述有向图中的节点已遍历或不可达。
在遍历业务处理流程的有向图时,节点的遍历结果分为成功、失败、不可达,若成功节点集合、失败节点集合、不可达节点集合中的节点的总和与有向图中所有节点的总和相同,则可以认为有向图遍历完成,可以统计各个节点的执行结果,完成业务处理流程的在线可视化编程处理。若成功节点集合、失败节点集合、不可达节点集合中的节点的总和与有向图中所有节点的总和不同,则可以认为有向图遍历没有完成,有节点没有遍历或者遍历结果失误,可以通过设置定时任务,利用上述实施例的遍历方法,定时遍历有向图中的节点,直至有向图中所有节点已经遍历或可达,即直至成功节点集合、失败节点集合、不可达节点集合中的节点的总和与有向图中所有节点的总和相同。
本说明书实施例提供的方法,针对不同的业务场景,通过执行组件对原子能力进行编排,实现满足不同业务场景诉求的应急方案,获得不同业务场景对应的有向图,并采用类似自然编程语言的逻辑对有向图进行遍历执行,完成不同业务场景的在线可视化编程处理,提高了在线可视化编程方法的灵活性和适用性。
本说明书实施例提供的方法,大量自动止血和核对降噪场景通过本方案配置接入,解决了核对自动降噪、业务复杂应急场景支持不灵活、应急能力接入缓慢、应急事后处置能力低等多个痛点问题,极大的夯实了业务应急体系和自动应急体系,不仅仅可以在线编排业务逻辑,还可以在线调试编程结果的正确性。为复杂业务场景下的可视化编程测试验证提供了有效措施与基础。
本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参见方法实施例的部分说明即可。
基于上述所述的在线可视化编程的调试方法,本说明书一个或多个实施例还提供一种在线可视化编程的调试装置。所述的装置可以包括使用了本说明书实施例所述方法的***(包括分布式***)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
具体地,图5是本说明书提供的在线可视化编程的调试装置一个实施例的模块结构示意图,如图5所示,本说明书中提供的在线可视化编程的调试装置包括:断点设置模块51、节点遍历模块52、断点放行模块53、编程调试模块54,其中:
断点设置模块51,可以用于获取可视化编程对应的有向图中的断点,所述断点设置在所述有向图中节点之间的边上;
节点遍历模块52,可以用于通过流程遍历算法遍历所述有向图中的节点,当遍历到所述断点时,获取以所述断点所在的边为出度边的节点的执行参数、执行结果;
断点放行模块53,可以用于切换所述断点的模式为放行模式,继续遍历,直至所述有向图中的节点遍历完成;
编程调试模块54,可以用于根据所述执行参数、所述执行结果,判断所述执行结果是否符合预期,对所述可视化编程进行调试。
本说明书实施例提供的在线可视化编程的调试装置,通过在可视化编程的基础上,在有向图中设置断点,通过断点模式切换,遍历有向图中各个节点,并在遍历至断点处时,获取以断点所在边为出度边的节点的执行参数和执行结果。根据节点的执行参数和执行结果是否满足预期,对可视化编程逻辑进行快速的在线调试,以确保可视化编程逻辑的各分支均符合预期,满足不同业务场景的需求,提高了可视化编程的在线调试的灵活性和准确性。
在上述实施例的基础上,所述装置还包括分支统计模块,用于:
根据所述断点的模式,统计所述有向图的已覆盖分支、未覆盖分支。
本说明书实施例提供的在线可视化编程的调试装置,可以实现对执行结果已覆盖分支、未覆盖分支的标识、统计能力,进而准确的计算分支覆盖率,为一个复杂的在线可视化编排逻辑的测试覆盖奠定基础。
在上述实施例的基础上,所述装置还包括断点记录模块,用于:
将所述断点所在的边为出度的节点的执行参数、执行结果进行持久化。
本说明书实施例提供的在线可视化编程的调试装置,通过将节点对应的执行参数和执行结果持久化,可以实现断点记录的回放调试结果的功能。
在上述实施例的基础上,所述有向图中的节点包括:数据捞取节点、数据订正节点、第三方应用节点、第三方接口节点、计算节点中的至少一个。
本说明书实施例,可以实现将数据源(如:DB、TAIR、ODPS、TT、DD)等数据与第三方应用(如:DRM、Schedule、StarAgent、AntProcess、Notify)、第三方接口等,进行编排串联,编排出能够满足各种不同业务场景诉求的应急方案。提高了业务处理流程的灵活性,可以适用于多种复杂的业务场景的处理。
在上述实施例的基础上,所述节点遍历模块具体用于:
初始化遍历队列、不可达节点集合、可达节点集合;
若所述遍历队列不为空,获取所述遍历队列中的首元素,作为初始节点;
根据所述有向图,获取所述初始节点的邻节点;
判断所述邻节点是否可达,若是,则将所述邻节点加入所述可达节点集合,否则将所述邻节点加入所述不可达节点集合;
将所述邻节点作为所述初始节点,获取所述初始节点的邻节点,继续遍历,直至所述有向图中的节点遍历完成或不可达。
本说明书实施例,采用上述遍历方法,可以通过设置在节点之间的边上设置断点,实现断点的跟踪,获取指定节点的执行结果,完成在线可视化编程的在线调试。并且有向图的遍历方法接近自然程序语言的逻辑,使得业务流程的执行顺序更加灵活,提高了的在线可视化编程以及编程调试的灵活性,可以适用于多种复杂的业务场景的处理。
在上述实施例的基础上,所述节点遍历模块具体用于:
判断所述初始节点与所述邻节点对应的边的变迁条件是否满足,若不满足,则确定所述邻节点不可达,将所述邻节点以及以所述邻节点为起始节点的节点均加入所述不可达节点集合;
若满足,则判断所述邻节点的入度边对应的起始节点的状态,若所述起始节点的状态为失败或不可达,则确定所述邻节点不可达;
若所述初始节点与所述邻节点对应的边的变迁条件满足,且所述邻节点的入度边对应的起始节点的状态为成功或可达,则确定所述邻节点可达。
本说明书实施例,利用节点之间的变迁条件判断节点是否可达,并在变迁条件满足时,通过节点的入度边对应的起始节点的状态,进一步判断节点是否可达,避免当前节点的变迁条件满足,但是节点的入度边对应的起始节点存在不可达或失败节点,导致节点访问失败的问题,提高节点遍历结果的准确性和效率。
在上述实施例的基础上,所述节点遍历模块还用于:
若所述邻节点可达,则获取所述邻节点的执行结果,若所述邻节点的执行结果返回成功,则将所述邻节点加入所述成功节点集合,若所述执行结果返回失败,则将所述邻节点加入所述失败节点集合,以及,将以所述邻节点为起始节点的节点均加入所述不可达节点集合。
本说明书实施例,在确定节点可达时,执行该节点的遍历,获取节点的执行结果,通过执行结果进一步判断节点是否能够正常执行其功能,提高了的节点遍历结果的准确性。
在上述实施例的基础上,所述节点遍历模块还用于:
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和相同,则获取遍历结果,结束遍历;
若所述成功节点集合、所述失败节点集合、所述不可达节点集合中的节点总和,与所述有向图中的节点总和不相同,则设置定时任务,通过流程遍历算法定时遍历所述有向图中的节点,直至所述有向图中的节点已遍历或不可达。
本说明书实施例,针对不同的业务场景,通过执行组件对原子能力进行编排,实现满足不同业务场景诉求的应急方案,获得不同业务场景对应的有向图,并采用类似自然编程语言的逻辑对有向图进行遍历执行,完成不同业务场景的在线可视化编程处理,提高了在线可视化编程方法的灵活性和适用性。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本说明书实施例还提供一种在线可视化编程调试的处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述实施例的在线可视化编程的调试方法,如:
在可视化编程对应的有向图中的边上设置断点;
通过流程遍历算法遍历所述有向图中的节点,当遍历到所述断点时,获取以所述断点所在的边为出度边的节点的执行参数、执行结果;
切换所述断点的模式为放行模式,继续遍历,直至所述有向图中的节点遍历完成;
根据所述执行参数、所述执行结果,判断所述执行结果是否符合预期,若不符合,则对所述可视化编程进行调试。
所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如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)模块,其用于通过无线方式与互联网进行通讯。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。
本说明书实施例提供的上述在线可视化编程的调试方法或装置可以在计算机中由处理器执行相应的程序指令来实现,如使用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、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。