Получить ServiceDeploymentId в отслеживании участника - PullRequest
0 голосов
/ 16 июля 2011

В WF4 я создал потомка TrackingParticipant.В методе Track, record.InstanceId дает мне GUID экземпляра рабочего процесса.

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

Однако это создает проблему для отчетов.Мой TrackingParticipant зарегистрирует идентификатор экземпляра в таблице отчетов (вместе с другой информацией отслеживания), но я хочу присоединиться к ServiceDeploymentsTable.Если рабочий процесс завершен, этот GUID не будет в InstancesTable, поэтому я не смогу найти ServiceDeploymentId.

Как я могу получить ServiceDeploymentId в TrackingParticipant?Кроме того, как я могу получить его в рабочем процессе, чтобы добавить его в CustomTrackingRecord?

1 Ответ

1 голос
/ 16 июля 2011

Вы не можете получить ServiceDeploymentId в TrackingParticipant.По сути, ServiceDeploymentId является внутренней деталью SqlWorkflowInstanceStore.

Я бы либо установил SqlWorkflowInstanceStore, чтобы он не удалял экземпляр worklow после завершения, и сделал бы это сам в более поздний момент времени после сохранения ServiceDeploymentId с InstanceId.

Альтернативой является использование автоматической очистки с SqlWorkflowInstanceStore и получение ServiceDeploymentId при создании первой записи отслеживания.На этом этапе рабочий процесс не завершен, поэтому исходная запись экземпляра все еще там.

...