cancel
Showing results for 
Search instead for 
Did you mean: 

Import fichiers et des propriétés

hlander10
Champ in-the-making
Champ in-the-making
Bonjour,

Je recherche la meilleur solution pour Importer une très grosse quantité de fichiers avec le propriété qui sont pour l'instant dans une base de données.

J'ai vu ACP et autres mais j'ai pas encore trop compris si vous avez des idées ou mieux si vous avez été amené a faire la même chose je suis preneur.

Merci
9 REPLIES 9

hlander10
Champ in-the-making
Champ in-the-making
personne n'a eu a faire ça, j'ai du mal a l'imaginer…….

Vos utilisateurs ils saisissent leurs propriétés directement dans alfresco, vous vez pas de lien avec votre SI.

alexist
Champ in-the-making
Champ in-the-making
Il faut faire un export de ta ged existante (les fichiers + les meta-données)
Lancer un traitement dans alfresco qui va recréer les fichiers en utilisant l'API   alfresco.
Le traitement peut etre une action dans l'interface web par exemple.

hlander10
Champ in-the-making
Champ in-the-making
J'ai bien récupérer le SDK d'alfresco, c'est bien la même chose –> non

il me semblait qu'on pouvait le faire avec des fichier csv

lme
Champ in-the-making
Champ in-the-making
il me semblait qu'on pouvait le faire avec des fichier csv

Tu fais sûrement référence au projet ACPGeneratr.

hlander10
Champ in-the-making
Champ in-the-making
j'ai vu ACPGeneratr. en effet mais je ne sais pas si c'est la meilleur façon de faire.

Je suis surpris qu'alfresco ne propose pas un format d'import xml ou autres, car on peut vouloir le coupler a un scanner ou a une LDAP ou un OCR bref plusieurs traitement qui produisent une image et des méta donnée, mais comment les intégrer dans alfresco.

Alfresco n'est pas prévu également pour faire de la saisie de masse.

J'ai une appli destiné a cette usage, donc il me reste a intégrer

michelf
Champ in-the-making
Champ in-the-making
Nous avons été confronté au même besoin :wink: (très courant au demeurant) et nous avons donc développé un injecteur sur la base des exemples fournis dans le SDK. Nous avons retenu le mode webservice qui nous permet d'injecter "à distance" ce qui est utile dans le cas d'un serveur de production dont l'accès est difficile à obtenir !!! Les performances de ce mode sont correctes en local, mais se dégradent fortement à travers le réseau (jusqu'à plusieurs secondes par document !!!)
Nous cherchons donc un moyen plus efficace mais sans se lier trop fortement à une installation sur serveur.
En cours d'étude : le client de benchmark sur la 2.9 … à suivre

hlander10
Champ in-the-making
Champ in-the-making
Merci pour cette précision, pourriez vous juste m'indiquer le ou les exemples du SDK qui vous ont été util.

Merci

hlander10
Champ in-the-making
Champ in-the-making
une dernière précision vous utilisez ACP ou non

michelf
Champ in-the-making
Champ in-the-making
Bonjour, nous avons utilisé l'exemple "SDK WebServiceSamples" et voici le code modifié (AddFile et AddContent sont spécifiques à notre usage) :


   public Reference GestObject(Reference objTarget, String objType, List<NamedValue> objProperties) {// throws Exception
      return GestObject(objTarget.getPath(), objType, objProperties);
   }

   public Reference GestObject(String objTarget, String objType, List<NamedValue> objProperties) {
      String objName = getProperty(getQName("cm:name"), objProperties);   //Constants.PROP_NAME
      if (objName == null || objName.equals("")) {
         System.out.println("ERROR - '" + getQName("cm:name") + "' must be set in object properties");
         return null;
      }
      
      try {
            // Check to see if the object has already been created or not
            String Path = objTarget + "/*[@cm:name=\"" + objName + "\"]";
         Reference objRef = new Reference(STORE, null, Path);
            //System.out.println("Path : " + Path);
            Node[] results = WebServiceFactory.getRepositoryService().get(new Predicate(new Reference[]{objRef}, STORE, null));
            System.out.println("Object yet created");
          return results[0].getReference();
        } catch (Exception e) {
          // Create parent reference to company home
          ParentReference parentReference = new ParentReference(
                STORE,
                null,
                objTarget,
                Constants.ASSOC_CONTAINS,
                Constants.createQNameString(Constants.NAMESPACE_CONTENT_MODEL, objName));

          // Create object
          CMLCreate create = new CMLCreate("1", parentReference, null, null, null, objType, (NamedValue[])objProperties.toArray(new NamedValue[objProperties.size()]));
          CML cml = new CML();
          cml.setCreate(new CMLCreate[]{create});
          try {
             UpdateResult[] results = WebServiceFactory.getRepositoryService().update(cml);      
              System.out.println("Object created");
              return results[0].getDestination();
          } catch (Exception e2) {
              System.out.println("ERROR - creating object : objType = '" + objType + "'");
              e2.printStackTrace();
              return null;
          }
       }
    }
   
    public Reference AddContent(Reference objRef, String docContent) {
      try {
         char in = 0x19;
         char out = 0x20;
         docContent = docContent.replace(in, out);

          // Define the content format for the content we are adding
          ContentFormat contentFormat = new ContentFormat("text/html", "ISO-8859-1");
      
          // Get the content service
          ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService();
             // Write the content
          Content content = contentService.write(objRef, Constants.PROP_CONTENT, docContent.getBytes(), contentFormat);
         
          // Get a reference to the newly created content
          return content.getNode();
      } catch (Exception e) {
          System.out.println("ERROR - add content to node");
          return null;
      }
   }   
   
    public Reference AddFile(Reference objRef, String imageName) {
      try {
         //take the 3 last letter of the imageName to have the extension
         StringBuilder sb = new StringBuilder(imageName);
         String extension = sb.substring(imageName.length()-3, imageName.length());

         // Create the format
         //ContentFormat format = new ContentFormat("image/"+extension, "UTF-8"); 
         ContentFormat format = new ContentFormat((extension == "xls" ? "application/excel" : (extension == "doc" ? "application/msword" : "image/"+extension)), "UTF-8");

         // Open the file and convert to byte array
         File ffile = new File(imageName);
         FileInputStream fis = new FileInputStream(ffile);          
         byte[] bytes = ContentUtils.convertToByteArray(fis);
         fis.close();

         // Get the content service
         ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService();
         // Write the content
         Content content = contentService.write(objRef, Constants.PROP_CONTENT, bytes, format);

          // Get a reference to the newly created content
          return content.getNode();
      } catch (Exception e) {
          System.out.println("ERROR - add file");
          e.printStackTrace();
          return null;
      }
   }   

Concernant ACP, nous ne l'utilisons pas pour faire de l'import mais pour échanger des données entre plusieurs référentiels (attention cependant aux liens dans les contenus HTML qui ne sont pas transformés par ACP).