CN107590186B - 管理和执行数据处理策略的方法和策略引擎*** - Google Patents
管理和执行数据处理策略的方法和策略引擎*** Download PDFInfo
- Publication number
- CN107590186B CN107590186B CN201710665755.7A CN201710665755A CN107590186B CN 107590186 B CN107590186 B CN 107590186B CN 201710665755 A CN201710665755 A CN 201710665755A CN 107590186 B CN107590186 B CN 107590186B
- Authority
- CN
- China
- Prior art keywords
- policy
- strategy
- group
- data
- data set
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种管理和执行数据处理策略的方法和策略引擎***,在实现灵活的策略配置的同时,避免通过数据库操作即可变更策略逻辑的安全性问题;并且对于无依赖关系的策略可以并行地加以执行以提高效率。该方法包括:策略引擎预先将策略的具体逻辑集成在其中;用户接口模块根据外部输入的数据请求定义策略元数据,并根据所述策略元数据定义策略管理数据,所述策略管理数据包括策略组、策略组与数据集的对应关系以及数据集处理触发机制;将所述策略元数据和所述策略管理数据保存至数据存储模块;当数据集处理被触发时,策略引擎根据所述数据集从所述数据存储模块中查询对应的策略组,并根据查询到的策略组获取相应策略的具体逻辑以处理所述数据集。
Description
技术领域
本发明涉及计算机技术及软件领域,尤其涉及一种对数据处理策略进行管理的方法和***。
背景技术
企业的业务有时会面临这样的场景:对于同一组数据,采用几十上百种不同的方式对其进行分析,最终得出一组结果。而对于另一组数据,会使用相同或类似的方式进行分析,得出另一组结果。最终,这些数据分组经过多种不同方式分析得到的结果会进行汇总,得出用户需要的业务结果。
现有技术中基于脚本的策略管理***大致如下:
一些***为了适应客户***的需求,将数据处理的策略抽象出来,使用动态语言来实现策略逻辑,即“策略脚本”。基于脚本的策略管理***一般分为3个部分:用户接口模块、脚本执行引擎、策略脚本存储模块。其中,策略脚本是实现具体策略逻辑的脚本,由动态语言编写,由于是动态语言无需编译,因此策略脚本可以存储在任意第三方存储(策略脚本存储)中,以供脚本执行引擎随时下载并执行。脚本执行引擎是根据输入的数据集,下载并执行脚本的模块。数据集是策略的数据输入。策略脚本存储存放脚本的地方,可以是数据库或云存储,能满足对策略脚本的任意存取。
图1展示了现有技术的体现数据集和策略之间关系的策略模式的示意图,如图1所述,将数据处理的繁琐,抽象成数据处理策略,将各个策略独立封装,独立于数据集存在;图2中展示了该***中,数据集、策略、结果之间的关系。图3展示了基于脚本的策略管理***的基本架构图。如图3所示,基于脚本的策略管理执行流程:
1.用户直接通过***提供的页面或接口,在线修改策略逻辑;
2.脚本执行引擎从策略脚本存储中下载最新策略脚本;
3.依次执行策略脚本;
4.策略脚本执行结束向脚本执行引擎反馈数据,脚本执行引擎保存数据。
但现有技术存在一定的缺陷:
存在安全性问题:基于脚本的策略下发十分灵活,但这既是它的优点,也是它的缺点。这样的灵活意味着策略的具体逻辑与策略执行彻底分离。策略的具体逻辑被放置在一个容易被取得和修改的地方,比如数据库中。在这种情况下,策略脚本的具体逻辑如同***数据一样进行保存和在线修改,导致未经测试的策略逻辑,能够很容易地绕过公司内为保证***质量而设置的重重项目管理关卡,直达生产环境。
数据交换有一定复杂性:脚本与脚本执行引擎之间需要提供跨语言的数据交换方案才能实现交互,数据交换方案的复杂性受制于实现脚本执行引擎的语言与脚本的语言之间交互的复杂程度,比如:Java与Groovy的交互比较简单,而Java与Lua之间目前已有的交互方案都十分复杂。
策略执行存在效率底下的问题:真实情况中,策略之间具有比较复杂的依赖关系,因此并行执行是不可行的。而现有技术中只能依次执行所选策略脚本,虽然避免了策略之间的依赖关系检查,实现起来较为简单,但同时造成了执行效率低下。
发明内容
有鉴于此,本发明提供一种管理和执行数据处理策略的方法和策略引擎***,在实现灵活的策略配置的同时,避免通过数据库操作即可变更策略逻辑的安全性问题;并且支持并行策略及通过策略的依赖关系检查,对于无依赖关系的策略可以并行地加以执行以提高效率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种对数据处理策略进行管理的方法。
本发明实施例的一种对数据处理策略进行管理的方法包括:策略引擎预先将策略的具体逻辑集成在其中;用户接口模块根据外部输入的数据请求定义策略元数据,并根据所述策略元数据定义策略管理数据,所述策略管理数据包括策略组、策略组与数据集的对应关系以及数据集处理触发机制;将所述策略元数据和所述策略管理数据保存至数据存储模块;当数据集处理被触发时,策略引擎根据所述数据集从所述数据存储模块中查询对应的策略组,并根据查询到的策略组获取相应策略的具体逻辑以处理所述数据集。
可选地,所述策略元数据包括以下至少一种:策略名称、策略唯一标识、策略启用禁用状态、策略依赖描述。
可选地,所述策略组包括按照优先级顺序串行地执行的一个或多个并行组,以及所述并行组包括能够并行地执行的一个或多个策略。
可选地,所述策略组包括默认策略组和用户自定义策略组,其中:默认情况下,没有被指定策略组的数据集都与所述默认策略组相关联,以及在需要对数据集进行特定处理时,使用所述用户自定义策略组。
可选地,在保存定义好的策略组之前和/或根据所述策略组获取相应策略的具体逻辑以处理所述数据集之前,所述方法还包括:利用所述策略元数据,对所述策略组进行策略依赖检查。
可选地,利用所述策略元数据,对所述策略组进行策略依赖检查包括:遍历所述策略组中的所有并行组,确保每个并行组中的所有策略之间没有相互依赖,若有,则策略依赖检查失败,抛出异常;以及按照优先级从低到高的顺序遍历所有并行组,确保每个并行组中所有策略的依赖策略所在的并行组的优先级大于当前并行组的优先级,如果不大于,则策略依赖检查失败,抛出异常。
可选地,所述数据集处理触发机制包括:通过用户接口模块接收外部触发请求触发一个或多个数据集的处理;和/或通过预设定时任务触发一个或多个数据集的处理。
可选地,在进行应用程序关系代码扫描时,所述数据集为各应用程序的代码库。
为实现上述目的,根据本发明实施例的另一方面,提供了一种对数据处理策略进行管理的***。
本发明实施例的一种对数据处理策略进行管理的***包括:用户接口模块、数据存储模块以及策略引擎,其中,用户接口模块用于根据外部输入的数据请求定义策略元数据,并根据所述策略元数据定义策略管理数据,所述策略管理数据包括策略组、策略组与数据集的对应关系以及数据集处理触发机制;数据存储模块用于保存所述策略元数据和所述策略管理数据;策略引擎用于预先将策略的具体逻辑集成在其中,以及当数据集处理被触发时,根据所述数据集从所述数据存储模块中查询对应的策略组,并根据查询到的策略组获取相应策略的具体逻辑以处理所述数据集。
可选地,所述策略引擎还用于:在保存定义好的策略组之前和/或根据所述策略组获取相应策略的具体逻辑以处理所述数据集之前,利用所述策略元数据,对所述策略组进行策略依赖检查。
可选地,所述策略引擎还用于:遍历所述策略组中的所有并行组,确保每个并行组中的所有策略之间没有相互依赖,若有,则策略依赖检查失败,抛出异常;以及按照优先级从低到高的顺序遍历所有并行组,确保每个并行组中所有策略的依赖策略所在的并行组的优先级大于当前并行组的优先级,如果不大于,则策略依赖检查失败,抛出异常。
为实现上述目的,根据本发明实施例的再一方面,提供了另一种策略引擎***。
本发明实施例的另一种策略引擎***,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的管理和执行数据处理策略的方法。
为实现上述目的,根据本发明实施例的再一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的管理和执行数据处理策略的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用了将策略的具体逻辑集成到策略引擎中,所以克服了基于脚本的策略下发的安全性问题,从而能够保证所有策略运行逻辑都是集成在策略引擎中的,虽然在策略逻辑动态修改方面,不及脚本方式灵活,但是针对策略运行的具体逻辑的修改是可控可测的;同时也避免了策略逻辑脚本与脚本执行引擎之间需要进行复杂数据交换的问题;通过基于策略之间的依赖关系,对策略组和并行组进行概念的定义,将复杂的策略间依赖检查进行简化,从而能够实现采用简单地配置对已有策略进行自由组合,支持策略并行执行以提高效率,并且可以在策略的动态调度方面,实现媲美基于脚本方式的策略下发的灵活性。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1展示了现有技术的体现数据集和策略之间关系的策略模式的示意图;
图2展示了现有技术***中,数据集、策略、结果之间的关系;
图3展示了现有技术的基于脚本的脚本执行引擎的基本架构图;
图4是根据本发明实施例的管理和执行数据处理策略的方法的主要步骤的示意图;
图5是根据本发明实施例的策略引擎***的主要部分的示意图;
图6是根据本发明实施例的策略引擎***的主要框架示意图;
图7是根据本发明实施例的策略组和并行组的示意图;
图8是本发明实施例的数据集与策略组之间的示例性关系的示意图;
图9和图10是示意性地示出策略引擎的依赖关系检查的示意图;
图11和图12是示意性地示出依赖关系检查中的策略组和并行组的示意图;
图13至图15是本发明实施例的策略引擎的执行流程的示意图;
图16至图18b是本发明实施例的策略引擎***的一个应用示例的示意图;
图19是本发明实施例可以应用于其中的示例性***架构图;
图20是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例的技术方案提出一种策略引擎***以及利用该策略引擎***管理和执行数据处理策略的方法,能够在实现灵活的策略配置的同时,避免通过数据库操作即可变更策略逻辑的安全性问题;并且支持并行策略及策略依赖检查,从而使得无依赖关系的策略可以并行地执行以提高效率。
如下列出与本发明相关联的一些术语:
策略模式:软件设计模式的一种,策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。本发明实施例中所描述的策略引擎***就是基于策略模式的思想来实现的。一般情况下,可以将处理数据的方式抽象为一个一个的数据处理策略(下文简称“策略”),进行统一的管理,也就是软件开发领域设计模式中的“策略模式”。
静态语言:需要编译成目标机器码才能在目标机器上执行的编程语言,目标机器也可以是虚拟机,比如C/C++/Java。
动态语言:脚本语言,无需编译,由解释器程序直接翻译执行的语言,比如Javascript、Lua、Python、PHP。
策略引擎***:本发明实施例的技术方案描述的完整***,包含用户接口模块、数据存储模块以及策略引擎。需要说明的是,策略引擎***和策略引擎两个不同的概念。
策略引擎:管理和执行策略的模块,是整个策略引擎***的核心模块。
策略组:一个策略集合,其中包含了一个或多个并行组。
并行组:策略组下的一个策略子集合,每个策略都属于一个并行组,同一个并行组内的策略是能够并行执行。并行组之间是串行执行,且由并行组优先级来决定执行的先后顺序。
策略元数据:尽管策略是一个抽象的概念,并且以具体业务逻辑的形式存在于策略引擎中,但数据存储模块例如数据库中仍然需要保存对于各个策略的具体描述,比如策略的唯一标识(例如但不限于可以是策略的UUID)、策略的名称、策略的启用禁用状态以及策略依赖描述等,这些数据统称为策略元数据。
策略的动态调度:将特定的策略组作用于数据集上,从而实现对于不同类型的数据集使用不同的策略进行处理。
策略依赖检查:存在依赖关系的策略之间,在执行的时候需要确保先后执行的顺序,例如,“统计部门周报填写率”的策略依赖于“统计部门周报填写总人数”的策略(填写率=填写总人数/部门总人数)。本发明实施例中,在定义策略组、并行组以及使用策略组处理数据集之前,都会进行一次策略依赖检查,以确保策略能够正常运行。
图4是根据本发明实施例的管理和执行数据处理策略的方法的主要步骤的示意图。
如图4所示,本发明实施例的一种管理和执行数据处理策略的方法主要包括如下步骤:
步骤一:策略引擎预先将策略的具体逻辑集成在其中。与现有技术的基于脚本的策略管理***不同的是,本发明实施例中的策略的具体逻辑是直接集成到策略引擎中,而非现有技术中的策略脚本存储模块或者对应到本发明实施例中的数据存储模块,如此,可以避免对策略具体逻辑的随意修改,从而避免未经测试的策略具体逻辑绕过为保障业务***质量而设置的重重项目管理关卡,保障策略的具体逻辑的安全性。
此外,将策略的具体逻辑直接集成到策略引擎中还有另外一种优势:避免了策略脚本与策略引擎之间需要提供跨语言的数据交换方案,避免了策略执行时数据交换的复杂性。
步骤二:用户接口模块根据外部输入的数据请求定义策略元数据,并根据所述策略元数据定义策略管理数据,所述策略管理数据包括策略组、策略组与数据集的对应关系以及数据集处理触发机制。其中,策略元数据包括以下至少一种:策略名称、策略唯一标识、策略启用禁用状态、策略依赖描述。
此处用户接口模块不支持在线修改策略的具体逻辑,如前所述,策略逻辑直接集成在策略引擎中,无法下载,这样避免了对策略的修改能够绕过项目的测试等环节。
本步骤中,用户可以通过调用用户接口对数据存储模块存储的数据进行定义和修改。例如定义策略的依赖描述,并将策略的依赖描述和策略的其他基本属性,如策略的唯一标识、策略的名称、策略的启用禁用状态等,一同保存在策略元数据中;还可以基于策略的元数据定义策略管理信息,包括自定义策略组、定义数据集与策略组之间的对应关系、定义数据集处理的触发机制等。通过一系列策略相关数据的定义,从而能够方便的管理策略,以实现策略的动态调度。
基于策略的元数据定义策略管理信息具体而言,主要是指根据策略的依赖描述,构建策略组。
具体到本发明实施例中,本发明实施例是按照策略组、并行组的方式对已有策略进行管理。策略组是一个策略集合,其中包含了一个或多个并行组。该一个或多个并行组是按照优先级顺序串行地执行,并行组包括能够并行地执行的一个或多个策略。一个并行组内的多个策略之间不存在相互的依赖关系。即存在依赖关系的不同策略不能被放置在同一个并行组中,否则无法保障并行地执行一个并行组中的多个策略。
策略组包括默认策略组和用户自定义策略组,其中默认情况下,没有被指定策略组的数据集都与所述默认策略组相关联,以及在需要对数据集进行特定处理时,使用所述用户自定义策略组。
此外,本发明实施例中,数据集处理触发机制可以如下:通过用户接口模块接收外部触发请求触发一个或多个数据集的处理;和/或通过预设定时任务触发一个或多个数据集的处理。
步骤三:将所述策略元数据和所述策略管理数据保存至数据存储模块。本发明实施例中,相比现有技术的基于脚本的策略管理***而言,数据存储模块中存储策略的元数据而非策略的具体逻辑,并且存储根据策略元数据建立的策略组信息,以及策略组与数据集的对应关系信息。
步骤四:当数据集处理被触发时,策略引擎根据所述数据集从所述数据存储模块中查询对应的策略组,并根据查询到的策略组获取相应策略的具体逻辑以处理所述数据集。与现有技术的基于脚本的策略管理***相比,本发明实施例的策略引擎内核自身包含了策略的具体逻辑。实际处理数据集的过程中,策略引擎会根据数据集,从数据库模块中根据用户定义的数据集与策略组的对应关系来找找对应的策略组,然后根据策略组选择相应的策略的具体逻辑处理数据集。
此外,本发明实施例的管理和执行数据处理策略的方法还可以包括:在保存定义好的策略组之前和/或根据所述策略组获取相应策略的具体逻辑以处理所述数据集之前,策略引擎利用所述策略元数据,对所述策略组进行策略依赖检查。
具体而言,策略引擎利用所述策略元数据,对所述策略组进行策略依赖检查可以包括:遍历所述策略组中的所有并行组,确保每个并行组中的所有策略之间没有相互依赖,若有,则策略依赖检查失败,抛出异常;以及按照优先级从低到高的顺序遍历所有并行组,确保每个并行组中所有策略的依赖策略所在的并行组的优先级大于当前并行组的优先级,如果不大于,则策略依赖检查失败,抛出异常。
如前所述,数据集是策略的输入数据。本发明实施例中,可以基于策略引擎***,实现对策略的管理和执行。以各应用程序之间代码关系扫描为例,数据集就是各应用程序的代码库。
图5是本发明实施例的一种策略引擎***的主要部分的示意图。
如图5所示,本发明实施例的一种对数据处理策略进行管理的***500主要包括如下部分:用户接口模块501、数据存储模块502以及策略引擎503。
其中,用户接口模块501用于根据外部输入的数据请求定义策略元数据,并根据所述策略元数据定义策略管理数据,所述策略管理数据包括策略组、策略组与数据集的对应关系以及数据集处理触发机制;数据存储模块502用于保存所述策略元数据和所述策略管理数据;策略引擎503用于预先将策略的具体逻辑集成在其中,以及当数据集处理被触发时,根据所述数据集从所述数据存储模块502中查询对应的策略组,并根据查询到的策略组获取相应策略的具体逻辑以处理所述数据集。
图6是根据本发明实施例的策略引擎***的主要框架示意图。本发明实施例中主要关注的是图6中策略在数据库中的数据结构、以及策略引擎的实现方式(虚线框部分)。以下结合图5和图6对本发明实施例的策略引擎***的管理和执行数据处理策略的原理进行具体介绍。
如图5和图6所示,本发明实施例的的策略引擎***主要由以下三个模块组成:
用户接口模块
与基于脚本的策略管理***不同的是:本发明实施例中,用户接口模块不支持在线直接修改策略逻辑,策略逻辑直接集成在了策略引擎中,无法下载,这样避免对策略的修改能够绕过项目的测试等环节。
用户通过用户接口模块来改变数据库模块中的数据,从而能够定义策略的依赖描述,与策略的名称、唯一标识等信息一并保存为策略的元数据,并基于策略元数据定义数据集与策略组的对应关系,从而改变策略作用于数据集产生的结果。
数据存储模块
本发明实施例中,数据存储模块可以是基于数据库实现。用于存储策略的元数据和策略管理数据。相比基于脚本的策略管理***而言,本发明的策略引擎***的数据存储模块仅存储了策略的元数据,包括策略名称、策略唯一标识(例如策略的UUID)、策略启用禁用状态、策略依赖描述,而没有存储策略的具体逻辑。
策略引擎
与基于脚本的策略管理***相比,本发明实施例的策略引擎内核自身包含了策略的具体逻辑、以及对这些策略的管理和执行的逻辑。策略引擎根据数据集,从数据存储模块中根据用户定义的数据集与策略组的对应关系来查找出一组策略组,并根据用户定义的策略依赖关系对策略组中策略的并行执行方式进行策略依赖检查。
图7是根据本发明实施例的策略组和并行组的示意图;图8是本发明实施例的数据集与策略组之间的示例性关系的示意图。以下结合图7和图8具体描述前述数据存储模块中的保存的数据的数据结构。其中策略元数据主要包含了以下信息:
如图7和图8所示,就整个策略引擎***而言,用户接口模块根据外部(如用户通过用户界面)输入的数据请求会配置一个默认的策略组。所有“数据集”都必须存在一个策略组与之相关联。默认情况下,没有被指定对应的策略组的数据集都与这个默认策略组相关联。此外,用户还可以自己定义策略组,并将数据集与自定义的策略组进行关联,从而使得策略引擎在处理特定数据集时会使用特定的策略组。本发明实施例中,策略组由一个或多个并行组组成,见图7,并行组之间的执行是串行的,并行组内的策略是并行执行的。
每个并行组在一个策略组内都有一个唯一的优先级,称为并行组优先级。本发明实施例中,并行组优先级实际上可以是一个大于0的整型数字。数字越小,代表优先级越高,策略执行的时候,根据这个优先级对并行组进行排序,保证优先级高的并行组先执行。
这些定义好的策略组以及策略组与数据集对应关系保存在数据存储模块中。
如前所述,本发明实施例中,基于包含策略的依赖描述的策略元数据定义策略组,从而可以保障策略的并行执行。在保存定义好的策略组之前和/或根据所述策略组获取相应策略的具体逻辑以处理所述数据集之前,策略引擎还可以利用策略元数据,对策略组进行策略依赖检查。图9和图10是示意性地示出策略引擎的依赖关系检查的示意图。图11和图12是示意性地示出依赖关系检查中的策略组和并行组的示意图。
如图9所示,每个策略会有0个或多个依赖策略,由此在整个策略引擎中,形成了如图9所示的一个有向图结构。策略依赖检查需要保证策略的依赖关系符合以下三点:
1.有向图中不存在回路,即不存在图10中虚线描述的循环依赖;
2.如图11所示,有依赖关系的策略不会存在同一个并行组中;
3.如图12所示,某个策略在执行之前,它所依赖的策略已经执行完毕。
要做到符合以上三点,只需要在保存和执行策略组之前,做以下检查即可:
1.遍历所有的并行组,确保每个并行组中的所有策略之间都没有相互依赖;
2.依次按照优先级从低到高遍历并行组,确保每个并行组中所有策略的依赖策略所在的并行组优先级大于当前并行组的优先级;
3.如果在2中发现了依赖策略所在并行组优先级小于或等于当前并行组,则依赖检查失败,抛出异常。
图13至图15是利用本发明实施例的策略引擎***的管理和执行数据处理策略的主要流程的示意图。
在策略引擎的执行过程中,如图13所示,用户可以基于用户接口模块定义策略组和并行组。用户通过调用策略引擎***的用户接口,登录策略组管理界面,然后通点击新建策略组的方式,新建策略组,并创建策略组的各并行组,根据策略引擎已有策略的策略依赖关系,将策略与并行组进行关联,完成策略组的新建。
如图14所示,用户可以基于用户接口模块定义数据集与策略组之间的对应关系。用户通过调用策略引擎***的用户接口,登录数据集和策略组关联界面,选择已定义好的策略组与特定数据集进行关联。
本发明实施例中,还可以定义数据集处理的触发时机,其中可以有两种方式触发数据集处理的机制可供选择:
1.用户通过用户接口按钮直接触发某一个或多个数据集的处理;和/或
2.用户通过定义定时任务来触发某一个或多个数据集的处理。
当数据集处理被触发之后,进入“策略引擎执行逻辑”。
在策略引擎执行逻辑中,如图15所示地执行如下步骤:
步骤1.根据数据集的特征从数据存储模块查询可用的策略组;
步骤2.遍历策略组下的并行组;
步骤3.从并行组中取出策略对象,将数据集和策略对象一起生成一个线程池任务,放入任务队列中;
步骤4.等待本次并行组下的所有的线程池任务执行完毕;
步骤5.汇总并持久化结果;
步骤6.继续遍历并行组,直到该策略组下的并行组遍历完毕。
图16至图18b是本发明实施例的策略引擎***的一个应用示例的示意图。以下结合图16至图18b,以实现应用程序关系代码扫描为例,说明策略引擎***的一个应用示例,即基于策略引擎***的应用程序关系代码扫描,以下称此种场景下的策略引擎***为应用程序程序关系代码扫描***。应用程序关系代码扫描***是一个通过扫描公司中所有应用程序的代码,获取应用程序之间调用关系的***,它的特点十分符合策略引擎***。如图16所示,数据集多种多样,在该场景中,数据集就是某个应用程序的代码库,例如某公司中有将近10000个应用程序,也就有将近10000个代码库。
策略可以根据需要灵活配置,对于不同的数据集,可能需要不同的策略进行扫描,但也并不是完全不同,有一部分策略是可以公用的。比如xml文件扫描策略适用于Java和C++项目,但是Java调用链扫描策略就只适用于Java项目。而make文件扫描就只适用于C/C++项目。对于代码库,有二十余种扫描策略,如图17所示。针对不同的代码类型(如C++代码和Java代码),有不同的策略组合对其进行扫描,如图18a、图18b所示。
有些策略之间具有依赖关系,而有些策略之间不需要相互依赖,可以并行进行以提高效率。比如:对于Java类型的代码库,会默认使用如图18a所示的策略组进行扫描。其中maven pom扫描策略依赖于xml扫描策略的结果,JSF扫描策略也依赖于xml扫描策略结果,而并行组#4中的Java程序内调用链扫描策略依赖并行组#3中所有的策略执行结果。
从以上描述可以看出,因为采用了将策略的具体逻辑集成到策略引擎中,所以克服了基于脚本的策略下发的安全性问题,从而能够保证所有策略运行逻辑都是集成在策略引擎中的,虽然在策略逻辑动态修改方面,不及脚本方式灵活,但是针对策略运行的具体逻辑的修改是可控可测的;同时也避免了策略逻辑脚本与脚本执行引擎之间需要进行复杂数据交换的问题;通过基于策略之间的依赖关系,对策略组和并行组进行概念的定义,将复杂的策略间依赖检查进行简化,从而能够实现采用简单地配置对已有策略进行自由组合,支持策略并行执行以提高效率,并且可以在策略的动态调度方面,实现媲美基于脚本方式的策略下发的灵活性。
图19示出了可以应用本发明实施例的管理和执行数据处理策略方法或管理和执行数据处理策略装置的示例性***架构1900。
如图19所示,***架构1900可以包括终端设备1901、1902、1903,网络1904和服务器1905。网络1904用以在终端设备1901、1902、1903和服务器1905之间提供通信链路的介质。网络1904可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备1901、1902、1903通过网络1904与服务器1905交互,以接收或发送消息等。终端设备1901、1902、1903上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备1901、1902、1903可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器1905可以是提供各种服务的服务器,例如对用户利用终端设备1901、1902、1903所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的管理和执行数据处理策略方法一般由服务器1905执行,相应地,管理和执行数据处理策略装置一般设置于服务器1905中。
应该理解,图19中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图20,其示出了适于用来实现本发明实施例的终端设备的计算机***2000的结构示意图。图20示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图20所示,计算机***2000包括中央处理单元(CPU)2001,其可以根据存储在只读存储器(ROM)2002中的程序或者从存储部分2008加载到随机访问存储器(RAM)2003中的程序而执行各种适当的动作和处理。在RAM 2003中,还存储有***2000操作所需的各种程序和数据。CPU 2001、ROM 2002以及RAM 2003通过总线2004彼此相连。输入/输出(I/O)接口2005也连接至总线2004。
以下部件连接至I/O接口2005:包括键盘、鼠标等的输入部分2006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分2007;包括硬盘等的存储部分2008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分2009。通信部分2009经由诸如因特网的网络执行通信处理。驱动器2010也根据需要连接至I/O接口2005。可拆卸介质2011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器2010上,以便于从其上读出的计算机程序根据需要被安装入存储部分2008。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分2009从网络上被下载和安装,和/或从可拆卸介质2011被安装。在该计算机程序被中央处理单元(CPU)2001执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:策略引擎预先将策略的具体逻辑集成在其中;用户接口模块根据外部输入的数据请求定义策略元数据,并根据所述策略元数据定义策略管理数据,所述策略管理数据包括策略组、策略组与数据集的对应关系以及数据集处理触发机制;将所述策略元数据和所述策略管理数据保存至数据存储模块;当数据集处理被触发时,策略引擎根据所述数据集从所述数据存储模块中查询对应的策略组,并根据查询到的策略组获取相应策略的具体逻辑以处理所述数据集。
根据本发明实施例的技术方案,因为采用了将策略的具体逻辑集成到策略引擎中,所以克服了基于脚本的策略下发的安全性问题,从而能够保证所有策略运行逻辑都是集成在策略引擎中的,虽然在策略逻辑动态修改方面,不及脚本方式灵活,但是针对策略运行的具体逻辑的修改是可控可测的;同时也避免了策略逻辑脚本与脚本执行引擎之间需要进行复杂数据交换的问题;通过基于策略之间的依赖关系,对策略组和并行组进行概念的定义,将复杂的策略间依赖检查进行简化,从而能够实现采用简单地配置对已有策略进行自由组合,支持策略并行执行以提高效率,并且可以在策略的动态调度方面,实现媲美基于脚本方式的策略下发的灵活性。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (8)
1.一种管理和执行数据处理策略的方法,其特征在于,包括:
策略引擎预先将策略的具体逻辑集成在其中;
用户接口模块根据外部输入的数据请求定义策略元数据,并根据所述策略元数据定义策略管理数据,所述策略管理数据包括策略组、策略组与数据集的对应关系以及数据集处理触发机制;其中,所述策略元数据包括以下至少一种:策略名称、策略唯一标识、策略启用禁用状态、策略依赖描述;所述策略组包括按照优先级顺序串行地执行的一个或多个并行组,以及所述并行组包括能够并行地执行的一个或多个策略;在进行应用程序关系代码扫描时,所述数据集为各应用程序的代码库;
利用所述策略元数据,对所述策略组进行策略依赖检查,并在检查后将所述策略元数据和所述策略管理数据保存至数据存储模块;
当数据集处理被触发时,策略引擎根据所述数据集从所述数据存储模块中查询对应的策略组,并根据查询到的策略组获取相应策略的具体逻辑以处理所述数据集。
2.根据权利要求1所述的方法,其特征在于,
所述策略组包括默认策略组和用户自定义策略组,其中
默认情况下,没有被指定策略组的数据集都与所述默认策略组相关联,以及
在需要对数据集进行特定处理时,使用所述用户自定义策略组。
3.根据权利要求1所述的方法,其特征在于,利用所述策略元数据,对所述策略组进行策略依赖检查包括:
遍历所述策略组中的所有并行组,确保每个并行组中的所有策略之间没有相互依赖,若有,则策略依赖检查失败,抛出异常;以及
按照优先级从低到高的顺序遍历所有并行组,确保每个并行组中所有策略的依赖策略所在的并行组的优先级大于当前并行组的优先级,如果不大于,则策略依赖检查失败,抛出异常。
4.根据权利要求1所述的方法,其特征在于,所述数据集处理触发机制包括:
通过用户接口模块接收外部触发请求触发一个或多个数据集的处理;和/或
通过预设定时任务触发一个或多个数据集的处理。
5.一种策略引擎***,其特征在于,包括:用户接口模块、数据存储模块以及策略引擎,其中,
用户接口模块用于根据外部输入的数据请求定义策略元数据,并根据所述策略元数据定义策略管理数据,所述策略管理数据包括策略组、策略组与数据集的对应关系以及数据集处理触发机制;其中,所述策略元数据包括以下至少一种:策略名称、策略唯一标识、策略启用禁用状态、策略依赖描述;所述策略组包括按照优先级顺序串行地执行的一个或多个并行组,以及所述并行组包括能够并行地执行的一个或多个策略;在进行应用程序关系代码扫描时,所述数据集为各应用程序的代码库;
数据存储模块用于保存所述策略元数据和所述策略管理数据;
策略引擎用于预先将策略的具体逻辑集成在其中,以及在保存定义好的策略组之前和/或根据所述策略组获取相应策略的具体逻辑以处理所述数据集之前,利用所述策略元数据,对所述策略组进行策略依赖检查;还用于当数据集处理被触发时,根据所述数据集从所述数据存储模块中查询对应的策略组,并根据查询到的策略组获取相应策略的具体逻辑以处理所述数据集。
6.根据权利要求5所述的策略引擎***,其特征在于,所述策略引擎还用于:
遍历所述策略组中的所有并行组,确保每个并行组中的所有策略之间没有相互依赖,若有,则策略依赖检查失败,抛出异常;以及
按照优先级从低到高的顺序遍历所有并行组,确保每个并行组中所有策略的依赖策略所在的并行组的优先级大于当前并行组的优先级,如果不大于,则策略依赖检查失败,抛出异常。
7.一种策略引擎***,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一所述的方法。
8.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-4中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710665755.7A CN107590186B (zh) | 2017-08-07 | 2017-08-07 | 管理和执行数据处理策略的方法和策略引擎*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710665755.7A CN107590186B (zh) | 2017-08-07 | 2017-08-07 | 管理和执行数据处理策略的方法和策略引擎*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107590186A CN107590186A (zh) | 2018-01-16 |
CN107590186B true CN107590186B (zh) | 2021-07-30 |
Family
ID=61042118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710665755.7A Active CN107590186B (zh) | 2017-08-07 | 2017-08-07 | 管理和执行数据处理策略的方法和策略引擎*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107590186B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110120882B (zh) * | 2018-02-07 | 2020-10-09 | 华为技术有限公司 | 策略驱动方法和装置 |
CN109033840B (zh) * | 2018-06-28 | 2021-08-03 | 成都飞机工业(集团)有限责任公司 | 一种对计算机终端进行保密检查的方法 |
CN109298972B (zh) * | 2018-09-06 | 2019-11-15 | 高盈量化云科技(深圳)有限公司 | 一种高可用策略引擎 |
CN109918152A (zh) * | 2019-03-18 | 2019-06-21 | 中科麦迪人工智能研究院(苏州)有限公司 | 基于策略流的任务执行方法、装置、服务器和存储介质 |
CN110502483B (zh) * | 2019-07-09 | 2022-06-17 | 招联消费金融有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110443512A (zh) * | 2019-08-09 | 2019-11-12 | 北京思维造物信息科技股份有限公司 | 一种规则引擎及规则引擎实现方法 |
CN112445804B (zh) * | 2019-08-28 | 2024-05-17 | 北京京东振世信息技术有限公司 | 调整运单配置参数的方法和装置 |
CN110532266A (zh) * | 2019-08-28 | 2019-12-03 | 京东数字科技控股有限公司 | 一种数据处理的方法和装置 |
CN112527832B (zh) * | 2019-09-17 | 2024-06-25 | 天翼电子商务有限公司 | 基于fpga的规则引擎加速执行方法、装置、介质及设备 |
CN111179081A (zh) * | 2019-12-24 | 2020-05-19 | 中国建设银行股份有限公司 | 一种消息的处理方法和处理装置 |
CN111767149B (zh) * | 2020-06-29 | 2024-03-05 | 百度在线网络技术(北京)有限公司 | 调度方法、装置、设备及存储设备 |
CN111897807A (zh) * | 2020-07-01 | 2020-11-06 | 拉扎斯网络科技(上海)有限公司 | 一种数据处理方法以及策略引擎*** |
CN113282606A (zh) * | 2021-05-14 | 2021-08-20 | 杭州网易云音乐科技有限公司 | 数据处理方法、装置、存储介质和计算设备 |
CN116467014B (zh) * | 2023-06-19 | 2023-08-29 | 南京麦豆健康科技有限公司 | 一种设备功能管理***和方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441560A (zh) * | 2007-11-23 | 2009-05-27 | 国际商业机器公司 | 执行基于上下文模型的面向服务架构的策略的方法和策略引擎 |
CN105446799A (zh) * | 2014-08-22 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种计算机***中进行规则管理的方法及*** |
CN106990967A (zh) * | 2017-04-05 | 2017-07-28 | 百融(北京)金融信息服务股份有限公司 | 规则引擎的数据处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005114488A2 (en) * | 2004-05-21 | 2005-12-01 | Computer Associates Think, Inc. | System and method for actively managing service-oriented architecture |
-
2017
- 2017-08-07 CN CN201710665755.7A patent/CN107590186B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101441560A (zh) * | 2007-11-23 | 2009-05-27 | 国际商业机器公司 | 执行基于上下文模型的面向服务架构的策略的方法和策略引擎 |
CN105446799A (zh) * | 2014-08-22 | 2016-03-30 | 阿里巴巴集团控股有限公司 | 一种计算机***中进行规则管理的方法及*** |
CN106990967A (zh) * | 2017-04-05 | 2017-07-28 | 百融(北京)金融信息服务股份有限公司 | 规则引擎的数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107590186A (zh) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590186B (zh) | 管理和执行数据处理策略的方法和策略引擎*** | |
US10565034B2 (en) | Event-driven serverless function orchestration | |
US11086661B2 (en) | Container chaining for automated process completion | |
US10833955B2 (en) | Dynamic delivery of software functions | |
CN111090423B (zh) | 一种webhook框架***和实现主动调用、实现事件触发的方法 | |
US10338952B2 (en) | Program execution without the use of bytecode modification or injection | |
CN107844324A (zh) | 客户端页面跳转处理方法和装置 | |
CN108510081A (zh) | 机器学***台 | |
CN115292026B (zh) | 容器集群的管理方法、装置、设备及计算机可读存储介质 | |
WO2022170760A1 (zh) | 一种云平台管理方法、装置、电子设备以及存储介质 | |
CN109981719A (zh) | 信息处理方法及其***、计算机***和计算机可读介质 | |
CN113361838A (zh) | 业务风控方法、装置、电子设备和存储介质 | |
CN110795331A (zh) | 软件测试的方法和装置 | |
CN112000734A (zh) | 一种大数据处理方法和装置 | |
CN109814957A (zh) | 一种用于ios***的标签添加方法和装置 | |
US10877805B2 (en) | Optimization of memory usage by integration flows | |
CN113535220B (zh) | 一种代码包管理方法和装置 | |
CN114237765B (zh) | 功能组件处理方法、装置、电子设备和介质 | |
US11330068B2 (en) | Methods and systems for recording user operations on a cloud management platform | |
CN114661274A (zh) | 用于生成智能合约的方法和装置 | |
CN109901934A (zh) | 生成接口帮助文档的方法和装置 | |
CN109688174A (zh) | 一种基于多代理商服务的虚拟业务实现方法和装置 | |
CN112463616A (zh) | 一种面向Kubernetes容器平台的混沌测试方法和装置 | |
CN113495747B (zh) | 一种灰度发布方法和装置 | |
CN112799797A (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 |