Creation dynamique d'espaces

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

Creation dynamique d'espaces

Bonjour,

Nous testons actuellement alfresco dans mon entreprise, voila l'idee:
Les factures sont générées en PDF sur un serveur avec comme nom: codesociete(2 caracteres)compteclient(8 caracteres)typedocument(3 caracteres).pdf  exemple: 5408526586FAC.pdf
Sur le serveur alfresco en 3.2 community j'ai cree un espace "import" puis cree des actions comme: Si 54*FAC.pdf alors je deplace vers l'espace: Factures/Société 54/5408526586FAC.pdf  cela fonctionne tres bien, mais je souhaite en plus pouvoir cree un espace par client de maniere dynamique en recuperant dans le nom du fichier les 8 caracteres, ainsi je pourrais avoir : Factures/Société 54/08526586/5408526586FAC.pdf
Mais je ne vois pas comment realiser cette operation, pourriez vous me guider ??

Merci
4 Replies
bertrandf
Active Member

Re: Creation dynamique d'espaces

Bonjour,
Une idée serait de créer une règle (qui exécute un script) sur votre space "import" qui analyse le fichier et le copie dans le répertoire souhaité (Factures/Société 54/08526586/5408526586FAC.pdf).

En gros la démarche serait :
1- Récupérer le nom du fichier
2- Traiter ce nom afin de récupérer le code société, le code client, …
3- Ensuite créer les spaces où il faut, à l'aide de l'API JavaScript
4- Envoyer le fichier dans ce space
bertrandf
Active Member

Re: Creation dynamique d'espaces

Voici à quoi pourrait ressembler le script :
try
{
   if(!document.isContainer){
      //Récupération du nom du document
      var nomDocument = document.properties.name;
     
      //Traitement du nom du document
      var codesociete = nomDocument.substring(0,2);
      var compteclient = nomDocument.substring(2,10);
      var typedocument = nomDocument.substring(10,nomDocument.length-4);  //nomDocument.length-4 pour retirer ".pdf"

      //On récupere le noeud facture (présent à la racine du companyhome)
      var nodeDossierFactures = companyhome.childByNamePath("Factures");
     
      if (nodeDossierFactures != null){
         
         var nodeSociete = nodeDossierFactures.childByNamePath("Societe "+codesociete); //Test si le space existe
         if(nodeSociete == null){
            //On créé le dossier Société n°XX s'il n'existe pas
            nodeSociete = nodeDossierFactures.createFolder("Societe "+codesociete);        
         }
        
         var nodeCompteClient = nodeSociete.childByNamePath(compteclient); //Test si le space existe
         if(nodeCompteClient == null) {
            //On créé le dossier compteclient s'il n'existe pas
            nodeCompteClient = nodeSociete.createFolder(compteclient);
         }
        
         //On déplace le fichier
         document.move(nodeCompteClient);
      }
   }
}
catch(exception)
{
   throw exception;
}

Ce script part du principe que votre space "Factures" est présent dans votre companyHome.
Le script analyse le fichier importé dans le space "import", créé les spaces nécessaires (s'il le faut) et déplace le fichier ou il faut .

Pour utiliser ce script, il vous suffit de copier ce code dans un fichier JavaScript et placer ce script dans Company Home > Data Dictionary > Scripts.
Ensuite dans votre space "import", il faut créer une règle "execute a script" et sélectionner le script dans la liste.

/!\ Le fait que le document puisse déjà exister dans le space de destination n'est pas testé.
calamarz
Member II

Re: Creation dynamique d'espaces

Un grand grand merci !!! cela fonctionne parfaitement !!!
sanalfresco
Member II

Re: Creation dynamique d'espaces

Dsl de vous deranger, deja merci pour le grand nombres de question :

J'aimerais bien s'avoir si il existe une autre methode move qui permetrait non seulement de deplacer le node mes surtout le document, car en executant ce javascript le fichier reste dans le repertoir d'origine et admet a present un lien dans le nouveau repertoir (copie de node mes pas de fichier).

En vous remerciant par avance, Sanpas.