2013-01-11 63 views
4

,我發現下面的代碼node-header.get.html.ftl區別:workingCopyOwner和CM:當我跟蹤代碼alfresce lockOwner

<#if item.workingCopy??> 
    <#if item.workingCopy.isWorkingCopy??> 
     <#assign lockUser = node.properties["cm:workingCopyOwner"]> 
    <#else> 
     <#assign lockUser = node.properties["cm:lockOwner"]> 
    </#if> 
...... 
<#elseif> 

我的理解是

當用戶點擊「離線編輯 「,文檔的工作副本創建爲 ,而workingCopyOwner與lockOwner相同。

如果是這樣,爲什麼我們需要這樣寫?我的理解錯誤嗎?

回答

2

在Alfresco中,與大多數CMS一樣,您可以簽出文檔。 當您這樣做時,原始文檔被鎖定並創建一份工作副本供您安全編輯。

因此,在內容存儲中實際存在2個文檔,包括原始文檔和工作副本。

cm:workingCopyOwner屬性僅在工作副本節點上可用,而cm:lockOwner屬性僅在原始文檔節點上可用。 它們都擁有相同的功能信息(鎖定用戶),但在不同的節點上。

因此,在上面的代碼中,它通過測試node.workingCopy??node.workingCopy.isWorkingCopy來測試它是哪種節點(原始或工作副本),然後相應地分配正確的屬性以提供鎖定用戶。

3

屬性cm:workingCopyOwner屬於方面cm:workingCopy,cm:lockOwner屬於cm:lockable。

當您單擊「脫機編輯」時,會創建一個節點的副本並將其視圖的cm:workingCopy,cm:workingCopyOwner設置爲您的用戶。原始節點被分配了方面cm:lockable,並且這個人獲得屬性cm:lockOwner。所以是的,這兩個屬性獲得相同的用戶,但這些屬性分配在不同的節點上。

/埃裏克

3

下一頁什麼已經通過@billerby解釋,主要區別是一個節點,而不必被檢查出來(由明確的locking電話EG)被鎖定,而不能發生一個文件已簽出但未鎖定。

因此,cm:workingCopycm:lockable捕獲兩個不同的,雖然主題相關,文檔,並使用相應的屬性來聲明鎖定所有權的生命週期階段是簡單地檢查出文檔時做出一致的。