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