Программирование >>  Программирование с использованием ajax 

1 ... 382 383 384 [ 385 ] 386 387 388 ... 396



Windows Workflow Foundation

Приветствуем вас в последней главе книги и надеемся, что нам удалось припасти самое интересное напоследок! Многие приложения нуждаются в наличии какой-нибудь возможности для их конфигурирования или настройки, и традиционно таковая обеспечивалась путем добавления в приложения какого-то хитрого приема, с помощью которого сторонние разработчики могли бы вставлять в них дополнительный код. Наиболее распространенный подход предусматривал определение в .NET интерфейса и последующую проверку того, что каждый подключаемый модуль поддерживает его. Недостаток такого подхода состоял в том, что все требовалось делать с помощью кода, что для конечных пользователей без опыта программирования было устрашающим, а то и вовсе невозможным.

Другим способом для расширения приложений было и остается применение какого-то языка сценариев, вроде VBA (Visual Basic for Applications), который входит в состав Microsoft Word, Excel и многих других приложений. Проблема такого подхода состоит в стоящем на пути для начала его применения барьере, а именно - затратах, связанных с приобретением лицензии на использование VBA, к тому же интеграция этого продукта в собственные приложения тоже никак не является простым процессом.

В .NET 3.0 и выше доступен другой (и, по нашему мнению, гораздо более удобный) способ для предоставления пользователям возможности выполнять настройку приложения, и заключается он в применении такого продукта, как Windows Workflow Foundation (WF).

К рабочему потоку (workflow) можно относиться и просто как к функции на языке С#, которая состоит из ряда операторов (называемых действиями (activities)), а также необязательных параметров и возвращаемых значений. На этом, однако, все его сходство с функцией заканчивается, потому что рабочий поток определяется не с помощью кода, а с помощью ряда графических строительных блоков.



Действия являются теми строительными блоками, из которых конструируется рабочий поток: в .NET поставляется 30 встроенных действий, часть из которых рассматривается в этой главе. Каждое действие, по сути, представляет собой всего лишь .NET-класс, который наследуется от определенного базового класса, что позволяет разработчику создавать свои собственные действия для выполнения специальных операций по обработке. Процесс создания рабочего потока напоминает процесс конструирования формы или страницы ASP.NET: разработчик может перетаскивать действия из панели Toolbox (Панель инструментов) на поверхность конструктора и объединять их в завершенный рабочий поток.

При запуске потока в действие вступает механизм исполняющей среды (называемый исполняющей средой рабочего потока - WorkflowRuntime), который и выполняет все входящие в состав данного рабочего потока действия. Этот механизм знает, как планировать рабочие потоки, и применяется для обеспечения взаимодействия между выполняющимися экземплярами рабочих потоков. Рабочий поток можно сравнить с шаблоном Word: если рабочий поток - это шаблон, тогда выполняющийся экземпляр данного рабочего потока - это созданный из этого шаблона документ.

В частности, в этой главе будут рассматриваться следующие темы.

□ Как создаются рабочие потоки.

□ Что собой представляет действие и как пользоваться несколькими встроенными действиями.

□ Как обрабатывать неисправности в рабочем потоке.

□ Как пользоваться службой обеспечения постоянства рабочих потоков.

□ Как передавать параметры рабочему потоку.

Практическое занятие Пример Hello World

(в стиле рабочего потока)

Ни одно описание нового принципа программирования не бывает полным без примера программы Hello World , поэтому чтобы не нарушать традицию, ниже предлагается реализовать этот традиционный пример с использованием Windows Workflow Foundation.

1. В Visual Studio 2008 доступно несколько новых типов проектов, поэтому чтобы создать новый проект типа рабочего потока, выберите в древовидном представлении Project Types (Типы проектов) элемент Workflow (Рабочий поток), а затем в представлении Templates (Шаблоны) - шаблон Sequential Workflow Console Application (Консольного приложение последовательного рабочего потока), как показано на рис. 36.1.

Обратите внимание на раскрывающийся список в правом верхнем углу показанного на рис. 36.1 окна: он является новым средством в Visual Studio 2008 и позволяет выбирать в качестве целевой сразу несколько версий .NET Framework из одной и той же копии Visual Studio.

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



Po> yP i

VfHu*lC

Sm*rtDevKe

D tab*sc

Test


Oth r lir>gu*9e* DntfibulPd Syrtems Otnct Pfoject Type

Jr5 Plo rc

A project fo crejtiog * .

LocMWk

Sohitiof. SohJlK>nN me

V4u < Stu<J4> .oiUHed tempUf Empty Лсг1. о* Project 3iS tu ntia( Workflow CofHoJ* AppUcjt. PSequ n ) Wortftew L* y 9isu(e МкЬпе WmHIow Consote AppI 9st*te M.<:rune *cK tew L*)f.ry Я1 Wor low Actrvy l*f*or

MyTemplitei - ........

Uls * h Online TempUtM

1 worlrflw* console eppUcetion, (,N€T Fnnework 35j

0-\LKei\K1oe9*n Documents Home Beg.nnmgCvWofMlowNC ode [7

J CimU directory fM solution

01 HetioWoHd

Pwc. 36.1. Создание нового проекта типа Sequential Workflow Console Application

2. Продолжая создавать пример Hello World , добавьте действие, каковым в данном случае должно быть Code (Код), доступное в окне Toolbox. На рис. 36.3 показано, как будет выглядеть рабочий поток после добавления этого действия.

Последовательный рабочий поток

Область, в которую можно перетаскивать действия

Последовательный рабочий поток

2 codeActlvltyl

Рис. 36.3. Рабочий поток после добавления действия Code

Рис. 36.2. Последовательный рабочий поток

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

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

public sealed partial class Workflowl: SequentialWorkflowActivity {

public Workflowl0 {

InitializeComponent();



1 ... 382 383 384 [ 385 ] 386 387 388 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика