AnsweredAssumed Answered

Aspecto vs Property?

Question asked by spilby on Nov 18, 2015
Latest reply on Nov 18, 2015 by spilby
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!



Outcomes