Interagire mediante Web Services con Alfresco
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-11-2010 11:12 AM
ciao a tutti
dopo aver installato la sdk (in eclipse) di alfresco ho "consumato" gli esempi dell'SDKWebServiceSample (mi sembra di aver intuito che la mia installazione locale di alfresco funge da WS server, poichè le richieste le genera il mio IDE), così mi è venuto in mente di fare questa cosa: costruire un mio client webservice in modo da interagire con il WS server di alfresco.
quello che dovrei fare è:
1- passare tramite il WS un documento ad Alfresco (per farlo utilizzerei il metodo addObjectToFolder esposto dal MultiFilingServicePort)
2- inserire delle custom Aspects che ho già creato che aggiungo tramite una l'action "add aspect to item" una volta che il documento viene "uploadato" nella cartella di alfresco [ ma questo lo so fare!]
3- aggiornare tramite il WS i campi delle custom aspects passandogli dei valori che voglio io (per farlo utilizzerei il metodo updateProperties esposto dall'ObjectServicePort)
Dato che il punto 2 l'ho già implementato, vorrei sapere se qualcuno sa dirmi se ho individuato i metodi giusti per implementare i punti 1 e 3.
grazie a quanti vorranno rispondere
dopo aver installato la sdk (in eclipse) di alfresco ho "consumato" gli esempi dell'SDKWebServiceSample (mi sembra di aver intuito che la mia installazione locale di alfresco funge da WS server, poichè le richieste le genera il mio IDE), così mi è venuto in mente di fare questa cosa: costruire un mio client webservice in modo da interagire con il WS server di alfresco.
quello che dovrei fare è:
1- passare tramite il WS un documento ad Alfresco (per farlo utilizzerei il metodo addObjectToFolder esposto dal MultiFilingServicePort)
2- inserire delle custom Aspects che ho già creato che aggiungo tramite una l'action "add aspect to item" una volta che il documento viene "uploadato" nella cartella di alfresco [ ma questo lo so fare!]
3- aggiornare tramite il WS i campi delle custom aspects passandogli dei valori che voglio io (per farlo utilizzerei il metodo updateProperties esposto dall'ObjectServicePort)
Dato che il punto 2 l'ho già implementato, vorrei sapere se qualcuno sa dirmi se ho individuato i metodi giusti per implementare i punti 1 e 3.
grazie a quanti vorranno rispondere
Labels:
- Labels:
-
Archive
6 REPLIES 6
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-12-2010 05:37 AM
Non si capisce se stai facendo riferimento alla Web Services API di Alfresco oppure alla CMIS WS API esposta da Alfresco.
L'esempio che trovi nella SDK è relativo alla Web Services API.
Quando parli di MultiFilingService invece stai parlando della CMIS WS API che è un'interfaccia molto differente basata sullo standard CMIS.
L'esempio che trovi nella SDK è relativo alla Web Services API.
Quando parli di MultiFilingService invece stai parlando della CMIS WS API che è un'interfaccia molto differente basata sullo standard CMIS.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-12-2010 05:50 AM
Scusa se sono stato impreciso, ma non sono un grande esperto di informatica
ops: e solo da febbraio sto smanettando su Alfresco;
non sto parlando delle Web Services API di alfresco che trovo nell'SDK, ma delle CMIS WS API esposte da Alfresco (quelle che sto tentando di consumare attraverso soapUI, senza riuscirci benissimo); combinando le CMIS WS API con uno script javascript (da applicare come business rule una volta che il documento è stato caricato) vorrei realizzare un sistema che immagazzina documenti e inserisce i metadati che gli passo io.
Ho citato le Web Services API dell'SDK solo per dire che, analizzando come funzionano quegli esempi, ho capito che Alfresco funge da WS server, per cui dovrebbe essere possibile "interrogarlo" con un qualsiasi client WS esterno.

non sto parlando delle Web Services API di alfresco che trovo nell'SDK, ma delle CMIS WS API esposte da Alfresco (quelle che sto tentando di consumare attraverso soapUI, senza riuscirci benissimo); combinando le CMIS WS API con uno script javascript (da applicare come business rule una volta che il documento è stato caricato) vorrei realizzare un sistema che immagazzina documenti e inserisce i metadati che gli passo io.
Ho citato le Web Services API dell'SDK solo per dire che, analizzando come funzionano quegli esempi, ho capito che Alfresco funge da WS server, per cui dovrebbe essere possibile "interrogarlo" con un qualsiasi client WS esterno.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-12-2010 06:08 AM
In ogni caso tutti e 3 i punti sono implementabili utilizzando la CMIS WS API senza usare rules, se vuoi

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-12-2010 06:29 AM
In ogni caso tutti e 3 i punti sono implementabili utilizzando la CMIS WS API senza usare rules, se vuoi
per favore, potresti aiutarmi facendomi vedere un esempio?

ma è possibile fare tutto con una sola request?
io avevo pensato di creare una soap envelope che facesse tutto,tipo una cosa del genere:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header/> <soapenv:Body> qualcosa che esegua una startsession (che penso sia necessaria), i punti 1 2 e 3 , in fine la chiusura della sessione </soapenv:Body></soapenv:Envelope>
ma non ho ben chiaro come fare; soprattutto mi sfugge quale sia la sequenza delle azioni, tipo: loggarsi per avere il token, inserire il token nelle richieste, ecc…
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-12-2010 10:42 AM
c'è percaso un WSDL che espone i servizi per aggiungere le custom aspects (quelle che ho già definito e che riesco ad aggiungere con le business rules) e per inserirne i valori? io ho trovato solo questi
http://localhost:8080/alfresco/cmis
http://localhost:8080/alfresco/wsdl/authentication-service.wsdl
grazie
http://localhost:8080/alfresco/cmis
http://localhost:8080/alfresco/wsdl/authentication-service.wsdl
grazie
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-17-2010 12:42 PM

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:ns1="http://docs.oasis-open.org/ns/cmis/core/200908/"> <soapenv:Header/> <soapenv:Body> <ns:updateProperties> <ns:repositoryId>a4232886-7977-4350-9f6e-084b25249906</ns:repositoryId> <ns:objectId>workspace://SpacesStore/a5c54fb3-2e9b-4eb0-957b-7063b7ea801c</ns:objectId> <ns:properties> <!–You have a CHOICE of the next 8 items at this level–> <ns1:propertyId propertyDefinitionId="custom:PROPRIETA" localName="?" displayName="?" queryName="?"> <!–Zero or more repetitions:–> <ns1:value>VALORE_CHE_VOGLIO_PASSARE</ns1:value> </ns1:propertyId> . . . </ns:properties> </ns:updateProperties> </soapenv:Body></soapenv:Envelope>
In questo modo nei dettagli dell'oggetto in questione appare la proprietà che ho indicato con il valore che gli ho passato; Stando così le cose, adesso sono in grado di eseguire i punti 2 e 3 del mio progetto; quello che mi resta è creare il documento in uno space di alfresco attraverso le CMIS WS API.
Per farlo ho provato ad utilizzare il metodo createDocumentFromSource; tuttavia questo metodo, nel campo sourceId richiede l'id del file che rappresenta la "sorgente"; se lo riempio con l'Alfresco Node Reference (presente nella pagina dei dettagli del file) di un oggetto che già si trova in un altro space di alfresco (ovviamente diverso dallo space di destinazione) il tutto funziona (cioè nello space di destinazione mi crea un file uguale al file presente nello space sorgente);
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns:ns1="http://docs.oasis-open.org/ns/cmis/core/200908/"> <soapenv:Header/> <soapenv:Body> <ns:createDocumentFromSource> <ns:repositoryId>a4232886-7977-4350-9f6e-084b25249906</ns:repositoryId> <ns:sourceId>workspace://SpacesStore/9973fbfa-8146-4b83-b460-80824ed18292</ns:sourceId> . . . <ns:folderId>workspace://SpacesStore/9a0b34b2-4f11-4a2b-8b21-51240ff3527c</ns:folderId> . . . </ns:createDocumentFromSource> </soapenv:Body></soapenv:Envelope>
tuttavia io vorrei caricare il file nello space di destinazione prendendolo da una cartella sul mio computer (ad esempio C:\Users\Valerio\Documents\cartella di prova\prova.pdf), in tale caso come riempire il campo sourceId? Se qualcuno può darmi un suggerimento mi farebbe un grande favore.
grazie a chi vorrà contribuire
