cancel
Showing results for 
Search instead for 
Did you mean: 

Aspecto vs Property?

spilby
Confirmed Champ
Confirmed Champ
Buenas,

tengo un par de preguntas de concepto referente a los aspectos y asociaciones (utilizamos Alfresco 5.0).

Imaginemos un modelo de ejemplo con los siguientes types: carpeta, subcarpeta y expediente. La relación entre ellos sería: pueden haber N carpetas, las cuales pueden tener M subcarpetas, y las cuales pueden tener X expedientes. Cada uno de estos types tiene sus propios properties definidos en el modelo.

Un ejemplo de modelo resumido de los elementos de los que hablamos sería éste:


<namespaces>
   <namespace uri="ej.carpeta" prefix="carp" />
   <namespace uri="ej.subcarpeta" prefix="sub" />
   <namespace uri="ej.expediente" prefix="expe" />      
</namespaces>

<types>
    <type name="carp:carpeta">
       <title>Carpeta</title>
       <parent>cm:folder</parent>
       <properties> (…) </properties>
    </type>
    <type name="sub:subcarpeta">
       <title>Subcarpeta</title>
       <parent>carp:carpeta</parent>
       <properties> (…) </properties>
    </type>
    <type name="expe:expediente">
       <title>Expediente</title>
       <parent>carp:carpeta</parent>
       <properties> (…) </properties>
    </type>
</types>


Queremos añadir un campo que nos permita filtrar mejor y localizar antes los elementos del repositorio (cualquiera de los tipos, ya sean carpetas, expedientes o lo que sea). Como ya tenemos la aplicación en producción no podemos variar mucho el modelo, lo que hagamos ha de ser añadir cosas al modelo que permitan mejorar las búsquedas.

Una idea sería añadir un aspecto (en nuestro modelo actual no tenemos ningún aspecto). Por poner un ejemplo: la ciudad origen del elemento a crear. De esta manera buscaremos, entre otras cosas, por el aspecto "Teruel", y así filtraremos mejor y reduciremos los posibles resultados en la búsqueda.

1. Mi primera duda es: ¿por qué añadir en el modelo la ciudad como aspecto en lugar de añadirla como una nueva property? ¿Habría diferencia de rendimiento entre uno u otro caso? Es decir, imaginemos que buscamos por N properties actualmente. ¿Existe alguna ventaja entre hacer una query buscando por N properties y el aspecto ciudad, o hacerlo buscando por N+1 properties siendo la ciudad una nueva property?

Y otra duda relacionada con ésto: está todo configurado para que las búsquedas vayan a BD primero y así no ir al SOLR (para no esperar a que esté indexado). Hay elementos en las queries (como buscar por PATH) que anulan eso y hacen que vaya directamente al SOLR, por lo que hemos eliminado la búsqueda por PATH y sólo buscamos por properties. Si añado en la query que busque también por un aspecto, ¿seguirá buscando en BD primero? ¿O el buscar por aspecto hará que vaya a SOLR al igual que pasa con el PATH?

2. Por otra parte, en los ejemplos de definición de aspectos, veo que se definen así:


<namespaces>
        <namespace uri="myCompany.model" prefix="bv"/>
      </namespaces>

<aspect name="myCompany:myAspect">
  <title>Address aspect</title>
  <properties>
    <property name="myCompany:city">
      <title>City</title>
      <type>d:text</type>
    </property>
  </properties>
</aspect>


En nuestro caso, el aspecto lo queremos aplicar a los 3 tipos: carpeta, subcarpeta y expediente, cada uno de los cuales tiene su propio namespace. ¿Hemos de crear 3 aspectos "ciudad origen" para cada uno de los tipos? ¿No se puede crear un solo aspecto y aplicarlo en los 3?

Muchas gracias!



3 REPLIES 3

angelborroy
Community Manager Community Manager
Community Manager
En este caso definiría un aspecto "Ciudadable" y lo aplicaría a los 3. Creo que no hay diferencias relevantes para las búsquedas (una join más para SQL y transparente para SOLR).
Hyland Developer Evangelist

He editado la pregunta con un ejemplo de modelo para que quede más claro

El aspecto para ese ejemplo quedaría algo así:


<aspect name="carp:ciudadable">
  <title>Aspecto ciudadable</title>
  <properties>
    <property name="carp:ciudad">
      <title>Ciudad</title>
      <type>d:text</type>
    </property>
  </properties>
</aspect>


Pero claro, tenemos 3 namespaces, por lo que no sé si hay forma de definir el aspecto para que sea común a los 3 (y no solo usando carp) ¿Es posible? Quizás sin especificar el namespace, o con alguna forma tipo *:ciudadable.

angelborroy
Community Manager Community Manager
Community Manager
Defínelo en un namespace independiente e impórtalo en los 3 modelos.
Hyland Developer Evangelist