Diagrama
Uma atividade é o estado de estar fazendo algo: tanto um processo de mundo real, tal como datilografar uma carta, ou a execução de uma rotina de software, tal como um método em uma classe. O diagrama de atividades descreve a seqüência de atividades, com suporte para comportamento condicional e paralelo. Um diagrama de atividades é uma variante de um diagrama de estados no qual a maioria, se não todos, dos estados é estado de atividade. Portanto, muito da terminologia segue a mesma terminologia de estados.
Na figura 1 o símbolo central é o estado de atividade, ou simplesmente atividade.
Comportamento condicional é delineado por desvios (branches) e intercalações (merges). Um desvio (branch) é uma transição de entrada única e várias transições de saída guardadas. Somente uma transição de saída pode ser tomada, de modo que os guardas devem ser mutuamente exclusivos. A utilização de [else] como um guarda indica que a transição “else” deverá ser usada se todos os outros guardas do desvio forem falsos. Uma intercalação (merge) tem múltiplas transições de entrada e uma única saída. Um merge marca o final de um comportamento condicional iniciado por um branch.
Comportamento paralelo é indicado por separações (forks) e junções (joins). Uma separação (fork) tem uma transição de entrada e várias transições de saída. Quando uma transição de entrada é acionada (triggered) todas as transições de saída são executadas em paralelo. Quando temos comportamento paralelo, precisamos sincronizar. Com a junção (join) a transição seguinte é efetuada somente quando todos os estados nas transições de entrada tenham completado suas atividades.
O diagrama de atividades permite escolher a ordem em que as coisas vão ser feitas. Ele simplesmente determina as regras