Как регистрировать действия фонда рабочего процесса - PullRequest
1 голос
/ 08 февраля 2012

У меня есть задача добавить функциональность регистрации в существующее решение на основе рабочего процесса.Существует многоуровневая архитектура: BusinessLayer-> AgentLayer-> StoreLayer.На бизнес-уровне существует действие xaml, которое состоит из одного или нескольких действий агента.Операция агента состоит из одного или нескольких действий магазина.Действия агента и хранилища наследуются от CodeActivity.

Действия выполняются

WorkflowInvoker.Invoke(activity);

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

BusinessActivity1 has been started at 11:00 8.2.2012
AgentActivity1 has been started at 11:01 8.2.2012
StoreActivity1 has been started at 11:02 8.2.2012
StoreActivity1 has been ended at 11:03 8.2.2012
AgentActivity1 has been ended at 11:04 8.2.2012
BusinessActivity1 has been ended at 11:05 8.2.2012

Так что мой вопрос: что является лучшим способом для записи чего-то подобного.Я не хочу писать LogMessage для каждого действия.Я предпочитаю единое решение.Есть ли какие-нибудь умные решения?

спасибо

1 Ответ

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

WF уже поддерживает структуру регистрации, которую он называет WF Tracking . Было бы разумно просто следовать существующей инфраструктуре, чтобы избежать ненужных накладных расходов на производительность.

Вам нужно посмотреть, как включить TrackingParticipants. Вам нужно будет заменить WorkflowInvoker.Invoke() на WorkflowApplication ( или создать экземпляр WorflowInvoker), чтобы вы могли добавить свой пользовательский TrackingParticipant через WF Extensions . Определив TrackingProfile, вы можете ограничить отслеживание только теми сообщениями, которые вас интересуют, по уровню трассировки, типу события и записи отслеживания.

Если вы хотите войти в свой собственный пользовательский TrackingRecords, вы можете получить из базы TrackingRecord.

В качестве альтернативы - вы можете создать настраиваемое действие по переносу, как предложено @Gabocat, но это повлечет за собой дополнительные накладные расходы производительности, которых не будет WF Tracking.

...