WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     || 2 |

Курс "Обзор перспективных технологий Microsoft.NET"

Лекция 6. Windows Workflow Foundation (WWF)

Понятие workflow

При создании бизнесприложений обычно различают несколько процессов:

Операционные (технические) процессы: связь с базой данных, посылка почты и т.п.

Lineofbusiness (LOB) процессы: посылка инвойсов, получение платежей Уникальные процессы – процессы, которые уникальны для компании, в которой проистекают данные процессы.

От этих трех типов процессов никуда не деться при создании любого бизнесприложения, однако только третий тип процессов описывает бизнес именно вашей компании, в то время как первые два могут быть реализованы некоторым стандартным образом.

Обычно такие процессы и называют «бизнеспроцессами». Бизнеспроцесс – это совокупность видов деятельности, которая имеет один или более входных потоков и создает выход, имеющий ценность для владельца этого процесса (некоторой компании).

Сложные бизнеспроцессы могут быть описаны с помощью потоков работ (workflow). Согласно Workflow Management Coalition (WfMC) workflow это «полная или частичная автоматизация деловых процессов, при которой документы, информация или задания передаются от одного участника другому для выполнения определенных действий согласно своду процедурных правил». Как следует из данной формулировки, workflowинициативы направлены, прежде всего, на автоматизацию деловых процессов, изначально выполняемых вручную. Под «участниками» в понятии workflow понимаются как информационные системы, так и люди. Именно участие людей привносит специфику в управление бизнеспроцессами, специфику, которая препятствует полной автоматизации этого управления.

Специфика бизнеспроцессов В отличие от детерминированных и коротких операционных процессов, бизнеспроцессы гораздо менее предсказуемы. Бизнеспроцессы имеют следующую специфику:

Участие как информационных систем, так и людей Потенциально большая (и недетерминированная) длительность Большое количество одновременных «экземпляров» конкретного типа бизнеспроцесса Бизнеспроцесс зачастую представляет собой единую транзакцию, которую иногда невозможно полностью откатить (что обсуждалось на лекции про WSстандарты) Все это делает управление бизнеспроцессами весьма нетривиальным занятием. Неспроста компании, занимающиеся автоматизацией больших предприятий со сложной логикой работы, так недешево берут за свои услуги.

Примеры бизнеспроцессов:

Документооборот предприятия B2Bпроцессы (businesstobusiness) Рассмотрение заявления на ипотечный кредит Поддержка пользователей Пример бизнеспроцесса В статье Дино Эспозито приводится типичный пример бизнеспроцесса по поддержке пользователя, в котором хорошо видны все типичные черты бизнеспроцессов.

Итак, обычная поддержка пользователей происходит следующим образом:

Пользователь звонит в службу поддержки с некоторой жалобой Оператор открывает карточку с именем пользователя, временем и коротким описанием проблемы Как только карточка открыта, оператор забывает о ней, и принимает следующий звонок. В конце дня оператор выключает свой компьютер и идет домой В другом отделе, возможно, в другом месте, технический специалист извещается о возникших проблемах. Он либо принимает запрос, либо переадресует его комуто другому Далее состояние запроса может меняться поразному: он может быть решен, по запросу может потребоваться дополнительная информация, он может быть отклонен и т.п. Со сменой статуса может меняться и ответственный за решение проблемы.

Этот пример наглядно демонстрирует специфику бизнеспроцессов:

В бизнеспроцессе поддержки пользователей участвуют как приложения (скажем, приложение по созданию и хранению карточек), так и люди (оператор телефонной службы, технические и прочие специалисты) От момента звонка до решения проблемы может пройти не один день, и даже месяц, в зависимости от сложности исправления В каждый момент в различных состояниях существует множество запросов, и каждый из них живет по некоторым правилам вне зависимости от других.

