.Net Workflow Foundation design: несколько рабочих процессов или один большой рабочий процесс с действиями IfElse?
Я немного читал о конструкциях рабочих процессов, и я смущен тем, как моделировать мое приложение. Любая помощь очень ценится!
Здесь требование:
- Последовательный рабочий процесс с 5 действиями верхнего уровня
Каждая деятельность на верхнем уровне может содержать 1-5 дочерних действий.
В будущем могут быть введены новые дочерние действия.
Ввод рабочего процесса - это документ и его тип. Основываясь на типе документа, он должен пройти 1 или более дочерних действий в каждом действии верхнего уровня.
Все действия верхнего уровня и несколько дочерних действий применяются ко всем типам документов.
В настоящее время известно около 5 различных типов документов. Теоретический максимум 10 типов документов может быть добавлен в будущем.
XAML будет использоваться для конфигурации рабочего процесса.
Рамка: 3.5 SP1
По вышеуказанному требованию, пожалуйста, советую, какая из лучших стратегий в плане первоначального проектирования и обслуживания:
- Создайте один большой рабочий процесс с большим количеством ветвей IfElse в каждом действии верхнего уровня (тип документа будет проверяться в каждой ветки или дочерней активности).
ИЛИ
- Разработайте отдельные рабочие процессы - по одному для каждого типа документа.
ИЛИ
- Любая другая лучшая альтернатива?
спасибо!
Я работал в WF 3.5 SP1 в течение разумного срока и предлагаю следующее:
Отдельные рабочие процессы - по одному для каждого типа документа: прямой НЕТ, так как вы должны быть достаточно прочными, чтобы включать новые документы. Вы просто не можете (не должны) ставить типы документов как постоянные. Требование к бизнесу изменится, и вас попросят включить более 10-15 документов (это происходит постоянно во всех программах реального мира).
Поскольку новые дочерние действия могут быть внедрены в будущем, вы можете изучить отдельные рабочие процессы для 5 действий верхнего уровня. Это может помочь вам поддерживать индивидуальную деятельность на высшем уровне.
Один большой рабочий процесс с большим количеством If-Else может звучать и хорошо выглядеть в начале, но поверьте мне, он выглядит ужасно, когда добавляется разумное количество условий. Это действительно требует гораздо больших усилий для управления 1 гигантским рабочим процессом.
Итак, чтобы подвести итог, вы можете разделить свои действия на 5 рабочих процессов только для действий верхнего уровня, а затем управлять дочерними действиями внутри них, независимо от типа документа, который все еще передается как аргумент.
Надеюсь, что это поможет.
- Вопросы
- Workflow-foundation
- .Net Workflow Foundation design: несколько рабочих процессов или один большой рабочий процесс с действиями IfElse?