2016-07-13 1 views
0

Я пытаюсь построить модель контента в Alfresco, и у меня есть следующие модели содержимого XML:Alfresco содержания моделирования: ссылающееся свойство несколько раз

<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

Для использования свойств для нескольких типов у вас есть два пути.

Inheritance:

Создайте базовый тип с этими общими свойствами и установите его как родительский тип во всех других типах. Таким образом, все дочерние типы будут наследовать свойства родительского типа.

Aspects:

Создайте аспект с этими общими свойствами и добавьте этот аспект ко всем типам. Аспекты предназначены для этого, поэтому в этом вопросе не возникает никаких проблем.

1

При использовании аспектов вы можете использовать функциональность «обязательные аспекты» для применения «общих аспектов» к конкретным специализированным аспектам.

Просто учтите, что после этого вы не сможете удалить их, поскольку обязательным является другое слово «требуется», это не является механизмом для легкого применения аспектов.

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