Использование Windows Workflow Foundation в приложениях с требованиями к отчетности

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

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

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

Я понимаю, что в WF для .Net 3.5 SqlTrackingService может предоставлять необработанные данные о событиях экземпляра рабочего процесса, событиях Activity и событиях пользователя. Но меня интересует масштабируемость записи большого количества данных экземпляра в действиях в пользовательские события. Кроме того, схема, которую я вижу, которую использует SqlTrackingService, выглядит так, как будто было бы трудно поддерживать решение для отчетности, особенно если со временем будут обновляться рабочие процессы. Я здесь не прав?

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

Возможно, это тоже вопрос об отчетности в решении BPM в целом ...

РЕДАКТИРОВАТЬ:

Я принял ответ Мориса, потому что он нашел время, чтобы ответить на него, но меня все еще интересуют любые другие мнения по этому поводу!


person Jon Schoning    schedule 02.10.2009    source источник


Ответы (1)


Использование SqlTrackingService в сочетании с профилями отслеживания весьма эффективно, особенно когда вы включаете ведение журнала транзакций. В основном вы хотите использовать профиль отслеживания только для отслеживания событий, которые вам действительно интересны. Вы также можете указать ему извлекать и регистрировать определенные фрагменты пользовательских данных.

Основной способ получения данных - не через SQL, хотя это возможно и для некоторых запросов, таких как предоставление всем рабочим процессам, выполняющим определенное действие, а через класс SqlTrackingQuery. Это также десериализует дополнительные пользовательские данные.

person Maurice    schedule 03.10.2009