double arrow

Области расширения

При работе с диаграммами деятельности часто сталкиваешься с ситуа­циями, когда выход одной операции инициирует многочисленные вы­зовы другой операции. Есть несколько способов показать это, но луч­ше всего подходит область расширения. Область расширения (expan­sion region) отмечает область диаграммы деятельности, где операции выполняются один раз для каждого элемента коллекции.

На рис. 11.9 процедура Choose Topics (Выбрать темы) генерирует спи­сок тем. Затем каждый элемент этого списка становится маркером для входа процедуры Write Article (Написать статью). Подобным образом каждая операция Review Article (Рецензировать статью) генерирует единственную статью, которая добавляется к выходному списку об­ласти расширения. Когда все маркеры в области расширения достига­ют выходной коллекции, область расширения генерирует единствен­ный маркер для списка, который передается процедуре Publish News­letter (Опубликовать информационный бюллетень).


В данном случае в выходной и входной коллекциях одинаковое коли­чество элементов. Однако в выходной коллекции может оказаться меньше элементов, чем во входной; в таком случае область расшире­ния действует как фильтр.

На рис. 11.9 все статьи пишутся и рецензируются параллельно, что от­мечено ключевым словом «concurrent». Область расширения также мо­жет быть итеративной. Итеративные области должны полностью обра­батывать каждый входной элемент за один раз.

Если есть только одна операция, которую надо вызывать несколько раз, то применяется нотация, показанная на рис. 11.10. Такой способ записи предполагает параллельное расширение, поскольку оно наибо­лее общее. Эта нотация соответствует концепции динамического па­раллелизма, принятой в UML 1.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: