# Business Process Model and Notation

Il Business Process Model and Notation (BPMN) è una rappresentazione grafica usata per specificare i processi aziendali in un business process modeling (BPM).
Originariamente sviluppato dalla Business Process Management Initiative (BPMI), BPMN è stato successivamente gestito dall'Object Management Group (OMG) dopo che le due organizzazioni si sono fuse nel giugno 2005. La versione attuale di BPMN è la 2.0.2, pubblicata nel gennaio 2014
Sebbene sia una specifica OMG, nel luglio 2013 BPMN è stato codificato come standard ISO disciplinato dalla norma tecnica ISO/IEC 19510.

## Descrizione

BPMN è uno standard per il business process modeling che fornisce una notazione grafica per specificare i processi aziendali in un Business Process Diagram (BPD), basato su una tecnica di diagramma di flusso molto simile ai diagrammi di attività UML. BPMN e UML sono due specifiche di modellazione sviluppate dall'OMG che non sono in competizione ma complementari: UML enfatizza l'analisi e la progettazione di un sistema informativo, mentre BPMN si concentra sull'analisi e la progettazione dei processi aziendali che coinvolgono e interagiscono con i sistemi. Possiamo quindi passare da un diagramma di processo che definisce i requisiti di business in BPMN all'uso di diagrammi di casi in UML per documentare i requisiti per i sistemi coinvolti.
L'obiettivo di BPMN è quello di supportare il business process management sia per gli utenti tecnici che per gli utenti aziendali, fornendo una notazione intuitiva per gli utenti aziendali, ma in grado di rappresentare semantiche di processi complessi. La specifica BPMN fornisce anche una mappatura tra la grafica della notazione e i costrutti sottostanti dei linguaggi di esecuzione, in particolare il Business Process Execution Language (BPEL).
BPMN è stato progettato per fornire una notazione standard facilmente comprensibile da tutti gli stakeholder aziendali, in genere inclusi analisti aziendali, sviluppatori tecnici e manager aziendali. BPMN può quindi essere utilizzato per supportare l'obiettivo generalmente auspicabile da parte di tutti gli stakeholder di un progetto, adottando un linguaggio comune per descrivere i processi ed aiutando ad evitare lacune di comunicazione che possono sorgere tra la progettazione e l'implementazione dei processi aziendali.
BPMN è uno dei numerosi linguaggi standard per il business process modeling utilizzati dagli strumenti e dai processi di modellazione. Sebbene l'attuale varietà di linguaggi possa adattarsi a diversi ambienti di modellazione, c'è chi sostiene lo sviluppo o l'emergere di un unico standard completo che combini i punti di forza dei diversi linguaggi esistenti. Si suggerisce che, nel tempo, ciò potrebbe aiutare a unificare l'espressione dei concetti di base dei processi aziendali (ad esempio i processi pubblici e privati e le coreografie), nonché di concetti di processo avanzati (ad esempio la gestione delle eccezioni e la compensazione delle transazioni).
BPMN è vincolato a supportare solo i concetti di modellazione applicabili ai processi aziendali. Altri tipi di modellazione eseguiti dalle organizzazioni per scopi non di processo non rientrano nell'ambito di BPMN. Tra gli esempi di modelli esclusi da BPMN vi sono:
* le strutture organizzative;
* i guasti funzionali;
* i modelli di dati.
Inoltre, sebbene BPMN mostri il flusso di dati (messaggi) e l'associazione di artefatti di dati alle attività, esso non è un diagramma di flusso di dati.
Sono stati sviluppati due ulteriori standard che utilizzano un approccio simile al BPMN: il Case Management Model and Notation (CMMN), che affronta la modellazione del case management, e il Decision Model and Notation (DMN), che invece si occupa della modellazione decisionale.

## Elementi

I modelli BPMN sono espressi da semplici diagrammi costruiti a partire da un insieme limitato di elementi grafici. Essi semplificano la comprensione del flusso e del processo delle attività aziendali sia per gli utenti aziendali che per gli sviluppatori. Le 4 categorie di elementi basilari previste in BPMN sono:
* gli oggetti di flusso (eventi, attività, gateway);
* gli oggetti di collegamento (flusso di sequenza, flusso di messaggi, associazione);
* le swim lane (pool, lane);
* gli artefatti (oggetto di dati, gruppo, annotazione).
Queste 4 categorie consentono la creazione di semplici diagrammi dei processi aziendali (business process diagram, BPD). Tali diagrammi consentono anche di creare nuovi tipi di oggetti o artefatti di flusso per rendere il diagramma più comprensibile.

### Oggetti di flusso

