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

是否可以将cm:文件夹属性继承到alfresco中的内容?,alfresco,alfresco-share,Alfresco,Alfresco Share,我的model.xml中有以下内容 <type name="abc:Policy"> <title>abc Policy</title> <parent>cm:folder</parent> <archive>true</archive> <mandatory-aspects> <asp

我的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政策
cm:文件夹
符合事实的
abc:保单属性
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保单属性
过时的
d:日期

用户可以将文档上载到abc:Policy文件夹。但模型中目前没有对该文档的引用。如何使此文件夹中的任何文档能够继承abc:dated并在Alfresco共享的属性中显示它?

如果您参考了Alfresco内容模型定义

您会发现,cm:folder具有sys:base类型的默认子关联cm:contains。因此,您可以添加扩展sys:base的类型的节点

添加到文件夹中的每个文档abc:Policy都作为子文档。该方面应用于父项,即abc:Policy。因此,abc:dated是文件的属性,而不是文件的属性


您可以做的一件事是,再定义一个扩展cm:content的类型,并将is作为子关联添加到您的abc:Policy中。还可以将方面应用到它,然后您可以将abc:dated作为文档的属性

如果您参考alfresco内容模型定义

您会发现,cm:folder具有sys:base类型的默认子关联cm:contains。因此,您可以添加扩展sys:base的类型的节点

添加到文件夹中的每个文档abc:Policy都作为子文档。该方面应用于父项,即abc:Policy。因此,abc:dated是文件的属性,而不是文件的属性


您可以做的一件事是,再定义一个扩展cm:content并将is作为子关联添加到abc:Policy的类型,同时将方面应用到它,然后您可以将abc:dated作为文档的属性

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

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

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

var title = document.parent.properties['cm:title'];
if (title != undefined) {
    document.properties['cm:title'] = title;
    document.save();
}
您可以将该脚本放在数据字典/Scripts下名为“inherit title.js”的文件中,然后配置规则以执行该脚本。在该文件夹中创建新对象时,它将获得当前标题

您可以对此进行修改以使用内容模型

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


如果您想让这种情况更普遍地发生,即不将其设置为单个文件夹上的规则,您可以编写一个行为来执行()。

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

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

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

var title = document.parent.properties['cm:title'];
if (title != undefined) {
    document.properties['cm:title'] = title;
    document.save();
}
您可以将该脚本放在数据字典/Scripts下名为“inherit title.js”的文件中,然后配置规则以执行该脚本。在该文件夹中创建新对象时,它将获得当前标题

您可以对此进行修改以使用内容模型

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


如果您想让这种情况更普遍地发生,也就是说,不将其设置为单个文件夹上的规则,您可以编写一个行为来执行()。

请注意,CMIS文档可以没有、一个主父对象或多个父对象:在Alfresco中,对象必须至少有一个父对象。他们不能没有父母,因为Alfresco不支持解除配种。一个文档具有多个父级的能力实际上是基础回购中固有的——即使不使用CMIS,您也可以利用这一点。请注意,CMIS文档可以没有父级、一个主父级或多个父级:在Alfresco中,对象必须至少有一个父级。他们不能没有父母,因为Alfresco不支持解除配种。一个文档拥有多个父文档的能力实际上是基础回购协议中固有的——即使您不使用CMIS,您也可以利用这一点。谢谢Jeff。我是户外运动的新手。我知道触发此规则的是用户创建或更新内容。如何使系统中已有的内容发生这种情况?任何规则都可以临时运行。只需打开该文件夹的规则配置并告诉它运行。然而,如果您需要经常这样做,那么最好编写一个web脚本。逻辑是一样的,只是更容易从HTTP客户机(如curl或您的浏览器)以特殊方式调用。谢谢Jeff。我是一名护士