cancel
Showing results for 
Search instead for 
Did you mean: 

Nodeservice et nouveaux types

jbaton
Champ in-the-making
Champ in-the-making
Bonjour,

J'ai un nouveau type de données (TD1) qui possède une child-association dont la cible est du type TD2.
TD1 hérite de cm:content et TD2 de sys:base

Est-ce que quelqu'un aurait la bienveillance de m'indiquer la marche à suivre avec NodeService.createNode, j'ai multiplié les essais sans résultat.

Merci
4 REPLIES 4

jbaton
Champ in-the-making
Champ in-the-making
Merci de votre aide,

Je regarde aussi  BaseNodeServiceTest   mais mon adaptation à mon cas ne marche pas.

Je n'ai pas trouvé de page avec les principes de manipulations de noeuds.
par exemple, je vois dans l'explorateur de noeuds  que les associations et les children sont vides.

Je pars dans l'idée qu'il n'est pas nécessaire de créer un noeud qui serait la structure de ma child association mais … je n'en sais rien.

Dans la page  http://wiki.alfresco.com/wiki/Node_Service_API_Design , la méthode addChild pourrait remplir mon besoin
mais comment créer un noeud (correspondant au parametre childRef) sans passer par createNode ?

Bref, je suis à la recherche de code au plus proche de mon modèle.


Mon contexte est un customisation du client web aussi, je trouverais dommage d'utiliser les web services auxquels je suis plus habitué.

rivarola
Champ on-the-rise
Champ on-the-rise
Bonjour,

En supposant que tu as déjà défini dans ton model custom une child association portée par ton type héritier de cm:content (ou un aspect que tu colles dessus) :

        // parent est le NodeRef du noeud parent
        // assocQName est le QName de ta child association
        // filename est le nom que tu peux donner à l'instance d'association que tu crées
        // (tu peux mettre un nom bidon si tu as un seul fils et que ce nom n'est pas significatif)
        // childProps est optionnel (Map<QName, Serializable) contenant les propriétés du noeud fils
        ChildAssociationRef assoc = nodeService.createNode(parent, assocQName, QName.createQName(assocQName
            .getNamespaceURI(), filename), ContentModel.TYPE_BASE, childProps);
        NodeRef child = assoc.getChildRef();

jbaton
Champ in-the-making
Champ in-the-making
Merci beaucoup de votre aide.

Suite à votre conseil, j'ai adapté le code ci-dessus à mon modèle (en donnant le QName de mon TD2 en tant que 4e argument).  
Cela ne marchait pas.
J'ai obtenu une erreur  java.util.regex.PatternSyntaxException: Illegal repetition

Une recherche sur les forums français et anglais me donne cette page http://forums.alfresco.com/viewtopic.php?f=4&t=5053&p=15870&hilit=Illegal+repetition#p15870
dont la conclusion est que la vérification de la valeur de l'élément role (de target) est buggée.
Il faut mettre un QName en argument mais les accolades ne correspondent pas à une expression régulière utilisée.

Un truc sympathique et bien caché à faire perdre des jours, en fait.

Donc, j'ai enlevé cet élément role de mon modele et le code fonctionne.

Voici donc un nouveau commandement sous forme d'homophonie  PAS DE ROLE  !   :lol:

Merci encore de votre aide.