Многие помнят
попытку рисования областей на Дракон-схеме. Для удобства напомню картинку:
Вложение:
doc4.png [ 42.09 КБ | Просмотров: 21980 ]
Дальше можно поступить в духе YAWL - непосредственно пририсовывать к области её обработчик и присоединять к ней же результат обработки(выходной маршрут обработчика) следующим образом:
1)возврат на вх.границу - restart - стрелка, направленная ко входу в область
2)переход на вых.границу - exception, cancel, skip - стрелка, направленная к выходу из области
3)возврат в точку, из которой вышли - interrupt - графически простым маршрутом
Но при этом всё равно остаются проблемы:
1.отсутствуют принципы структурирования областей, подобные структурированию маршрутов в силуэте.
2.из-за п.1 на определённом этапе проектирования станет просто неудобно рисовать кучу громадных прямоугольников.
3.как достучаться до внутренней границы вложенной области не пересекая границу внешней области, не запутывая излишне транслятор?
Что будет, если поступить с областями, также как и с параллельными процессами - вытянуть их границы и взаимодействие с ними на петлю силуэта? У иконы "Адрес" может быть список, чего бы не добавить такую же штуку к иконе "Ветка". Но для этого нужно разместить список внутри иконы "Ветка"? Было найдено графическое решение, отдалённо напоминающее перчатку хоккейного вратаря. Только "ловушку", вторая перчатка - "блин" совсем не подошла
. В результате "Ветка" осталась со своим уникальным именем, а в "ловушку" попал нужный нам список. При этом ничто не мешает применять "Ветку с ловушкой" в контексте
параллельных процессов(пример с параллельными процессами и ловушкой можно найти
здесь).
Вложение:
drakon_ext_sit.png [ 46.93 КБ | Просмотров: 21752 ]
Картинку в высоком разрешении можно скачать
здесь. Размер 0,5МБ.
Такое применение соответствует динамической ситуации. Чтобы использовать статическую(заранее определённую по ходу алгоритма) ситуацию, необходимо обозначить конструктор ситуаций и обеспечить возможность возбуждения ситуаций. Последнее возможно, если присоединить к "Ветке с ловушкой" одноимённый заголовок. Само возбуждение обозначается вставкой с именем ситуации. Конструктор можно найти на картинке.
также были разговоры о вложенности областей:
вложенность в данном случае определяется порядком выполнения веток, задаваемым алгоритмически на Дракон-схеме. Это соответствует модели распространения ситуации, описанной Сафоновым и Пентковским. Порядковый номер веток в списке(ловушке) ничего не определяет и ни на что не влияет. Важно лишь наличие имени ветки в списке.
В качестве бесплатного приложения получаем возможность визуально отделить работу собственно алгоритма от обработки ошибок.
Лицензия - свободная:
http://creativecommons.org/licenses/by-sa/3.0/р.s.:К чему всё это? Можно почитать
Сафонова и
Пентковского. Почти все ответы - у них
08-02-2010: в алгоритме исправлен выход из ветки с ловушкой.
15-02-2010: уточнён синтаксис передачи управления из ловушки