0

我正在尝试在露天构建一个内容模型,并且我有以下内容模型 xml:

<model name="my:custommodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
    <imports>
        <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
        <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm" />
    </imports>
    <namespaces>
        <namespace uri="http://www.mycompany.com/model/content/1.0" prefix="my" />
    </namespaces>
    <types>
        <type name="my:bound">
            <title>Bound</title>
            <parent>cm:content</parent>
            <properties>
                <property name="my:width">
                    <type>d:int</type>
                    <multiple>false</multiple>
                </property>
                <property name="my:height">
                    <type>d:int</type>
                    <multiple>false</multiple>
                </property>
            </properties>
        </type>

        <type name="my:rectangle">
            <title>Rectangle</title>
            <parent>cm:content</parent>
            <properties>
                <property name="my:x">
                    <type>d:int</type>
                    <multiple>false</multiple>
                </property>
                <property name="my:y">
                    <type>d:int</type>
                    <multiple>false</multiple>
                <property name="my:width">
                    <type>d:int</type>
                    <multiple>false</multiple>
                </property>
                <property name="my:height">
                    <type>d:int</type>
                    <multiple>false</multiple>
                </property>
            </properties>
        </type>
    </types>
</model>

当我尝试构建包含此内容的项目时,出现以下错误:

org.alfresco.service.cmr.dictionary.DictionaryException$DuplicateDefinitionException: 06130000 Found duplicate property definition 'my:x' within class 'my:rectangle' and class 'my:bound'

我希望因为属性本​​质上是该类型的子级,所以它们的范围是该类型。但是此错误表明并非如此。我想知道为什么会这样,解决这个问题的正确方法是什么?

我试图寻找一种方法来定义类型之外的属性,然后让每种类型都引用它们,但我找不到任何这样的例子。我还考虑过创建一个包含 x 属性的方面和一个包含 y 属性的方面,并将它们附加到每种类型,但这感觉不对。

4

2 回答 2

4

要将属性用于多种类型,您有两种方法。

继承

使用这些公共属性创建基本类型,并将其设置为所有其他类型的父类型。通过这种方式,所有子类型都将从父类型继承属性。

方面

使用这些公共属性创建方面并将该方面添加到所有类型。方面是为此而设计的,因此遵循此方法没有问题。

于 2016-07-13T14:59:48.397 回答
1

使用方面时,您可以使用“强制方面”功能将“公共方面”应用于特定的、专门的方面。

只需考虑到您之后将无法删除它们,因为强制是“必需”的另一个词,这不是一种以简单方式应用方面的机制。

http://docs.alfresco.com/5.0/tasks/dev-extensions-content-models-tutorials-add-mandatory-aspect.html

于 2016-07-15T06:04:42.487 回答