Gli oggetti di flusso sono i principali elementi descrittivi all'interno di BPMN e sono costituiti da 3 elementi principali: eventi, attività e gateway.

#### Evento

Un evento è rappresentato da un cerchio e denota qualcosa che accade (rispetto ad un'attività, che è qualcosa che si fa). Le icone all'interno del cerchio indicano il tipo di evento (ad esempio, una busta che rappresenta un messaggio o un orologio che rappresenta il tempo). Gli eventi sono solitamente classificati su 3 livelli:
* Evento iniziale: è quello che attiva il processo ed è indicato da un cerchio con un singolo bordo sottile.
* Evento intermedio: rappresenta qualcosa che accade tra un evento iniziale ed uno finale ed è indicato da un cerchio con un doppio bordo.
* Evento finale: rappresenta il risultato di un processo ed è indicato da un cerchio con un singolo bordo spesso.

#### Attività

Un'attività è rappresentata da un rettangolo con gli angoli arrotondati e descrive il tipo di lavoro che deve essere svolto. Un'attività è un termine generico per il lavoro svolto da un'azienda e può essere atomica o composta. Le attività si distinguono in:
* Compito (o task): rappresenta una singola unità di lavoro che non è o non può essere suddivisa in un ulteriore livello di dettaglio del processo aziendale (in questo caso si parla di attività atomica). Il compito è l'attività di livello più basso illustrata su un diagramma di processo BPMN. Un insieme di attività può rappresentare una procedura di alto livello.
* Sottoprocesso: utilizzato per nascondere o rivelare ulteriori livelli di dettaglio dei processi aziendali. Quando è compresso, un sottoprocesso è contrassegnato con il simbolo "+" sulla linea inferiore del rettangolo; quando invece è espanso, il rettangolo arrotondato viene allargato per mostrare tutti gli oggetti di flusso, gli oggetti di collegamento e gli artefatti. Un sottoprocesso è indicato come attività composta ed ha i propri eventi di inizio e fine autonomi; i flussi di sequenza provenienti dal processo "padre" non devono attraversare il confine.
* Transazione: è una forma di sottoprocesso in cui tutte le attività contenute devono essere trattate nel loro insieme, ovvero devono essere completate tutte insieme per raggiungere un obiettivo; se una di esse fallisce, devono essere tutte compensate (cioè annullate). Le transazioni si differenziano dai sottoprocessi poiché vengono disegnate con il doppio bordo.
* Chiamata: è un punto del processo in cui viene riutilizzato un processo o un'attività globale. Un'attività di chiamata è differenziata da altri tipi di attività da un bordo in grassetto attorno all'area dell'attività.

#### Gateway

Un gateway è rappresentato con un rombo ed indica una biforcazione oppure una ricongiunzione di percorsi, a seconda delle condizioni espresse. Un gateway può essere:
* Esclusivo: viene utilizzato per creare flussi alternativi in un processo. È chiamato esclusivo poiché si può percorrere solo una delle scelte possibili.
* Basato su eventi: la condizione che determina il percorso di un processo si basa su un evento valutato.
* Parallelo: viene utilizzato per creare percorsi paralleli senza valutare alcuna condizione.
* Inclusivo: viene utilizzato per creare flussi alternativi in cui vengono valutati tutti i percorsi.
* Esclusivo basato su eventi: indica che è in corso la valutazione di un evento per determinare quale dei percorsi che si escludono a vicenda verrà intrapreso.
* Complesso: viene utilizzato per modellare comportamenti di sincronizzazione complessi.
* Parallelo basato su eventi: vengono avviati due processi paralleli sulla base di un evento, ma non vi è alcuna valutazione dell'evento.

### Oggetti di collegamento

Gli oggetti di flusso sono collegati tra loro utilizzando oggetti di collegamento (detti anche connettori), che sono di 3 tipi:
* Flusso di sequenza: è rappresentato da una freccia con una linea continua e mostra l'ordine in cui vengono eseguite le attività. Il flusso di sequenza può anche avere un simbolo all'inizio. Un piccolo rombo indica uno dei numerosi flussi condizionali provenienti da un'attività, mentre una barra diagonale indica il flusso predefinito a partire da una decisione o un'attività con flussi condizionali.
* Flusso di messaggi: è rappresentato da una freccia con una linea tratteggiata con tratti lunghi, un cerchio all'inizio ed una punta alla fine. Il flusso di messaggi ci dice quali messaggi fluiscono attraverso i confini dell'organizzazione (ad esempio tra i pool). Un flusso di messaggi non può mai essere utilizzato per connettere attività o eventi all'interno dello stesso pool.
* Associazione: è rappresentata da una linea tratteggiata con tratti corti. Viene utilizzata per associare un artefatto o un testo a un oggetto di flusso e può indicare una certa direzionalità utilizzando una freccia con punta aperta (verso l'artefatto per rappresentare un output, dall'artefatto per rappresentare un input, oppure entrambi per indicare che è stato letto e aggiornato). Non viene utilizzata alcuna direzionalità quando l'artefatto o il testo è associato a una sequenza o a un flusso di messaggi, in quanto tale flusso mostra già la direzione.

### Swim lane

Le swim lane sono un meccanismo visivo di organizzazione e categorizzazione delle attività, basato su diagrammi di flusso interfunzionali. In BPMN sono costituite da due tipi:
* Pool: rappresenta i principali partecipanti a un processo, in genere separando diverse organizzazioni. Un pool contiene una o più lane (così come una piscina contiene una o più corsie). Un pool può essere aperto (cioè, mostrando i dettagli interni) quando è raffigurato come un grande rettangolo che mostra una o più lane, oppure chiusa (cioè, nascondendo i dettagli interni) quando è raffigurata come un rettangolo vuoto che si estende per la larghezza o l'altezza del diagramma.
* Lane: viene utilizzata per organizzare e classificare le attività all'interno di un pool in base alla funzione o al ruolo ed è rappresentata come un rettangolo che si estende per la larghezza o l'altezza del pool. Una lane contiene gli oggetti del flusso, collegando oggetti e artefatti.

### Artefatti

* Oggetto dati
* Gruppo
* Annotazione
Gli artefatti consentono agli sviluppatori di portare ulteriori informazioni all'interno del modello o del diagramma, che in questo modo diventa più leggibile. In BPMN esistono 3 artefatti predefiniti:
* Oggetto dati: mostra al lettore quali dati sono richiesti o prodotti in un'attività.
* Gruppo: è rappresentato da un rettangolo con angoli arrotondati e linee tratteggiate. Il gruppo viene utilizzato per raggruppare diverse attività ma non influisce sul flusso nel diagramma.
* Annotazione: viene utilizzata per fornire al lettore del modello o del diagramma una descrizione aggiuntiva.

### Esempi di diagrammi BPMN

* Ciclo di discussione
* Processo di voto via e-mail
* Raccolta di voti

## Cronologia

* Maggio 2004: pubblicazione della prima versione di BPMN da parte di BPMI, inizialmente con la denominazione Business Process Modeling Notation.
* Febbraio 2006: adozione da parte di OMG della versione 1.0.
* Gennaio 2008: pubblicazione da parte di OMG della versione 1.1.
* Gennaio 2009: pubblicazione da parte di OMG della versione 1.2.
* Gennaio 2011: pubblicazione da parte di OMG della versione 2.0, che integrò grandi cambiamenti, in particolare con l'introduzione dei diagrammi di conversazione e dei diagrammi di coreografia, e una maggiore ricchezza nella specificazione degli eventi. Inoltre introdusse anche formati di scambio di modelli.
* Luglio 2013: l'ISO ha adottato la versione 2.02 come standard internazionale ISO/IEC 19510:2013 con il titolo Information technology - Object Management Group Business Process Model and Notation.
* Gennaio 2014: pubblicazione da parte di OMG della versione 2.0.2, che contiene solo modifiche minori riguardanti i file di scambio del modello XML.

## Confronto con altri modelli di processi

EPC (Event-driven Process Chain) e BPMN sono due notazioni con espressività simile per quanto riguarda la modellazione dei processi. Un modello BPMN può essere trasformato in un modello EPC, mentre viceversa un modello EPC può essere trasformato in un modello BPMN con una leggera perdita di informazioni. Uno studio ha dimostrato che per lo stesso processo il modello BPMN potrebbe richiedere circa il 40% in meno di elementi rispetto al modello EPC corrispondente, ma con un set di simboli leggermente più grande, e quindi il modello BPMN sarebbe più facile da leggere. La conversione tra le due notazioni può essere automatizzata.
I diagrammi di attività UML e BPMN sono due notazioni che possono essere utilizzate per modellare gli stessi processi: un sottoinsieme degli elementi del diagramma di attività ha una semantica simile agli elementi BPMN, nonostante l'insieme di simboli sia più piccolo e meno espressivo. Uno studio ha mostrato che entrambi i tipi di modelli di processo sembrano avere lo stesso livello di leggibilità per utenti inesperti, nonostante i vincoli formali più elevati di un diagramma di attività.
Un sottoinsieme di BPMN può essere trasposto direttamente in WS-BPEL, che è espressione di un processo direttamente eseguibile da un motore di workflow.