Логическое обоснование проекта
Основная обязанность компонента технологического управления — обеспечивать для клиента возможность моделирования технологического процесса и переноса через него цифровых артефактов. Кроме того, компонент позволяет клиентам определять ресурсы и распределять их между операциями технологического процесса. Естественно, от компонента требуется возможность повторного использования и расширяемость, а значит, он должен предоставлять общие возможности технологического процесса; предусматривать четкую и универсальную модель функционирования обращающихся к нему приложений; быть невосприимчивым к цифровым артефактам, проходящим через те или иные вариации технологического процесса. Для создания полнофункционального компонента технологического процесса требуются сложные идиомы — в частности, ветвление, слияние и зацикливание. Как правило, для реализации возможности технологического управления требуются недюжинные ресурсы. Компания Inmedius неожиданно столкнулась с непредвиденной трудностью. Приложения, разрабатываемые в рамках Luther, явственно демонстрировали серьезную потребность в возможностях технологического управления, однако их комплексной реализации препятствовали следующие факторы: ♦ размер и сложность комплексного технологического управления выходили за рамки имевшихся у компании ресурсов; ♦ комплексная возможность технологического управлении не относилась ни к базовым коммерческим задачам, ии к центральной компетенции компании; ♦ значительно более комплексные решения были уже созданы другими компаниями. В связи с этим было принято стратегическое решение об образовании альянсов с компаниями, сумевшими создать средства технологического управления для приложений J2EE в виде компонентов. Однако прежде Inmedius предстояло реализовать подмножество этих средств, обеспечивающих решения. Таким образом, стратегия заключалась в том, чтобы спроектировать компонент, который впоследствии можно было бы без труда заменить более комплексным компонентом от сторонней компании. Отсюда сформировалась потребность в стандартном интерфейсе компонента технологического управления. Обратите внимание на то, как в данном случае ведет себя архитектурно-экономический цикл. Проект архитектуры Luther способствовало открытию новой коммерческой перспективы (связанной с технологическим управлением), что побудило компанию принять явное решение о вхождении или, вернее, отказе от вхождения на данный сегмент рынка. Руководство Inmedius решило, что рассматриваемая область выходит за рамки базовой компетенции компании. Группой по технологическому управлению (Workflow Management Coalition) был разработан ряд спецификаций функций и поведения, связанных с технологическим управлением, который впоследствии был признан сообществом. При построении компонентов архитекторы Inmedius исходили из этих спецификаций, однако реализовывали только ту функциональность, которая была необходима для разрабатываемых приложений. Принятая стратегия сбалансировала знания и опыт сообщества разработчиков средств технологического управления и его деятельность в целом. Поскольку коммерческие задачи и отношения между объектами в этом сообществе уже определены, Inmedius не пришлось разрабатывать их с чистого листа. Кроме того, придерживаясь спецификаций группы по технологическому управлению, компания Inmedius получила возможность замены своего компонента технологического управления аналогичным компонентом от другого производителя. Операция эта, проводившаяся в случае, если конкретному заказчику требовалась функциональность, которую компонент Inmedius оказывался неспособным предоставить, не требовала особых усилий. Две спецификации группы по технологическому управлению описывали два основополагающих элемента: модель технологического управления и представление ее экземпляров для периода прогона (рис. 17.7). Модель технологического управления состоит из одного или нескольких процессов, в каждом из которых определены действия, переходы между этими действиями и все ресурсы-участники. В каждом процессе задействован диспетчер, который управляет всеми экземплярами периода прогона для конкретного процесса; каждый экземпляр периода прогона хранит информацию о состоянии — в частности, о том, какие действия уже завершены, какие активны и кто их назначил, — а также контекстные данные, необходимые компоненту технологического управления для принятия решений по активному процессу. Рис. 17.7. Диаграмма классов компонента технологического управления
Одна из проблем, которую Inmedius предстояло решить, была связана с параллелизмом. Есть ли необходимость в том, чтобы модель технологического управления могли модифицировать несколько пользователей одновременно? Следует ли разрешать пользователю модифицировать модель технологического управления при наличии ее активных экземпляров для периода прогона? Может ли пользователь запускать новый технологический процесс, если его модель в данный момент модифицируется? Учитывая реализацию, а также отношения между моделью и ее экземплярами периода прогона, было бы весьма проблематично ответить утвердительно на любой из этих вопросов. Следовательно, в области решений перечисленные ситуации нужно запретить. Поскольку все трудности в перечисленных ситуациях связаны с модифицированием модели технологического управления, решение предусматривало наличие связанного с ней ключа. Для того чтобы модифицировать модель, пользователь должен получить этот ключ. Каждой модели соответствует единственный ключ, причем при наличии активных экземпляров этой модели для периода прогона ключ не выдается. Кроме того, если модель технологического управления заблокирована, создание новых экземпляров периода прогона также блокируется.
|