Стандарты описания workflow Человечество не стоит на месте. Конечно же, давно существуют способы описания бизнеспроцессов. Один из этих способов – создание для них последовательностей работ (workflow). Для workflow существуют различные стандарты описания, например, WPDL от уже упоминавшейся WfMC (об этом можно прочитать, например, здесь: http://www.pcweek.ru/Year2001/N19/CP1251/CorporationSystems/chapt4.htm и http://www.pcweek.ru/Year2001/N20/CP1251/CorporationSystems/chapt5.htm) или стандарт OMG Workflow Management Facility. Существует множество инструментальных средств, однако в основном они позволяют разработчикам бизнеспроцессов лишь рисовать красивые диаграммы и размышлять над ними долгими зимними вечерами. Это, конечно, тоже полезно: такие диаграммы предоставляют абстракции, полезные для описания workflow реального мира. Однако, как всегда, хочется большего.



Что такое WWF Microsoft предлагает свою технологию для разработки бизнеспроцессов – Windows Workflow Foundation, один из трех китов.NET Framework 3.0 (бывшая WinFX). Эта технология, как и прочие, состоит из библиотек поддержки исполнения (runtime), API для создания workflow и встроенных в Visual Studio средств разработки.

Предпосылки появления WWF Как утверждает сама Microsoft, разработка workflow до сих пор является уделом небольшой части архитекторов и слишком сложна для основной массы программистов, и, тем более, далеких от программирования людей. Целью создания WWF, как говорит Microsoft, является превращение деятельности по созданию workflow из узкоспециализированной в обычную повседневную работу (слоган «Transform workflow from niche to mainstream paradigm»). Microsoft хочет сделать единую технологию для создания и работы workflow для Windows и построить экосистему партнеров и решений на базе WWF.

Основные понятия WWF Workflow – набор активностей Хост – приложениесервер, внутри которого работает workflow. Хостом WWFприложения может быть любое.NET приложение: например, консольное или Windows Forms. Также хостом может быть IIS, и, в будущем, BizTalk Server Библиотека активностей: активности бывают как базовые (встроенные), так и пользовательские (созданные вами) Движок времени исполнения – часть.NET Framework 3.0, которая «умеет» интерпретировать workflow Библиотеки времени исполнения – собственно, библиотеки (рантайм), обеспечивающие требуемую функциональность, такую, как, скажем, сохранение состояния workflow.

Workflow – декларативно описанный процесс, а не чтото, размазанное по коду во многих файлах, что делает его самодокументируемым и дает прочие преимущества.

Типы workflow WWF предлагает разработчику три типа workflow (вернее, два и одну разновидность):

Sequential workflow State machine workflow Datadriven workflow Workflow после компиляции – просто обычная.NETсборка.

Поддержка в Visual Studio С установленным расширением WWF для Visual Studio 2005 в ней появляется некоторое количество новых типов проектов, таких, как, например, Sequential Workflow Console Application. Разработчику доступны дизайнеры диаграмм для создания и работы с перечисленными типами workflow. Появляется соответствующий набор designtime компонентов (встроенные activity, набор которых можно расширять), которые можно размещать на диаграмме в привычном стиле dragndrop.

Различные activity от сторонних разработчиков можно скачать на http://wf.netfx3.com/files/14/default.aspx.

Последовательный поток работ (Sequential workflow) Этот тип workflow описывает простую последовательность работ с возможными условными ветвлениями. Диаграммы sequential workflow очень напоминают блоксхемы.

Кроме основного пути исполнения, поддерживаются диаграммы для обработки ошибок (Workflow Exceptions), для который есть свои активности типа FaultHandler, а также диаграммы отмены workflow (Workflow cancellation). Собственно, обе эти диаграммы – такие же последовательные workflow, но описывающие специальные пути исполнения. Входом этих диаграмм являются какието из активностей из основной диаграммы.

Базовые активности Базовый набор активностей состоит из двух с половиной десятков активностей и включает в себя возможности управления исполнением, построения циклов, распараллеливания, работу с исключениями, подсоединение к источникам данных, связывание с Webслужбами. Перечислим некоторые важные активности:

CallExternalMethod – вызов внешнего метода Code – обычный код, который можно прописать вручную в редакторе Delay – задержка IfElse активность позволяет управлять ветвлениями. Условия ветвлений могут быть введены как обычным кодом, так и с помощью построителя условий и сохраняться в xmlфайле с расширением.rules (второй вариант более предпочтителен, т.к. в этом случае условие становится частью модели и может быть загружено динамически и даже изменено) Listen – обработка внешних событий. Эта активность позволяет организовывать ожидание событий, подобных описанным в примере: скажем, workflow для карточки с описанием проблемы может включать в себя ожидание изменения статуса карточки: проблема может быть решена или отклонена. Т.к. решение об этом принимается вне приложения, отвечающего за открытие карточки, активность Listen будет весьма к месту. До тех пор, пока не придет одно из событий, описанных в Listen, workflow будет неактивно (и, следовательно, может быть выгружено из памяти) WebServiceInput и WebServiceOutput – активности, позволяющие взаимодействовать с вебсервисами (полезно для организации workflow в ASP.NET приложениях, о чем будет чуть позже).





WWF – это framework, а следовательно, набор активностей расширяем. Впрочем, не только активностей – можно добавлять и свои типы диаграмм, что, правда, посложнее, но все равно возможно.

Машина конечных состояний (State machine workflow) Модель конечных состояний (state machine workflow) позволяет моделировать переходы между несколькими предопределенными состояниями, что особенно актуально при создании больших систем подобных системам документооборота, где у каждого документа может быть множество состояний, и переход из одного состояния в другое может сопровождаться сложными правилами. На этой диаграмме отображаются только состояния и переходы между ними.

Datadriven workflow Иногда нас, как разработчиков workflow больше интересует то, чтобы при обработке нашего workflow выполнялся набор правил, нежели чем переходы из состояния в состояние. Например, мы управляем конвейером по сборке какихто изделий и узнаем, что для выполнения очередного оплаченного заказа нам не хватает деталей. У нас есть набор возможных действий: взять готовое изделие или детали из другого заказа, задержать выполнение заказа, отменить заказ и вернуть деньги, разбить заказ на две части и сначала выполнить ту часть, для которой деталей хватает и т.п. Однако на принимаемое решение влияет набор бизнесправил подобных следующим:

Доставка к «золотым заказчикам» не может быть произведена с задержкой Увеличение стоимости в результате корректирующих действий не может превышать 5% от общей стоимости заказа Нельзя задерживать заказ, если он уже был задержан Таким образом, на решение влияет не только текущее состояние заказа, но и набор бизнесправил. Это можно выразить в терминах состояний (объединив состояния заказов с правилами), но набор состояний становится слишком велик. Кроме того, сами состояния нас не очень интересуют – как было сказано ранее, нас интересует то, чтобы выполнялись правила.

Для таких сценариев в WWF существует datadriven workflow. На самом деле этот тип workflow рисуется на sequential workflow diagram, но с помощью специальных активностей – ConstrainedActivityGroup и Policy.

Политики Политики представлены активностью Policy и предназначены для определения и выполнения правил, пример которых мы только что обсуждали. Политика должна определять набор правил (RuleSet). Каждое правило имеет имя, приоритет и некоторое условие с двумя вариантами then/else. Условие – такое же, как и условие в активности IfElse.

Исполнение набора правил происходит следующим образом:

Из набора правил выбирается правило с максимальным приоритетом Движок вычисляет условие и выбирает then или else ветку правила для исполнения Движок исполняет эту ветку Если правило обновляет поле или свойство, используемое в предыдущих правилах (с большим приоритетом, которые были исполнены перед исполняемым), то предыдущие правила перевычисляются (только те, в которых использовались обновляемые поля, а не все; кроме того, можно пометить правило как не подлежащее перевычислению) Процесс исполняется до тех пор, пока набор правил не будет полностью вычислен Более подробно об исполнении правил, зависимостях и прочих вещах, связанных с правилами, см. статью http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnlong/html/intWF_FndRlsEng.asp.

Pages:     || 2 |










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.