Dépacler un fichier depuis un workflow complexe

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

Dépacler un fichier depuis un workflow complexe

Bonjour,

Je voulais savoir comment on pouvait accéder à toutes les actions Alfresco proposées dans les workflows simples depuis les workflows complexes. C'est à dire, comment déplacer un contenu vers un autre répertoire, ajouter ou supprimer un aspect, une catégorie… En fait je cherche une page qui récapitulerais toutes ces fonctions. J'ai vu dans l'exemple lifecycle que l'on peut ajouter un aspect grâce à une action contenant un script :

            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <!– Apply the Workflow Lifecycle Aspect (wfl:status) if not set already. Note: The default wfl:status property is draft –>
                <script>
                    for (var i = 0; i &lt; bpm_package.children.length; i++)
                    {
                       if (!bpm_package.children[i].hasAspect("wfl:status"))
                       {
                          bpm_package.children[i].addAspect("wfl:status");
                       }
                    }
                </script>
            </action>
J'avoue que je ne comprends pas cette syntaxe. Ici .children fait référence au fichier(s) associée(s) au process ? Je ne connais pas le javascript donc toute explication serait la bienvenue.

Je me demandais également s'il existait quelque chose qui permette d'obtenir le même résultat depuis une classe Java implémentant l'iterface ActionHandler?

J'ai consulté la page "3.3 JavaScript API" du wiki, mais je n'ai pas compris grand chose … Si quelqu'un à des liens vers des pages pour débuter, je prends  Smiley Tongue .

Merci d'avance,
3 Replies
katell
Member II

Re: Dépacler un fichier depuis un workflow complexe

Bonjour,

Mon premier message mérite peut-être d'être recadrer et l'ajout de quelques précisions. Je cherche simplement à comprendre comment s'utilise l'API javascript d'alfresco. La page du forum 3.3 JavaScript API est surement très complète, mais n'est pas facile à comprendre pour quelqu'un qui ne connait rien au javascript, ce qui est malheureusement mon cas.
Quelqu'un peut-il par exemple m'explique pourquoi le code suivant génère une erreur quand il est utiliser dans une action "execute srcipt". (J'ai creer un espace "Left" au chemin suivant Compagny Home / SomeCo / Left )


var myLeftNode = search.findNode("Left");
if(myLeftNode != null)
{
   document.move(myLeftNode);   
}

Je ne comprends pas comment on se déplace dans les espace grace à l'api, faut-il seulement entre le nom de l'espace, et alfresco parse tout l'espace racine à la recherche d'un sous-espace portant le nom indiqué, ou spécifier un path, si il faut spécifier un path comment le fait-on?

La notion de document est aussi un peu floue pour moi. Si je fait "Run action" -> "Execute script" et que je souhaite déplacer le document  lambda.xml sur lequel je démarre l'action à l'intérieur de mon script, document est bien une référence sur  lambda.xml ? Peut-on également utiliser document.AddAspect() pour ajouter un aspect à  lambda.xml ?

Que signifie alors la notion children issue du bmp_package de mon précédent message?

Je suis vraiment perdue, alors toute réponse sera la bienvenue. Merci
bertrandf
Active Member

Re: Dépacler un fichier depuis un workflow complexe

Bonjour,
Je ne comprends pas comment on se déplace dans les espace grace à l'api, faut-il seulement entre le nom de l'espace, et alfresco parse tout l'espace racine à la recherche d'un sous-espace portant le nom indiqué, ou spécifier un path, si il faut spécifier un path comment le fait-on?
Vous n'utilisez pas correctement la méthode findNode :
Il faut lui passer en paramètre un nodeRef (identifiant unique du nœud) et non une chaine de caractère quelconque.
Par exemple :
search.findNode("workspace://SpacesStore/49f47253-ab83-4aad-b81e-f23ce5f4fd8a");

Si vous voulez faire une recherche, il faut utiliser l'API Search.
Les méthodes les plus utilisées sont luceneSearch et xpathSearch
Cela vous permet de chercher sur l'ensemble du repository mais on peut cependant restreindre les recherches à des espaces précis (ou d'autres critères), je vous conseille de jeter un œil ici => http://wiki.alfresco.com/wiki/Search

Vous pouvez également faire une recherche à partir d'un nœud précis, cf http://wiki.alfresco.com/wiki/3.3_JavaScript_API#ScriptNode_API :
Node childByNamePath (string path)
var testingFolder = userhome.childByNamePath("QA/Performance/Testing");

Array childrenByXPath (string xpath)
var nodes = userhome.childrenByXPath("*[@cm:name='Finance Documents']/*"); 

Dans votre cas, vous pourriez récupérer votre espace "Left" de cette façon :
var leftFolder = companyhome.childByNamePath("SomeCo/Left");
// Récupération des noeuds enfants
var children = leftFolder.children;

La notion de document est aussi un peu floue pour moi. Si je fait "Run action" -> "Execute script" et que je souhaite déplacer le document lambda.xml sur lequel je démarre l'action à l'intérieur de mon script, document est bien une référence sur lambda.xml ? Peut-on également utiliser document.AddAspect() pour ajouter un aspect à lambda.xml ?
Oui, document pointe vers le document courant. Document étant un nœud, il est tout à fait possible de lui ajouter un aspect en utilisant la méthode AddAspect.
http://wiki.alfresco.com/wiki/3.3_JavaScript_API#Modifying_and_Creating_API


Que signifie alors la notion children issue du bmp_package de mon précédent message?
children permet de récupérer les nœuds enfants d'un nœud. Par exemple, si vous êtes sur un esapce, children va vous retourner l'ensemble des nœuds enfants de cet espace (espaces et documents confondus).

children : A readonly JavaScript Array of the child nodes. For example mynode.children[0].

bmp_package.children permet de récupérer le(s) nœud(s) rattaché(s) à votre workflow, ca vous renvoie un tableau de nœuds.
Par exemple, s'il y a 3 fichiers rattachés au workflow, bmp_package.children.length vaudra 3 et pour récupérer le 2ème fichier, il faudra faire :
bmp_package.children[1];


En espérant vous avoir éclairci les idées.
katell
Member II

Re: Dépacler un fichier depuis un workflow complexe

Merci pour cette réponse. Elle m'a en effet sérieusement éclaircie les idées.  Smiley Tongue