Вопрос

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

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

Мне очень нравится идея WF, однако она кажется относительно неизвестной, и во многих старых комментариях, с которыми я столкнулся, упоминается, что она чрезвычайно сложна, когда вы вникаете в нее.

Если он переработан до такой степени, что его невозможно использовать (или это плохой компромисс) для проекта малого и среднего размера, это то, что мне нужно знать.

Конечно, он вышел с конца 2006 года, так что, возможно, он уже повзрослел.Если это так, то это еще одна информация, которая будет очень полезна!

Заранее спасибо!

Это было полезно?

Решение

Windows Workflow Foundation — очень функциональный продукт, но все еще в своей первой версии :-(

К основным причинам использования относятся:

  1. Визуальное моделирование бизнес-требований.
  2. Отделение бизнес-логики от бизнес-правил и экспортирование правил в виде XML-файлов.
  3. Отделение вашего бизнес-потока от вашего приложения путем экспорта ваших рабочих процессов в виде XML-файлов.
  4. Создание длительных процессов с возможностью автоматического реагирования, если в течение длительного периода времени ничего не происходило.Например, счет не оплачен.
  5. Автоматическое сохранение длительных рабочих процессов для снижения использования ресурсов и обеспечения возможности перезапуска процесса и/или машины.
  6. Автоматическое отслеживание рабочих процессов помогает удовлетворить бизнес-требования.

WF поставляется в виде библиотеки/фреймворка, поэтому большую часть времени вам нужно написать хост, который создает экземпляр среды выполнения WF.Тем не менее, использование WCF, размещенного в IIS, является жизнеспособным решением и экономит много работы.Однако соединение WCF/WF далеко не идеально и требует серьезной доработки.Глянь сюда http://msmvps.com/blogs/theproblemsolver/archive/2008/08/06/using-a-transactionscopeactivity-with-a-wcf-receiveactivity.aspx Больше подробностей.Ожидайте немало изменений/улучшений в следующей версии.

WF (и WCF) занимают центральное место во многих новых разработках Microsoft.Во время PDC можно ожидать интересных объявлений.

Кстати, поддержание нескольких версий рабочего процесса требует некоторой работы, но в основном это стандартный .NET.Я только что сделал серию сообщений в блоге на эту тему, начиная здесь: http://msmvps.com/blogs/theproblemsolver/archive/2008/09/10/versioning-long-running-workfows.aspx

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

Другие советы

Связанный вопрос: Когда использовать Windows Workflow Foundation? Мой ответ там:

Вам может понадобиться WF, только если что -то из следующего верно:

  1. У вас длительный процесс.
  2. У вас есть процесс, который часто меняется.
  3. Вам нужна визуальная модель процесса.

Для получения более подробной информации см. Пост Пола Эндрю: Для чего использовать Windows Workflow Foundation?

Пожалуйста, не путайте и не свяжите WF с визуальным программированием любого рода.Это неправильно и может привести к очень плохим архитектуре/дизайнерским решениям.

Итак, если у вас есть такие требования, то WF — хороший кандидат.Конечно, это относительно сложно, но следует отметить, что проблемы, которые пытаются решить, также сложны (а иногда и очень сложны).ИМХО, например, очень сложно обезвоживать/перегидратировать объекты, к которым прикреплены обработчики событий (с событиями, которые могут быть вызваны, когда объект отсутствует в памяти).

Я не могу судить, что вы подразумеваете под «малым и средним проектом», но в целом я бы сказал, что если в вашем проекте есть хотя бы два требования из приведенного выше списка, то вы можете рассматривать WF как решение.

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

С другой стороны, у него есть некоторые действительно серьезные проблемы, такие как отсутствие управления версиями, которые могут серьезно навредить вашему приложению в будущем.Мы были вынуждены развернуть до трех параллельных версий одного и того же рабочего процесса с именами xxx-v1, xxx-v2 и xxx-v3, чтобы старые экземпляры работали, а новые использовали обновленные версии.Настоящая заноза в заднице.О, и там также есть несколько действительно неинтуитивных концепций (токены корреляции, что за фигня??)

У нас на работе был проект, в котором я участвовал с использованием Workflows.Идея (от руководства) заключалась в том, что мы, программисты, напишем действия рабочего процесса вместе с «движком» и структурой.Тогда непрограммисты позаботятся обо всем остальном, скомпилировав свои собственные рабочие процессы в библиотеки DLL, которые движок автоматически загрузит.

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

Конечным результатом стало то, что мы не смогли сделать модули Workflow достаточно универсальными, чтобы их мог использовать кто-то еще.Таким образом, именно программисты были вынуждены работать с рабочими процессами, а рабочие процессы только мешали нам.

Я использую Workflow 4.0 последние несколько месяцев и, хотя он меня в основном впечатлил, мне было очень трудно его освоить.

Для самой последней версии (которая поставляется с .NET 4.0 RC) практически нет документации в Интернете, в книгах или учебных курсах.Я нашел только статьи, относящиеся к ныне несуществующей версии 3.0.Даже документация MSDN невелика.

Дизайнер рабочих процессов не настолько интуитивен, каким должен быть, поэтому учиться очень сложно.Мне приходилось полагаться на ответы одного человека на StackOverflow (спасибо, кстати, Морис!) — и без его помощи я бы наелся.

Подводя итог, я думаю, что у него есть потенциал, но вы были бы совершенно безумны, если бы изучали его - подождите дополнительного обучения, документации и книг, иначе вы будете заниматься этим вслепую!

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

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

Я рассматриваю MS WF как низкоуровневую библиотеку рабочих процессов, а не как полноценный корпоративный продукт для рабочих процессов, такой как K2.Он позволит вам создать приложение с поддержкой рабочего процесса, но само по себе не является приложением рабочего процесса.Мой опыт работы с ним в этом качестве был положительным, хотя нам пришлось построить вокруг него большую часть нашей собственной инфраструктуры (фреймворк публикации/подписки, менеджер жизненного цикла рабочего процесса и т. д.).Большая часть документации довольно упрощена и не описывает создание корпоративного приложения рабочего процесса на базе MS WF.

Трудно учиться.Довольно гибкий.Не путать с визуальным инструментом для конечных пользователей, предназначенным только для программистов.Не уверен, что мне нравится подход к свойствам зависимостей.

Это действительно зависит от того, что вы хотите с этим делать.Я использовал его лишь немного, но по сравнению с более зрелыми продуктами, такими как MetaStorm (технически я знаю, что это BPM, но компонент рабочего процесса все еще есть), Process Choriographer и рабочий процесс IBM MQ, нет никакого сравнения.Это просто недостаточно зрело.С другой стороны, там, где других нет, он бесплатен и, вероятно, может выполнить свою работу.Не знаю, стал бы я проводить на нем многомиллионную операцию, но с меньшими операциями я бы дал еще один шанс.Настоящее препятствие, с которым вам придется столкнуться, — это изменение мыслительного процесса, которого оно требует.Если у вас нет разработчиков, которые раньше работали с государственными системами, это может стать настоящим препятствием.

Брайан, я не могу ответить на ваш комментарий, но в любом случае под управлением версиями я подразумеваю внесение изменений в базовый код рабочего процесса без нарушения работы уже запущенных экземпляров и корректное применение обновлений к существующим рабочим процессам.Я не уверен насчет «стандартного» WF, но, по крайней мере, в среде SharePoint не существует концепции версий рабочих процессов, поэтому новые версии приходится развертывать как совершенно другие рабочие процессы, что становится кошмаром для обслуживания.Это не имеет ничего общего с «регидратацией», регидратация — это процесс, посредством которого вы возвращаете «спящий» рабочий процесс к активности после какого-либо события или изменения состояния.Это прозрачно обрабатывается средой выполнения рабочего процесса.

WF интегрирован в SharePoint (WSS 3.0), и я создал немало рабочих процессов для различных веб-сайтов SharePoint, поэтому могу рассказать о своем опыте использования WF в SharePoint.По сравнению с другими платформами рабочих процессов WF имеет хорошие показатели.Он стабилен (я не столкнулся с какими-либо загадочными ошибками), рабочие процессы довольно легко проектировать (спасибо дизайнеру рабочих процессов в Visual Studio), и вы можете использовать не только последовательные рабочие процессы, но и рабочие процессы на конечном автомате.

Конечно, это не идеально, и разработчику определенно понадобится некоторое время, чтобы понять концепцию (т.Модель деятельности);но его определенно можно использовать даже для «небольших задач».

Никогда не пробовал WFF, но помню, что читал эта статья о WFF Леона Бамбрика где он, по сути, говорит, что весь жанр инструментов разработки программного обеспечения — это чепуха.Возможно, поможет вам определиться в ту или иную сторону.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top