是否可以将 cm:folder 属性继承到其在 alfresco 中的内容?

Blu*_*tar 1 alfresco alfresco-share

我的model.xml中有以下内容

<type name="abc:Policy">
          <title>abc Policy</title>
          <parent>cm:folder</parent>
          <archive>true</archive>

          <mandatory-aspects>
              <aspect>abc:policyProperties</aspect>
          </mandatory-aspects>
</type>
Run Code Online (Sandbox Code Playgroud)

abc:policyProperties 具有以下内容。

  <aspect name="abc:policytProperties">
        <title>abc Policy Properties</title>
        <properties>
            <property name="abc:dated">
                <title>Dated</title>
                <type>d:date</type>
            </property>
        </properties>
  </aspect>
Run Code Online (Sandbox Code Playgroud)

用户可以将文档上传到 abc:Policy 文件夹。但是当前模型中没有对该文档的引用。如何使此文件夹中的任何文档都可以继承 abc:dated 并将其显示在 Alfresco-share 的属性中?

Jef*_*tts 5

听起来您想要做的是让文档从文档父文件夹上的同名属性继承属性值。

一种方法是在 JavaScript 中编写一个文件夹规则,读取属性并将其设置在文档上。您可以配置规则以在创建文档或更新文档时执行此操作。

这是一个使用开箱即用的 cm:title 属性执行此操作的快速示例:

var title = document.parent.properties['cm:title'];
if (title != undefined) {
    document.properties['cm:title'] = title;
    document.save();
}
Run Code Online (Sandbox Code Playgroud)

您可以将该脚本放在数据字典/脚本下名为“inherit-title.js”的文件中,然后配置您的规则以执行该脚本。任何时候在该文件夹中创建新对象时,它都会获得当前标题。

您可以修改它以使用您的内容模型。

请注意,除非您将规则配置为适用于更新,否则永远不会更新子项上的值。因此,如果文件夹中的标题更改,则其子项中的标题不会更改。如果一个孩子被改变,它不会从父母那里拉取最新的值。您可以通过一些规则配置和脚本调整来实现这一点,但要注意性能成本。

如果您想让这更普遍地发生,即,不将其设置为单个文件夹的规则,您可以编写一个行为来做到这一点(教程)。