Хостинговая часть рабочего процесса — это то, на чем мы хотим сосредоточить наше внимание. Конечно, хост должен сделать ссылки на пространства имен Windows Workflow и на саму реальную библиотеку рабочего процесса. В нашем примере объединенный шаблон уже позаботился об этих двух требованиях.
При старте приложения хосту необходимо создать экземпляр класса Workf lowRuntime (для того чтобы создать рабочие процессы и управлять ими). Обычно это делается при помощи оператора using:
using (WorkflowRuntime workflowRuntime = new WorkflowRuntime()) {
}
В течение жизни приложения должна быть доступна исполняющая среда. Следующий шаг— запуск исполняющей среды. Вы можете либо явно вызвать для этого метод startRuntime, либо подождать создания и старта первого рабочего процесса. При этом
исполняющая среда рабочих процессов запустится автоматически. В нашем примере мы выберем второй способ.
Вы можете создать экземпляр рабочего процесса при помощи вызова метода CreateWorkflow объекта исполняющей среды. При этом вам будет возвращен тип Workflowinstance, с которым вы можете работать. В этот метод вы можете передать тип рабочего процесса, который вы хотите создать. Вот пример:
Workflowinstance instance = workflowRuntime.CreateWorkflow( typeof(TravelRequestWf.TravelRequestProcess));
С целью идентификации рабочего процесса для исполняющей среды используется свойство Instanceld объекта Workf lowinstance. Исполняющая среда может обеспечивать хостинг множества экземпляров. Поэтому данный идентификатор важен для идентификации выполняющегося рабочего процесса, с которым клиент работает или который он запрашивает. Выполняющийся рабочий процесс — это находящийся в работе процесс. Он может находиться в памяти или быть сохранен в базе данных. Это свойство имеет тип Guid и может быть получено следующим образом:
Guid wfld = instance.Instanceld;