Вызовите дочерний рабочий процесс асинхронно - PullRequest
1 голос
/ 15 февраля 2012

Команда:

Мне нужно асинхронно вызывать активность WF (XAML) из службы WF (XAMLX).Я уже ссылаюсь на платформу Microsoft.Activities.Extensions и запускаю обновление платформы 1 для конечного автомата - так что, если решение уже находится в одной из этих библиотек, я готов!

СейчасМне нужно вызвать эту активность (XAML) асинхронно - но у него есть выходной параметр, который должен установить переменную в службе (XAMLX).Может кто-нибудь, пожалуйста, дайте мне решение этой проблемы?

Спасибо!


* ОБНОВЛЕНИЕ *

Теперь я могу публиковать фотографии, * думаю *, потому что у меня достаточно репутации!Позвольте мне высказать пару здесь и попытаться лучше объяснить мою проблему.Первое изображение - это служба WF, в которой есть две точки входа для рабочего процесса, а второе - сам рабочий процесс.

Этот рабочий процесс представляет собой механизм оркестровки, который постоянно перезапускается и имеет некоторые механизмы отработки отказа (например, выходна пороге ошибки и программном выходе), чтобы мы могли управлять нашей очередью длительных транзакций, используя WF!

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

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

WF Service Sequence

WF Activity Sequence

1 Ответ

2 голосов
/ 15 февраля 2012

Строго говоря, в действиях XAML Parallel и ParallelForEach - это способ выполнения асинхронности.

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

Поэтому вы уверены, что этого хотите достичь? Вы хотите запустить его после того, как отправили свой первоначальный ответ? В этом случае разместите свою активность после отправки ответа.

Пожалуйста, предоставьте больше информации, если эти предложения не отвечают на ваш вопрос ./

Обновление: Изложенное первоначальное требование (отделение реализации от действий получения / отправки службы) может быть фактически решено путем размещения целевой операции в качестве службы. Смотрите следующую ссылку http://blog.petegoo.com/index.php/2011/09/02/building-an-enterprise-workflow-system-with-wf4/

...