Windchill 开发 查询对象是否是最新版本
如题,主要用到 VersionControlHelper.service.allVersionsOf(Versioned v) 方法
此方法查询对象的所有版本,按照从新到旧的顺序排列,取出第一个来和输入的对象比较,以此判断是否是最新版本。
WTPart
WTDocument
EPMDocument
都是 wt.vc.Versioned 接口的实现类
代码如下:
import org.apache.log4j.Logger;
import wt.fc.QueryResult;
import wt.vc.VersionControlHelper;
import wt.vc.Versioned;
/**
* @author 彭秉浪 PengBingLang@dingtalk.com
*/
public class TestUtil {
private static final Logger logger = Logger.getLogger(TestUtil.class.getName());
public static boolean isLatestVersion(Versioned v) {
try {
// 此方法查询对象的所有版本,按照从新到旧的顺序排列,只取出第一个来比较
QueryResult qr = VersionControlHelper.service.allVersionsOf(v);
if (qr.hasMoreElements()) {
Versioned latestVersion = (Versioned) qr.nextElement();
String lv1 = latestVersion.getVersionIdentifier().getValue();// 查询大版本号
String lv2 = latestVersion.getIterationInfo().getIdentifier().getValue();// 查询小版本号
String v1 = v.getVersionIdentifier().getValue();
String v2 = v.getIterationInfo().getIdentifier().getValue();
logger.debug("----------------------->latestVersion " + lv1 + " . " + lv2);
logger.debug("----------------------->Version " + v1 + " . " + v2);
if (lv1.equals(v1) && lv2.equals(v2)) {
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}