CN101452386B - 使用正向推理链执行基于上下文模型的策略的方法及策略引擎 - Google Patents
使用正向推理链执行基于上下文模型的策略的方法及策略引擎 Download PDFInfo
- Publication number
- CN101452386B CN101452386B CN2007101960126A CN200710196012A CN101452386B CN 101452386 B CN101452386 B CN 101452386B CN 2007101960126 A CN2007101960126 A CN 2007101960126A CN 200710196012 A CN200710196012 A CN 200710196012A CN 101452386 B CN101452386 B CN 101452386B
- Authority
- CN
- China
- Prior art keywords
- mentioned
- strategy
- context model
- carried out
- instance document
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Marketing (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Operations Research (AREA)
- General Business, Economics & Management (AREA)
- Educational Administration (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- General Engineering & Computer Science (AREA)
- Document Processing Apparatus (AREA)
- Stored Programmes (AREA)
Abstract
一种使用正向推理链执行基于上下文模型的策略的方法,其中,该策略具有条件部分和动作部分,该方法包括:将包括多个策略的策略集合应用于实例化上下文模型,该实例化上下文模型包括一组相互引用的XML格式的实例文档;判断该实例化上下文模型是否需要更新;如果需要更新,则执行更新操作;根据更新后的实例文档和原实例化上下文模型,重新生成新的实例化上下文模型;将策略集合应用于该新的实例化上下文模型。本发明能够提供基于上下文模型的正向推理链,并具有更强的策略/规则推理能力,能够将不同的策略彼此关联以进行基于上下文模型的策略推理、模型自更新和多策略触发,从而提高系统的自愈合和自发展能力。本发明还提供了相应的策略引擎。
Description
技术领域
本发明涉及计算机领域的正向推理链(Forwarding Chaining)技术,具体地说,涉及使用正向推理链执行基于上下文模型的策略的方法及策略引擎,尤其是在面向服务架构(Service-Oriented Architecture,简称SOA)的系统中。
背景技术
面向服务架构SOA是指为了解决因特网环境下业务集成的需要而通过连接能完成特定任务的独立功能实体来实现的一种软件系统架构。换句话说,SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来,其中接口的定义是独立于实现服务的硬件平台、操作系统和编程语言的。SOA采用面向服务的建模技术和WEB服务技术,实现系统之间的松耦合,从而实现系统之间的整合与协同。
SOA策略是SOA系统的一个重要组成部分,其用于SOA系统的行为的声明性描述和执行。在SOA系统中,SOA策略的使用贯穿SOA的整个生命周期,包括设计时校验、部署时策略发布和打包、以及运行时服务选择、变化管理和影响分析。
一般地,SOA策略在不同的层级上可以分为以下几种类型:
-业务策略,用于制定业务决策和遵循行业指导等;
-应用策略,用于在服务调用期间的服务选择等;
-治理策略,用于执行遵循标准的规则、定义治理过程的系统行为等。
SOA技术的一个主要特点在于,所有的数据和上下文都采用XML语言描述,包含这样的数据和上下文的文档称为SOA元数据(Metadata)文档。一般地,SOA元数据文档可以包括:用于描述与服务相关的内容的服务元数据文档、用于描述与运行时信息相关的内容的运行时信息文档、或者用于描述其它业务内容的文档。例如,服务元数据文档可以采用Web服务描述语言(Web Service Description Language,简称WSDL)、XML模式定义语言(XML Schema Definition,简称XSD)、Web服务策略(WS-Policy)、服务组件定义语言(Service Component DefinitionLanguage,简称SCDL)、业务流程执行语言(Business Process ExecutionLanguage,简称BPEL)、服务组件架构(Service Component Architecture,简称SCA)策略等,运行时信息文档可以采用简单对象访问协议(SimpleObject Access Protocol,简称SOAP)、表示性状态传输(RepresentationalState Transfer,简称REST)等,描述其它业务内容的文档可以采用服务数据对象(Service Data Object,简称SDO)、Web本体语言(Web OntologyLanguage,简称OWL)等。
SOA策略可以使用传统的业务策略/规则定义工具和转换机制生成,或者基于本体生成,或者利用服务建模语言(Service Modeling Language,简称SML)规则和Schematron模式语言生成,或者基于由一组XML文档构成的上下文模型生成。
在使用相应的策略引擎执行策略时,某些策略引擎可支持用于推理一个应用于特定策略主体的策略/规则集合的正向推理链/演绎法(Forwarding Chaining)。所谓Forwarding Chaining是指策略/规则系统中对策略/规则集合的正向推理链。具体地,如果策略/规则1的执行改变了当前策略/规则集合所作用的目标系统的状态,并导致策略/规则2的匹配执行,那么从策略/规则1→策略/规则2的推理称为正向推理。以此类推,如果存在策略/规则1→策略/规则2→...→策略/规则n的推理链,则将策略/规则引擎在整个链路上的推理称为正向推理链。正向推理链是一种允许应用于同一个知识空间的策略/规则相互触发的机制,即,根据一个策略/规则的执行触发另一个策略/规则。
在正向推理链机制中,策略/规则被解析为内存模型(memory model),而在策略/规则的条件部分和动作部分中引用的变量被表示为内存变量。当执行正向推理链时,通过在不同的策略/规则中更新内存变量和互换状态进行演绎。图1是现有的正向推理链机制的一个例子的示意图。如图1所示,WM表示工作内存,其可被当作策略/规则的变量的存储单元,其中,变量可由另一个策略/规则的执行而改变。在正向推理链机制中最费时的步骤是使用策略/规则的条件部分匹配WM,该步骤用于发现有效的WM,这些有效的WM已经由一个策略/规则的执行而改变并且将触发另一个策略/规则。
现有技术中有许多正向推理链算法,最有名的是RETE算法,该算法的主要特征在于:1.状态保存,即,在每次WM发生改变后,匹配过程的状态(结果)被保存在α和β存储器中;而在下一次WM发生改变后,许多结果通常不发生改变,因此RETE算法通过在连续的WM改变之间保存这些结果而避免了许多重复计算。2.在具有类似的条件的结果之间共享节点,即,在α网络的输出端,当两个或多个结果具有一个共同的条件时,RETE算法使用一个α存储器用于条件,而不是对每个结果创建相同的存储器;而在网络的β部分,当两个或多个结果具有相同的条件时,使用相同的节点以匹配这些条件,从而避免重复匹配。
然而,现有的使用正向推理链的策略/规则引擎对于使用XML格式的目标系统和策略/规则没有专门的解决方案。例如,RETE算法假设策略/规则和被验证的内容被解析为内存模型,以在不同的策略/规则的执行之间互换状态。而在使用XML的目标系统中,由于文档对象模型(DocumentObject Model,简称为DOM)消耗很多内存,并且很难在大型的XML文档中定位特定元素,因此,策略/规则以及所应用的XML格式的模型并不适合于定期装载为内存模型。另外,传统的验证XML内容的方式不需要内存模型,因此,也不需要使用RETE算法。
下面简要介绍一下服务建模语言SML以及基于SML的策略引擎。
SML语言是由IBM、微软、BEA、Intel等联合定义的用于基于XML的IT服务管理的语言,它提供了丰富的用于描述复杂IT服务和系统的模型的构件集合。SML模型是相关的XML文档的集合,这些XML文档包含关于一个IT服务的多个部分的信息、以及为了使该IT服务正常运行而每个部分必须满足的约束。
SML模型中的文档包含定义文档和实例文档。
定义文档是使用XML模式定义(XML Schema Definition,简称XSD)语言和Schematron模式语言描述的文档,是SML模型中描述了模式以及管理模型中的文档的结构和内容的策略/规则的文档子集。SML语言规范定义了两种定义文档,即符合XML模式的SML概要的XML模式文档和符合Schematron模式语言的SML概要的策略/规则文档,其中,策略/规则文档是约束模型中的文档的结构和内容的布尔表达式。
实例文档是XML格式的文档,是SML模型中描述了模型化实体的结构和内容的文档子集。
然而,基于SML的引擎仅用于系统配置的一步验证和报告。SML语言使用Schematron模式语言作为策略/规则表达式以验证其实例文档。根据Schematron模式语言规范,在标准Schematron模式语言内的策略/规则仅仅在违反策略/规则约束时以文本字符串的形式报告诊断消息。SML语言规范扩展了验证报告引入结构化输出的能力,但是这种扩展仅提供元素或属性的标准输出,而没有进一步的语义。另外,应用于SML模型的基于Schematron的策略/规则不能自己更新SML模型,因此,这些策略/规则不能作为使用正向推理链机制的链。
发明内容
本发明正是基于上述技术问题而提出的,其目的在于提供一种使用正向推理链执行基于上下文模型的策略的方法及策略引擎,其能够在描述IT系统的上下文模型上执行策略,并且能够以有效的方式使用正向推理链执行对该上下文模型应用的策略集合。
根据本发明的一个方面,提供一种使用正向推理链执行基于上下文模型的策略的方法,其中,上述策略具有条件部分和动作部分,上述方法包括:将包括多个上述策略的策略集合应用于实例化上下文模型,上述实例化上下文模型包括一组相互引用的XML格式的实例文档;判断上述实例化上下文模型是否需要更新;如果需要更新,则执行更新操作;根据更新后的实例文档和原实例化上下文模型,重新生成新的实例化上下文模型;以及将上述策略集合应用于上述新的实例化上下文模型。
根据本发明的另一个方面,提供一种使用正向推理链执行基于上下文模型的策略的策略引擎,其中,上述策略具有条件部分和动作部分,上述策略引擎包括:策略应用装置,用于将包括多个上述策略的策略集合应用于实例化上下文模型,其中上述实例化上下文模型包括一组相互引用的XML格式的实例文档;更新判断单元,用于判断上述实例化上下文模型是否需要更新;更新单元,用于执行更新操作;以及上下文模型再生成单元,用于根据更新后的实例文档和原实例化上下文模型,重新生成新的实例化上下文模型;其中,上述新的实例化上下文模型被提供给上述策略应用装置,由上述策略应用装置将上述策略集合应用于上述新的实例化上下文模型。
附图说明
图1是现有的正向推理链机制的一个例子的示意图;
图2是根据本发明的一个实施例的使用正向推理链执行基于上下文模型的策略的方法的流程图;
图3是图2的实施例中将策略集合应用于实例化上下文模型的步骤的流程图;
图4是根据本发明的另一个实施例的使用正向推理链执行基于上下文模型的策略的方法的流程图;
图5是根据本发明的一个实施例的使用正向推理链执行基于上下文模型的策略的策略引擎的示意性方框图;
图6是图5的实施例中策略应用装置的示意性方框图。
图7是根据本发明的另一个实施例的使用正向推理链执行基于上下文模型的策略的策略引擎的示意性方框图。
具体实施方式
相信通过以下结合附图对本发明的具体实施例的详细描述,本发明的上述和其它目的、特征和优点将会更加明显。
图1已经在背景技术部分进行了描述,此处省略说明。
图2是根据本发明的一个实施例的使用正向推理链执行基于上下文模型的策略的方法的流程图。下面结合附图,详细说明本实施例。
在本实施例中,策略是基于上下文模型生成的,并具有条件部分和动作部分,其中该上下文模型通过对一组XML格式的文档建立文档间引用关系并聚合这些文档而得到。具体地,上下文模型中的文档可以是使用XML Schema定义语言的文档。
如图2所示,在步骤10,将包括多个策略的策略集合应用于一个实例化上下文模型,该实例化上下文模型包括一组相互引用的XML格式的实例文档。
在本实施例中,实例化上下文模型可以是策略生成过程中所使用的上下文模型的一个实例,在该实例化上下文模型中,用于生成策略的抽象的上下文模型中的XML Schema定义语言的文档用符合该XML Schema定义的XML实例文档替换。通过实例文档的替换,抽象的上下文模型变成能够在其上执行策略的实例化上下文模型。
具体地,从XML的层面看,在使用XML规范定义的语法描述实例化上下文模型时,基于策略生成过程中的上下文模型,将该上下文模型中对抽象的XML文档的引用标识修改为对相应的实例文档的引用标识,这样,在策略生成阶段的抽象XML文档之间的聚合关系转变为所搜集的实例文档之间的聚合关系,通过该聚合关系得到的新模型是实例化上下文模型。从SML的层面看,在使用SML规范定义的语法描述实例化上下文模型时,将在策略生成过程中生成的SML聚合文档中对每个XML Schema文档的统一资源标识符URI的引用修改为对相应的所搜集的实例文档的统一资源标识符URI的引用,从而生成新的SML聚合文档。该新的SML聚合文档和所搜集的XML实例文档一起构成使用SML语法描述的实例化上下文模型。
图3示出了该策略应用步骤10的流程图。
如图3所示,首先在步骤101,将一个策略应用于该实例化上下文模型,以验证该实例化上下文模型中的实例文档是否使得该策略的条件部分成立。该验证包括两个方面:一方面是使用该策略中的模式文档验证实例文档的结构,另一方面是使用该策略的条件部分验证实例文档的内容。在策略是基于SML语言的情况下,使用XML模式文档进行实例文档的结构验证,使用Schematron格式的策略的条件部分进行实例文档的内容验证。
如果实例文档的结构验证和内容验证都匹配,则表明该实例文档匹配该策略,在步骤105,产生验证报告。例如,使用Schematron描述的策略的验证报告的语法是:动作名称{动作名称空间URI}|参数1|…|参数n,其中每个参数的表达式可以是常量字符串或者是下面表示的SML模型上下文的Schematron允许的标签:
<valu-of select=″SML模型文档元素或属性或其它的XPath表达式″>,其用于获得XPath规定的XML元素/属性值;
<name path=″SML模型文档元素或属性或其它的XPath表达式″>,其用于获得XPath规定的XML元素/属性标签名称。
在本实施例中,验证报告与策略的动作部分相同。
如果没有实例文档匹配,则产生提示信息。
然后,在步骤110,根据所产生的验证报告,执行该策略的动作部分。具体地,从验证报告中获得将要执行的动作语义模块的信息,并装载该动作语义模块。在本实施例中,动作语义模块的信息包括动作名称及参数。动作语义模块可以是系统提供的常用的动作语义模块,也可以是用户定义的动作语义模块,并且,这些动作语义模块可采用插件形式,在运行时进行调用。然后,设置所装载的动作语义模块中的参数并运行该动作语义模块,其中,所设置的参数值可以是常量字符串或者实例文档中的特定值。
返回图1,在步骤20,判断该实例化上下文模型是否需要更新,即判断所执行的策略的动作部分是否会使该实例化上下文模型发生变化,例如,添加新的实例文档、修改原有的实例文档或者删除原有的实例文档。
如果不需要更新,则执行步骤30,判断该策略是否是最后一个策略,如果是,则结束此次策略执行过程。如果不是,则选择下一个策略(步骤40),并返回步骤10。
如果需要更新,则在步骤50,执行更新操作,即,添加新的实例文档、修改原有的实例文档或者删除原有的实例文档或者其组合。
然后,在步骤60,根据更新后的实例文档和原有的实例化上下文模型,重新生成新的实例化上下文模型,然后返回步骤10,将策略集合中的多个策略重新应用于该新的实例化上下文模型。
进一步地,在将策略重新应用于新的实例化上下文模型时,也可以只对新的实例化上下文模型中更新后的实例文档进行验证。
在本实施例中,上下文模型可以是描述任何IT系统的上下文模型,并不限于面向服务架构的系统,相应地,策略也不限于SOA策略,可以是任何基于用上下文模型描述的IT系统的策略。
通过以上描述可以看出,本实施例的使用正向推理链执行基于上下文模型的策略的方法能够提供基于上下文模型的正向推理链,并具有更强的策略/规则推理能力,能够将不同的策略彼此关联以进行基于上下文模型的策略推理、模型自更新和多策略触发,从而提高系统的自愈合和自发展能力。
与传统的实现正向推理链的策略执行技术方案相比,本实施例的使用正向推理链执行基于上下文模型的策略的方法具有如下的优点:由于传统的实现正向推理链的策略执行技术方案是基于策略/规则和将被验证的内容被解析为内存模型,以在不同的策略/规则的执行之间互换状态,因此,对于大型的XML文档会带来内存和性能上的问题。而本实施例的方法是基于上下文模型实现正向推理链,能够以文档为粒度更新上下文模型,并可以结合现有的快速处理技术,例如SAX(Simple API For XML)、XSLT(Extensible Stylesheet Language Transformations),将策略/规则应用于上下文模型中的XML文档。
现有的基于SML的策略执行技术方案不允许基于Schematron的策略/规则更新基于SML的上下文模型,然而在本实施例的方法中,基于Schematron的策略可被扩展为具有更新SML模型的动作部分,并且在策略/规则被触发后,进一步使用正向推理链触发策略/规则链。
图4是根据本发明的另一个实施例的使用正向推理链执行基于上下文模型的策略的方法的流程图,其中与前面实施例相同的部分采用相同的标记,并适当省略其说明。下面结合附图,对本实施例进行详细的描述。
在本实施例中,当执行了更新操作(步骤50)后,在步骤70,检测并解决由更新操作引起的冲突。在本实施例中,更新操作所引起的冲突可包括:
(1)对于原有的实例化上下文模型中的某个文档只进行修改操作,但是两个以上的修改操作的内容存在冲突;
(2)对于原有的实例化上下文模型中的某个文档同时进行修改操作和删除操作。
当检测到对同一个实例文档执行修改内容冲突的多个修改操作时,判断是否存在其修改内容等于或者包含其它修改操作的修改内容的一个修改操作,即判断存在冲突的内容是否彼此兼容。如果存在这样一个修改操作,即存在冲突的内容彼此兼容,则对该实例文档执行该修改操作;如果不存在这样一个修改操作,即存在冲突的内容彼此不兼容,则通过执行相应的应用逻辑来自动判断对该实例文档执行哪一个修改操作,或者通过人机交互进行决策。如果上述操作都不能解决该冲突,则报告该文档的修改操作失败,忽略所有引起冲突的操作。
当检测到对同一个实例文档同时执行修改操作和删除操作时,删除操作优先于修改操作,对该实例文档执行删除操作,因为在一次策略的执行过程中,无论修改操作如何,只要有删除操作,所有的修改操作都会自动失效。
下面给出一个具体使用SML语言描述的上下文模型的例子说明上述实施例的使用正向推理链执行基于上下文模型的策略的方法。
在该例子中,所搜集的实例文档有UserInfos.xml文档、UserPrivileges.xml文档、HRService4DepartManagement.wsdl文档和HRService4StaffManagement.wsdl文档,其中,UserInfos.xml文档和UserPrivileges.xml文档如下所示:
UserInfos.xml文档
<?xml version=″1.0″encoding=″UTF-8″?>
<UserInfos xmlns=″http://example.ibm.com.cn/user″>
<User>
<ID>000001</ID>
<Name>Tom</Name>
<band>9</band>
<isManager>y</isManager>
</User
…
</UserInfos>
UserPrivileges.xml文档
<?xml version=″1.0″encoding=″UTF-8″?>
<UserPrivileges xmlns=″http://example.ibm.com.cn/userpvg″>
<UserPrivilege>
<ID>000001</ID>
<Role>Manager</Role>
<HRService>
http://localhost:9080/mrgservices/StaffService
</HR Service>
<UserPrivilege>
…
</UserPrivileges>
根据上述的实例文档,得到实例化上下文模型Context.xml。具体地,首先获得上述的每个实例文档的URL路径(例如file:/.../UserInfos.xml),然后,生成如下的XML文档,作为实例化上下文模型,该文档使用DocumentList元素下的每个Document元素来引用相应的实例文档。在引用时,使用SML规范定义的属性sml:ref=″true″来标识每个Document元素,实现对与sml:uri中所给出的URL对应的实例文档的跨文档引用,即,从语义上看,在每个Document元素下嵌有URL对应的实例文档的XML子元素。由于DocumentList元素列举了对所有实例文档的引用,因此,如下的文档在SML规范所定义的语义上是对所有实例文档的聚合。
实例化上下文模型Context.xml的内容如下:
<?xml version=″1.0″encoding=″UTF-8″?>
<Context xmlns=″http://com.ibm.biz.policy/context/″
xmlns:sml=″http://schemas.serviceml.org/sml/2007/02″>
<DocumentList>
<Document role=″role0″sml:ref=″true″>
<sml:uri>file:/..UserInfos.xml</sml:uri>
</Document>
<Document role=″role1″sml:ref=″true″>
<sml:uri>file:/.../UserPrivileges.xml</sml:uri>
</Document>
<Document role=″role2″sml:ref=″true″>
<sml:uri>file:/.../HRService4DepartManagement.wsdl</sml:uri>
</Document>
<Document role=″role3″sml:ref=″true″>
<sml:uri>file:/.../HRService4StaffManagement.wsdl</sml:uri>
</Document>
</DocumentList>
</Context>
然后,将被执行的策略集合为updateRole.sch和updateHRservice.sch,
具体如下所示:
updateRole.sch策略:
<?xml version=″1.0″encoding=″UTF-8″?>
<schema xmlns=″=http://www.ascc.net/xml/schematron″
xmlns:sml=″http://schemas.serviceml.org/sml/2007/02″>
<title>Update User Role Policy</title>
<ns uri=″http://com.ibm.biz.policy/context/″prefix=″ctx″/>
<ns uri=″http://example.ibm.com.cn/user″prefix=″usr″/>
<ns uri=″http://example.ibm.com.cn/userpvg″prefix=″pvg″/>
<ns uri=″http://schemas.serviceml.org/sml/function/2006/07″prefix=″smlfn″/>
<pattem name=″Update User Role to Senor Manager″>
<rule context=″smlfn:deref(/ctx:Context/ctx:DocumentList/
ctx:Document[role=′role0′])/usr:user″>
<variable name=″uid″select=″usr:ID/text()″/>
<report id=″userrole″test=″usr:band/text()>=9 and usr:is Manager/text()=’y’″>
UPDATEMODEL{http://com.ibm.cn/soa/standard/example}|<name path=″
smlfn:deref(/ctx:Context/ctx:DocumentList
ctx:Document[role=′role1′])/pvg:UserPrivilege[pvg:ID/text()=$uid]/pvg:Role″/>|SeniorManager
</report>
</rule>
</pattern>
</schema>
updateHRservice.sch策略:
<?xml version=″1.0″encoding=″UTF-8″?>
<schema xmlns=″http://www.ascc.net/xml/schematron″
xmlns:sml=″http://schemas.serviceml.org/sml/2007/02″>
<title>Update UR Service Endpoint Policy</title>
<ns uri=″http://com.ibm.biz.policy/context/″prefix=″ctx″/>
<ns uri=″http://example.ibm.com.cn/userpvg″prefix=″pvg″/>
<ns uri=″http://schemas.xmlsoap.org/wsdl/″prefix=″wsdl″/>
<ns uri=″http://schemas.xmlsoap.org/wsdl/soap/″prefix=″wsdlsoap″/>
<ns uri=″http://schemas.serviceml.org/sml/function/2006/07″prefix=″smlfn″/>
<pattern name=″Update UR Service Endpoint Manager″>
<rule context=″smlfn:deref(/ctx:Context/ctx:DocumentList/
ctx:Document[role=′role1′])/pvg:UserPrivilege″>
<report id=″endpoint″test=″pvg:Role/text()=’SeniorManager’″>
UPDATEMODEL{http://com.ibm.cn/soa/standard/example}|<name
path=″pvg:HRService″/>| <value-of
select=″smlfn:deref(/ctx:Context/ctx:DocumentList/ctx:Document[role=′role2′])//wsdl:port[na
me=′HRService4DepartManagement′]/wsdlsoap:address/location″/>
</report>
</rule>
</pattern>
</schema>
当将上述两个策略应用于实例化上下文模型Context.xml时,如果updateRole.sch策略被首先匹配,那么执行该策略的动作的结果是:在UserPrivileges.xml文档中,ID为000001的用户的角色将被更新为“SeniorManager”,从而使得实例化上下文模型Context.xml被更新。然后,对新的实例化上下文模型Context.xml应用上述策略,使得updateHRservice.sch策略被匹配,执行该策略的动作,将HRService端点更新到HRService4StaffManagement.wsdl文档中包含的一个HRService。
在同一个发明构思下,图5是根据本发明的一个实施例的使用正向推理链执行基于上下文模型的策略的策略引擎的示意性方框图。在本实施例中,对于与前面实施例相同的部分,适当省略其说明。下面结合附图,详细说明本实施例。
在本实施例中,如前所述,策略是基于上下文模型生成的,并具有条件部分和动作部分,其中该上下文模型通过对一组XML格式的文档建立文档间引用关系并聚合这些文档而得到。具体地,上下文模型中的文档可以是使用XML Schema定义语言的文档。
如图5所示,本实施例的使用正向推理链执行基于上下文模型的策略的策略引擎500包括:策略应用装置501,其将包括多个策略的策略集合应用于实例化上下文模型,其中上述实例化上下文模型包括一组相互引用的XML格式的实例文档;更新判断单元502,其判断上述实例化上下文模型是否需要更新;更新单元503,其执行更新操作;以及上下文模型再生成单元504,用于根据更新后的实例文档和原实例化上下文模型,重新生成新的实例化上下文模型;其中,上述新的实例化上下文模型被提供给策略应用装置501,由策略应用装置501将上述策略集合应用于上述新的实例化上下文模型。
当利用本实施例的策略引擎500执行基于上下文模型的策略时,首先由策略应用装置501将包括多个策略的策略集合应用于实例化上下文模型,其中该实例化上下文模型包括一组相互引用的XML格式的实例文档。如前所述,该实例化上下文模型可以是策略生成过程中所使用的抽象的上下文模型的一个实例,其中的实例文档是符合对应的抽象的上下文模型中的XML Schema定义的XML实例文档。
图6示出了策略应用装置501的示意性方框图。如图6所示,在策略应用装置501中,文档验证器5011将策略集合中的每一个应用于实例化上下文模型,以验证实例化上下文模型中的实例文档是否使得该策略的条件部分成立。具体地,文档验证器5011中的结构验证单元(未示出)使用策略中的模式文档验证实例文档的结构,然后,文档验证器5011中的内容验证单元(未示出)使用策略中的条件部分验证实例文档的内容。如果验证结果是该策略的条件部分成立,则由验证报告生成单元5012产生验证报告,该验证报告包含将要执行的策略的动作部分的信息,包括动作名称及参数。然后,根据该验证报告,动作执行单元5013执行相应的策略的动作。具体地,在动作执行单元5013中,装载单元装载相应的动作语义模块,在本实施例中,动作语义模块可以是系统提供的常用的动作语义模块,也可以是用户定义的动作语义模块。然后,通过参数设置单元对动作语义模块进行参数设置并由运行单元运行动作语义模块,其中,所设置的参数值可以是常量字符串或者实例文档中的特定值。
返回图5,当动作执行单元5013执行了所匹配的策略的动作之后,由更新判断单元502判断该实例化上下文模型是否需要更新,即判断所匹配的策略的执行结果是否引起实例化上下文模型的改变,例如,添加实例文档、修改实例文档、删除实例文档或者其组合。如果更新判断单元502的判断结果是实例化上下文模型需要更新,则由更新单元503执行相应的更新操作。具体地,在更新单元503中,通过添加单元5031可以添加实例文档,通过修改单元5032可以修改实例文档,通过删除单元5033可以删除实例文档。然后,更新后的实例文档被传送到上下文模型再生成单元504,与原有的实例化上下文模型相结合,生成新的实例化上下文模型,并提供给策略应用装置501,再由策略应用装置501将策略集合中的策略应用于该新的实例化上下文模型。
进一步地,当策略应用装置501对新的实例化上下文模型应用策略时,可以仅对新的实例化上下文模型中的更新后的实例文档进行验证。
应当指出,本实施例的使用正向推理链执行基于上下文模型的策略的策略引擎500及其组件可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。并且,本实施例的使用正向推理链执行基于上下文模型的策略的策略引擎500在操作上可以实现如图2所示的实施例的使用正向推理链执行基于上下文模型的策略的方法。
图7是根据本发明的另一个实施例的使用正向推理链执行基于上下文模型的策略的策略引擎的示意性方框图,其中与前面实施例相同的部分采用相同的标记,并适当省略其说明。下面结合附图,对本实施例进行详细的描述。
本实施例的使用正向推理链执行基于上下文模型的策略的策略引擎700,在图5所示的实施例的使用正向推理链执行基于上下文模型的策略的策略引擎的基础上,还包括:冲突检测和解决单元701,其检测是否存在由于更新操作而引起的冲突,并解决相应的冲突。
具体地,在更新单元503执行了更新操作后,在冲突检测和解决单元701中,冲突检测单元7011检测由于更新单元503所执行的更新操作引起的冲突,并在冲突检测单元7011检测到对同一个实例文档执行修改内容冲突的多个修改操作时,由判断单元7012判断是否存在其修改内容等于或者包含其它修改操作的修改内容的一个修改操作。在判断单元7012判断为存在该修改操作时,由修改单元5032对该实例文档执行该修改操作;在判断单元7012判断为不存在该修改操作时,修改单元5032执行应用逻辑所确定的修改操作。在冲突检测单元7011检测到对同一个实例文档同时执行修改操作和删除操作时,由删除单元5033对该实例文档执行删除操作。
应当指出,本实施例的使用正向推理链执行基于上下文模型的策略的策略引擎70及其组件可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。并且,本实施例的使用正向推理链执行基于上下文模型的策略的策略引擎700在操作上可以实现如图4所示的实施例的使用正向推理链执行基于上下文模型的策略的方法。
以上虽然通过一些示例性的实施例详细描述了本发明的使用正向推理链执行基于上下文模型的策略的方法及策略引擎,但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅由所附的权利要求限定。
Claims (18)
1.一种使用正向推理链执行基于上下文模型的策略的方法,其中,上述策略具有条件部分和动作部分,上述方法包括:
将包括多个上述策略的策略集合应用于实例化上下文模型,其中进一步包括使用上述多个策略的每一个验证上述实例化上下文模型中的实例文档是否使得该策略的条件部分成立;如果该策略的条件部分成立,则产生验证报告;以及根据上述验证报告,执行该策略的动作部分,其中上述实例化上下文模型包括一组相互引用的XML格式的实例文档;
判断上述实例化上下文模型是否需要更新;
如果需要更新,则执行更新操作;
根据更新后的实例文档和原实例化上下文模型,重新生成新的实例化上下文模型;以及
将上述策略集合应用于上述新的实例化上下文模型。
2.根据权利要求1所述的使用正向推理链执行基于上下文模型的策略的方法,其中,上述更新操作包括:实例文档添加操作、实例文档修改操作和实例文档删除操作中的至少一个或其组合。
3.根据权利要求1或2所述的使用正向推理链执行基于上下文模型的策略的方法,还包括:检测并解决由上述更新操作引起的冲突。
4.根据权利要求3所述的使用正向推理链执行基于上下文模型的策略的方法,其中,上述由上述更新操作引起的冲突包括:对同一个实例文档执行修改内容冲突的多个修改操作;对同一个实例文档同时执行修改操作和删除操作。
5.根据权利要求4所述的使用正向推理链执行基于上下文模型的策略的方法,其中,上述检测并解决由上述更新操作引起的冲突的步骤包括:
当检测到对同一个实例文档执行修改内容冲突的多个修改操作时,
判断是否存在其修改内容等于或者包含其它修改操作的修改内容的一个修改操作;
如果存在,则对该实例文档执行该修改操作;
如果不存在,则根据应用逻辑确定对该实例文档执行哪一个修改操作;
当检测到对同一个实例文档同时执行修改操作和删除操作时,
对该实例文档执行删除操作。
6.根据权利要求1或2所述的使用正向推理链执行基于上下文模型的策略的方法,其中,上述将上述策略集合应用于上述新的实例化上下文模型的步骤仅对上述新的实例化上下文模型中更新后的实例文档进行。
7.根据权利要求1所述的使用正向推理链执行基于上下文模型的策略的方法,其中,上述验证上述实例化上下文模型中的实例文档是否使得该策略的条件部分成立的步骤包括:
使用上述策略中的模式文档验证上述实例化上下文模型中的实例文档的结构;以及
使用上述策略中的条件部分验证上述实例化上下文模型中的实例文档的内容。
8.根据权利要求1所述的使用正向推理链执行基于上下文模型的策略的方法,其中,上述执行该策略的动作部分包括:
装载上述动作部分中的动作语义模块;
设置上述动作语义模块中的参数;以及
运行上述动作语义模块。
9.根据权利要求1或2所述的使用正向推理链执行基于上下文模型的策略的方法,其中,上述策略是面向服务架构的策略。
10.一种使用正向推理链执行基于上下文模型的策略的装置,其中,上述策略具有条件部分和动作部分,上述装置包括:
策略应用装置,用于将包括多个上述策略的策略集合应用于实例化上下文模型,其中上述实例化上下文模型包括一组相互引用的XML格式的实例文档,其中策略应用装置进一步包括:文档验证器,用于使用上述多个策略的每一个验证上述实例化上下文模型中的实例文档是否使得该策略的条件部分成立;验证报告生成单元,用于在该策略的条件部分成立的情况下,产生验证报告;以及动作执行单元,用于根据上述验证报告,执行该策略的动作部分;
更新判断单元,用于判断上述实例化上下文模型是否需要更新;
更新单元,用于执行更新操作;以及
上下文模型再生成单元,用于根据更新后的实例文档和原实例化上下文模型,重新生成新的实例化上下文模型;
其中,上述新的实例化上下文模型被提供给上述策略应用装置,由上述策略应用装置将上述策略集合应用于上述新的实例化上下文模型。
11.根据权利要求10所述的使用正向推理链执行基于上下文模型的策略的装置,其中,上述更新单元包括:
添加单元,用于添加实例文档;
修改单元,用于修改实例文档;以及
删除单元,用于删除实例文档。
12.根据权利要求10或11所述的使用正向推理链执行基于上下文模型的策略的装置,还包括:冲突检测和解决单元,用于检测并解决由上述更新操作引起的冲突。
13.根据权利要求12所述的使用正向推理链执行基于上下文模型的策略的装置,其中,上述由上述更新操作引起的冲突包括:对同一个实例文档执行修改内容冲突的多个修改操作;对同一个实例文档同时执行修改操作和删除操作。
14.根据权利要求13所述的使用正向推理链执行基于上下文模型的策略的装置,其中,上述冲突检测和解决单元包括:
冲突检测单元,用于检测上述由上述更新操作引起的冲突;以及
判断单元,用于在上述冲突检测单元检测到对同一个实例文档执行修改内容冲突的多个修改操作时,判断是否存在其修改内容等于或者包含其它修改操作的修改内容的一个修改操作;
其中,在上述判断单元判断为存在该修改操作时,上述修改单元对该实例文档执行该修改操作;在上述判断单元判断为不存在该修改操作时,上述修改单元执行应用逻辑所确定的修改操作;
在上述冲突检测单元检测到对同一个实例文档同时执行修改操作和删除操作时,上述删除单元对该实例文档执行删除操作。
15.根据权利要求10或11所述的使用正向推理链执行基于上下文模型的策略的装置,其中,上述策略应用装置仅对上述新的实例化上下文模型中的更新后的实例文档应用上述策略集合。
16.根据权利要求10所述的使用正向推理链执行基于上下文模型的策略的装置,其中,上述文档验证器包括:
结构验证单元,用于使用上述策略中的模式文档验证上述实例化上下文模型中的实例文档的结构;以及
内容验证单元,用于使用上述策略中的条件部分验证上述实例化上下文模型中的实例文档的内容。
17.根据权利要求10所述的使用正向推理链执行基于上下文模型的策略的装置,其中,上述动作执行单元包括:
装载单元,用于装载上述动作部分中的动作语义模块;
参数设置单元,用于设置上述动作语义模块中的参数;以及
运行单元,用于运行上述动作语义模块。
18.根据权利要求10或11所述的使用正向推理链执行基于上下文模型的策略的装置,其中,上述策略是面向服务架构的策略。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101960126A CN101452386B (zh) | 2007-11-28 | 2007-11-28 | 使用正向推理链执行基于上下文模型的策略的方法及策略引擎 |
US12/277,934 US10223650B2 (en) | 2007-11-28 | 2008-11-25 | Enforcing context model based policies with forward chaining |
US16/241,805 US11080625B2 (en) | 2007-11-28 | 2019-01-07 | Enforcing context model based policies with forward chaining |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101960126A CN101452386B (zh) | 2007-11-28 | 2007-11-28 | 使用正向推理链执行基于上下文模型的策略的方法及策略引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101452386A CN101452386A (zh) | 2009-06-10 |
CN101452386B true CN101452386B (zh) | 2013-05-15 |
Family
ID=40670804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101960126A Active CN101452386B (zh) | 2007-11-28 | 2007-11-28 | 使用正向推理链执行基于上下文模型的策略的方法及策略引擎 |
Country Status (2)
Country | Link |
---|---|
US (2) | US10223650B2 (zh) |
CN (1) | CN101452386B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069599B2 (en) * | 2008-06-19 | 2015-06-30 | Servicemesh, Inc. | System and method for a cloud computing abstraction layer with security zone facilities |
WO2009155574A1 (en) | 2008-06-19 | 2009-12-23 | Servicemesh, Inc. | Cloud computing gateway, cloud computing hypervisor, and methods for implementing same |
US10411975B2 (en) | 2013-03-15 | 2019-09-10 | Csc Agility Platform, Inc. | System and method for a cloud computing abstraction with multi-tier deployment policy |
US9489647B2 (en) | 2008-06-19 | 2016-11-08 | Csc Agility Platform, Inc. | System and method for a cloud computing abstraction with self-service portal for publishing resources |
US20110296430A1 (en) * | 2010-05-27 | 2011-12-01 | International Business Machines Corporation | Context aware data protection |
US8561010B2 (en) * | 2010-06-17 | 2013-10-15 | International Business Machines Corporation | Software approval process using service governance |
US8539561B2 (en) * | 2010-08-24 | 2013-09-17 | International Business Machines Corporation | Systems and methods to control device endpoint behavior using personae and policies |
JP5966934B2 (ja) * | 2011-02-18 | 2016-08-10 | 日本電気株式会社 | リファクタリング装置、リファクタリング方法、及び、プログラム |
CN102306177B (zh) * | 2011-08-25 | 2013-06-05 | 清华大学 | 一种多策略组合的本体或实例匹配方法 |
CN102567504A (zh) * | 2011-12-26 | 2012-07-11 | 南京鹏力系统工程研究所 | 一种海巡艇调度数据的动态获取方法 |
EP2645244B1 (en) * | 2012-03-27 | 2019-09-11 | Software AG | Method and registry for enabling the enforcement of design-time policies during runtime in a service-oriented architecture |
CN105260193A (zh) * | 2015-11-03 | 2016-01-20 | 国云科技股份有限公司 | 一种大型软件自愈合框架及愈合方法 |
US10922621B2 (en) * | 2016-11-11 | 2021-02-16 | International Business Machines Corporation | Facilitating mapping of control policies to regulatory documents |
CN110417565B (zh) * | 2018-04-27 | 2021-01-29 | 华为技术有限公司 | 一种模型更新方法、装置及系统 |
CN109246159B (zh) * | 2018-11-27 | 2021-09-21 | 杭州迪普科技股份有限公司 | 一种验证安全策略的方法和装置 |
CN111628980B (zh) * | 2020-05-20 | 2022-08-09 | 深信服科技股份有限公司 | 策略调整方法、装置、设备及存储介质 |
US11501380B1 (en) | 2020-07-01 | 2022-11-15 | BlueOwl, LLC | Systems and methods for parallelly validating a plurality of policies |
US11461851B1 (en) * | 2020-07-14 | 2022-10-04 | BlueOwl, LLC | Systems and methods for determining validation times |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1620041A (zh) * | 2003-11-19 | 2005-05-25 | 阿尔卡特公司 | 用户定义策略的内容交换 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4399127B2 (ja) * | 2001-05-14 | 2010-01-13 | 株式会社日立製作所 | 文書管理方法及び装置並びにその処理プログラム及びそれを格納した記憶媒体 |
US20020188643A1 (en) * | 2001-06-07 | 2002-12-12 | International Business Machines Corporation | Method and system for a model-based approach to network management |
US7689676B2 (en) * | 2003-03-06 | 2010-03-30 | Microsoft Corporation | Model-based policy application |
WO2005008389A2 (en) * | 2003-07-11 | 2005-01-27 | Computer Associates Think, Inc. | Infrastructure auto discovery from business process models via batch processing flows |
US7103874B2 (en) * | 2003-10-23 | 2006-09-05 | Microsoft Corporation | Model-based management of computer systems and distributed applications |
US8046464B2 (en) * | 2004-03-10 | 2011-10-25 | The Boeing Company | Quality of service resource management apparatus and method for middleware services |
US20050234682A1 (en) * | 2004-04-19 | 2005-10-20 | David Graves | Method and apparatus for verification of a map of wiring and attributes for networked devices |
US7313575B2 (en) * | 2004-06-14 | 2007-12-25 | Hewlett-Packard Development Company, L.P. | Data services handler |
US9077611B2 (en) * | 2004-07-07 | 2015-07-07 | Sciencelogic, Inc. | Self configuring network management system |
US20060059127A1 (en) * | 2004-09-15 | 2006-03-16 | International Business Machines Corporation | Method, system, and storage medium for facilitating application development |
US20060106879A1 (en) * | 2004-11-16 | 2006-05-18 | International Business Machines Corporation | Conflict resolution in a synchronization framework |
US8265969B2 (en) * | 2006-11-17 | 2012-09-11 | Microsoft Corporation | Policy-based management of data elements in a document schema for data transactions |
-
2007
- 2007-11-28 CN CN2007101960126A patent/CN101452386B/zh active Active
-
2008
- 2008-11-25 US US12/277,934 patent/US10223650B2/en active Active
-
2019
- 2019-01-07 US US16/241,805 patent/US11080625B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1620041A (zh) * | 2003-11-19 | 2005-05-25 | 阿尔卡特公司 | 用户定义策略的内容交换 |
Also Published As
Publication number | Publication date |
---|---|
US20190138955A1 (en) | 2019-05-09 |
CN101452386A (zh) | 2009-06-10 |
US20090138795A1 (en) | 2009-05-28 |
US11080625B2 (en) | 2021-08-03 |
US10223650B2 (en) | 2019-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101452386B (zh) | 使用正向推理链执行基于上下文模型的策略的方法及策略引擎 | |
CN101441560B (zh) | 执行基于上下文模型的面向服务架构的策略的方法和装置 | |
Taelman et al. | Comunica: a modular SPARQL query engine for the web | |
US8533660B2 (en) | Annotation of models for model-driven engineering | |
CN101441561B (zh) | 基于上下文模型生成面向服务架构的策略的方法和装置 | |
US10296297B2 (en) | Execution semantics for sub-processes in BPEL | |
Zhang et al. | SOMA-ME: A platform for the model-driven design of SOA solutions | |
Gupta et al. | Auditdraw: Generating audits the FAST way | |
US9552239B2 (en) | Using sub-processes across business processes in different composites | |
Boronat | Incremental execution of rule-based model transformation: Using dependency injection and standardized model changes | |
Kumar et al. | Maintainability prediction of web service using support vector machine with various kernel methods | |
CN102460381A (zh) | 软件扩展分析 | |
Kolovos et al. | The epsilon pattern language | |
Mäder et al. | Ready-to-use traceability on evolving projects | |
Ornelas et al. | Provenance data discovery through Semantic Web resources | |
Bayoudhi et al. | Efficient management and storage of a multiversion OWL 2 DL domain ontology | |
Kühlwein et al. | Firmware synthesis for ultra-thin iot devices based on model integration | |
Ghaibi et al. | A tool support for the adaptation of user interfaces based on a business rules management system | |
Sanchez et al. | Runtime translation of OCL-like statements on Simulink models: Expanding domains and optimising queries | |
US9141383B2 (en) | Subprocess definition and visualization in BPEL | |
Dietrich et al. | A formal contract language for plugin-based software engineering | |
Ornaghi et al. | A constructive object oriented modeling language for information systems | |
Abbas et al. | Formalizing and verifying UML activity diagrams | |
Tari et al. | A dual-layered model for web services representation and composition | |
Kaczor | Practical approach to interoperability in production rule bases with SUBITO |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |