Предоставляет ли Windows Workflow Foundation возможность перехвата или оформления действий для таких целей, как ведение журнала? Например, для создания журналов для каждой записи активности и выхода (в идеале, включая имя активности) без изменения всего существующего кода проекта.Перехват/оформление действий в рабочем процессе Windows
Например, у меня есть рабочий процесс с одним действием, которое печатает «Hello world». Не внося изменений в файл XAML, я хотел бы зафиксировать запись и выход из нее. Я хотел бы напечатать «Entering Hello World Activity» перед входом в эту активность, и после того, как активность напечатала «Hello World», я бы хотел напечатать «Completed Hello World Activity».
Предоставляет ли Windows Workflow механизм для входа и выхода из активности?
@ Richard210363 уже добавил к комментариям, что эта функция поддерживается Windows Workflow Foundation, - пожалуйста, может ли пользователи, которые решили закрыть этот вопрос рассмотреть реверсирования своего решения, как вопрос, очевидно, имеет очень конкретный ответ, используя рассматриваемая структура?
не уверен в среде Windows Workflow, но AOP не поддерживается из-за-коробки с .net. вам нужно будет изучить MS Unity или PostSharp и т. д., но я сомневаюсь, что это будет готовое решение и потребует работы (добавление атрибутов, если вы используете postharp, или методы кодирования с помощью других решений) – Harrison
Скажем, у меня есть рабочий процесс xaml с одно действие, которое печатает «Hello world». Теперь, не изменяя файл XAML, я хочу напечатать «Enter Hello World Activity» перед тем, как войти в эту активность. После печати «Hello World» я должен иметь возможность распечатать «Завершена Hello World Activity». В основном АОП решает этот вариант использования. – thangamanikasi
Посмотрите на рабочий класс TrackingParticipant. Перед запуском вы присоединяете это к рабочему процессу. _workflowApplication.Extensions.Add (TrackingParticipant); Он действует во всех действиях в рабочем процессе, аналогичном AOP по объему. Он испускает информацию о входе и выходе деятельности. Вы должны наследовать от TrackingParticipant и переопределить метод Track: protected override void Track (TrackingRecord record, TimeSpan timeout). Затем отмените TrackingRecord на ActivityStateRecord. Именем активности является ActivityStateRecord..Activity.Name – Richard210363