Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用VersionOne Java SDK获取对象的深度副本?_Java_Versionone - Fatal编程技术网

是否可以使用VersionOne Java SDK获取对象的深度副本?

是否可以使用VersionOne Java SDK获取对象的深度副本?,java,versionone,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; } } 双重估

假设我想计算缺陷的累积估计值。我知道

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;
   }
}
双重估计=0.0;
双睾丸=0.0;
集合缺陷=project.getDefects(null);
对于(缺陷d:缺陷){
tEstimate=d.getEstimate();
if(tEstimate!=null){
估计值+=测试值;
}
}

这里,对d.getEstimate()的每次调用都会对服务器进行回调,这意味着此代码的运行速度非常慢。我想提前进行一次性性能测试,并下载所有信息以及缺陷对象,可能包括获取一些我不会使用的信息,但避免在循环的每次迭代中遇到服务器回调的延迟。

您使用的是VersionOne对象模型SDK。它确实缺乏健壮性,因为正是你在抱怨的事情。效率低下的一个原因是,它如何知道您正在请求一个资产列表,但首先获取具有一组预定属性(如AssetState)的所有资产,并检查它是否为死资产。在此之后,它再次调用以获取相同的资产列表,但使用指定的属性。这可以通过应用贪心算法来解决,贪心算法可以获取一组属性,这样无论在.get_()方法中请求了哪些属性,都会返回该集的每个成员。为什么?这已经(某种程度上)发生在基于Rest的VersionOne API中。如果查询返回所有属性,那么可能会有点浪费,特别是对于大量积压

无论如何,在不久的将来,版本控制器会贬低对象模型,所以如果您计划使用OM进行大量编码,请考虑这个问题。

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

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

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


3) 如果无法从对象模型进行更改,则可以混合使用2个SDK。当您需要读取大量数据时,只需使用APIClient代码来管理代码段。如果您只需要学习APIclient并专门使用它,那么这是毫无意义的,除非您在使用对象模型方面有巨大的投资,并且您无法更改。代码很快就变脏了。不推荐。

API端点公开资产的操作,包括
DeepCopy
。没有枚举所有操作的客户端代码,因此必须首先使用
meta.v1
API端点。使用,您可以获得一个类,该类允许您知道名称。

如果是您在服务器上的代码,您可以创建另一个API。如果是其他人,那么他们必须这么做。如果它在另一台服务器上,那么它就是另一个jvm,所以“深度复制”毫无意义。此外,您还没有显示getEstimate readlly的功能,但从外观上看,您只需要一个能够实现您所需功能的api:返回缺陷及其嵌套估计的集合