Il diagramma BPMN, il cuore di una soluzione BPMS, è lo strumento attraverso il quale modellare il processo di business (chi fa che cosa e quando) con una notazione comprensibile alla Direzione e agli addetti ai lavori (obiettivo allineamento business – IT).

Nella figura che segue ho riportato uno schizzo di un classico processo di approvazione (provocatoriamente ribattezzato “Hello World" nel titolo del post).


In questo tutorial spiego come implementare questo semplice processo con Bonita BPM Community Edition 6.1.2.

Prerequisiti

Bonita BPM è un tool composto a livello architetturale da tre componenti:

  • Bonita Studio. L’ambiente di sviluppo;
  • Engine. Il motore BPM che gestisce il workflow e raccoglie le (meta) informazioni del processo;
  • Portale. L’applicazione Web di front-end.

Per svolgere questo tutorial si presuppone che abbiate il Bonita Studio correttamente installato sul vostro sistema. Il setup è davvero molto semplice su qualsiasi sistema operativo lavoriate. Vi rimando al sito ufficiale per la documentazione dei passi necessari.

1. Disegnare il processo

Una volta avviato lo studio clicchiamo sul bottone New per creare un nuovo processo.


Click nell’area bianca del diagramma (deselezioniamo il Poll).

Nel pannello Diagram della scheda General clicchiamo sul tasto Edit…

Forniamo un nome al diagramma (contenitore di uno o più processi) ed al pool (il processo).


Click su Step1.

Selezioniamo il pannello General della scheda General e modifichiamo il nome dell’attività.


Click sull’icona Human nella Palette a sinistra.

Posizioniamo il nuovo task sul diagramma e nominiamolo Decisione.

Click sull’attività Proposta.

Selezioniamo l’icona freccia a destra e mediante trascinamento creiamo il flusso tra le due attività.


Click sull’attività Decisione.

Selezioniamo l’icona task e mediante trascinamento creiamo una nuova attività di tipo Service (default).


Click sull’attività Notifica approvazione.

Click sull’icona eventi e mediante trascinamento creiamo un nuovo flusso.

Al rilascio selezioniamo l’evento Terminate


Click sull’attività Decisione.

Ripetiamo tutti i passi necessari per creare un altro flusso decisionale (Notifica rifiuto).

Al termine dovremmo avere un diagramma BPMN come quello riportato in figura.

2. Definire gli attori

Quando creiamo un nuovo diagramma (che può contenere uno o più processi) di default viene proposto un Pool (singolo processo) contenente una Lane (corsia) alla quale andiamo ad associare un gruppo di partecipanti.
Un gruppo di partecipanti potrà essere definito a partire dalla configurazione di una organizzazione mediante l’apposito menu di gestione Organization –> Manage…
Esula dallo scopo di questo post, che altrimenti diventerebbe troppo lungo, spiegare in modo dettagliato come procedere con tale definizione (anche se lo ritengo veramente molto intuitivo). Magari potrà essere argomento di un altro post.
In questo tutorial ci limitiamo ad utilizzare l’organizzazione ACME (assegnata di default) per definire gli attori.
Selezioniamo il poll Proposta.

Dal pannello Actors della scheda General clicchiamo sul bottone Add. Impostiamo un nome ed una descrizione per il gruppo di attori che partecipa al processo (nel nostro caso Manager, ACME manager).


Click sull’attività Decisione, clicchiamo sulla voce Use the actor below e scegliamo dall’elenco a discesa Manager – ACME manager.


Come ultimo passo mappiamo il gruppo di partecipanti Manager sui membri dell’organizzazione ACME aventi ruolo per l’appunto manager.

Per fare questo clicchiamo sul tasto Configure


Selezioniamo Manager – Not mapped dal riquadro Define di actor using an existing organization.

Click sul tasto Roles….

Spuntiamo la voce manager e poi clicchiamo sul tasto Finish.


Il tutto per giungere al risultato nella figura che segue.


Per poter procedere correttamente con il test dell’esecuzione del processo dobbiamo modificare la mail dell’utente che viene autenticato automaticamente in fase di Run.

Se clicchiamo per l’appunto sulla voce Authentication notiamo che tale utente di default è walter.bates


Clicchiamo sul tasto Finish della finestra Local configuration for Proposta (1.0).

Modificare l’email di walter.bates

Cliccare sul menu Organization > Manage…

Selezionare ACME e cliccare su Next.

In Organization group cliccare su Next.

In Organization roles cliccare su Next.

In Organization users cercare Walter ed una volta selezionato l’utente modificare i dati professionali con la vostra mail.


Una volta cliccato sul tasto Finish un warning vi informerà che essendo stata l’organizzazione modificata risulta necessario procedere con la sua ripubblicazione (che consiste nel salvataggio delle modifiche nel database dell’ambiente di test).

Cliccate pertanto su Yes. Poi su Ok al termine dell’operazione.

3. Modellare i dati

Per il nostro semplice processo di approvazione abbiamo bisogno dei seguenti dati:

  • Contenuto proposta;
  • Mail del richiedente;
  • Esito della decisione.

Click sul poll Proposta.

Dal pannello Data della scheda General clicchiamo sul tasto Add…per aprire la finestra di dialogo New variable come in figura


e creiamo le tre variabili che ci interessano. Facciamo attenzione solo ad impostare per la variabile esitoDecisione il Data type a Boolean e il Default value a false.

Il risultato dovrebbe essere quello riportato nella figura che segue.

4. Costruire le interfacce

Come è ovvio una Human Activity rende necessario l’intervento dell’uomo nell’ambito di un workflow di processo. Per lo sviluppo delle interfacce (web) Bonita mette a disposizione un Form Builder integrato.

Nel nostro caso avremo bisogno di due maschere. Una di sottomissione della proposta. L’altra per la visione della stessa e l’approvazione.

Facciamo click sull’attività Proposta.

Dal pannello Page Flow->Forms della scheda Application clicchiamo sul tasto Add….


Deselezioniamo tutte le variabili tranne contenutoProposta e premere su Finish. Non facciamolo senza notare che il costruttore dell’interfaccia ha già proposto un tipo input in funzione del tipo variabile (Checkbox per il tipo Boolean).

Infine modifichiamo la Show label e il Field type di default.


Facciamo click sull’attività Decisione, e ripetiamo i passi di sopra per creare una form che mostra il contenuto della proposta (non modificabile) ed il Checkbox per l’accettazione come in figura.


Selezioniamo la Text Area Proposta.

Per renderla in sola lettura clicchiamo sul pannello Options della scheda General e spuntiamo la voce Read Only.

5. Specificare le condizioni di flusso

Il valore della variabile esitoDecisione impostata mediante la form Decisione accessibile al Manager, deve definire l’azione successiva, ovvero la “Notifica approvazione / rifiuto" a mezzo mail.

Facciamo i buoni…
… clicchiamo sulla linea di flusso tra l’attività Decisione e Notifica approvazione e spuntiamo nel pannello General della scheda General la voce Default flow.


Notiamo che ad inizio linea viene posto un slash per identificare quello che in gergo viene anche definito l’Happy Path.

Clicchiamo poi sul flusso alternativo (quello verso Notifica rifiuto) e nel medesimo pannello impostiamo la Condition come in figura

6. Configurare i connettori

Mediante i connettori possiamo integrarci ai sistemi informativi preesistenti in azienda e/o automatizzare l’esecuzione di operazioni all’inizio o alla fine di una attività delegando le stesse ad un servizio esterno (come vedremo fra poco con l’email) e/o consumare API.

Per il nostro esempio dovremmo configurare due connettori. Il primo (Execute a Groovy 1.8 scripts) ci servirà per recuperare la mail del richiedente. Il secondo (Send an email using SMTP) per inoltrare le mail di notifica.

Execute a Groovy 1.8 scripts

Click sull’attività Proposta.

Dal pannello Connectors della scheda General clicchiamo sul tasto Add….

Esploriamo il nodo Script e selezioniamo il connettore Groovy 1.8 – Execute a Groovy 1.8 script


Clicchiamo sul tasto Next.

Impostiamo un Name per l’operazione e decidiamo di farla eseguire quando inizia l’attività Proposta spuntando la radio box dell’evento enter come in figura


Notiamo che se il connettore fallisce lo stato dell’attività sulla quale è “attaccato" il connettore diviene FAILED e l’esecuzione del workflow viene sospesa.

Clicchiamo su Next.

A questo punto editiamo e forniamo un nome per lo script Groovy che utilizzando le API dell’engine recupererà l’email dell’utente loggato.


Codice

return BonitaUsers.getUserProfessionalContactInfo(apiAccessor,BonitaUsers.getProcessInstanceInitiator(apiAccessor,processInstanceId).getId()).getEmail();

Clicchiamo su Ok e poi su Next.

Infine impostiamo il tipo del result a String e assegniamolo alla variabile mailRichiedente.

Send an email using SMTP

Click sull’attività Notifica Approvazione.

Dal pannello Connectors della scheda General clicchiamo sul tasto Add….

Esploriamo il nodo Messagin e selezioniamo il connettore Email SMTP (1.0.0) – Send an email using SMTP (RFC 5321) e cliccliamo su Next.

Al primo step impostiamo un nome per l’operazione ed il momento di esecuzione (nel mio caso Name=notificaApprovazione on finish).

Al secondo step configuriamo un account SMTP valido.


Al terzo step impostiamo mittente e destinatario.


Nell’ultimo step impostiamo il messaggio


Lascio a voi la creazione e la configurazione della mail che notifica il rifiuto della proposta.

Esecuzione e test

Non ci resta che eseguire il nostro processo. Nel video di seguito mostro i passi da svolgere ed i risultati che dovreste ottenere.