Après exploration de l'API Javascript, j'ai ajouté...

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

Après exploration de l'API Javascript, j'ai ajouté...

Bonjour,

Après exploration de l'API Javascript, j'ai ajouté une action dans Alfresco qui fait appel à un script Javascript. Ce script est chargé d'écraser un espace (remplacer un espace par un autre espace de même nom). Ce script fait donc appel à la fonction remove(), qui est sensée détruire l'espace. Le problème survient quand je recrée l'espace (de même nom). EN effet, à ce stade, Alfresco stoppe l'exécution du script, et m'informe que le noeud que j'essaye de créer existe. Or, je viens de l'effacer…

Ce comportement ne me semble pas tout à fait normal, c'est comme si Alfresco gardait une trace mémoire des noeuds, et ce jusqu'à la fin de l'exécution du script.

Quelqu'un a t il rencontré un problème similmaire, et existe t il une solution ?

Merci d'avance de votre aide.
6 Replies
alexist
Member II

Re: Après exploration de l'API Javascript, j'ai ajouté...

Tu veux dire que si le script contient uniquement la suppression, l'espace est bien supprimé. C'est a partir du moment ou tu ajoutes la re-création du nouvel espace que ça plante. C'est ca ?

C'est comme si ton script utilisait 2 transactions différentes…. tu peux poster ton javascript et eventuellement la log d'erreur ?
amidon
Member II

Re: Après exploration de l'API Javascript, j'ai ajouté...

Bonjour,

Pour le script, voici un échantillon du code correspondant :


Partons du principe que la variabla path soit le chemin qui pointe vers un noeud existant et valide.

var espace = companyhome.childByNamePath(path);
espace.remove();
var espace2 = companyhome.createFolder(path);
Cette séquence de script donnera lieu à la levée de cette exception :
"DuplicateChildNodeNameException"
Je précise par ailleurs la version d'ALfresco utilisée : 2.0

Si ces quelques éléments vous mettent sur une quelconque voie… Sinon, j'essayerai d'être plus précis.

Encore merci d'avance.
alexist
Member II

Re: Après exploration de l'API Javascript, j'ai ajouté...

As tu essayé d'implementer ca avec une action-executer en Java plutot q'un javascript ?
tu peux t'inspirer de move :
    <bean id="move" class="org.alfresco.repo.action.executer.MoveActionExecuter" parent="action-executer">
        <property name="nodeService">
            <ref bean="NodeService" />
        </property>
    </bean>
Ton action sera alors disponible dans "run action…." sur l'interface web
amidon
Member II

Re: Après exploration de l'API Javascript, j'ai ajouté...

Bonjour,

Je dois avouer que je n'ai pas essayé d'implémenter une action-executer en Java. Cette voie semble intéressante, mais décalée par rapport au résultat que je souhaite obtenir. Le script est déjà appelé par une action customisée à partit de l'interface web d'Alfresco.

D'une façon générale, Alfresco ne tolère pas 2 objets de même nom dans un même espace. En fouillant la doc javascript, il s'avère que le changement de nom d'un objet à partir d'un script nécessite une validation explicite ( object.save(); ), à l'inverse des modification de contenu qui sont prises en compte immédiatement . Est il possible que la suppression d'un élément ne soit prise en compte effectivement qu'à la fin de l'exécution du script ? Et dans ce cas, comment faire pour la rendre immédiate ?

Encore une fois, merci d'avance.
alexist
Member II

Re: Après exploration de l'API Javascript, j'ai ajouté...

Tu peux aussi implementer une action customisé en Java. Cette action peut se lancer depuis l'interface web. C'est peut-etre la solution.
Pour ce qui est du javascript, je ne connais pas assez pour t'aider.
amidon
Member II

Re: Après exploration de l'API Javascript, j'ai ajouté...

Après réflexion, une question d'odre conceptuel m'interpelle. Pourquoi faut il explicitement sauver le chan gement de nom (object.save()Smiley Wink lorsqu'oon le modifie, alors que le changement de contenu est lui immédiat…

Faut il de la même façon sauver les espaces lorsqu'on y modifie un élément ?

Quelqu'un peut il apporter un simuli de réponse ? Je rappelle que mon interrogation porte essentiellement sur l'API Javascript.

Merci d'avance.