cancel
Showing results for 
Search instead for 
Did you mean: 

Creazione workflow e chiamate a webscripts

davidedge
Champ in-the-making
Champ in-the-making
Ciao a tutti,
sono un nuovo utente del forum e un novello di Alfresco.Sto facendo la tesi e devo implementare un nuovo workflow di sana pianta. La funzione centrale del wf è la ricerca di documenti tramite tag: mi sono addentrato nella letteratura e alla fine ho scoperto che esiste un Webscript che fa questo (lista in …/alfresco/service).
A questo punto devo capire come invocare tale webscript all'interno del mio wf(in particolare all'interno di un service task). A quanto ho capito posso farlo con qualsiasi linguaggio che permette di invocare chiamate http: java, javascript, PHP,…
Qualcuno mi potrebbe fare un esempio di come posso fare?

<serviceTask id="alfrescoScripttask1" name="fornisce elenco aziende" activiti:class="org.springframework.extensions.webscripts.DeclarativeWebScript">
      <extensionElements>
         ?????
      </extensionElements>
</serviceTask>


Cosa devo inserire? Il valore dell'attributo class è il percorso che ho trovato relativo al webscript.E' giusto?
Software utilizzato: Alfresco Community Edition 4.2.d, Activiti.
Grazie a tutti e scusate per la banalità.
4 REPLIES 4

openpj
Elite Collaborator
Elite Collaborator
Non serve invocare un webscript per invocare una ricerca all'interno di Alfresco, in questo modo non fai altro che proliferare richieste HTTP sull'application server.

All'interno della definizione di workflow puoi invocare direttamente la JavaScript API di Alfresco per poter invocare la ricerca localmente senza arrivare in HTTP.

Puoi invocare l'esecuzione della JavaScript API di Alfresco ad esempio in un sequence flow in questo modo:


<sequenceFlow id="flow1" name="" sourceRef="startevent1" targetRef="usertask1">
      <extensionElements>
        <activiti:executionListener event="start" class="org.alfresco.repo.workflow.activiti.listener.ScriptExecutionListener">
          <activiti:field name="script">
            <activiti:string>

//imposti una query del tipo Tag
var luceneTagQuery = "PATH:"/cm:categoryRoot/cm:generalclassifiable/cm:Languages/cm:English/member\"";

//esegui la query all'interno del repository
var results = search.luceneSearch(luceneTagQuery);

//cicli i risultati
for(var i=0;i<results.length;i++){
    var node = results;

    //qui fai tutto quello che ti serve sui risultati della ricerca
    node.properties["cm:title"] = "myNewTitle";
    node.save()
}

</activiti:string>
          </activiti:field>
        </activiti:executionListener>
      </extensionElements>
    </sequenceFlow>


Spero ti sia utile Smiley Happy

davidedge
Champ in-the-making
Champ in-the-making
Grazie della risposta.
Allora ti spiego meglio la mia situazione.E' stata progettata una piattaforma centrata su Alfresco con lo scopo di automattizare i processi di collaborazione tra varie aziende. Il mio compito è quello di creare un workflow che guidi il processo di collaborazione dalla richiesta di un cliente alla stipula del contratto con un'azienda.Lo scopo della ricerca su alfresco è individuare le aziende che possono fare un determinato prodotto (esse sono rappresentate su alfresco tramite cartelle con tag competenze).
La soluzione che mi hai proposto tu non va bene perchè viene fatta una ricerca locale e le cartelle poco fa citate non sono condivise a tutti gli utenti, ma compaiono come file personali dell'admin (avrebbe poco senso condividerle con tutti gli utenti, perderebbe infatti di significato la ricerca). Quindi ho bisogno di chiamare un webscript per interrogare Alfresco lato server tramite richieste http. Giusto? O ci sono altre soluzioni? Mi potresti postare un esempio di come posso invocare il webscript GET /alfresco/service/api/tags/{store_type}/{store_id}/{tag}/nodes?

openpj
Elite Collaborator
Elite Collaborator
In Javascript potresti implementarti la funzionalità sudo per fare in modo di eseguire la query come admin:
http://fabiostrozzi.eu/2009/11/23/sudo-like-tool-for-alfresco-webscripts/

Sinceramente non capisco l'esigenza di eseguire una chiamata HTTP per questo, non ha davvero senso.
In ogni caso anche la richiesta HTTP la dovresti fare con un'utenza specifica (admin?) in quanto per poter essere eseguita deve necessariamente soddisfare almeno l'autenticazione con HTTP Basic Authentication.

davidedge
Champ in-the-making
Champ in-the-making
Innanzitutto chiedo scusa perchè sono veramente alle prime armi con Alfresco e mi trovo un pò perso con questo che per me è un "nuovo mondo".
Cerco di essere ancora più chiaro su quello che vorrei fare: sto implementando un workflow con Activiti e ad un certo punto ho messo un service task che deve interrogare il repository di Alfresco a seconda di un parametro memorizzato in una variabile di processo.Ora, la ricerca la devo effettuare in una cartella che non è visibile all'utente normale,ma solo all'admin. Utilizzando le API java o javascript di alfresco è possibile fare una ricerca anche sui documenti non visibili all'utente che invoca il workflow?
Io pensavo per questo motivo di utilizzare il web script messo a disposizione da alfresco per la ricerca sui tag.Se qualcuno ha il tempo di farmi un esempio di come dovrei fare gliene sarei veramente grato.
Ho molta confusione in testa purtroppo e non riesco a capire la via da seguire.
Abbiate pazienza.
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.