java - 是否可以使用 VersionOne Java SDK 获取对象的深拷贝?

标签 java versionone

假设我想计算缺陷的累积估计值。我愿意

double estimate = 0.0;
Double tEstimate = 0.0;
Collection<Defect> defects = project.getDefects(null);
for(Defect d : defects){
   tEstimate = d.getEstimate();
   if(tEstimate != null){
      estimate += tEstimate;
   }
}

这里每次调用 d.getEstimate() 都会对服务器进行回调,这意味着这段代码运行得非常慢。我想预先考虑一次性性能并下载所有信息以及 Defect 对象,可能包括获取一些我不会使用的信息,但避免在循环的每次迭代期间达到服务器回调的延迟.

最佳答案

您正在使用 VersionOne 对象模型 SDK。由于您所提示的事情,它确实缺乏稳健性。其中一个低效率是它如何知道您正在请求 Assets 列表,但首先获取具有一组预定属性(例如 AssetState)的所有 Assets ,然后检查它是否是死 Assets 。在此之后,它会再次调用以再次获取相同的 Assets 列表,但具有您指定的属性。这可以通过应用贪婪算法来补救,该算法可以获取一组属性,这样无论您的 .get_() 方法中请求了哪些属性,都会返回该集合的每个成员。为什么?这已经(有点)发生在基于 Rest 的 VersionOne API 中。如果查询返回所有属性,它可能会有点浪费,尤其是对于大量积压的工作。

无论如何,VersionOne 将在不久的将来弃用对象模型,因此如果您计划使用 OM 进行大量编码,请考虑这一点。

这里有一些方法可以规避这个问题

1) 重写您的代码以使用 VersionOne APIClient SDK。它具有 XML 管道,因此您可以节省大量编写自己的时间。这有点冗长,但更强大、快速和高效。对象模型实际上建立在 APIClient 之上。

2) 使用 Java 和原始 VersionOne Rest API 重写您的代码 - 这要求您了解 http 和 VersionOne Rest API。

3) 如果您无法从对象模型进行更改,则可以混合使用 2 个 sdk。当您需要读取大量数据时,只需使用 APIClient 代码来管理该段代码。除非您在使用对象模型方面投入巨大并且无法更改,否则当您只能学习 APIclient 并专门使用时,这有点毫无意义。代码很快就会变得困惑。不推荐。

关于java - 是否可以使用 VersionOne Java SDK 获取对象的深拷贝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23982936/

相关文章:

methodology - 您是否还将VersionOne用作问题跟踪系统(又名BugZilla)

java - 如何使用版本一 api 进行身份验证

c# - VersionOne API 客户端的附件

java - 这个用于替换转义字符的 Java 正则表达式如何工作?

java - 构造函数 Time 已弃用

versionone - 如何找到我在 VersionOne 中创建的故事或缺陷?

java - 使用 Java 收集所有 VersionOne Assets 及其所有属性

java - JUnit 和 InterruptedException

java - 如何正确检测 servlet 规范 3 中的客户端断开连接?

java - crawler4j CrawelController 类中的 NoSuchMethodError