有时,在Alfresco重启后,versionService.getVersionHistory
不会返回上一个节点版本。
例如,我有四个节点版本。
VersionHistory versionHistory = versionService.getVersionHistory(actionedUponNodeRef);
List<Version> versions = (List<Version>) versionHistory.getAllVersions();
if (versions.size() > 1) {
Version prevVersion = versions.get(1);
}
通常它的工作正常。 prevVersion
有第三个节点版本,但有时,在Alfresco重新启动后,它会返回第二个节点版本,直到我再次重新部署Alfresco。
如何始终获取上一个节点版本?
答案 0 :(得分:1)
我猜所有Casting的命令都搞砸了。 我检查了代码,原始版本是Type ArrayList,它有一个超类型的List。然后它作为集合发回,然后将其转换回List。
通常这不应该是一个问题。
在您的情况下,我将从ScriptNode.GetVersionHistory中复制代码,该代码在Alfresco&amp;共享以显示版本。 这是片段:
public Scriptable getVersionHistory()
{
if (this.versions == null && getIsVersioned())
{
VersionHistory history = this.services.getVersionService().getVersionHistory(this.nodeRef);
if (history != null)
{
Collection<Version> allVersions = history.getAllVersions();
Object[] versions = new Object[allVersions.size()];
int i = 0;
for (Version version : allVersions)
{
versions[i++] = new ScriptVersion(version, this.services, this.scope);
}
this.versions = Context.getCurrentContext().newArray(this.scope, versions);
}
}
return this.versions;
}