BPM

Tutorial Bonita BPM. Processo “Hello World” ovvero BPMS in azione

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).

helloWorldProcess

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.

newButton

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).

diagramName

Click su Step1.

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

step1ToProposta

Click sull’icona Human nella Palette a sinistra.

task

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à.

propostaDecisione

Click sull’attività Decisione.

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

decisioneApprovazione

Click sull’attività Notifica approvazione.

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

Al rilascio selezioniamo l’evento Terminate

decisioneApprovazione

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.

helloWorldBonita

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).

processActor

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

actorDecisione

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

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.

actorMapping

Il tutto per giungere al risultato nella figura che segue.

actorMappingResult

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

walterBates

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.

changeMail

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

newVariable

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.

variabiliProcesso

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….

newForm

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.

formProposta

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.

formAccettazione

Selezioniamo la Text Area Proposta.

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

readOnly

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.

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

flowFalse

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

groovyScript

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

groovyScript2

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.

script

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.

outputScript

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.

mailConf

Al terzo step  impostiamo mittente e destinatario.

mailMittDest

Nell’ultimo step impostiamo il messaggio

mailMessage

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.

Per qualsiasi richiesta di chiarimento e/o suggerimento e/o altro vi chiedo di aggiungermi ad una vostra cerchia su G+ (click sul box in alto a destra) e magari utilizzare il relativo box di commento (sotto).

Volete incentivarmi a continuare? Condividete questo contenuto su uno o più Social.