Bookmark and Share
Document Actions

Creare e Personalizzare i Flussi di Lavoro di Plone

Up one level
Avete già visto come sono organizzati i workflow. In questa sezione mostreremo come costruire un paio di semplici e pratici esempi di workflow.


Personalizzare un workflow esistente

Avete visto che intranet_workflow vi permette di pubblicare contenuti esternamente così da permettere agli utenti anonimi di poter vedere tali contenuti. Se volete disabilitare questa funzione dal workflow intranet di default, potete disabilitare la transizione "publish_externally" dagli stati dove risulta abilitata: Pending review e internally published. Per farlo, andate nello strumento portal_workflow del vostro sito Plone, cliccate sul tab Contents e selezionate intranet_workflow. A questo punto cliccate sul tab State, cliccate sullo stato Internally published e deselezionate la transizione chiamata publish_externally. Ripetete questa operazione anche per lo stato pending review. Dopo di che potete rimuovere lo stato external, se volete, in quanto non ci sono più transizioni per questo stato.

Ecco fatto – avete appena personalizzato il vostro primo workflow! Ora se userete il workflow denominato intranet_workflow non dovreste più trovare l'opzione publish_externally nel menu Stato. Potete anche esportare tutte le vostre configurazioni manuali usando lo strumento portal_setup.

Nota: Invece di fare in questo modo, potete anche cambiare le impostazioni di permesso per la transizione publish_externally e proteggere questa transizione con un permesso più alto. Dipende solo da quello che volete fare voi.

Duplicare e creare nuovi workflow

Supponete di voler creare il vostro workflow intranet e mantenere l'intranet_workflow originale di Plone intatto. Andate nello strumento portal_workflow, copiate e incollate l'intranet_workflow e rinominatelo myintranet_workflow. Fate questo come se fosse un esercizio, ma prima rimuovete dal nuovo myintranet_workflow la transizione publish_externally creata nell'esempio precedente. A questo punto, potete disabilitare le transizioni, cambiare i permessi e aggiungere nuovi stati e transizioni, tutto lavorando dal vostro browser. Quando avete finito, potete usarlo come una politica di workflow locale o assegnare il workflow a uno o più content type. Arricchiamo il nostro esempio. Aggiungete un nuovo stato chiamato to_be_deleted (da cancellare) e ovviamente una nuova transizione chiamata request_delete (richiesta di cancellazione). Questo significa che sarete in grado di marcare alcuni contenuti come rimossi e questi contenuti non dovrebbero essere visibili agli utenti anonimi; i revisori possono decidere manualmente se i contenuti marcati con to_be_deleted debbano essere rimossi, o potete decidere automaticamente se cancellare il contenuto da un batch script chiamato una volta alla settimana. Non implementeremo il batch script, ma copriremo la configurazione del workflow.

Nota: Potete fare qualcosa di simile con molti metodi. Ad esempio, potete inserire i vostri oggetti nello stato Nascosti e marcarli con la parola chiave to_be_deleted. Sarete comunque in grado di applicare uno script che cancelli questi oggetti automaticamente. Un altra buona idea è quella di dare la possibilità di tornare indietro nel caso sbagliaste qualcosa; per fare questo creeremo una nuova transizione chiamata recupera. Partiamo dal myintranet_workflow. Andate nel tab Stati di questo workflow; compilate il form “Aggiungi uno stato” con il nome del nuovo stato, to_be_deleted; e infine cliccate su Aggiungi.

A questo punto, potete cliccare sul nuovo stato che avete appena creato e configurare i permessi. Potete copiare le stesse impostazioni dello stato Privato. Ora ritornate alla vista di default del tuo myintranet_workflow, e cliccate sul tab Transitions. Poi aggiungete una nuova transizione chiamata request_delete attraverso il campo “Add transition”. Cliccate sulla nuova transizione e configuratela: inserite un titolo, sceglete to_be_deleted come stato finale, e permettete a questa transizione di essere avviata solo per quegli utenti che hanno il permesso “Revisiona i contenuti del portale(review portal content)”. Poi configurate il box di visualizzazione: usate request_delete come titolo e infine inserite questa espressione nella sezione dell'URL:

%(content_url)s/content_status_modify?workflow_action=request_delete

Potete copiare questa espressione da un'altra transizione. Notate che l'ultima parte dell'URL è l'ID della transizione! Ripetete questi step, ora create una nuova transizione chiamata "undelete" che guiderà l'oggetto in un altro stato (come ad esempio quello Privato), permettete agli utenti di recuperare i contenuti marcati come to_be_deleted prima che batch script  si avvii. Nella Figura 7.26 potete vedere come appare il form di configurazione della transizione.

transizione undelete

Figura 7.26. Il pannello di configurazione per il workflow della transizione “undelete” che abbiamo appena creato nel nostro esempio

Notate che abbiamo solo creato due nuove transizioni; bisogna ancora abilitarle. Perciò, abilitate solo la prima nuova transizione, request_delete, nello stato Internally published (oppure ovunque abbiate bisogno di abilitarla) selezionandola. Poi, fate lo stesso per la transizione “undelete”. Andate nello stato to_be_deleted, abilitate “undelete” e confermate. Fatto! Usando solo un browser avete creato un workflow personalizzato, e ora potete esportarlo usando lo strumento portal_setup.

by Dario Pollino last modified 2010-03-19 16:38
Contributors: Maurizio Delmonte, Davide Moro, Alice Narduzzo, Fabrizio Reale, Enrico Barra, Andrea Cannizzaro, Andrea D'Este, Maurizio Lupo, Giuseppe Masili, Dario Pollino, Matteo Sorba.