IBM® Rational® DOORS® 是一款需求管理软件,旨在为复杂的嵌入式系统开发提供帮助。Rational DOORS V9.3 实现了 OSLC Requirements Management V1,并且从 V9.4 标准开始实现了 OSLC Requirements Management V2 接口。本文参考了 DOORS V9.4 的内容。
备注:
要使用这些服务,必须安装和配置 IBM Rational DOORS Web Access,这是 DOORS 的 Web 接口。
任何使用 HTTP 的应用程序都可以轻松地使用 DOORS 提供的服务。根据 OSLC RM V2 规范,DOORS 提供的服务可以分为以下几类:
Delegated User
Interfaces 提供一种机制,在使用的应用程序中显示 DOORS Web Access 用户界面,以便创建或选择需求。 Query Capability 为工件容器提供一个基本的 URI,以便可以在工件容器上运行查询。 资源操作 提供了一种机制,在使用 GET、PUT 或 DELETE 的给定资源上执行基本操作。 Creation Factory 提供一个基本的 URI,以便使用 POST 创建需求。
所有这些功能都可以通过一组 URI 进行访问。后面的小节将介绍如何发现这些 URI,以及如何使用这些服务。除了 rootservices 文档之外,所有服务和资源都通过 ">OAuth 提供保护。rootservices 文档是执行发现的起点。DOORS 同时支持 OAuth 1.0 和 OAuth 1.0a。本文并未详细介绍 OAuth,但是结尾部分的注意事项小节中提到了一些基本要点。为了解释每一项功能,我使用 RESTClient(为 Mozilla Firefox 提供的插件)演示了如何使用这些服务。
发现服务
Rootservices 文档是 DOORS 提供的发现服务的起始点。该文档可以通过以下 URI 进行访问:
http://<dwaServer>:<port>/dwa/public/rootservices
对上面的 URI 执行一个 GET 操作将会返回一个 Resource Description Framework (RDF)/XML 格式的文档,其中列出了应用程序根级别的服务以及其他配置信息,如与 OAuth 有关的 URI。清单 1 显示了一个 DOORS 返回的样例 rootservices 文档:
清单 1. 清单 1. Rootservices 文档
<rdf:Description rdf:about="https://doors9501.com:8443/dwa/public/rootservices"><jd:registration rdf:resource="https://doors9501.com:8443/dwa/public/registration"/><jfs:oauthDomain>https://doors9501.com:8443/dwa</jfs:oauthDomain><jfs:oauthUserAuthorizationUrl rdf:resource="https://doors9501.com:8443/dwa/oauth-authorize-token"/><dc:title>RM on DOORS9501</dc:title><jfs:oauthAccessTokenUrl rdf:resource="https://doors9501.com:8443/dwa/oauth-access-token"/><trs:trackedResourceSet rdf:resource="https://doors9501.com:8443/dwa/rm/trs"/><jfs:oauthRequestConsumerKeyUrl rdf:resource="https://doors9501.com:8443/dwa/oauth/request-consumer-key"/><oslc_rm:rmServiceProvidersrdf:resource="https://doors9501.com:8443/dwa/rm/discovery/catalog"/><jfs:oauthRealmName>DWA</jfs:oauthRealmName><jfs:oauthRequestTokenUrl rdf:resource="https://doors9501.com:8443/dwa/oauth-request-token"/><jd:oslcCatalogs><oslc:ServiceProviderCatalog rdf:about="https://doors9501.com:8443/dwa/rm/discovery/catalog"><oslc:domain rdf:resource="http://open-services.net/ns/rm#"/></oslc:ServiceProviderCatalog></jd:oslcCatalogs></rdf:Description>
备注:
对大部分 URL 都使用 Mozilla Firefox 插件 RESTClient 执行 GET、PUT、POST 操作。所使用的报头没有明确指明,Content-Type 被设置为 “application/rdf+xml”,“oslc-core-version” 被设置为 “2.0”。
如清单 1 所示,JFS 名称空间中的代码行主要是与使用 OAuth 访问受保护资源/服务有关的配置内容。本文最后一个小节将解释如何通过 OAuth 实现访问。
发现 DOORS 提供的 OSLC 服务所必需的 URI 是 Service Provider Catalog (ServiceProviderCatalog),可在 oslc 名称空间中找到。Service Provider URI 是一组允许访问实际资源的服务集合。
图 1. 图 1. 发现服务链的图形说明
从比较的角度来看,Service Provider Catalog 可以被看作是一个 Project / Folder,而 Service Provider 可以被看作一个 Module / View。