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

时间:2016-10-13 03:19:41

标签: 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>

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>

用户可以将文档上传到abc:Policy文件夹。但目前在该模型中没有提及该文件。如何使该文件夹中的任何文档继承abc:dated并在Alfresco-share的属性中显示它?

2 个答案:

答案 0 :(得分:4)

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

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

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

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

您可以将该脚本放在Data Dictionary / Scripts下名为“inherit-title.js”的文件中,然后配置规则以执行脚本。每当在该文件夹中创建新对象时,它将获得当前标题。

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

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

如果您想更普遍地实现这一点,即不将其设置为单个文件夹的规则,您可以编写一个行为(tutorial)。

答案 1 :(得分:0)

如果您参考露天内容模型定义contentModel.xml

您会发现, cm:文件夹具有默认子关联cm:包含类型sys:base。因此,您可以添加扩展sys:base。

的类型的节点

添加到您的文件夹 abc:Policy 的每个文档都是小孩。该方面适用于父级,即 abc:Policy 。因此 abc:日期是该文档的 abc:Policy 而非的属性。

你可以做的一件事是,定义一个扩展cm的内容:内容和add作为你的abc的子关联:Policy也将方面应用于它,然后你可以得到abc:注明为您文档的财产