Gli activity diagram sono state diagram in cui:
Essendo un caso particolare di state diagram, anche questi sono diagrammi dinamici.
Essi danno una visione piuttosto naturale della concorrenza, e permettono di attribuire responsabilità alle attività, quindi sono usati per modellare anche processi organizzativi, workflow.
Lo scopo di un activity diagram è evidenziare l'evoluzione dell'elaborazione itnerna, mentre la reazione agli eventi esterni è meglio trattarla negli state diagram.
**Attività (**corrisponde a uno stato degli state diagram):
può essere gerarchica, cioè composta da sotto-attività
un asterisco indica la concorrenza dinamica, cioè che più "copie" di questa attività possono essere gestite in parallelo:
Fork: separazione di un flusso di esecuzione in più flussi concorrenti
Join: ricongiungimento di flussi di esecuzione concorrenti
Branch: flussi di esecuzione alternativi, in base a una condizione (in pratica, è un if/else)
Merge: ricongiungimento di flussi di esecuzione alternativi
Nodo iniziale (come negli state diagram, ce ne può essere uno solo):
Nodo finale per l'attività: indica la terminazione di tutte le attività rappresentate nel diagramma; ce ne può essere più di uno
Nodo finale per un flusso: indica che un singolo flusso di esecuzione termina, mentre gli altri possono proseguire
Nota: quando il flusso di esecuzione si divide, mediante un fork/branch, non è obbligatorio che poi si ricongiunga (con un join/merge).
Le attività si possono scambiare oggetti, rappresentati con la solita notazione (come negli object diagram, ecc):