Рабочий процесс Windows: запуск отдельного рабочего процесса из рабочего процесса - PullRequest
3 голосов
/ 11 июня 2009

Это кажется более сложным, чем я предполагал. У меня есть рабочий процесс, который должен запустить другой рабочий процесс в коде. Как это сделать? Нужно ли сначала получать ссылку на текущий WorkflowRuntime экземпляра рабочего процесса?

Ответы [ 2 ]

7 голосов
/ 11 июня 2009

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

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

Если вы (по какой-либо причине) не можете использовать InvokeWorkflowActivity (например, если новый рабочий процесс должен запускаться из кода в службе, которая вызывается из родительского рабочего процесса), вы так или иначе получите удержание экземпляра рабочего процесса.

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

1 голос
/ 11 июня 2009

Если вам не нужна явная активность, вы можете использовать службу IStartWorkflow, доступную из среды выполнения.

Кроме того, если вам нужно синхронное выполнение, я бы посмотрел здесь, чтобы начать:

http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,33cfb35c-aca7-4a5e-8b35-ff983b0b83e4.aspx

...