cancel
Showing results for 
Search instead for 
Did you mean: 

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

amidon
Champ in-the-making
Champ in-the-making
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 6

alexist
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
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
Champ in-the-making
Champ in-the-making
Après réflexion, une question d'odre conceptuel m'interpelle. Pourquoi faut il explicitement sauver le chan gement de nom (object.save():smileywink: 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.