Ищу руководство по WF4

У нас есть довольно большая структура маршрутизации документов, которая в настоящее время реализована в SharePoint (с большим набором громоздких рабочих процессов SP), и она упирается в то, что SP может легко сделать. Его планируется переписать в .NET.

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

  • Допустим, у меня есть утверждение, которое должно быть сделано для документа. Когда wf запустится, он решит, кто должен одобрить, и отправит этому человеку уведомление по электронной почте. Внутри уведомления у пользователя будет возможность загрузить страницу ASP.NET для утверждения или отклонения. Затем рабочий процесс необходимо будет возобновить с этапа отправки электронной почты. Если я планирую запустить это как службу WCF WF, как мне вернуться к правильному экземпляру приостановленной службы? (учитывая, что я настроил AppFabric и постоянство) Я немного понимаю идею дескриптора корреляции, но не думаю, что это предназначено для этого случая.

  • Ведение журнала и аудит будут ключевыми для этой системы. Я вижу, что AppFabric создает журналы событий из этих данных, но я не взламывал базовую базу данных — просто ли ее использовать для создания отчетов, или мне следует создавать настраиваемые действия по ведению журналов для обработки моих действий? По опыту что посоветуете?

Спасибо за любые рекомендации, которые вы можете предоставить. Я рад привести дополнительные примеры, если это необходимо.


person Garrison Neely    schedule 02.06.2011    source источник
comment
Вы можете разделить это на несколько вопросов.   -  person TrueWill    schedule 02.06.2011


Ответы (2)


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

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

person Maurice    schedule 02.06.2011
comment
Спасибо за ответ, Морис. Таким образом, использование GUID InstanceId было бы плохой идеей, поскольку мой первоначальный прием (с использованием действия ReceiveAndSendReply) не передал бы этот GUID. Вместо этого я должен придумать уникальный идентификатор, который я могу передать в начале рабочего процесса, а затем все последующие повторные входы? - person Garrison Neely; 02.06.2011
comment
Вы можете использовать instanceId, если хотите. Корреляцию можно настроить, используя ответное сообщение исходного вызова. Просто убедитесь, что клиент сохраняет это, чтобы он знал, что передавать последующим запросам. - person Maurice; 03.06.2011

Ваш сценарий очень похож на тот, который я использовал для практического занятия «Введение в службы рабочих процессов» в Учебный комплект Visual Studio 2010. Я предлагаю вам взглянуть на практическое занятие или демонстрацию Windows Server AppFabric/Workflow Services — Contoso HR пример кода.

person Ron Jacobs    schedule 05.06.2011