当我在alfresce中跟踪代码时,我在node-header.get.html.ftl
<#if item.workingCopy??>
<#if item.workingCopy.isWorkingCopy??>
<#assign lockUser = node.properties["cm:workingCopyOwner"]>
<#else>
<#assign lockUser = node.properties["cm:lockOwner"]>
</#if>
......
<#elseif>
我的理解是
当用户点击“离线编辑”时,会创建文档的工作副本 和workingCopyOwner与lockOwner相同。
如果是这样,为什么我们需要这样写?我的理解是错的???
答案 0 :(得分:3)
属性cm:workingCopyOwner属于方面cm:workingCopy和cm:lockOwner属于cm:lockable。
单击“离线编辑”时,将创建节点的副本并为其指定纵横cm:workingCopy,cm:workingCopyOwner设置为您的用户。为原始节点分配了方面cm:lockable,这个获取属性cm:lockOwner。所以,是的,这两个属性获得了相同的用户,但这些用户被分配到不同的节点上。
/埃里克
答案 1 :(得分:3)
除了@billerby已经解释过的内容之外,主要区别在于节点可以在未经检出的情况下被锁定(例如通过显式locking调用),而不会发生检查文档的情况但没有锁定。
因此,cm:workingCopy
和cm:lockable
捕获文档的两个不同的(虽然是某种程度上相关的)生命周期阶段,并且在签出文档时使用相应的属性来声明锁所有权简单地保持一致
答案 2 :(得分:2)
在Alfresco中,与大多数CMS一样,您可以查看文档。 执行此操作时,原始文档将被锁定,并创建一个工作副本供您安全编辑。
因此,在内容存储库中实际存在2个文档,包括原始文档和工作副本。
cm:workingCopyOwner
属性仅在工作副本节点上可用,而cm:lockOwner
属性仅在原始文档节点上可用。
它们都拥有相同的功能信息(锁定用户),但在不同的节点上。
因此,在上面的代码中,它通过测试node.workingCopy??
和node.workingCopy.isWorkingCopy
来测试它是哪种节点(原始或工作副本),然后相应地分配正确的属性以供给锁定用户。< / p>