Вспомним, что существуют два основных типа рабочих процессов: последовательные и те, которые работают в соответствии с изменением состояний основного документа (или записи данных). Исполняющая среда рабочих процессов знает эти типы. Фактически созданный как конечный автомат рабочий поток наследует от класса stateMachineWorkf lowActivity, в то время как последовательный рабочий поток реализует класс SequentialWorkf lowActivity.
Эти типы рабочих потоков нашли свое отражение и в инструментах. Например, когда вы создаете новый проект рабочего потока, то вас просят выбрать соответствующий тип проекта. На рис. 20.2 показан диалог Add New Project с выделенным узлом Workflow. Конечно, вы можете создавать проекты рабочих процессов как на Visual Basic, так и на С#.
Многие шаблоны проектов на рисунке имеют две разновидности: один для процесса конечного автомата, а другой — последовательный. Выбор типа создает проект, в который включен файл, реализующий соответствующий класс. Вы можете добавить любой тип рабочего процесса в любой тип проекта. Вы можете также начать с пустого проекта рабочего процесса, в который будете просто добавлять элементы рабочих процессов.
Есть шаблоны проектов, которые включают в себя также и хост-приложение. Они обозначены как Console application (как для последовательного процесса, так и для процесса на основе конечного автомата). Проект такого типа будет содержать простое хост-приложение, которое создает экземпляр вашего рабочего процесса. Вы можете использовать этот тип проекта во время проектирования для выполнения и тестирования вашего рабочего процесса по мере его создания. Однако когда вы будете готовы выдать окончательный вариант, вам нужно будет удалить приложение Console application и изменить тип проекта на проект библиотеки (dll).
Новый проект рабочего процесса настраивает также и соответствующие ссылки для рабочих' процессов внутри .NET Framework. Ключевые пространства имен, инкапсулирующих классы рабочих процессов — это System.Workflow.Activities (различные действия рабочих процессов), System.Workflow.Runtime (классы исполняющей среды, связанные с рабочими процессами), а также System.Workflow.ComponentModel (включает базовые классы, используемые для конструирования действий рабочих процессов).