2010-08-24 5 views
3

У меня есть приложение .NET Workflow, размещенное в WCF, которое принимает запрос на обработку некоторой информации. Эта информация передается во вторичную систему через веб-службу и возвращает bool, указывающую, что она будет обрабатывать эту информацию.Список текущих рабочих процессов в .Net 4.0

Мой рабочий процесс затем петляет, спящий в течение 5 минут, а затем запрашивает вторичную систему, чтобы проверить, завершена ли обработка информации.

Когда закончится рабочий процесс.

У меня это сохраняется в SQL, и он отлично работает.

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

Я думал о сохранении GUID рабочего процесса в своей основной БД и создании списка таким образом, но мне бы очень хотелось, чтобы я мог согласовать то, что, по моему мнению, работает, и то, что думает постоянный магазин Бег.

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

ответ

3

Данные из рабочего процесса можно использовать с помощью SqlWorkflowInstanceStore. В результате они сохраняются вместе с данными рабочего процесса в InstancesTable с использованием экземпляра InstancePromotedPropertiesTable. Использование представления InstancePromotedProperties - это самый простой способ запроса данных.

This Сообщение в блоге покажет вам код, в котором вы нуждаетесь.

0

Другой вариант, используйте WorkflowRuntime GetAllServices(). Затем вы можете прокручивать каждый из них, чтобы вытащить нужные вам данные. Я бы опечатал результаты, поскольку это может быть дорогостоящей операцией. Если у вас всего 100 или менее работающих рабочих процессов, и только несколько пользователей на вашей странице, не беспокойтесь о кешировании.

Таким образом, вам не нужно создавать слой DAL или Repo. Особенно, если вы используете sql для сохранения.

http://msdn.microsoft.com/en-us/library/ms594874(v=vs.100).aspx

Смежные вопросы