Создание Удобного Для Пользователя Механизма Бизнес-Процессов На Базе Windows Workflow Foundation.

Постановка задачи

Создание удобного для пользователя механизма бизнес-процессов на базе Windows Workflow Foundation.

Одна из неотъемлемых частей любого ECM-системы это управление бизнес-процессами или рабочий процесс.

Бизнес-процессы в каждой отдельной организации имеют множество нюансов.

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

Это значит, что создание и изменение бизнес-процессов должно быть максимально простым и удобным.

Кроме того, при изменении процесса уже запущенные процессы должны работать правильно.

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

Это диктует некоторые требования к движку бизнес-процессов:

  • Процессы должны разрабатываться на основе блоков высокого уровня.

    Примером такого блока может быть создание задачи на согласование документа, запуск подзадачи, выполнение произвольного фрагмента кода и т.п.

  • При изменении схемы процесса необходимо обеспечить возможность конвертировать уже запущенные процессы в новую версию схемы.

При разработке новой версии движка бизнес-процессов мы решили попробовать Фонд рабочих процессов Windows (далее именуемый WF).

Разработка на основе блоков высокого уровня

Упрощение разработки бизнес-процессов

Каждый блок маршрутов высокого уровня может состоять из большого количества действий (например, для блока задач требуется 68 действий).

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

Эта обработка делает следующее: если было выброшено исключение, оно анализируется, и в некоторых случаях необходимо не прерывать процесс, а повторить попытку через некоторое время.

При этом время ожидания до следующей попытки постепенно увеличивается с 5 минут до 1 часа.

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

Например, блок маршрута «Задание на согласование документа» должен выглядеть так:

Создание удобного для пользователя механизма бизнес-процессов на базе Windows Workflow Foundation.

А WF позволяет делать только это:

Создание удобного для пользователя механизма бизнес-процессов на базе Windows Workflow Foundation.

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

Вторая проблема — блоки выполняются параллельно.

Единственный способ сделать это в WF — использовать параллельный блок.

Но тогда вместо интуитивного:

Создание удобного для пользователя механизма бизнес-процессов на базе Windows Workflow Foundation.

Мы получаем:

Создание удобного для пользователя механизма бизнес-процессов на базе Windows Workflow Foundation.

Все это привело нас к выводу, что деятельности WF как таковой нам недостаточно; нам нужна схема высшего порядка, описывающая маршрут «сверху».

При разработке маршрута используются наши блочные классы (никак не связанные с WF), и только потом готовая схема конвертируется в Activity. Диаграммы процессов хранятся в форме XML; Генерация активности происходит в момент публикации маршрута на сервере приложений.

Помимо блоков, диаграммы содержат связи между блоками (стрелки от одного блока к другому).



Преобразование блоков в активность

Для каждого блока существует парный класс-строитель, генерирующий активность.

Это выглядит примерно так:

   

public override System.Activities.Activity BuildContent() { var result = new Variable<bool>(this.Block.ResultVariableName); return new Sequence() {

Теги: #workflow #windows Workflow Foundation #ecm #bpm #ECM/EDMS
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.