WF: определение завершения рабочего процесса - PullRequest
1 голос
/ 06 декабря 2009

Как определить с хоста, завершен ли экземпляр рабочего процесса или нет, помимо подписки на событие WorkflowCompleted WorkfloRuntime? Есть ли какой-либо флаг или состояние, которое я могу проверить для данного WorflowInstance, чтобы определить, завершено ли оно?

@ Edit: Вопрос о последовательных рабочих процессах.

Ответы [ 2 ]

1 голос
/ 06 декабря 2009

Вы можете проверить TrackingServices, чтобы узнать, какое текущее состояние для экземпляра рабочего процесса.

Здесь есть несколько фрагментов кода: .NET 3.0 Конечные автоматы в Windows Workflow .

0 голосов
/ 10 декабря 2009

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

Доступны два подхода :

  1. Событие WorkflowRuntime.WorkflowCompleted

  2. Использование службы TrackingService для ведения «журнала» выполнения рабочего процесса и запроса журнала, чтобы определить, завершен ли экземпляр рабочего процесса. Вот хорошая вводная статья . При таком подходе единственной доступной готовой реализацией TrackingService является SqlTrackingService , для которой требуется база данных SQL Server. Затем вы можете использовать SqlTrackingQuery для запроса 'log'

Примечание: Интересный аспект поведения SqlTrackingService заключается в том, что он не будет по умолчанию немедленно записывать полученные сообщения из среды выполнения в базу данных, но только на конец транзакций. Это поведение контролируется IsTransactional свойством SqlTrackingService.

...