Должен ли я использовать конечный автомат или рабочий процесс последовательности в WF?

StackOverflow https://stackoverflow.com/questions/72667

Вопрос

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

Этот процесс очень легко представить в виде последовательного рабочего процесса, и вот как у меня это получается до сих пор, с автоматизацией COM для автоматической обработки фрагментов Excel и Word.Ключевой момент в механизмах заключается в том, что между "созданием повестки дня" и "ее рассылкой" есть человеческий шаг, при котором я просматриваю детали изменений и формулирую вопросы по ним, которые добавляются в повестку дня.В настоящее время у меня есть действие Suspend, чтобы приостановить рабочий процесс, пока я вручную выполняю эту часть процесса.

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

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

Решение

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

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

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

Источник: MSDN

Типичный способ добавления человеческой задачи в рабочий процесс (либо последовательность, либо конечный автомат) - определить внешний интерфейс обмена данными и использовать действие HandleExternalEvent (и, возможно, действие CallExternalMethod).Для получения более подробной информации, пожалуйста, ознакомьтесь со следующими статьями:

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

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

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

Основная проблема, которую вы должны попытаться решить, заключается в том, что рабочий процесс не должен связывать поток в ожидании взаимодействия с человеком (гибкость потока).Если рабочий процесс простаивает и сохраняется в течение этого времени (например, при использовании SqlWorkflowPersistenceService - Служба SQL - потока), это не должно быть проблемой.

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