Механизм управления потоками Windows Workflow Foundation. Часть 3

Источник: bytemag
Андрей Колесов

Читать часть 2

Итак, наше консольное приложение создает экземпляр процесса, используя класс WorkflowRuntime, а потом запускает его на выполнение. Здесь отслеживаются два события: WorkflowCompleted и WorkflowTerminated. По умолчанию процессы запускаются в асинхронном режиме механизмом Windows Workflow, поэтому хост-приложение не закроется до того, как закончится выполнение процессов. Для синхронизации потоков можно использовать например, объект AutoResetEvent.

Теперь нажмем F5 для отладки написанной программы и посмотрим, как она работает. Нам будет предложено вводить числа, для которых выполняется тривиальная обработка: отрицательные числа пропускаются, для положительных вычисляется факториал.

Листинг 1. Код главного консольного приложения

Module Module1
  Class Program
    Shared WaitHandle As New AutoResetEvent(False)
    Shared Sub Main()
      Using workflowRuntime As New WorkflowRuntime()
      AddHandler workflowRuntime.WorkflowCompleted, _
        AddressOf OnWorkflowCompleted
      AddHandler workflowRuntime.WorkflowTerminated, _
        AddressOf OnWorkflowTerminated
      Dim workflowInstance As WorkflowInstance
        workflowInstance = _
          workflowRuntime.CreateWorkflow(GetType(Workflow1))
        workflowInstance.Start()
        WaitHandle.WaitOne()
        Console.ReadLine()
      End Using
    End Sub
    Shared Sub OnWorkflowCompleted( _
      ByVal sender As Object, _
      ByVal e As WorkflowCompletedEventArgs)
  
      WaitHandle.Set()
    End Sub
    Shared Sub OnWorkflowTerminated( _
      ByVal sender As Object, _
      ByVal e As WorkflowTerminatedEventArgs)
 
      Console.WriteLine(e.Exception.Message)
      WaitHandle.Set()
    End Sub
  End Class
End Module

Мнение разработчиков

Компания DocsVision - разработчик одноименной системы управления документами и бизнес-процессами. Одна из особенностей фирмы и ее продукта - ставка на широкое использование технологий  Microsoft, более того, акцент на использование их новшеств. В свое время компания одной из первых в стране стала применять .NET в своих продуктах; еще на этапе бета-тестирования Windows Vista она приступила к изучению инноваций ее программной модели Windows Workflow Foundation. WF имеет прямое предметное отношение к DocsVision, и ее разработчики намерены использовать этот механизм для расширения возможностей системы в управлении документами - он должен быть задействован в новой версии DocsVision, которая появится ближайшей осенью.

Мы попросили разработчиков DocsVision поделиться своим мнением о возможностях WF. Вот обобщенное изложение их коллективного мнения.

Несмотря на то, что в названии технологии присутствует термин workflow, WF реализует лишь небольшую часть компонентов концепции workflow-систем. По существу WF - это одна из библиотек .NET 3.0 (набор базовых классов), обеспечивающая создание процессно-ориентированных приложений на базе платформы .NET. В приложениях, написанных с использованием этих библиотек, можно будет реализовать некоторые функции процессных систем, а именно: возможность динамического получения информации о ходе приложения (журналирование); средства приостановки и запуска приложений (например, с целью модификации в процессе исполнения переменных окружения) и даже возможность изменения кода выполняемых программ после их остановки и перезапуска; встроенные интерфейсы для организации временного хранения данных окружения и т. п. Тут следует подчеркнуть, что Windows Workflow Foundation - это управление любыми процессами, необязательно деловыми, но и технологическими, и вообще любыми, которые можно описать алгоритмически.

