我正在尝试使用 LYO ( org.eclipse.lyo.clients:oslc-java-client:2.4.0
) 通过 OSLC 从 DOORS 读取需求并将它们解析为 ReqIF。我成功地Requirement
使用这个请求读出了一个对象:
String requirementURL = http://localhost:8080/dwa/rm/urn:rational::1-5efc6f9a4ff877cf-O-2-00000100;
ClientResponse requirementResponse = oslcOauthClient.getResource(requirementURL, OslcMediaType.APPLICATION_RDF_XML);
Requirement requirement = requirementResponse.getEntity(Requirement.class);
这样做时,我在尝试解析属性值时遇到了问题。从 DOORS 的角度来看,它们位于requirement.extendedProperties[x].value
. 但是,有一个问题。ReqIF 标准定义了 7 种必须遵守的属性值类型,例如ATTRIBUTE-VALUE-INTEGER
,ATTRIBUTE-VALUE-DATE
等等。现在,在大多数情况下,包含在其中的对象requirement.extendedProperties[x].value
是明确可映射的类型,例如int
or date
。但是,在某些情况下,它们是URI
. 以下是此时出现的一些示例或 URI:
http://localhost:8080/dwa/rm/urn:rational::1-5efc6f9a4ff877cf-M-00000100/types/attrDef-1025#1
http://localhost:8080/dwa/rm/acp/urn:rational::1-5efc6f9a4ff877cf-F-00000000/gFgcK1req0%252BQ5gE6yE5YsEZZcDI%253D%250A
http://localhost:8080/dwa/rm/urn:rational::1-5efc6f9a4ff877cf-M-00000100/types/attrDef-10#1
现在我明白这些 URI 指向 DOORS 资源。第一个和第三个是枚举值引用,不知道第二个是什么。但是,据我了解,我应该能够使用这些 URI 访问相应的 DOORS 资源,然后能够查看它们以确定它们是什么,从而确定如何解析它们。
但是,这是一切都失败的时候,因为当我尝试提出这个请求时:
String uriValue = http://localhost:8080/dwa/rm/urn:rational::1-5efc6f9a4ff877cf-M-00000100/types/attrDef-1025#1;
ClientResponse response = oslcOauthClient.getResource(uriValue , OslcMediaType.APPLICATION_RDF_XML);
...而不是包含可用实体的响应,response.entity
是对象类型 EofSensorInputStream,而我本来期望像 EnumValue
, 或其他东西。
所以,问题来了:基于包含在 中的那个 URI,requirement.extendedProperties[x].value
我如何检索它指向的资源以确定我必须使用的属性类型?显然,oslcOauthClient.getResource
是用错了东西,还是我用错了方法。在这种情况下,第二个参数可能是错误的(即使它适用于检索需求),但是我不知道什么是正确的参数或如何找出它。
或者让它更短:
所以,我发现这个属性的值是 URI http://localhost:8080/dwa/rm/urn:rational::1-5efc6f9a4ff877cf-M-00000100/types/attrDef-1025#1
。
...怎么办?