是否可以将 cm:folder 属性继承到其露天内容中?
Is it possible to inherit cm:folder properties to its content in alfresco?
我的 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 的属性中显示它?
如果您参考露天内容模型定义 contentModel.xml
您会发现,cm:folder 具有类型 sys:base 的默认子关联 cm:contains。因此,您可以添加扩展 sys:base.
类型的节点
添加到您的文件夹 abc:Policy 的每个文档都作为子文档。并且该方面应用于父级,即 abc:Policy。所以 abc:dated 是 abc:Policy 的 属性 而不是 文档。
您可以做的一件事是,再定义一个扩展 cm:content 的类型,并将其作为子关联添加到您的 abc:Policy 中,同时应用方面,那么您可以获得 abc:dated 作为文档 属性 的
听起来您想要做的是让文档从文档的 parent 文件夹中的 same-named 属性 继承一个 属性 值。
一种方法是在 JavaScript 中编写文件夹规则,读取 属性 并将其设置在文档中。您可以将规则配置为在创建文档或更新文档时执行此操作。
这是一个使用 out-of-the-box cm:title 属性:
执行此操作的简单示例
var title = document.parent.properties['cm:title'];
if (title != undefined) {
document.properties['cm:title'] = title;
document.save();
}
您可以将该脚本放入数据 Dictionary/Scripts 下名为 "inherit-title.js" 的文件中,然后配置您的规则以执行该脚本。每当在该文件夹中创建新的 object 时,它将获得当前标题。
您可以修改它以使用您的内容模型。
请注意,除非您将规则配置为处理更新,否则 child 上的值永远不会更新。因此,如果文件夹中的标题发生变化,其 children 中的标题将不会发生变化。如果 child 被更改,它不会从 parent 中提取最新值。您可以通过一些规则配置和脚本调整来实现这一点,但要注意性能成本。
如果您想更普遍地实现这一点,即不将其设置为单个文件夹的规则,您可以编写一个行为来实现它 (tutorial)。
我的 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 的属性中显示它?
如果您参考露天内容模型定义 contentModel.xml
您会发现,cm:folder 具有类型 sys:base 的默认子关联 cm:contains。因此,您可以添加扩展 sys:base.
类型的节点添加到您的文件夹 abc:Policy 的每个文档都作为子文档。并且该方面应用于父级,即 abc:Policy。所以 abc:dated 是 abc:Policy 的 属性 而不是 文档。
您可以做的一件事是,再定义一个扩展 cm:content 的类型,并将其作为子关联添加到您的 abc:Policy 中,同时应用方面,那么您可以获得 abc:dated 作为文档 属性 的
听起来您想要做的是让文档从文档的 parent 文件夹中的 same-named 属性 继承一个 属性 值。
一种方法是在 JavaScript 中编写文件夹规则,读取 属性 并将其设置在文档中。您可以将规则配置为在创建文档或更新文档时执行此操作。
这是一个使用 out-of-the-box cm:title 属性:
执行此操作的简单示例var title = document.parent.properties['cm:title'];
if (title != undefined) {
document.properties['cm:title'] = title;
document.save();
}
您可以将该脚本放入数据 Dictionary/Scripts 下名为 "inherit-title.js" 的文件中,然后配置您的规则以执行该脚本。每当在该文件夹中创建新的 object 时,它将获得当前标题。
您可以修改它以使用您的内容模型。
请注意,除非您将规则配置为处理更新,否则 child 上的值永远不会更新。因此,如果文件夹中的标题发生变化,其 children 中的标题将不会发生变化。如果 child 被更改,它不会从 parent 中提取最新值。您可以通过一些规则配置和脚本调整来实现这一点,但要注意性能成本。
如果您想更普遍地实现这一点,即不将其设置为单个文件夹的规则,您可以编写一个行为来实现它 (tutorial)。