Utilidad real de las asociaciones

cancel
Showing results for 
Search instead for 
Did you mean: 
spilby
Active Member II

Utilidad real de las asociaciones

He movido esta pregunta a un hilo nuevo, para hablar aquí solo de asociaciones.

En nuestro modelo actual no hay asociaciones, se van creando los nodos indicando (por ejemplo) sin son del tipo Carpeta, Subcarpeta o Expediente.

Estamos valorando si añadir asociaciones al modelo para indicar que unos son hijos de los otros, pero querría saber qué beneficios tiene realmente usar asociaciones.

Por una parte, ahora usamos métodos tipo getChildAssocsByPropertyValue para localizar nodos hijos y navegar por el árbol. ¿Tiene alguna ventaja definir asociaciones en cuanto a eficiencia o rapidez a la hora de moverse por el árbol? ¿O su utilidad es en realidad de cara a tener un modelo limpio y ordenado?

"Without associations, models would be full of types with properties that store “pointers” to other pieces of content. Going back to the expense report example, each expense report might be stored as an individual object. In addition to an Expense Report type there could also be an Expense type. Associations tell Alfresco about the relationship between an Expense Report and one or more Expenses."

He leido el anterior párrafo (extraido de http://ecmarchitect.com/images/articles/alfresco-content/content-article-2ed.pdf), por eso lo comentaba, ya que sí parece que realmente lo notaría en rapidez a la hora de recuperar los hijos, pero desconozco por mi poca experiencia si realmente es así, o si en caso de usar asociaciones no debería usar el getChildAssocsByPropertyValue para notar la mejora.


Y por otra parte, todo lo que ya tenemos creado en producción está sin asociaciones, por lo que tendríamos que de alguna manera incorporarlas mediante algun webscript o algún proceso similar, y no sé si es posible o una vez creado el nodo sin asociación ya no puede incorporarse después. ¿Es posible y/o recomendable?
4 Replies
angelborroy
Alfresco Employee

Re: Utilidad real de las asociaciones

Creo que en tu caso el párrafo es un poco engañoso, ya que tú sí estás usando asociaciones de jerarquía: buscas los hijos de un nodo aplicando un filtro de propiedad. No creo que incluyendo asociaciones directas entre Expediente - Carpeta - Subcarpeta pudieses mejorar notablemente el rendimiento.

En cuanto a si se pueden añadir una vez creados los nodos de contenido: sí, sin problemas. De hecho, es el mecanismo normal.
Hyland Developer Evangelist
spilby
Active Member II

Re: Utilidad real de las asociaciones

Sip, exacto, estoy buscando los hijos de los nodos con un nombre determinado. Por eso al leer que existían las asociaciones, he pensando que sería bueno incluirlas en el modelo, ya que los 3 tipos que tenemos son jerárquicos. Pero tenía la duda de qué pasaría con los nodos ya creados. Si quedarían (por decirlo de alguna manera) "sueltos", con referencias entre nodos pero sin asociaciones, y sólo los nuevos nodos que cree a partir de ahora quedarían "ligados" por asociaciones. O si Alfresco ya "ligaría" los que actualmente existen. No sé si me explico… A lo mejor son ya preguntas muy específicas.
angelborroy
Alfresco Employee

Re: Utilidad real de las asociaciones

Tanto el hecho de incluir una carpeta dentro de otra como el de incluir un documento dentro de una carpeta crean asociaciones. ¿Por qué vas a crear asociaciones redundantes si el sistema ya las crea por ti?
Hyland Developer Evangelist
spilby
Active Member II

Re: Utilidad real de las asociaciones

Ya… Es justo lo que no entiendía y quería confirmar, ya que al crear nodos hijos ya estaba indicando la jerarquía. Para la asociación tipo Peer lo entendía, ya que son nodos hermanos que indicamos que están asociados. Pero entre una asociación tipo Child y simplemente, crear un nodo hijo a partir del padre, no veía la diferencia.

Aquí (http://ecmarchitect.com/images/articles/alfresco-content/content-article-2ed.pdf) viene explicado:

"Peer Associations are just that—they define a relationship between two objects but
neither is subordinate to the other. Child Associations, on the other hand, are used when the target of
the association (or child) should not exist when the source (or parent) goes away. This works like a
cascaded delete in a relational database: Delete the parent and the child goes away"

Parece que es útil para cuando quieres borrar un nodo padre y así se borran en cascada los hijos. Aunque creo que ya hay métodos que hacen eso sin necesidad de haber especificado una asociación en el modelo. Quizás sea más eficiente, no sé… Smiley Surprised\