2010-03-26 9 views
4

Я работаю с кандидатом на выпуск Visual Studio 2010 с использованием Wf4, чтобы написать новый рабочий процесс для утверждения запросов ресурсов. В моем рабочем процессе я хотел бы, чтобы запрос истекал через несколько дней, если для запроса не было получено одобрения. Мы сделали это в WF 3.5 (Visual Studio 2008), добавив таймер задержки в EventDrivenActivity, параллельный EventDrivenActivity, который ожидал подтверждения и одобрения запроса. Если Delay истек до утверждения, EventDrivenActivity завершит запрос. Кто-нибудь знает, есть ли подобный механизм для этого в WF4?Задержка Windows Workflow Foundation 4 (WF4)

ответ

5

В WF4 это делается аналогичным образом с использованием операции Pick. У Pick есть несколько детей PickBranch, каждый из которых имеет триггер и действие. Триггер для каждого выполняется и будет содержать Delay, Receive или все остальное, что вы ожидаете. Действие, чем содержит все, что необходимо выполнить. Выполняется только действие, связанное с первым запуском Trigger, остальные триггеры будут отменены, а другие действия будут пропущены.

+0

Maurice, Спасибо за сообщение! Я изменил свой рабочий процесс, включив операцию выбора с двумя ветвями, одна из которых - это задержка с помощью TimeSpan.FromSeconds (30), но через 30 секунд ничего не происходит. Нужно ли мне размещать мой рабочий процесс с WorkflowServiceHost для этого? Я пытаюсь разместить рабочий процесс с помощью WorkflowApplication. –

+0

Морис, я просто создал тестовый проект Workflow Console с активностью выбора и двумя ветвями, один из которых имел небольшую задержку и активность WriteLine, чтобы написать сообщение. Это сработало так же, как вы сказали, но я думаю, что это сработало, потому что мое приложение консоли Console все еще работало. Мое реальное приложение - это приложение ASP.Net MVC, и оно генерирует мой рабочий процесс (с задержкой в ​​ветви активности выбора), а затем приложение для хостинга завершается и заканчивается. Это то, что вызывает проблемы, и есть ли способ использовать выбор/ветвь/задержка в рабочем процессе, размещенном в веб-приложении? –

+0

Что вы используете для размещения рабочего процесса? В случае WorkflowApplication вы несете ответственность за перезагрузку рабочего процесса после его выгрузки. Если вы используете WorkflowServiceHost, он перезагрузит рабочие процессы для вас из хранилища persitence. Я бы предложил использовать последний и использовать WCF для отправки сообщений из вашего приложения ASP.NET MVC в службу рабочего процесса. – Maurice

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