Проект .Net Workflow Foundation: несколько рабочих процессов или один большой рабочий процесс с действиями IfElse? - PullRequest
0 голосов
/ 03 августа 2010

Я немного читал о дизайне рабочих процессов, и я не понимаю, как смоделировать мое приложение.Любая помощь очень ценится!

Вот требование:

  • Последовательный рабочий процесс с 5 действиями верхнего уровня
  • Каждое действие верхнего уровня может содержать от 1 до 5 дочерних действий.
  • В будущем могут быть введены новые дочерние действия.
  • Входными данными для рабочего процесса является документ и его тип.В зависимости от типа документа необходимо выполнить 1 или более дочерних действий в каждом действии верхнего уровня.
  • Все виды деятельности на высшем уровне и некоторые виды деятельности для детей применимы для всех типов документов.
  • В настоящее время известно около 5 различных типов документов.В будущем может быть добавлен теоретический максимум еще 10 типов документов.
  • XAML будет использоваться для настройки рабочего процесса.
  • Framework: 3.5 SP1

Для вышеуказанного требования, пожалуйста, посоветуйте, какова лучшая стратегия с точки зренияначальное проектирование и обслуживание:

  • Разработка одного большого рабочего процесса с множеством ветвей IfElse в каждом действии верхнего уровня (тип документа будет проверяться в каждом дочернем или дочернем действии)

ИЛИ

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

ИЛИ

  • Любая другая лучшая альтернатива?

спасибо!

1 Ответ

0 голосов
/ 03 августа 2010

Я работал в WF 3.5 SP1 в течение разумного периода времени и предложил бы следующее:

  1. Отдельные рабочие процессы - по одному на каждый тип документа: прямолинейный НЕТ , так как вы должны быть достаточно надежными, чтобы включать новые документы. Вы просто не можете (не должны) указывать типы документов как константы. Требования бизнеса могут измениться, и вам будет предложено включить более 10-15 документов (это происходит постоянно во всех реальных программах).

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

  3. Один большой рабочий процесс с большим количеством If-Else может звучать и хорошо выглядеть в начале, но поверьте мне, это выглядит ужасно, когда добавлено разумное количество условий. Для управления одним гигантским рабочим процессом требуется гораздо больше усилий.

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...