С моделью, которая наследуется от другой модели в alfresco, должны ли они иметь разные пространства имен или они могут использовать одно и то же пространство имен?

Итак, у меня есть 2 модели. У меня есть "medicalBillModel", который я хотел бы унаследовать от "clientDocument". По какой-то причине, когда я это делаю, я получаю ошибки, в основном говорящие, что пространство имен уже определено. Когда у меня есть модель, которая наследуется от другой модели в alfresco, должны ли они иметь разные пространства имен или они могут использовать одно и то же пространство имен?

Я также пытался импортировать пространство имен и удалить объявление пространства имен, но это вызывает эту ошибку:

Caused by: org.alfresco.service.cmr.dictionary.DictionaryException: 06210000 Cannot define class ag:medicalBill as namespace http://www.company.com/model/content/1.0 is not defined by model ag:medicalBill

В настоящее время я нахожусь в процессе поиска в Google, но не могу найти пример одной пользовательской модели, которая наследуется от другой.

клиентДокументМодел.xml

<?xml version="1.0" encoding="UTF-8"?>

<!-- Definition of new Model -->

<model name="ag:clientDocument" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!-- Optional meta-data about the model -->  

   <description>General Client Document</description>
   <author>James Pearson</author>
   <version>1.0</version>

   <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.company.com/model/content/1.0" prefix="ag"/>
   </namespaces>

   <types>

      <type name="ag:clientDocument">
         <title>General Client Document</title>
         <parent>cm:content</parent>
         <properties>
            <property name="ag:clientName">
               <title>Client</title>
                <type>d:text</type>
            </property>
         </properties>
      </type>

    </types>

</model>

медицинскийBillModel.xml

<?xml version="1.0" encoding="UTF-8"?>

<model name="ag:medicalBill" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <description>Medical Bill</description>
   <author>James Pearson</author>
   <version>1.0</version>

   <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"/>
      <import uri="http://www.company.com/model/content/1.0" prefix="ag"/>
   </imports>


   <types>

      <!-- Definition of new Content Type: Standard Operating Procedure -->
      <type name="ag:medicalBill">
         <title>Medical Bill</title>
         <parent>ag:clientDocument</parent>
         <properties>

            <property name="ag:patientNameFirst">
               <title>Patient First Name</title>
                    <type>d:text</type>
            </property>

            <property name="ag:patientNameLast">
               <title>Patient Last Name</title>
                    <type>d:text</type>
            </property>

            <property name="ag:patientMiddleInitial">
               <title>Patient Middle Initial</title>
                    <type>d:text</type>
            </property>

            <property name="ag:totalBillCharges">
                    <title>Total Bill Charges</title>
               <type>d:double</type>
            </property>

                <property name="ag:dateAdmitted">
                    <title>Facility Name</title>
               <type>d:date</type>
            </property>

                <property name="ag:dateDischarged">
                    <title>Facility Name</title>
               <type>d:date</type>
            </property>

            <property name="ag:facility">
                    <title>Facility Name</title>
               <type>d:text</type>
            </property>

         </properties>
      </type>

    </types>

    <aspects>

   </aspects>

</model>

person startoftext    schedule 21.07.2011    source источник


Ответы (1)


Привет. Каждая модель содержимого может иметь одно или несколько уникальных пространств имен. Ознакомьтесь с Вики.

Я знаю, что в нем четко не указано, что он должен быть уникальным. Но это.

Что я не понимаю, почему вы хотите использовать одно и то же пространство имен в разных xml?

Просто используйте несколько типов в одной модели контента, например:

<model name="ag:clientDocument" xmlns="http://www.alfresco.org/model/dictionary/1.0">

   <!-- Optional meta-data about the model -->  

   <description>General Client Document</description>
   <author>James Pearson</author>
   <version>1.0</version>

   <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.company.com/model/content/1.0" prefix="ag"/>
   </namespaces>

   <types>

      <type name="ag:clientDocument">
         <title>General Client Document</title>
         <parent>cm:content</parent>
         <properties>
            <property name="ag:clientName">
               <title>Client</title>
                <type>d:text</type>
            </property>
         </properties>
      </type>

<!-- Definition of new Content Type: Standard Operating Procedure -->
      <type name="ag:medicalBill">
         <title>Medical Bill</title>
         <parent>ag:clientDocument</parent>
         <properties>

            <property name="ag:patientNameFirst">
               <title>Patient First Name</title>
                    <type>d:text</type>
            </property>

            <property name="ag:patientNameLast">
               <title>Patient Last Name</title>
                    <type>d:text</type>
            </property>

            <property name="ag:patientMiddleInitial">
               <title>Patient Middle Initial</title>
                    <type>d:text</type>
            </property>

            <property name="ag:totalBillCharges">
                    <title>Total Bill Charges</title>
               <type>d:double</type>
            </property>

                <property name="ag:dateAdmitted">
                    <title>Facility Name</title>
               <type>d:date</type>
            </property>

                <property name="ag:dateDischarged">
                    <title>Facility Name</title>
               <type>d:date</type>
            </property>

            <property name="ag:facility">
                    <title>Facility Name</title>
               <type>d:text</type>
            </property>

         </properties>
      </type>

    </types>

</model>

Обычно у меня много типов в одной модели контента. Так что вам не нужно беспокоиться.

Если вы все же хотите их разделить, используйте разные пространства имен и импортируйте одно и другое. Кстати, почему вы хотите импортировать ClientModel в MedicalBill? Я не вижу никакого использования этого?

person Tahir Malik    schedule 22.07.2011
comment
Это было просто небольшое доказательство концепции. Вы знаете, начните с малого и работайте над собой. Я думаю, что я исходил из предположения, основанного на примере пространства имен uri, что оно будет использоваться во многих моделях или, по крайней мере, связанных моделях. Спасибо за вашу помощь. - person startoftext; 22.07.2011
comment
Нет проблем, с моделированием контента вам просто нужно немного попрактиковаться. Чем больше вы это делаете, тем лучше у вас это получается ;). Так держать! - person Tahir Malik; 23.07.2011
comment
Так что нормально иметь много типов в одной модели, если они связаны. Или лучше всего делать это только тогда, когда один наследуется от другого? - person startoftext; 26.07.2011
comment
Не существует точной передовой практики в моделировании. Смотрите на это как на объектно-ориентированное программирование. У вас есть 1 класс, и в этом классе вы определяете несколько методов, расширяющих возможности этого класса. Таким образом, в моделировании вы можете сделать то же самое. Создайте одну модель клиента, в которую вы поместите все типы, связанные с клиентом. Таким образом, медицинский счет также относится к типу, связанному с клиентом, и его можно разместить внутри. Затем вы можете определить новую модель компании и т. д. Если у вас есть общие данные между моделями, вы можете наследовать их или использовать обязательные аспекты. - person Tahir Malik; 27.07.2011