Альтернативы Windows Workflow Foundation?

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

  • Слишком сложный, особенно для использования в веб-приложениях (все эти потоковые материалы).
  • Незрелый (когда-либо работавший с этим ужасным дизайнером?)
  • Анемия в текущем наборе функций

Есть ли у кого-нибудь предложение для лучшей рабочей среды на основе .NET? В частности, я ищу следующие функции:

  • State machine based (отображение состояний доступных действий)
  • Фокус на разрешениях пользователей (контроль над тем, кто имеет доступ к каким действиям)
  • Возможность запуска рабочих процессов в виде заданных фоновых задач (например, для отправки напоминаний для элементов, которые сидели в определенном состоянии за x дней)

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

Ответы

Ответ 1

Вы можете попробовать Simple State Machine. Вам придется самостоятельно осуществлять контроль доступа и фоновые таймеры, но это не должно быть большой проблемой. SSM также был построен из разочарования WF. Также есть некоторые другие реализации конечных машин на Codeplex. Если один из них не вписывается в его счет из коробки, они имеют открытый исходный код и должны быть достаточно близко к вам.

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

Ответ 2

Я бы держался подальше от Drools.Net, так как последняя передача SVN была в сентябре 2007 года. Выглядит неплохо, но кажется слишком рискованным, чтобы сделать такую ​​большую библиотечную часть вашего проекта, когда вы знаете, что он не получает никакого внимания больше.

Ответ 3

Попробуйте Drools.NET

Ответ 4

Посмотрите Workflow Engine. Это легкая структура рабочего процесса для .NET и Java-решений. Он имеет визуальный конструктор HTML5, контроль версий, достойный пользовательский интерфейс и поддерживает широкий спектр баз данных.

Ответ 5

У вас есть возможность рассмотреть BizTalk Server?

Ответ 8

Попробуйте WF4.5. Он был полностью переработан с .NET4.0.

Ответ 9

Прежде всего, вы должны искать двигатель, поддерживающий BPMN. BPMN является стандартом в Workflow и Process Management и хорошо поддерживается из многих проектов. Во-вторых, вы должны думать о требованиях к двигателю. Когда вы ищете BPMN Engine, существует два разных подхода:

Ориентированный на задачи

Эти двигатели (например, JBoss BPM - jbpm) предназначены для обработки входных данных с помощью хорошо определенной модели процесса. Каждая задача в модели дает контроль над фрагментом кода - либо стандартной, либо индивидуальной реализации. Процесс завершается, когда маркер процесса достигает конца модели процесса (End-Event). Этот вид обработки занимает миллисекунды. Двигатель может использоваться для пакетных заданий или обработки данных со сложным потоком, ориентированным на процесс.

Event-Driven

Человеко-центрические механизмы рабочего процесса управляются событиями (например, Imixs-Workflow). Это своего рода конечный автомат, но, как правило, гораздо больше функциональности. Вы можете запустить новый процесс, назначив бизнес-объект начальной задаче (определяемой стартовым событием). Чем механизм документооборота позволяет вам запускать события, назначенные каждой задаче, определенной в вашей модели. Каждое событие (Intermediate CatchEvent) запускает механизм рабочего процесса для переноса текущего процесса в следующую задачу (состояние). Пока не будет запущено новое событие, процесс "ждет" в текущей задаче (состоянии). Процесс утверждения является типичным примером такого рода человеко-ориентированного рабочего процесса.

Здесь вы можете найти список двигателей здесь.