CN111433763A - 用于构建和提供异构储存库的多态rest服务的系统和方法 - Google Patents

用于构建和提供异构储存库的多态rest服务的系统和方法 Download PDF

Info

Publication number
CN111433763A
CN111433763A CN201880061059.8A CN201880061059A CN111433763A CN 111433763 A CN111433763 A CN 111433763A CN 201880061059 A CN201880061059 A CN 201880061059A CN 111433763 A CN111433763 A CN 111433763A
Authority
CN
China
Prior art keywords
resource
rest
request
repository
registry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201880061059.8A
Other languages
English (en)
Other versions
CN111433763B (zh
Inventor
周伟
陈木华
阮伟
王晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaiwen Co
Original Assignee
Kaiwen Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kaiwen Co filed Critical Kaiwen Co
Publication of CN111433763A publication Critical patent/CN111433763A/zh
Application granted granted Critical
Publication of CN111433763B publication Critical patent/CN111433763B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

响应于访问异构储存库的请求,REST服务器查询资源登记器以查找与请求中包含的映射信息匹配的资源。资源登记器返回包含匹配的资源的资源登记器表。资源登记器表实现资源登记器模型的统一数据结构,并且在运行时通过资源登记器将REST服务配置参数映射到统一数据结构的字段而生成。REST服务配置参数被添加到扩展SDK,用于让REST扩展开发人员增强用于扩展应用的REST服务配置。REST服务配置参数在实现时被配置,并在运行时被加载/扫描到REST服务器中。REST服务器迭代地评估资源登记器表,直到所有匹配的资源都已被评估。评估结果被用于确定是拒绝、接受、还是重定向来自客户端设备的请求。

Description

用于构建和提供异构储存库的多态REST服务的系统和方法
对相关申请的交叉引用
本申请援引35U.S.C§119(e)要求于2017年8月9日提交的标题为“SYSTEMS ANDMETHODS FOR BUILDING AND PROVIDING POLYMORPHIC REST SERVICES FORHETEROGENEOUS REPOSITORIES”的美国临时申请No.62/543,092的优先权,该申请出于所有目的通过引用被完全并入本文。
技术领域
本公开一般而言涉及企业内容管理领域。更特别地,本公开涉及由企业内容管理平台提供的内容服务。甚至更特别地,本文公开的实施例涉及用于在企业内容管理平台上构建和提供用于访问异构内容储存库的多态表示状态转移(REST)服务的系统、方法和计算机程序产品。
背景技术
企业内容管理(ECM)一般是指策略、方法和工具(在本文中统称为“ECM技术”)的动态组合,用于在信息的生命周期(例如,从创建到删除或销毁)中捕获、管理、存储、保存(存档)和交付支持公司、组织或企业的处理的信息。可以利用ECM技术来组织在企业中被使用和分发的所有内容(在本文中称为“企业内容”)。在这种情况下,“企业内容”可以是文档、文件、图像、音频、视频、电子邮件、绘图以及任何其它非结构化的企业拥有和/或相关的信息(在本文中统称为“内容”)。
虽然可以将内容存储在企业网络驱动器上的文件或企业网络(例如,内联网或安全专用网络)中的文件系统中,但越来越多地使用内容储存库。内容储存库是指计算机存储装置,其中以有组织的方式来保持和维护数据的聚合。ECM技术可以被用于对存储在此类储存库中的内容进行分类、控制(例如,调节)、管理、标记、路由和定位。ECM解决方案是指实现ECM技术以使内容可搜索、管理版本控制、执行路由和工作流等的特定方式。
ECM解决方案的示例可以是可从总部位于加拿大的OpenTextTM获得的DocumentumTM。这种ECM解决方案为企业用户提供了丰富的即用型(OOTB)内容服务集,以通过REST应用编程接口(API)访问内容服务器、内容储存库等。
REST定义了体系架构原理的集合,通过这些体系架构原理可以创建Web服务以专注于系统的资源,包括各种以不同语言编写的客户端如何通过超文本传输协议(HTTP)寻址和传送资源状态。ECM解决方案可以包括REST扩展软件开发工具包(SDK),该工具包为应用开发人员/设计人员提供了扩展点,以在其利用服务器侧的内容储存库的定制ECM应用(在本文中统称为“扩展应用”)中添加定制资源、禁用OOTB资源或覆盖OOTB资源。
REST扩展方法和装置的示例可以在美国专利申请公开No.2016/0308949A1和中国专利公开No.CN106156932A中找到,这两个专利都通过引用并入本文。扩展应用的示例可以包括OpenText Documentum D2(开文文档管理D2)、OpenText Capital ProjectsSolutions(开文资本项目解决方案)等。
发明内容
如以上所讨论的,ECM扩展应用开发人员可以使用扩展SDK来构建定制REST服务。一旦部署了扩展服务,定制将在运行的REST实例的生存期内永久且静态地生效。当扩展应用通过自己的配置来预配置储存库并要求API适应(一个或多个)储存库类型时,这成为技术限制。
本文公开的用于构建和提供多态REST服务的技术解决方案的实施例可以解决上述技术限制并提供附加的技术解决方案和益处。这种新的解决方案为ECM扩展应用开发人员提供了在客户端侧构建REST扩展的新能力,并在服务器侧提供了包括REST服务器在内的REST服务器框架,该框架具有自行并且在REST服务器内部请求处置之内决定是否应当将资源定制应用于传入的REST请求的新能力。
例如,在客户端侧,特殊的YAML配置参数可以包括在新的REST扩展SDK中(作为非限制性示例,其可以用YAML编写)。YAML代表“YAML Ain't Markup Language(YAML不是一种标记语言)”并且是用于所有编程语言的人性化的数据序列化标准。YAML具有人类可读性和计算能力。从技术上讲,YAML是JavaScript对象表示法(JSON)的超集,它是开放标准的文件格式,使用人类可读的文本来传输由属性-值对和数组数据类型组成的数据对象(或任何其它可序列化的值)。可从yaml.org的<http://www.yaml.org/spec/>获得YAML规范,因此本文不再赘述。
以下进一步解释的REST扩展配置参数(例如,YAML配置参数)使ECM扩展应用开发人员能够定制他们的REST API。例如,在开发扩展应用时,ECM扩展应用开发人员可以在REST扩展SDK中配置YAML配置参数,以确定例如将在具有储存库范围(类型)的REST扩展项目中添加、覆盖或禁用哪些资源。这样配置的YAML配置参数可以在YAML配置文件中找到或者在扩展应用的Java代码(可以包括多个文件)中注释。
在服务器侧,REST服务器可以从这样构建的扩展应用接收请求。根据扩展应用的资源配置并取决于请求所针对的储存库的类型在运行时预配置可用于服务请求的资源。此类REST服务的多态性可以克服上面提到的技术限制,其中扩展应用的资源定制在运行的REST实例的生存期内永久且静态地生效。
在这种情况下,REST服务器可操作以利用请求中包含的映射信息来查找资源。映射信息的示例可以包括通用资源标识符(URI)、查询参数、HTTP头部、媒体类型等。REST服务器可以将对资源信息的查询发送到资源登记器(这是REST服务器框架的一部分)。
资源登记器可操作以利用包含“范围内”资源的资源登记器表的集合来响应来自REST服务器的查询。在通信地连接到REST服务器的已预配置和/或未预配置的储存库的所有资源当中,范围内资源表示潜在地可用于服务这个特定REST请求的资源的子集。
在一些实施例中,资源登记器表由资源登记器利用REST服务器的内部资源登记器模型和扩展应用的资源定制(例如,由扩展应用的开发人员配置并在实施时间提供给REST服务器框架的YAML配置参数)来生成和/或更新。由REST服务器在运行时在内部创建的资源登记器模型具有统一的数据结构并支配所有登记的资源端点,包括OOTB资源和任何新预配置的(例如,修改或定制的)资源。以这种方式,所有范围内资源都可以统一描述。资源登记器将这样生成/更新的资源登记器表存储在存储器中,以供REST服务器内部使用。
REST服务器可操作以迭代地评估由资源登记器返回的资源登记器表,直到所有匹配的资源都被评估为止。基于来自这个迭代评估处理的评估结果,REST服务器可操作以确定将如何处置请求(例如,拒绝请求、接受请求或重定向请求)。以这种方式,当REST请求到达REST服务器时,REST服务器可以智能地决定是接受、重定向还是拒绝该请求。此处的技术效果是,单个REST服务器实例可以访问现有的未预配置的储存库以及新预配置的储存库。
一个实施例包括一种系统,该系统包括处理器和存储计算机指令的非暂态计算机可读存储介质,该计算机指令可由处理器翻译以执行基本上如本文所述的方法。另一个实施例包括一种计算机程序产品,该计算机程序产品具有非暂态计算机可读存储介质,该介质存储可由处理器翻译以执行基本上如本文所述的方法的计算机指令。许多其它实施例也是可能的。
当结合以下描述和附图考虑时,将更好地认识和理解本公开的这些和其它方面。但是,应当理解的是,虽然以下描述指示本公开的各种实施例及其许多具体细节,但是它是以说明而非限制的方式给出的。在不脱离本公开的精神的情况下,可以在本公开的范围内进行许多替换、修改、添加和/或重新布置,并且本公开包括所有这样的替换、修改、添加和/或重新布置。
附图说明
包括附带并构成本说明书一部分的附图以描绘本发明的某些方面。通过参考附图中所示的示例性且因此非限制性的实施例,本发明以及与本发明一起提供的系统的部件和操作的更清晰的印象将变得更加明显,其中相同的附图标记表示相同的部件。注意的是,附图中示出的特征不必按比例绘制。
图1描绘了企业计算环境的示例的示意图,其中用于访问不同的异构内容储存库的REST请求首先由API网关处理,然后该API网关将传入的REST请求分派给离散的REST服务器,每个服务器专门被配置用于处置针对特定内容储存库的REST请求。
图2描绘了企业计算环境的示例的示意图,其中用于访问不同的异构内容储存库的REST请求由新的REST服务器处理,根据一些实施例,该服务器特别被配置为智能地确定是接受、重定向还是拒绝REST请求。
图3-9通过示例图示了根据一些实施例的可以如何将各种YAML配置映射到具有统一数据结构的资源登记器模型。
图10是图示用于处置REST请求的方法的示例的流程图。
图11是图示根据一些实施例的用于提供多态REST服务的方法的示例的详细流程图。
图12是图示根据一些实施例的迭代评估逻辑的示例的流程图。
图13描绘了其中可以实现所公开的实施例的企业计算环境的示例的示意图。
具体实施方式
参考在附图中示出并且在以下描述中详细描述的非限制性实施例,更充分地解释本发明及其各种特征和有利细节。省略了众所周知的起始材料、加工技术、部件和装备的描述,以免不必要地在细节上模糊本发明。但是,应当理解的是,虽然详细描述和具体示例指示了本发明的一些实施例,但是它们仅是以说明而非限制的方式给出的。根据本公开,在基本发明构思的精神和/或范围内的各种替换、修改、添加和/或重新布置对于本领域技术人员将变得清楚。
图1描绘了企业计算环境(例如,企业计算环境100)的示意图,其中,用于访问不同的异构内容储存库(例如,内容储存库117、内容储存库118)的REST请求(例如,来自计算设备101的REST请求102)首先由API网关(例如,ACME API网关110)处理。然后,使用内置的储存库观察器(例如,储存库观察器111),API网关将传入的REST请求分派到离散的REST服务器(例如,OOTB REST服务器113、ACME REST服务器114),每个服务器均具体被配置用于处置针对特定内容储存库的REST请求。
在图1的示例中,内容储存库117可以表示默认的或未预配置的内容储存库,而内容储存库118可以表示预配置的内容储存库。在这种意义上,“未预配置的”可以指未为API网关和/或REST请求所源自的应用具体设置内容储存库117。即使这样,OOTB REST服务器113仍然可以服务于REST请求以访问内容储存库117。作为未预配置的内容储存库,内容储存库117可以在OOTB数据结构中存储在本文中称为“资源”的各种类型的对象(例如,文档对象121、格式对象123、关系对象125等)。
内容储存库118可以由一家公司(比如,“ACME”)拥有和运营。ACME可以具有如下深度预配置(深度设置)的内容储存库118:
-OOTB文档资源已被ACME专有(proprietary)逻辑覆盖(例如,不是将文档存储在目录“/documents”中,ACME专有逻辑将文档作为ACME#doc资源122存储在不同的目录“/acme-docs”中)。
-对于OOTB格式资源的访问已被禁止。
-唯一的简档资源(例如,简档资源124)被创建。
-OOTB关系资源已被重用(例如,作为关系资源126)。
作为ACME进行这种预配置的结果,无法以与未预配置的内容储存库117相同的方式访问预配置的内容储存库118提供的资源。即,客户端设备不能使用相同的API访问预配置的内容储存库118和未预配置的内容储存库117两者。
借助Documentum REST扩展SDK,ACME可以在OOTB REST服务上开发和构建ACMEREST服务,从而为ACME预配置定制储存库,例如,通过组合定制ACME REST API并将其部署到定制储存库。REST API是“共享”服务,因为它被许多客户端共享。因此,REST API无法被改变。因为REST API无法被改变,所以它无法适应新的和/或不同的储存库。
假定ACME是或正在成长为一家大公司。作为大公司,很可能并非ACME中的所有内容储存库都通过上述附加配置来预配置。这些内容储存库可以具有不同的类型(例如,特征1相对于特征2),并且具有不同的行为。一些内容储存库仍可以用作未预配置的储存库。进一步假定ACME构建访问预配置的储存库和未预配置的储存库这两者的统一客户端应用(例如,利用ECM技术的扩展应用)。当这些客户端应用(在本文中也被称为“客户端”)想要访问不同类型的内容储存库时,它们也将需要访问不同的REST服务实例。遗憾的是,以前的REST扩展方法和装置无法充分解决公司或企业可能部署多个异构内容储存库的场景。
如图1的示例中所示,用于处置针对由多个异构内容储存库提供的资源的REST请求的一种可能方法可能需要使客户端导航到正确的REST服务器和内容储存库。但是,由于它们的不同的异构配置,这种方法要求ACME在客户端(例如,客户端设备101)和REST服务器(例如,OOTB REST服务器113、ACME REST服务器114)之间实现API网关(例如,ACME API网关110)。另外,它要求在API网关内实现储存库观察器(储存库观察器111),以便API网关可以决定哪个REST请求应当被指向到哪个REST服务器。
这种方法有几个缺点。例如,对于这种场景,在企业级别(在这个示例中,在ACME拥有和运营的企业计算环境100内)构建REST服务的任何变通办法都会非常昂贵(就时间、计算资源、成本、人力等而言),这至少是因为API网关已成为必需部件。没有API网关,传入的REST请求将不会被路由到正确的储存库,并且API可能被滥用。
另外,如上面所讨论的,为了准备检测储存库类型的知识,将需要在API网关上实现储存库观察器。如图1中所例示的,这个实现要求使基础设施非常复杂并且维护工作量大。
而且,利用这种方法,没有优化具有多个REST实例的资源使用,并且在任何时间都将需要至少运行两个REST服务器。这意味着,如果存在M个储存库类型,那么REST服务器的数量将需要为M+N,其中N是REST服务器复制的数量并且N>=0。因而,对于任何企业(例如,上例中的ACME),这种方法的实现和维护成本将过高。
图2描绘了企业计算环境(例如,企业计算环境200)的示意图,其中,用于访问不同的异构内容储存库(例如,未预配置的或默认的内容储存库217、预配置的内容储存库218)的REST请求(例如,来自计算设备201的REST请求202)由新REST服务器(例如,ACME REST服务器250)处理。在本文公开的实施例中,新REST服务器的单个实例可以智能地确定是接受、重定向还是拒绝针对多个异构储存库的REST请求,而无需API网关和/或需要多个REST服务器。
如图2中所示,内容储存库217可以将资源221、223、225存储在OOTB数据结构中,类似于上面参考图1中所示的内容储存库117讨论的那些。遵循以上示例,内容储存库218可以由ACME拥有和操作,并且ACME可能已经在内容储存库218上进行了深度预配置,类似于上述内容储存库118的预配置。因而,内容储存库218可以将资源222、224、226存储在由ACME预配置的专有数据结构中。
本文公开的本发明的实施例提供了用于在新REST服务器(由图2中的ACME REST服务器250表示)上构建和提供用于异构内容储存库的多态REST服务的新系统、方法和装置,使得REST服务器可以自己智能、高效且适当地决定是否应当将特定于企业的资源定制应用于传入的REST请求。在一些实施例中,这个决定处理可以被称为REST服务器的内部请求处置流程,下面参考图11对其进行进一步描述。
在详细描述REST服务器的内部请求处置流程之前,对图2中所示的总体流程进行高级别的审阅可能有所帮助。
如图2中所示,ACME REST服务器250可以从客户端设备202接收REST请求202(步骤1)。响应于从客户端设备202接收到REST请求202,ACME REST服务器250可以操作以查询资源登记器模型(或者在一个实施例中是目标储存库)从而找出适当的储存库类型(在本文中也被称为“范围”)(步骤2)。下面参考请求处理程序(handler)260进一步对此进行解释。
基于被查询的储存库范围,ACME REST服务器250可以操作以决定是接受、重定向还是拒绝REST请求202(步骤3)。以这种方式,ACME REST服务器250上的单个REST服务器实例能够访问OOTB储存库(例如,默认内容储存库217)和特定于企业的储存库(例如,预配置的内容储存库218)两者。
为了说明这个处理,假定在ACME REST服务器250处接收到以下样本REST请求。在这个示例中,每个被请求的样本资源由URI(例如,用于识别资源的字符串)识别。
针对“URI/relations”的样本REST请求:
在这种情况下,“relations”资源由OOTB REST API实施到默认内容储存库217,并由预配置的内容储存库218重用。因此,内容储存库217和218都可以为针对“relations”的REST请求提供服务。再次,在这个示例中,由ACME预配置了一个储存库(内容储存库218),而没有预配置另一个储存库(内容储存库217)。因此,如前面所解释的,无法使用相同的API访问它们。
针对“URI/formats”的样本REST请求:
在这种情况下,“formats”资源由OOTB REST API实施到默认内容储存库217,但是通过REST扩展对预配置的内容储存库218禁用。因此,如果内容储存库217是针对“URI/formats”的REST请求的目标储存库,那么ACME REST服务器250将服务于针对“URI/formats”的REST请求。但是,如果预配置的内容储存库218是目标储存库,那么ACME REST服务器250将用消息(例如,“404未找到”)拒绝针对“URI/formats”的REST请求。
针对“URI/profiles”的样本REST请求:
在这种情况下,“profiles”资源通过REST扩展实施到预配置的内容储存库218,而没有被默认内容储存库217实施。因此,如果预配置的内容储存库218是针对“URI/profiles”的REST请求的目标储存库,那么ACME REST服务器250将服务于针对“URI/profiles”的REST请求。但是,如果默认内容储存库217是目标储存库,那么ACME REST服务器250将用消息(例如,“404未找到”)拒绝针对“URI/profiles”的REST请求。
针对“URI/documents”的样本REST请求:
在这种情况下,“documents”资源由OOTB REST API实施到默认内容储存库217,但是通过REST扩展覆盖到预配置的内容储存库218。一方面,如果默认内容储存库217是针对“URI/documents”的REST请求的目标储存库,那么ACME REST服务器250将通过把其指向默认内容储存库217处的“/documents”来服务于针对“URI/documents”的REST请求。另一方面,如果预配置的内容储存库218是针对“URI/documents”的REST请求的目标储存库,那么ACME REST服务器250将通过将其指向预配置的内容储存库218处的“/acme-docs”来服务于针对“URI/documents”的REST请求。
针对“URI/acme-docs”的样本REST请求:
在这种情况下,“acme-docs”资源通过REST扩展实施为覆盖OOTB REST“documents”资源。一方面,如果预配置的内容储存库218是针对“URI/acme-docs”的REST请求的目标储存库,那么ACME REST服务器250将通过将其指向预配置的内容储存库218处的“/acme-docs”来服务于针对“URI/acme-docs”的REST请求。另一方面,如果默认内容储存库217是针对“URI/acme-docs”的REST请求的目标储存库,那么ACME REST服务器250将通过将其指向默认的未预配置的内容储存库217处的“/documents”来服务于针对“URI/acme-docs”的REST请求。
通过任何请求,ACME REST服务器250可以查询目标储存库类型,并且,通过这样做,获取关于请求资源对于目标储存库是否可得的知识。如上面所展示的,ACME REST服务器250确定要拒绝、接受或重定向哪个URI的能力可以基于ACME REST服务器250在实现时和运行时获得的知识。
在实现时,REST扩展SDK用户(例如,REST扩展开发人员或扩展应用开发人员)可以通过在REST扩展SDK中指定特定的YAML配置参数来定制REST API。这产生增强的REST扩展配置。
例如,REST扩展开发人员可以定义要禁用哪些资源以及要在哪个(哪些)储存库范围中禁用这样的资源。
用于禁用资源的基于储存库范围的配置的样本YAML配置参数可以如下:
Figure BDA0002418624600000121
作为另一个示例,REST扩展开发人员可以定义要覆盖哪些资源以及要在哪个(哪些)储存库范围中覆盖这样的资源。
用于覆盖资源的基于储存库范围的配置的样本YAML配置参数可以如下:
Figure BDA0002418624600000122
使用YAML配置(在这个示例中,该配置增强了用于ACME的REST扩展配置),REST扩展开发人员可以确定哪些资源将在其REST扩展项目中被禁用、覆盖和/或添加,通过用于那些资源的储存库范围(类型)。
在内部,在运行时,创建资源登记器模型。这个资源登记器模型支配向ACME REST服务器250登记的所有资源端点。如下面所解释的,该资源登记器模型随后被ACME REST服务器250(例如,评估器270)用于在REST服务器的内部请求处置流程中做决定。
下面的表1中提供了资源登记器模型的非限制性示例:
表1.资源登记器模型。[R]指示重复。
Figure BDA0002418624600000131
可以对于所有的登记的(预配置的)资源将上面讨论的示例中的增强的REST扩展配置(例如,由REST扩展开发人员在实现时提供)翻译(例如,在运行时由资源登记器280翻译)成该资源登记器模型。而且,所有OOTB资源也可以通过这个资源登记器模型来描述。以这种方式,所有范围内资源都可以用统一的数据结构来描述,如上面的表1中所例示的。
作为非限制性示例,假定如下对ACME REST扩展进行增强(在Java中):
-覆盖Core Document资源
-创建ACME Profiles资源
-禁用Core Formats资源
-重用Core Relations资源
如以上所讨论的,此类REST扩展增强可以包括在扩展应用的Java代码(“带注释的Java代码”或“Java注释”)或YAML配置文件中。以下是这些增强在YAML中可能看起来的样子的非限制性示例:
Figure BDA0002418624600000141
在此,当目标储存库为ACME类型(其表示预配置的储存库)时,根据ACME REST扩展配置来预配置所有可用的资源。当目标储存库为Core类型(其表示未预配置的储存库)时,可用的资源会回滚到默认值。
可以将这种增强的REST扩展配置翻译或映射成资源登记器模型,如下面的图2中所示。不允许重复的资源名称。
表2.样本运行时资源登记器模型。
资源 范围 模式 替代
acme-document acme 包含 document
document acme 排除 -
acme-profiles acme 包含 -
formats acme 排除 -
relations * 包含 -
图3-9进一步图示了根据一些实施例的各种YAML配置可以如何被映射或以其它方式翻译成统一的资源登记器模型。这种映射将YAML配置参数的用户指定的值(例如,由REST扩展开发人员使用REST扩展SDK指定)变换成由统一的资源登记器模型定义的字段的字段值。
图3示出了一个示例,该示例将用于禁用资源的基于储存库范围的YAML配置映射到具有由资源登记器模型指定的“资源”、“范围”、“模式”和“替代”字段的统一数据结构。在这个示例中,可以将用户指定的用于YAML配置参数“repository-scope”(用于资源“类型”)的值“acmeX,acmeY”变换成用于由资源登记器模型指定的“范围”字段的字段值“acmeX|acmeY”。取决于所请求的储存库范围,REST请求可以如下被处置:
表3.
请求范围 formats format types type
acmeX × × ×
acmeY × × ×
acmeZ × ×
core × × ×
图4示出了一个示例,该示例将用于覆盖资源的基于储存库范围的YAML配置映射到具有由资源登记器模型指定的“资源”、“范围”、“模式”和“替代”字段的不同值的统一数据结构。取决于所请求的储存库范围(例如,“acmeX”、“acmeY”、“acmeZ”或“core”),REST请求可以如下被处置:
表4.
Figure BDA0002418624600000151
Figure BDA0002418624600000161
图5示出了对资源登记器模型的统一数据结构的资源范围注释的示例,该注释用于用新资源覆盖现有资源。再次,取决于所请求的储存库范围,REST请求可以如下被处置:
表5.
请求范围 my-checkedout my-cabinets cabinets
acmeX ×
acmeY × ×
acmeZ × ×
core × ×
图6-9示出了更复杂的示例。图6示出了将禁用和覆盖配置参数的混合映射到资源登记器模型的统一数据结构的示例。传统上,禁用和覆盖REST服务不能组合在一起,因为它们是分开实现的并且没有依赖性。本文公开的实施例允许这些先前分离的REST服务彼此和/或与其它部件(例如,REST服务器部件、储存库部件等)协同工作,这使得REST服务对于扩展应用开发人员而言更加灵活和通用。下面的表6示出了将使用具有映射的禁用和覆盖配置参数的资源登记器模型来处置REST请求。
表6.
Figure BDA0002418624600000162
Figure BDA0002418624600000171
图7示出了另一个示例,该示例将禁用和覆盖配置参数的混合映射到资源登记器模型的统一数据结构。下面的表7示出了将使用具有映射的禁用和覆盖配置参数的资源登记器模型来处置REST请求。
表7.
请求范围 peer-relations relations
acmeX × ×
acmeY × ×
acmeZ ×
core ×
图8示出了再一个示例,该示例将复杂的基于储存库范围的YAML配置映射到由资源登记器模型指定的统一数据结构。在这个示例中,基于储存库范围的YAML配置用于覆盖成链的资源(例如,覆盖资源B也将覆盖资源A)。
当覆盖成链的资源时,不允许循环覆盖。作为示例,可以通过遍历表示成链的资源的图并检查图的结束点以确保它们均在之前未被访问(这将会在图中创建环),来完成此操作。下面的表8示出了将使用具有用于覆盖成链的资源的映射的配置参数的资源登记器模型来处置REST请求。
表8.
Figure BDA0002418624600000172
Figure BDA0002418624600000181
图9示出了一种示例,该示例将混合的基于储存库范围的YAML/Java配置映射到资源登记器模型的统一数据结构。在图9中,资源“relations”被资源“my-relations”覆盖,但仅当请求的范围为储存库“acmeY”时才被覆盖。这在下面的表9中示出。
表9.
请求范围 my-relations relations
acmeX
acmeY ×
acmeZ ×
core ×
如上所提及,ACME REST服务器250可以利用资源登记器模型来决定应如何处置传入的REST请求(例如,接受,指向/重定向,或拒绝)。
图10是图示用于处置REST请求的方法的示例的流程图。在图10的示例中,处理1000可以在由REST服务器接收到REST请求时开始。在企业计算环境(例如,企业计算环境200)中操作的服务器框架的小型服务器驻留程序(servlet)可以响应于传入的请求(例如,来自计算设备201的REST请求202)而自动运行。响应于REST请求,REST服务器发起处理1000,该处理1000开始处理REST请求(1001)。
在这个示例中,处理1000可以首先确定REST请求是否满足REST服务器的默认映射条件(1005)。如果是,那么处理1000继续进行以确定REST请求是否满足REST服务器的定制映射条件(1010)。如果REST请求不满足REST服务器的默认或定制的映射条件,那么返回消息(例如,“404未找到”)(1015)。响应于REST请求满足REST服务器的定制映射条件,处理1000继续进行以得到被配置为处置此类REST请求的指派的(delegated)处理程序方法(1020)并调用该处理程序方法(1025)。
图11是图示根据一些实施例的用于处置REST请求的方法的示例的流程图。在图11的示例中,处理1100可以在实现本文公开的实施例的REST服务器(例如,图2中所示的ACMEREST服务器250)(例如,通过servlet)接收到包含映射信息(例如,目标储存库)的REST请求时开始。响应于REST请求,REST服务器发起处理1100并开始处理REST请求(1101)。
REST请求可以包括资源URI、查询参数、HTTP头部、媒体类型等。在操作中,REST服务器基于REST请求中指示的资源URI、查询参数、HTTP头部、媒体类型等找到所有匹配的资源(1111)。如图11中所示,这可能需要REST服务器查询资源登记器(例如,图2中所示的资源登记器280)(1113)。
资源登记器包含实现上述资源登记器模型的内部资源登记器表。在这个示例中,可以利用用户指定的YAML配置参数来创建和/或更新资源登记器中的表。
如上所述,REST扩展配置参数可以由REST扩展开发人员在实现时提供,例如,在YAML配置文件中,和/或在其扩展应用的Java代码中注释。YAML配置文件被放置在指定位置,因此它位于资源登记器可访问的位置。因此,在运行时,资源登记器可以从指定位置加载YAML配置文件(1115)。
在实现时,REST扩展开发人员可以将范围添加到其Java代码中。因此,在一些情况下,资源登记器所需的一些配置信息(例如,范围)可以嵌入到发出请求的应用的Java代码中。在开发扩展应用时,扩展应用开发人员将注释Java代码以向服务器框架指示范围(例如,哪个储存库)。与YAML配置文件不同,这种注释不具有资源登记器在运行时可访问的指定位置。因此,资源登记器将需要扫描应用的Java代码(其可以包含许多文件)以定位配置信息。为了完成此,可以利用Java注释扫描器(1117)。这种Java注释扫描器是本领域技术人员已知的,因此在本文不再进一步描述。
在运行时,资源登记器可以操作以将由扩展应用开发人员在实现时提供的REST扩展配置映射或以其他方式翻译成上述资源登记器模型的统一数据结构。产生内部运行时资源登记器表的处理无需通过REST服务器接收到传入的REST请求来触发。资源登记器将这些资源登记器表存储在存储器中,以供REST服务器使用。
响应于REST服务器的查询,资源登记器返回包含与REST请求匹配的资源的资源登记器表的集合。然后,REST服务器可以操作以迭代地评估每个资源登记器表1121(它表示运行时资源登记器模型,诸如表2中所示的示例),直到所有匹配的资源都已被评估(1123)。下面参考图12描述迭代评估逻辑的更详细示例。
作为非限制性示例,下面的表10示出了通过迭代地评估上述表2中所示的样本运行时资源登记器模型而产生的评估结果。
表10.
Figure BDA0002418624600000201
然后,评估结果可以被REST服务器用来确定是否满足条件(例如,接受请求中指示的定义储存库范围的资源)(1131)。
在一些实施例中,响应于指示REST请求的访问(目标)储存库满足定义储存库范围的资源的评估结果(例如,“接受”),获得(1141)并返回(1151)为那个资源定义的处理方法。
在一些实施例中,响应于指示REST请求的访问储存库不满足定义储存库范围的资源的评估结果(例如,“重定向”或“拒绝”),REST服务器可以确定是否有任何(一个或多个)替代资源可用(1133)。如果是,那么可以获得(1143)并返回(1151)被指派用于处置(一个或多个)替代资源(其覆盖(一个或多个)默认资源)的处置方法。如果不是,那么可以生成并返回(1135)错误消息(例如“404未找到”)。
因为上述处理可以处置来自客户端的访问多个异构储存库的REST请求,所以REST服务器可以被表征为向那些客户端提供多态REST服务。在本公开中,“多态”是指在REST服务器上运行的单个REST服务器实例可以提供多种方式来访问异构内容储存库,无论它们是预配置的和/或未预配置的。
图12是图示根据一些实施例的用于确定处置资源对REST请求的响应的适当优先级的示例迭代评估逻辑的流程图。
在一些实施例中,当在REST服务器的请求处置部件(例如,图2中所示的请求处理程序260)处接收到REST请求时,REST服务器可以利用前端过滤器来查询其访问储存库类型(图12中未示出)并将REST请求分派给评估部件(例如,图2中所示的评估器270)。在一些实施例中,评估部件可以实现图12中所示的处理1200。
在一些实施例中,处理1200可以在REST服务器处接收到传入的请求时开始。在这种情况下,传入的请求可以指示资源“resP”,该资源“resP”存储在储存库类型或范围“acmeX”的储存库(称为资源的访问储存库)中。对于每个匹配的资源登记器表(其字段由统一资源登记器模型指定,并且至少一个字段包含与传入的请求中所指示的值匹配的值),处理1200将基于以下逻辑确定其优先级。
如果可以在资源登记器表中找到具体的资源登记器模型定义“[范围=acmeX,模式=包含,替代=resP]”,那么评估为“通过”。这个中间结果“接受resP”被保存并且对应的评估结果被设置为优先级“S2”。在一些实施例中,处理1200可以针对相同的资源登记器模型定义“[范围=acmeX,模式=包含,替代=resP]”迭代地评估所有匹配的资源登记器表(1201),直到没有更多的匹配的资源登记器表将需要被评估。
在一些实施例中,如果可以在资源登记器表中找到具体的资源登记器模型定义“[范围=acmeY,模式=包含,替代=resR]”,那么评估为“待定”。这个中间结果“重定向到resR”被保存并且对应的评估结果被设置为优先级“S3”。再次,处理1200可以针对相同的资源登记器模型定义“[范围=acmeY,模式=包含,替代=resR]”迭代地评估所有匹配的资源登记器表(1203),直到没有更多的匹配的资源登记器表将需要被评估。
在某些实施例中,如果可以在资源登记器表中找到具体的资源登记器模型定义“[范围=acmeX,模式=排除,替代=]”,那么评估为“拒绝”(因为资源登记器模型定义指定当所请求的储存库为“acmeX”类型时,应当应用“排除”模式,并且,在这种情况下,传入的请求确实指示所请求的储存库为“acmeX”类型)。这个结果被立即返回(1205)并且对应的评估结果被设置为优先级“S1”。此时,处理1200将停止迭代其它匹配的资源登记器表。
在一些实施例中,如果可以在资源登记器表中找到具体的资源登记器模型定义“[范围=acmeZ,模式=排除,替代=]”,那么评估为“忽略”。这个中间结果“接受resP”被保存并且对应的评估结果被设置为优先级“S4”。处理1200可以针对相同的资源登记器模型定义“[范围=acmeZ,模式=排除,替代=]”迭代地评估所有匹配的资源登记器表(1207),直到没有更多的匹配的资源登记器表将需要被评估。
在迭代终止之后,评估部件了解所有匹配的资源的优先级(在图12的示例中,其按S1、S2、S3和S4的次序进行优先化),并返回按这个次序优先化的评估结果(例如,“拒绝”、“接受resP”、“重定向到resR”、“接受resP”)。在一些实施例中,然后将获得并返回用于最高优先级结果的资源处置方法,以拒绝、接受或重定向传入的请求。
本文公开的实施例可以提供许多优点。例如,REST服务器能够自己管理对异构储存库的REST API访问。如果在目标储存库中没有新资源可用,那么REST服务器还能够回退到被覆盖的资源。另外,REST服务器的水平可伸缩性仅与请求吞吐量相关,而与储存库类型无关。此外,REST服务器可以是与底层内容服务器或储存库通信的唯一实体。这个特征可以简化整个体系架构并提高内容服务器的性能(例如,REST服务器和内容服务器之间的更高效和更快的网络通信)。
图13图示了用于网络计算环境1300的示例性体系架构,该网络计算环境1300包括可以双向耦合到企业用户计算机1312、开发人员计算机1315和REST服务器计算机1316的网络1314。REST服务器计算机1316可以双向耦合到储存库1317、1318。网络1314可以表示有线和无线网络的组合,网络计算环境1300可以将有线和无线网络用于本领域技术人员已知的各种类型的网络通信。
为了说明的目的,针对企业用户计算机1312、开发人员计算机1315和REST服务器计算机1316中的每一个示出了单个系统。但是,在企业用户计算机1312、开发人员计算机1315和REST服务器计算机1316的每一个内,多个计算机(未示出)可以通过网络1314彼此互连。例如,多个企业用户计算机1312和多个开发人员计算机1315可以耦合到网络1314。企业用户计算机1312可以包括用于与REST服务器计算机1316通信的数据处理系统。开发人员计算机1315可以包括针对个人的数据处理系统,其作业可以要求他们配置在网络计算环境1300中的企业用户计算机1312上运行的扩展应用所使用的REST服务。
企业用户计算机1312可以包括中央处理器(“CPU”)1320、只读存储器(“ROM”)1322、随机存取存储器(“RAM”)1324、硬盘驱动器(“HD”)或存储存储器1326,以及(一个或多个)输入/输出设备(“I/O”)1328。I/O 1329可以包括键盘、监视器、打印机、电子指点设备(例如,鼠标、轨迹球、触控笔等)等。企业用户计算机1312可以包括台式计算机、膝上型计算机、个人数字助理、蜂窝电话或几乎任何能够通过网络通信的设备。开发人员计算机1315可以类似于企业用户计算机1312,并且可以包括CPU 1350、ROM 1352、RAM 1354、HD 1356和I/O 1358。
同样,REST服务器计算机1316可以包括CPU 1360、ROM1362、RAM 1364、HD 1366和I/O 1368。REST服务器计算机1316可以包括一个或多个后端系统,其被配置为通过网络1314向企业用户计算机1312提供各种服务(例如,内容服务)。在图13的示例中,REST服务器计算机1316通信地连接到后端系统,诸如储存库1317、1318。许多其它替代配置是可能的并且是技术人员已知的。
图13中的每个计算机都可以具有多于一个的CPU、ROM、RAM、HD、I/O或其它硬件部件。为了简洁起见,即使使用多于一个,每个计算机也被示为每种硬件部件具有一个。计算机1312、1315和1316中的每一个都是数据处理系统的示例。ROM 1322、1352和1362;RAM1324、1354和1364;HD 1326、1356和1366;以及内容储存库1317、1318可以包括可以由CPU1320、1350或1360读取的介质。因此,这些类型的存储器包括非暂态计算机可读存储介质。这些存储器可以在计算机1312、1315或1316的内部或外部。
可以用可以驻留在ROM 1322、1352或1362;RAM 1324、1354或1364;或HD 1326、1356或1366内的合适软件代码来实现本文中描述的方法的部分。除了那些类型的存储器之外,本文公开的实施例中的指令还可以被包含在具有不同计算机可读存储介质(诸如硬盘)的数据存储设备上。可替代地,指令可以作为软件代码元素被存储在数据存储阵列、磁带、软盘、光学存储设备或其它适当的数据处理系统可读介质或存储设备上。
相关领域的技术人员将认识到的是,可以用其它计算机系统配置来实现或实践本发明,所述其它计算机系统配置包括但不限于多处理器系统、网络设备、小型计算机、大型计算机、数据处理器等。本发明可以在具体地被编程、配置或构造为执行本文详细描述的功能的专用计算机或数据处理器中实施。本发明还可以在分布式计算环境中被采用,其中任务或模块由远程处理设备执行,该远程处理设备通过诸如局域网(LAN)、广域网(WAN)和/或互联网之类的通信网络链接。在分布式计算环境中,程序模块或子例程可以位于本地和远程存储器存储设备两者中。这些程序模块或子例程可以例如存储或分布在计算机可读介质上(包括磁性和光学可读和可移动计算机磁盘)、作为固件存储在芯片中,以及通过互联网或其它网络(包括无线网络)电子地分布。示例芯片可以包括电可擦可编程只读存储器(EEPROM)芯片。可以以可以驻留在非暂态计算机可读介质、硬件电路系统等或任意组合上并且可以由一个或多个服务器机器翻译的合适指令来实现本文讨论的实施例。非暂态计算机可读介质的示例在本公开中下面提供。
ROM、RAM和HD是用于存储可由CPU执行的计算机可执行指令或能够被CPU编译或解释为可执行的计算机可执行指令的计算机存储器。合适的计算机可执行指令可以驻留在计算机可读介质(例如,ROM、RAM和/或HD)、硬件电路系统等或其任意组合上。在本公开内,术语“计算机可读介质”不限于ROM、RAM和HD,并且可以包括可以由处理器读取的任何类型的数据存储介质。计算机可读存储介质的示例可以包括但不限于易失性和非易失性计算机存储器以及存储设备,诸如随机存取存储器、只读存储器、硬盘驱动器、数据盒、直接存取存储设备阵列、磁带、软盘、闪存驱动器、光学数据存储设备、压缩盘只读存储器以及其它适当的计算机存储器和数据存储设备。因此,计算机可读介质可以指数据盒、数据备份磁带、软盘、闪存驱动器、光学数据存储驱动器、CD-ROM、ROM、RAM、HD等。
可以以可以驻留在计算机可读介质(例如,磁盘、CD-ROM、存储器等)上的合适计算机可执行指令来实现本文描述的处理。可替代地,计算机可执行指令可以作为软件代码部件存储在直接访问存储设备阵列、磁带、软盘、光学存储设备或其它适当的计算机可读介质或存储设备上。
可以使用任何合适的编程语言来实现本文描述的本发明的实施例的例程、方法或程序,包括C、C++、Java、JavaScript、HTML或任何其它编程或脚本代码等。可以使用其它软件/硬件/网络体系架构。例如,所公开的实施例的功能可以在一个计算机上实现,或者可以在网络中或跨网络的两个或更多个计算机之间共享/分布。可以使用任何电子、光学、射频信号或符合已知网络协议的其它合适的通信方法和工具来实现实施实施例的计算机之间的通信。
可以采用不同的编程技术(诸如过程或面向对象)。任何特定的例程都可以在单个计算机处理设备或多个计算机处理设备、单个计算机处理器或多个计算机处理器上执行。数据可以存储在单个存储介质中或分布在多个存储介质上,并且可以驻留在单个数据库或多个数据库(或其它数据存储技术)中。虽然可以以具体次序呈现步骤、操作或计算,但是在不同的实施例中可以改变这个次序。在一些实施例中,就在本说明书中多个步骤被示为顺序的程度而言,在替代实施例中,这些步骤的某种组合可以被同时执行。本文描述的操作的顺序可以被另一个处理(诸如操作系统、内核等)中断、挂起或以其它方式控制。例程可以在操作系统环境中操作或作为独立例程操作。本文描述的功能、例程、方法、步骤和操作可以以硬件、软件、固件或其任意组合执行。
本文描述的实施例可以通过软件或硬件或两者的组合以控制逻辑的形式来实现。控制逻辑可以存储在诸如计算机可读介质的信息存储介质中,作为适于引导信息处理设备执行在各种实施例中公开的一组步骤的多条指令。基于本文提供的公开内容和教导,本领域普通技术人员将理解实现本发明的其它方式和/或方法。
用软件编程实现或对本文描述的步骤、操作、方法、例程或其部分进行编码也在本发明的精神和范围内,其中这样的软件编程或代码可以存储在计算机可读介质中并且可以由处理器操作以允许计算机执行本文描述的任何步骤、操作、方法、例程或其部分。通过使用专用集成电路、可编程逻辑器件、现场可编程门阵列在一个或多个数字计算机中使用软件编程或编码来实现本发明,光学、化学、生物学、量子或纳米工程系统、部件和机制可以被使用。一般而言,本发明的功能可以通过分布式联网系统、部件和/或电路来实现。在另一个示例中,数据的通信或转移(或以其它方式从一个地方移动到另一个地方)可以是有线的,无线的或通过任何其它方式。
“计算机可读介质”可以是可包含、存储、传送、传播或传输程序以供指令执行系统、装置、系统或设备使用或与之结合使用的任何介质。计算机可读介质可以是(作为示例而非限制)电子、磁性、光学、电磁、红外或半导体系统、装置、系统、设备、传播介质或计算机存储器。这样的计算机可读介质一般而言将是机器可读的,并且包括可以是人类可读的软件编程或代码(例如,源代码)或机器可读的软件编程或代码(例如,目标代码)。非暂时性计算机可读介质的示例可以包括随机存取存储器、只读存储器、硬盘驱动器、数据盒、磁带、软盘、闪存存储器驱动器、光学数据存储设备、压缩盘只读存储器和其它适当的计算机存储器和数据存储设备。在说明性实施例中,软件部件中的一些或全部可以驻留在单个服务器计算机上或者在单独的服务器计算机的任何组合上。如本领域技术人员可以理解的,实现本文公开的实施例的计算机程序产品可以包括一个或多个非暂时性计算机可读介质,其存储在计算环境中可由一个或多个处理器解释的计算机指令。
“处理器”包括处理数据、信号或其它信息的任何硬件系统、机构或部件。处理器可以包括具有中央处理单元、多个处理单元、用于实现功能的专用电路系统或其它系统的系统。处理不需要限于地理位置,或者具有时间上限制。例如,处理器可以以“实时”、“离线”、以“批处理模式”等执行其功能。处理的各部分可以在不同时间和在不同地点,通过不同的(或相同的)处理系统执行。
如本文所使用的,术语“包含”、“包括”、“有”、“具有”、“含有”或其任何其它变体旨在涵盖非排他性包含。例如,包含元素列表的过程、产品、物品或装置不一定仅限于这些元素,而是可以包括未明确列出或者这些过程、产品、物品或装置固有的其它元件。
此外,除非另外指示,否则本文所使用的术语“或”通常旨在意味着“和/或”。例如,条件A或B由以下中的任何一个满足:A为真(或存在)并且B为假(或不存在)、A为假(或不存在)并且B为真(或存在)、以及A和B两者都为真(或存在)。如本文所使用的,除非另外明确指示(即,引用“一个”或“一”清楚地仅指示单数或仅指示复数),否则前面加上“一个”或“一”(以及当先行基础是“一个”或“一”时的“该”)的术语包括该术语的单数和复数形式两者。而且,如本文的描述中所使用的,除非上下文另外明确指示,否则“在…中”的含义包括“在…中”和“在…上”。
还将认识到的是,在附图/图中描绘的元件中的一个或多个也可以以更分离或集成的方式实现,或者甚至在某些情况下被移除或使其不可操作,如根据特定应用是有用的那样。此外,除非另外具体指出,否则附图/图中的任何信号箭头应当仅被认为是示例性而非限制性的。本公开的范围应当由所附权利要求及其合法的等同物确定。

Claims (20)

1.一种方法,包括:
由表示状态转移(REST)服务器从客户端设备接收用于访问通信地连接到REST服务器的异构储存库的请求,该REST服务器具有处理器和非暂态计算机可读介质;
响应于从客户端设备接收到请求,由REST服务器利用请求中包含的映射信息查询资源登记器,所述映射信息包括定义储存库范围的资源;
由REST服务器从资源登记器接收包含与定义储存库范围的资源匹配的资源的资源登记器表集合,所述资源登记器表集合实现资源登记器模型,所述资源登记器模型具有指定字段集合的统一数据结构,所述资源登记器表集合由资源登记器利用REST服务配置参数在运行时生成,所述资源登记器表集合具有所述统一数据结构并且在所述字段集合中包含REST服务配置参数值;
由REST服务器迭代地评估所述资源登记器表集合,直到所有资源都已被评估,所述评估返回评估结果;以及
由REST服务器至少部分地基于评估结果来确定是拒绝、接受还是重定向来自客户端设备的请求。
2.如权利要求1所述的方法,其中所述评估进一步包括:
对于评估下的每个资源登记器表:
确定资源登记器模型定义是否在所述每个资源登记器表中;以及
响应于资源登记器模型定义在所述每个资源登记器表中,保存中间结果并设置优先级,所述中间结果指示请求将被接受或重定向。
3.如权利要求2所述的方法,其中资源登记器模型定义包括所述字段集合和对应的服务配置参数值的组合。
4.如权利要求3所述的方法,其中所述字段集合包括范围字段、模式字段和替代字段。
5.如权利要求2所述的方法,其中所述确定进一步包括:获得被配置为接受或重定向请求的方法处理程序。
6.如权利要求2所述的方法,其中所述评估进一步包括:
对于评估下的每个资源登记器表:
确定另一个资源登记器模型定义是否在所述每个资源登记器表中;以及
响应于另一个资源登记器模型定义在所述每个资源登记器表中,立即返回另一个中间结果并设置另一个优先级,所述另一个中间结果指示请求将被拒绝。
7.如权利要求6所述的方法,其中所述确定进一步包括:
获得被配置为拒绝请求的方法处理程序。
8.如权利要求6所述的方法,进一步包括:
基于优先级对中间结果进行排序;以及
返回具有最高优先级的结果作为评估结果。
9.一种系统,包括:
处理器;
非暂态计算机可读介质;以及
存储的指令,能够被处理器翻译来:
从客户端设备接收用于访问通信地连接到所述系统的异构储存库的请求;
响应于从客户端设备接收到请求,利用请求中包含的映射信息查询资源登记器,所述映射信息包括定义储存库范围的资源;
从资源登记器接收包含与定义储存库范围的资源匹配的资源的资源登记器表集合,所述资源登记器表集合实现资源登记器模型,所述资源登记器模型具有指定字段集合的统一数据结构,所述资源登记器表集合由资源登记器利用服务配置参数在运行时生成,所述资源登记器表集合具有所述统一数据结构并且在所述字段集合中包含服务配置参数值;
迭代地评估所述资源登记器表集合,直到所有资源都已被评估,所述评估返回评估结果;以及
至少部分地基于评估结果来确定是拒绝、接受还是重定向来自客户端设备的请求。
10.如权利要求8所述的系统,其中所述评估进一步包括:
对于评估下的每个资源登记器表:
确定资源登记器模型定义是否在所述每个资源登记器表中;以及
响应于资源登记器模型定义在所述每个资源登记器表中,保存中间结果并设置优先级,所述中间结果指示请求将被接受或重定向。
11.如权利要求10所述的系统,其中资源登记器模型定义包括所述字段集合和对应的服务配置参数值的组合。
12.如权利要求11所述的系统,其中所述字段集合包括范围字段、模式字段和替代字段。
13.如权利要求10所述的系统,其中所述评估进一步包括:
对于评估下的每个资源登记器表:
确定另一个资源登记器模型定义是否在所述每个资源登记器表中;以及
响应于另一个资源登记器模型定义在所述每个资源登记器表中,立即返回另一个中间结果并设置另一个优先级,所述另一个中间结果指示请求将被拒绝。
14.如权利要求13所述的系统,其中存储的指令能够被处理器进一步翻译来:
基于优先级对中间结果进行排序;以及
返回具有最高优先级的结果作为评估结果。
15.一种计算机程序产品,包括存储有指令的非暂态计算机可读介质,所述指令能够被处理器翻译来:
从客户端设备接收用于访问通信地连接到系统的异构储存库的请求;
响应于从客户端设备接收到请求,利用请求中包含的映射信息查询资源登记器,所述映射信息包括定义储存库范围的资源;
从资源登记器接收包含与定义储存库范围的资源匹配的资源的资源登记器表集合,所述资源登记器表集合实现资源登记器模型,所述资源登记器模型具有指定字段集合的统一数据结构,所述资源登记器表集合由资源登记器利用服务配置参数在运行时生成,所述资源登记器表集合具有所述统一数据结构并且在所述字段集合中包含服务配置参数值;
迭代地评估所述资源登记器表集合,直到所有资源都已被评估,所述评估返回评估结果;以及
至少部分地基于评估结果来确定是拒绝、接受还是重定向来自客户端设备的请求。
16.如权利要求15所述的计算机程序产品,其中所述评估进一步包括:
对于评估下的每个资源登记器表:
确定资源登记器模型定义是否在所述每个资源登记器表中;以及
响应于资源登记器模型定义在所述每个资源登记器表中,保存中间结果并设置优先级,所述中间结果指示请求将被接受或重定向。
17.如权利要求15所述的计算机程序产品,其中资源登记器模型定义包括所述字段集合和对应的服务配置参数值的组合。
18.如权利要求17所述的计算机程序产品,其中所述字段集合包括范围字段、模式字段和替代字段。
19.如权利要求16所述的计算机程序产品,其中所述评估进一步包括:
对于评估下的每个资源登记器表:
确定另一个资源登记器模型定义是否在所述每个资源登记器表中;以及
响应于另一个资源登记器模型定义在所述每个资源登记器表中,立即返回另一个中间结果并设置另一个优先级,所述另一个中间结果指示请求将被拒绝。
20.如权利要求19所述的计算机程序产品,其中所述指令能够被处理器进一步翻译来:
基于优先级对中间结果进行排序;以及
返回具有最高优先级的结果作为评估结果。
CN201880061059.8A 2017-08-09 2018-08-08 用于构建和提供异构储存库的多态rest服务的系统和方法 Active CN111433763B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762543092P 2017-08-09 2017-08-09
US62/543,092 2017-08-09
PCT/CA2018/050964 WO2019028554A1 (en) 2017-08-09 2018-08-08 SYSTEMS AND METHODS FOR CONSTRUCTION AND DELIVERY OF POLYMORPHIC REST SERVICES FOR HETEROGENEOUS REFERENTIALS

Publications (2)

Publication Number Publication Date
CN111433763A true CN111433763A (zh) 2020-07-17
CN111433763B CN111433763B (zh) 2023-06-20

Family

ID=65273181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880061059.8A Active CN111433763B (zh) 2017-08-09 2018-08-08 用于构建和提供异构储存库的多态rest服务的系统和方法

Country Status (4)

Country Link
US (6) US10652361B2 (zh)
EP (1) EP3665594B1 (zh)
CN (1) CN111433763B (zh)
WO (1) WO2019028554A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113225394A (zh) * 2021-04-30 2021-08-06 中核武汉核电运行技术股份有限公司 一种基于容器集群的api网关管理系统
CN116610455A (zh) * 2023-07-18 2023-08-18 之江实验室 一种可编程网元设备的资源约束描述系统及方法
CN117540040A (zh) * 2024-01-10 2024-02-09 成都索贝数码科技股份有限公司 一种媒资内容交换装置及方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10652361B2 (en) 2017-08-09 2020-05-12 Open Text Corporation Systems and methods for building and providing polymorphic REST services for heterogeneous repositories
US11012537B2 (en) * 2019-05-28 2021-05-18 Jpmorgan Chase Bank, N.A. Method for handling long-running client-server processes
CN114070763B (zh) * 2020-07-29 2023-09-26 富泰华工业(深圳)有限公司 基于改进的rest协议的测试方法、客户端、服务器及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101931654A (zh) * 2010-09-07 2010-12-29 上海交通大学 基于本体的异构服务匹配系统
CN103500380A (zh) * 2013-10-16 2014-01-08 重庆邮电大学 一种基于rest架构的综合资源管理平台系统
CN103605698A (zh) * 2013-11-06 2014-02-26 广东电子工业研究院有限公司 一种用于分布异构数据资源整合的云数据库系统
CN104156216A (zh) * 2014-08-14 2014-11-19 浪潮(北京)电子信息产业有限公司 一种面向云计算的异构存储管理系统及方法
US20160308949A1 (en) * 2015-04-17 2016-10-20 Emc Corporation Content resource management
US20170171104A1 (en) * 2015-12-14 2017-06-15 EMC IP Holding Company LLC Method and apparatus for providing access of content resources

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1035594A (en) 1905-06-30 1912-08-13 George B Johnson Window-reflector.
US1022310A (en) 1911-07-03 1912-04-02 Aquilla Miles Pressure-gage.
US1065236A (en) 1912-02-16 1913-06-17 Frank C Gow Releasing device for car-curtains.
US1042367A (en) 1912-04-17 1912-10-22 James Ogg Bag-turning machine.
US10223107B2 (en) * 2012-05-29 2019-03-05 Nokia Technologies Oy Supporting the provision of services
WO2014071189A1 (en) * 2012-11-02 2014-05-08 Stroz Friedberg, LLC An interactive organizational decision-making and compliance facilitation portal
US9449038B2 (en) * 2012-11-26 2016-09-20 Amazon Technologies, Inc. Streaming restore of a database from a backup system
WO2016048144A1 (en) * 2014-09-22 2016-03-31 Wolting Holding B.V. Compiler for and method of software defined networking, storage and compute performing operations
US10110447B2 (en) * 2015-10-23 2018-10-23 Oracle International Corporation Enhanced rest services with custom data
US10423675B2 (en) * 2016-01-29 2019-09-24 Intuit Inc. System and method for automated domain-extensible web scraping
US20180278725A1 (en) * 2017-03-24 2018-09-27 Ca, Inc. Converting a single-tenant application for multi-tenant use
US11663205B2 (en) * 2017-05-04 2023-05-30 Salesforce, Inc. Technologies for asynchronous querying
US10652361B2 (en) 2017-08-09 2020-05-12 Open Text Corporation Systems and methods for building and providing polymorphic REST services for heterogeneous repositories

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101931654A (zh) * 2010-09-07 2010-12-29 上海交通大学 基于本体的异构服务匹配系统
CN103500380A (zh) * 2013-10-16 2014-01-08 重庆邮电大学 一种基于rest架构的综合资源管理平台系统
CN103605698A (zh) * 2013-11-06 2014-02-26 广东电子工业研究院有限公司 一种用于分布异构数据资源整合的云数据库系统
CN104156216A (zh) * 2014-08-14 2014-11-19 浪潮(北京)电子信息产业有限公司 一种面向云计算的异构存储管理系统及方法
US20160308949A1 (en) * 2015-04-17 2016-10-20 Emc Corporation Content resource management
CN106156932A (zh) * 2015-04-17 2016-11-23 伊姆西公司 用于内容资源管理的方法和装置
US20170171104A1 (en) * 2015-12-14 2017-06-15 EMC IP Holding Company LLC Method and apparatus for providing access of content resources
CN106874315A (zh) * 2015-12-14 2017-06-20 伊姆西公司 用于提供对内容资源的访问的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
韩剑峰: "可配置化数据迁移框架的研究与实现" *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113225394A (zh) * 2021-04-30 2021-08-06 中核武汉核电运行技术股份有限公司 一种基于容器集群的api网关管理系统
CN116610455A (zh) * 2023-07-18 2023-08-18 之江实验室 一种可编程网元设备的资源约束描述系统及方法
CN116610455B (zh) * 2023-07-18 2023-12-05 之江实验室 一种可编程网元设备的资源约束描述系统及方法
CN117540040A (zh) * 2024-01-10 2024-02-09 成都索贝数码科技股份有限公司 一种媒资内容交换装置及方法

Also Published As

Publication number Publication date
US20190052729A1 (en) 2019-02-14
US11223701B2 (en) 2022-01-11
EP3665594B1 (en) 2022-03-16
CN111433763B (zh) 2023-06-20
US20200252482A1 (en) 2020-08-06
EP3665594A4 (en) 2021-01-13
US11722582B2 (en) 2023-08-08
US20240291908A1 (en) 2024-08-29
US10652361B2 (en) 2020-05-12
US20210152662A1 (en) 2021-05-20
US20230344919A1 (en) 2023-10-26
US10938953B2 (en) 2021-03-02
WO2019028554A1 (en) 2019-02-14
US12010198B2 (en) 2024-06-11
US20220141313A1 (en) 2022-05-05
EP3665594A1 (en) 2020-06-17

Similar Documents

Publication Publication Date Title
CN111433763B (zh) 用于构建和提供异构储存库的多态rest服务的系统和方法
US11089117B2 (en) Discovery of remote storage services and associated applications
EP3964999A1 (en) Shared machine learning
CA3061065C (en) Machine learning based discovery of software as a service
US11080490B2 (en) Pre-training of virtual chat interfaces
US11481204B2 (en) Automatic generation of a software configuration for license reconciliation
US11665142B2 (en) Dynamic discovery of executing applications
US11032288B2 (en) Method, apparatus, and computer program product for managing access permissions for a searchable enterprise platform
US20190342323A1 (en) Rule-based remediation of vulnerabilities in a managed network
US20190268244A1 (en) Interactive User Interface to Visually Display the Impact of Configuration Changes on a Managed Network
US11641406B2 (en) Identifying applications with machine learning
US20200329100A1 (en) Selective server-side execution of client-side scripts
US11025506B2 (en) Interactive software renormalization
US11061949B2 (en) User interface for contextual search
US20240126678A1 (en) Machine Learning Model for Determining Software Defect Criticality
US20200201935A1 (en) Centralized rendering service for a remote network management platform
US20230394038A1 (en) Dynamic Knowledgebase Generation with Machine Learning
US11790152B2 (en) Presenting web content based on rules
JP2024132904A (ja) ガイド付き根本原因分析のためのログクラスタリング

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