4

屋外でコードをトレースすると、次のコードが見つかりました。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と同じになります。

もしそうなら、なぜ私たちはこのように書く必要があるのですか?私の理解は間違っていますか?

4

3 に答える 3

3

プロパティcm:workingCopyOwnerはアスペクトcm:workingCopyに属し、cm:lockOwnerはcm:lockableに属します。

[オフラインで編集]をクリックすると、ノードのコピーが作成され、アスペクトcm:workingCopyが割り当てられ、cm:workingCopyOwnerがユーザーに設定されます。元のノードにはアスペクトcm:lockableが割り当てられ、このノードにはプロパティcm:lockOwnerが割り当てられます。そうです、2つのプロパティは同じユーザーを取得しますが、それらは異なるノードに割り当てられます。

/エリック

于 2013-01-11T09:52:19.817 に答える
3

@billerbyによってすでに説明されていることの次に、主な違いは、ノードがチェックアウトされていなくても(たとえば、明示的なロック呼び出しによって)ロックできることですが、ドキュメントがチェックアウトされてもロックされていないことはありません。

したがって、ドキュメントの2つの異なるライフサイクルフェーズcm:workingCopycm:lockableキャプチャし、ドキュメントをチェックアウトするときに、それぞれのプロパティを使用してロックの所有権を宣言するだけで一貫性が保たれます。

于 2013-01-11T12:10:10.323 に答える
2

Alfrescoでは、ほとんどのCMSと同様に、ドキュメントをチェックアウトできます。これを行うと、元のドキュメントがロックされ、安全に編集できるように作業コピーが作成されます。

したがって、コンテンツストアには、元のドキュメントと作業コピーの両方の2つのドキュメントが実際に存在します。

cm:workingCopyOwnerプロパティは作業コピーノードでのみ使用できますが、プロパティcm:lockOwnerは元のドキュメントノードでのみ使用できます。これらは両方とも同じ機能情報(ロックユーザー)を保持しますが、異なるノードにあります。

したがって、上記のコードでは、テストによってノードの種類(元のコピーまたは作業コピー)をテストnode.workingCopy??node.workingCopy.isWorkingCopy、それに応じて適切なプロパティを割り当てて、ロックユーザーにフィードします。

于 2013-01-11T09:52:04.170 に答える