Association : récupération du parent

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

Association : récupération du parent

Bonjour,

Une association entre un type A et un type B se définit dans Alfresco unilatéralement, c'est-à-dire, par exemple, A->B. Si je souhaite avoir une vue complète d'un contenu de type B, je souhaite voir le ou les contenus A qui le reférencent et là je rencontre des difficultés.

Première possibilité :
Faire une recherche par XPath ou Lucene de tous les contenus de type A et vérifier l'association désirée. Cette méthode est assez longue.

Deuxième possibilité :
Créer un bean qui me permettrait d'éxécuter une requête SQL afin de récupérer les contenus de type A engagés dans l'association. L'inconvénient est qu'attaquer directement avec du SQL la base de données n'est pas très propre.

Voilà ma problématique. Si vous avez un avis ou des idées sur ce problème, dites le moi.

Merci.
4 Replies
pdubois
Active Member

Re: Association : récupération du parent

Avez vous essayé les méthodes suivantes du nodeService?

   /**
     * Fetches all associations <i>from</i> the given source where the associations'
     * qualified names match the pattern provided.
     *
     * @param sourceRef the association source
     * @param qnamePattern the association qname pattern to match against
     * @return Returns a list of
NodeAssocRef
instances for which the
     *      given node is a source
     * @throws InvalidNodeRefException if the source node could not be found
     *
     * @see QName
     * @see org.alfresco.service.namespace.RegexQNamePattern#MATCH_ALL
     */
    @Auditable(key = Auditable.Key.ARG_0 ,parameters = {"sourceRef", "qnamePattern"})
    public List<AssociationRef> getTargetAssocs(NodeRef sourceRef, QNamePattern qnamePattern)
            throws InvalidNodeRefException;
   
    /**
     * Fetches all associations <i>to</i> the given target where the associations'
     * qualified names match the pattern provided.
     *
     * @param targetRef the association target
     * @param qnamePattern the association qname pattern to match against
     * @return Returns a list of
NodeAssocRef
instances for which the
     *      given node is a target
     * @throws InvalidNodeRefException
     *
     * @see QName
     * @see org.alfresco.service.namespace.RegexQNamePattern#MATCH_ALL
     */
    @Auditable(key = Auditable.Key.ARG_0 ,parameters = {"targetRef", "qnamePattern"})
    public List<AssociationRef> getSourceAssocs(NodeRef targetRef, QNamePattern qnamePattern)
            throws InvalidNodeRefException;
bch
Member II

Re: Association : récupération du parent

Non, je n'ai pas essayé ces méthodes mais je me situe dans le cas où je souhaite visualiser mes données à l'aide de Freemarker. Puis-je envisager utiliser un service à partir d'un template (ou d'un javascript pour les web scripts) ?
rguinot
Customer

Re: Association : récupération du parent

Je pense que Java et les méthodes indiquées sont un passage obligé ici avec probablement entre autres un component-generator associé pour visualiser ces liens inversés.
pdubois
Active Member

Re: Association : récupération du parent

Si vous trtavaillez en javascript, il est possible d'étendre l'API:

http://wiki.alfresco.com/wiki/JavaScript_API#Adding_Custom_Script_APIs