Circa un mese fa abbiamo condiviso internamente in Extera un’esperienza che parte del team di sviluppo e management ha vissuto su alcuni progetti. Ecco che cosa abbiamo raccontato.
Perchè il workflow?
In quasi tutte le aziende è presente almeno un flusso di lavoro strategico che, per natura o a causa di una consolidazione gestita più dalle abitudini delle persone e dal lavoro quotidiano che da un processo di analisi strutturato, presenti inefficienze e un alto rischio di errore umano. E di conseguenza costi sommersi. Se a questo aggiungiamo che spesso il flusso di lavoro coinvolge più persone con differenti mansioni e responsabilità, talvolta appartenenti ad aziende esterne, che devono collaborare in momenti differenti scambiandosi informazioni e dati di ogni tipo, è facile immaginare come tutto diventi troppo complicato da gestire senza uno strumento tecnologico che guidi gli utenti e centralizzi le informazioni, ma prima ancora senza un processo di analisi che lo semplifichi e lo razionalizzi.
E la risposta in questi casi è data da uno strumento in apparenza semplice, ma che ci fornisce la flessibilità e allo stesso tempo la strutturazione di cui abbiamo bisogno perché aderisca al processo aziendale: il workflow!
Cos’è un workflow?
Un workflow è un modello di un processo: è quindi la descrizione formale di un percorso a tappe, dette stati, unite tramite dei collegamenti, detti transizioni, che hanno delle regole per essere eseguite. Partendo quindi da uno stato iniziale e passando da uno stato all’altro mediante le transizioni, si raggiungerà lo stato finale che determina il completamento del processo stesso.
Pensiamo ad un blog.
Un post prima di essere pubblicato attraversa varie fasi:
- prima stesura;
- revisione;
- aggiunta di immagini;
- arricchimento SEO;
- approvazione finale e pubblicazione.
Pimcore e i workflow
Pimcore mette a disposizione nativamente la funzionalità workflow.
Si basa sul componente Workflow di Symfony ed è in grado di gestire sia State Machine (un solo stato corrente) che Workflow Net (più di uno stato corrente).
Il primo passo per configurare un workflow su Pimcore è quello di definire stati e transizioni tramite il file config.yaml, come da documentazione di Symfony. Quello che dobbiamo indicare in più rispetto a quanto il framework ha bisogno, è per quale classe (o classi) di oggetti il workflow deve intervenire e in quale campo persistere lo stato. Ed il gioco è fatto! Il backend di pimcore metterà a disposizione le funzionalità dedicate, quindi indicherà lo stato corrente di un oggetto, quali transizioni è possibile fare e un comodissimo grafo per consultare in maniera visuale il workflow. Naturalmente non è finita qui in quanto per raggiungere tutti business requirements dei progetti abbiamo dovuto utilizzare anche funzionalità avanzate. Per citarne un paio abbiamo usato gli Events per scatenare azioni al raggiungimento di certo uno stato e le Guards per bloccare una transizione in caso di dati mancanti o non corretti o per concederne i permessi di esecuzione solo a determinati utenti.
Come abbiamo aiutato i nostri clienti
Per poterti spiegare la loro efficacia, abbiamo due importanti referenze da raccontarti.
Il caso Focaccia Group
La loro esigenza era quella di costruire un tool dedicato alla gestione di acquisizione degli ordini. Con loro abbiamo svolto una sessione di user story mapping (da remoto) con il cliente in cui abbiamo estratto le personas e le user stories. Al termine dell’attività era chiaro che oltre alle funzionalità sottostava un workflow di ordine che andava gestito, soprattutto per informare le persone dei poteri, limiti e responsabilità che avevano durante il processo. Da questo è nata una prima versione di workflow (oggi siamo alla 4° release) che ha permesso di guidare gli utenti interni a Pimcore nella limitazione degli errori e nelle capacità di avere a colpo d’occhio la visione sistemica in base ai vari stati del workflow. Scopri di più sullo sviluppo del progetto per Focaccia Group.
Il caso SCM Group
Nel caso di SCM Group, abbiamo introdotto a posteriori un workflow in una codebase (e processo) già esistente. In questo caso l’esigenza non è nata esplicitamente dal cliente ma è nata da nostra “sensibilità” come risposta al desiderio di rendere più robusto e sicuro un processo chiave che fino a quel giorno era documentato soltanto su Google Drive e testato (tramite test funzionali); la sua natura evolutiva (essendo un processo core cambiava circa ogni mese aggiungendo opzioni e decisori) e critica per il business lo ha reso un candidato ideale di processo da mettere in sicurezza.
In questo caso introdurre un workflow è stato più complesso ma ha avuto un effetto inaspettato: oltre ad aumentare la stabilità (ed il coraggio dei nostri sviluppatori) ha esteso i suoi controlli anche alla suite di test rendendo ancora più robusta la sicurezza di questo processo.
Considerazioni finali
Per concludere le esperienze degli ultimi anni sui workflow ci hanno fatto innamorare di questo strumento di controllo perchè:
- Descrive e documenta un processo aziendale
- Coordina più utenti attribuendo compiti a seconda del ruolo
- Diminuisce il rischio di errore umano aiutando e guidando l’utente
- Isola la business logic mettendola sotto i riflettori
Contattaci se pensi che il workflow possa aiutare anche la tua azienda, saremo felici di aiutarti.