В WF входят не только базовые функции управления процессом, но и интерфейс для визуального программирования процессов в Visual Studio. Помимо этого в состав новой версии Visual Studio** войдет готовый инструмент для визуальной разработки программ на базе WF. Он будет представлять собой диаграмму процесса, состоящего из готовых сборок для реализации стандартных компонентов процессного приложения. Однако WF (и именно так его позиционирует Microsoft) - это не законченная workflow-система, а набор технологических компонентов, на базе которых программисты третьих фирм смогут реализовать собственные системы управления бизнес-процессами (вот они-то уже будут собственно workflow-системами). Или же можно будет интегрировать функции WF в собственные прикладные решения. Например, Microsoft реализовала такую возможность в Office SharePoint Server 2007 и заявляет об использовании такого подхода в новой версии Microsoft BizTalk.

**Orcas, которая выйдет примерно одновременно с Windows Server Longhorn. - Прим. А.К.

Сама же библиотека WF не претендует на звание полнофункциональной системы управления бизнес-процессами, так как в ней отсутствует целый ряд необходимых инструментов, а именно:

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

В целом WF было бы правильно позиционировать как универсальный механизм, на который могут ориентироваться разработчики процессно-ориентированных приложений. Использование WF для решения собственных задач обеспечит этим разработчикам более высокую отдачу от базовой серверной и клиентской инфраструктуры Microsoft, а также даст возможность нарабатывать базу отдельных функциональных компонентов. В дальнейшем можно будет использовать библиотеки компонентов процессов - как свои, так и разработки третьих фирм - для реализации сложных бизнес-процессов, аналогично тому, как сейчас есть возможность повторного использования программных компонентов в "обычных" проектах заказной разработки.

Начиная с версии 4.0 система DocsVision будет базироваться на WF, что обеспечит нашим партнерам преимущества при реализации документно-ориентированных процессов, а также позволит приступить к созданию упомянутых выше библиотек.

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

Базовые "алгоритмические" функции, конечно, были в DocsVision и раньше, но сейчас мы заменяем эти функции на Activities WF, переписывая их вызовы в остальных модулях DocsVision. В результате мы рассчитываем снизить затраты на поддержку и развитие этого базового слоя управления процессами, полагая, что теперь это будет делать  Microsoft, а мы сможем сосредоточиться именно на бизнес-уровне, развивая и поддерживая его.

Мы также рассчитываем использовать шлюзовые возможности, связанные с наличием в .NET Framework других надстроек, таких, как Communication Foundation, и их интеграцию с Workflow Foundation. Сейчас мы сами поддерживаем и развиваем шлюз DocsVision с Exchange, необходимый, например, для рассылки извещений, документов, поручений и обработки различных событий с этими объектами. Мы надеемся, что и эта - в большей степени технологическая, нежели прикладная - задача будет решаться Microsoft.

Вообще говоря, WF представляется нам удобным "стандартом" для разработки шлюзов к Workflow от любого приложения. Во всяком случае, это стимулирует вендоров к созданию таких шлюзов. Таким образом может появиться, например, шлюз к IBM Lotus Domino, "1С", Microsoft Dynamics (последние два войдут в состав DocsVision 4.0) и т. п. Любой такой шлюз будет создаваться и поддерживаться не нами, а разработчиком приложения. Однако мы сможем этот шлюз использовать, и его наличие будет расширять рынок и для нашей системы тоже.

Что еще изменится в нашей системе? Мы планируем включить в наш редактор возможность использовать готовые блоки бизнес-процессов, разработанные на базе WF. Это облегчит пользователям перенос своих бизнес-процессов в нашу систему и снизит стоимость поддержки и эксплуатации их решений.

В DocsVision есть свои приложения - это сервер управления документами, приложение "Делопроизводство" и ряд других. Если WF станет действительно стандартом де-факто для создания систем управления процессами, мы можем перенести шлюзы наших приложений на уровень WF для того, чтобы их использовали наши ISV-партнеры.

Как будет развиваться ситуация, во многом зависит и от Microsoft. Если в ближайшее время появятся средства интеграции WF c Microsoft SharePoint Services, Microsoft Dynamics и другими системами прикладного уровня от Microsoft и других производителей, а также набор Activities для реализации различных прикладных задач, это может создать "критическую массу", необходимую для широкого использования WF сообществом разработчиков ПО.

Окончание


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=23754