【问题标题】:Alfresco content modelling: referencing properties multiple timesAlfresco 内容建模:多次引用属性
【发布时间】:2016-07-13 14:29:43
【问题描述】:

我正在尝试在 alfresco 中构建内容模型,并且我有以下内容模型 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 属性的方面,并将它们附加到每种类型,但这感觉不对。

【问题讨论】:

    标签: xml alfresco content-model


    【解决方案1】:

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

    继承

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

    方面

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多