Диаграммы деятельности
С появлением версии 1.2 языка UML осталось лишь несколько открытых вопросов относительно семантики диаграмм деятельности. В версии 1.3 на большинство из этих вопросов были даны ответы, которые были закреплены в семантике языка UML.
При разработке условного поведения теперь можно обозначать принятие решения в форме ромба - как для слияния (merge), так и для ветвления (branch). Хотя для описания условного поведения ни ветвления, ни слияния не являются необходимыми, все более общепринятым становится способ изображения, заключающий условное поведение в скобки.
Символ синхронизации в форме черты теперь относится как к ветвлению (когда управление расщепляется), так и к объединению (когда синхронизируемое управление объединяется снова). Однако теперь никаких дополнительных условий на объединение не накладывается. Необходимо лишь придерживаться правил, гарантирующих соответствие ветвлений и объединений. По существу это означает, что каждое ветвление должно иметь соответствующее объединение, которое соединяет все параллельные нити процесса, берущие начало в исходном ветвле-
нии. Хотя ветвления и объединения могут быть вложенными, их можно удалить с диаграммы, если потоки соединяют ветвления (или объединения) напрямую.
Объединения вступают в силу только тогда, когда все входящие в них потоки завершены. Однако можно определить некоторое условие для исходящего из ветвления потока. Если это условие не выполняется, то соответствующий поток считается завершенным и может участвовать в объединении остальных потоков.
Свойство множественной инициализации больше не поддерживается. Вместо него можно определить динамическую параллельность в некоторой деятельности с помощью символа «*» внутри прямоугольника деятельности. Такая деятельность может выполняться параллельно несколько раз; все ее вызовы должны быть завершены, прежде чем сможет быть выполнен какой-либо выходящий из нее переход. Это в некоторой степени эквивалентно множественной инициализации и сответ-ствующему условию синхронизации, хотя такой способ и менее гибок.
Эти правила в какой-то степени уменьшают гибкость диаграмм деятельности, однако они гарантируют, что диаграммы деятельности являются на самом деле частными случаями конечных автоматов. Отношение между диаграммами деятельности и конечными автоматами стало предметом дискуссии инициативной группы RTF. Последующие версии языка UML {после 1.4) вполне могут определить диаграммы деятельности как диаграммы совершенно другой формы.