Scrittura documenti su sottospazio tramite webservices

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

Scrittura documenti su sottospazio tramite webservices

Tramite Alfreso Explorer ho definito uno spazio di nome "miospazio" e, all'interno di questo, ho definito un ulteriore spazio di nome "sottospazio".

Tramite web-services sono riuscito a scrivere un file all'interno di "miospazio" tramite la path contenuta in questa riga:

ParentReference companyHomeParent = new ParentReference(storeRef, null, "/app:company_home/cm:miospazio", Constants.ASSOC_CONTAINS, null);

Se cerco di inserire un doocumento nel sottospazio con la riga sottostante mi viene generato un errore del tipo "path non trovata":

ParentReference companyHomeParent = new ParentReference(storeRef, null, "/app:company_home/cm:miospazio/cm=sottospazio", Constants.ASSOC_CONTAINS, null);

Con quale sintassi devo referenziare la path per inserire il documento nel sottospazio?

Grazie
2 Replies
openpj
Moderator
Moderator

Re: Scrittura documenti su sottospazio tramite webservices

Devi codificare nel formato ISO9075 il nome del sottospazio, questo perché Alfresco memorizza la struttura del primary path utilizzando lo standard XPath:

String destinationPath = "/app:company_home/cm:"+ISO9075.encode("miospazio");
ParentReference companyHomeParent = new ParentReference(storeRef, null, destinationPath, Constants.ASSOC_CONTAINS, null);
Spero ti sia utile.
phil
Member II

Re: Scrittura documenti su sottospazio tramite webservices

Grazie per la tua sollecita risposta, ma mi pare di capire che il mio problema sia un altro: se effettuo l'inserimento dello spazio (o del sottospazio) tramite Alfresco Explorer, allora il caricamento del file tramite web-service mi funziona, mentre se il caricamento dello spazio lo effettuo da web-service (da Alfresco Explorer vedo il sottospazio caricato da web-service), mi viene generato il seguente errore:

Failed to resolve to a single NodeRef with parameters (store=workspaceSmiley FrustratedpacesStore uuid=null path=/app:company_home/cm:spaziows), found 0 nodes.

Di seguito riporto il codice utilizzato:


CODICE PER CREARE SPAZIO:

      String alfrescoWsUrl = "http://localhost:8080/alfresco/api";
      WebServiceFactory.setEndpointAddress(alfrescoWsUrl);
      AuthenticationUtils.startSession("admin", "alfresco");

      Store storeReference = new Store(Constants.WORKSPACE_STORE, "SpacesStore");
      ParentReference parentReference = new ParentReference(storeReference, null, "/app:company_home", Constants.ASSOC_CONTAINS, Constants.createQNameString(Constants.NAMESPACE_CONTENT_MODEL, "sample_folder"));
      NamedValue[] properties = new NamedValue[]
         { Utils.createNamedValue(Constants.PROP_NAME, ISO9075.encode("spaziows")) };
      CMLCreate create = new CMLCreate("1", parentReference, null, null, null, Constants.TYPE_FOLDER, properties);
      CML cml = new CML();
      cml.setCreate(new CMLCreate[]
         { create });
      UpdateResult[] results = WebServiceFactory.getRepositoryService().update(cml);



CODICE PER INSERIRE FILE:

      String alfrescoWsUrl = "http://localhost:8080/alfresco/api";
      WebServiceFactory.setEndpointAddress(alfrescoWsUrl);
      AuthenticationUtils.startSession("admin", "alfresco");

      String path = "c:/immagine.jpg";
      String fileName = "immagine.jpg";

      Store storeRef = new Store(Constants.WORKSPACE_STORE, "SpacesStore");
      
      String destinationPath = "/app:company_home/cm:"+ISO9075.encode("spaziows");
      ParentReference companyHomeParent = new ParentReference(storeRef, null, destinationPath, Constants.ASSOC_CONTAINS, null);

      RepositoryServiceSoapBindingStub repositoryService = WebServiceFactory.getRepositoryService();
      ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService();
      NamedValue[] contentProps = new NamedValue[1];
      NamedValue[] titledProps = new NamedValue[2];

      companyHomeParent.setChildName("{http://www.alfresco.org/model/content/1.0}" + fileName);

      contentProps[0] = Utils.createNamedValue(Constants.PROP_NAME, fileName);
      titledProps[0] = Utils.createNamedValue(Constants.PROP_TITLE, "aaaaaaaaa");
      titledProps[1] = Utils.createNamedValue(Constants.PROP_DESCRIPTION, "bbbbbbbbb");
      CMLAddAspect addAspect = new CMLAddAspect(Constants.ASPECT_TITLED, titledProps, null, "1");

      CMLCreate create = new CMLCreate("1", companyHomeParent, companyHomeParent.getUuid(), Constants.ASSOC_CONTAINS, null, Constants.PROP_CONTENT, contentProps);
      CML cml = new CML();
      cml.setCreate(new CMLCreate[]
         { create });
      cml.setAddAspect(new CMLAddAspect[]
         { addAspect });
      UpdateResult[] result = repositoryService.update(cml);