В настоящее время мы создаем приложение, в котором используется непростой процесс утверждения, который включает в себя несколько уровней утверждения, возврата, проверки, уведомлений и т. Д.
В связи с указанным требованием нас попросили использовать структуру рабочего процесса также для обеспечения прозрачности процесса.
В прототипе мы успешно включили рабочий процесс, и он отлично работает. однако мы не можем определить действия, которые должны быть доступны пользователю. Например, у меня есть следующие операции получения: create (), managerApprove (), RAApprove (), ORMApprove () .. теперь, если я вызову их по порядку, используя правильное имя пользователя, они будут работать. Очевидно, что если я не вызову их по порядку, то будет выдано исключение FaultException, поскольку оно не в правильном состоянии. Вопрос в том, как я узнаю, какие функции доступны для отображения в пользовательском интерфейсе - скажем, если в данный момент он ожидает одобрения менеджера, просто покажите кнопку одобрения для менеджера ...
В качестве обходного пути я создал еще одну службу WCF, которая извлекает те же данные из базы данных, а затем определяет правильное состояние пользовательского интерфейса (какие действия может выполнять пользователь). Я думаю, что это дублирование логики, поскольку это уже предполагается в WF.
Кроме того, если WF изменится, это может привести к поломке моей отдельной службы WCF. Например, если я переключаю порядок утверждения в рабочем процессе, мне нужно обновить логику и в службе WCF. В противном случае будет показано неверное состояние страницы, а нажатие кнопки «Подтвердить» вызовет неправильный метод и вызовет исключение FaultException.
Любая помощь будет высоко оценена ... Я действительно новичок в WF4.
UPDATE:
Мой коллега поставил мой вопрос так:
Какой лучший дизайн для веб-приложения, в котором используется WF?
Основные причины, по которым WF рассматривается
- вовлеченные рабочие процессы являются долгосрочными
- Рабочие процессы - это человеческие рабочие процессы - они должны координировать действия реальных людей
- прозрачность процесса
Кроме того, как рабочий процесс должен интегрироваться с пользовательским интерфейсом? - как пользовательский интерфейс узнает, в каком состоянии должно быть и какие страницы показывать каким пользователям?