Windows Workflow Foundation是否提供用于拦截或修饰活动(例如记录日志)的方法?例如,为每个活动入口和出口点(最好包括活动名称)创建日志,而无需修改所有现有项目代码。
例如,我有一个工作流程,其中包含一个打印“ Hello world”的活动。在不修改XAML文件的情况下,我想捕获活动的进入和退出。我想在进入活动之前打印“进入Hello World活动”,并且在活动打印“ Hello World”之后,我要打印“完成的Hello World活动”。
Windows Workflow是否提供用于钩住活动入口和出口的机制?
@ Richard210363已经在Windows Workflow Foundation支持此功能的注释中添加了-请选择关闭此问题的用户是否可以考虑撤销他们的决定,因为使用该框架该问题显然具有非常特定的答案?
看一下工作流的TrackingParticipant类。
它作用于工作流中的所有活动,类似于范围内的AOP。
它发出有关活动进入和退出的信息。
创建一个从TrackingParticipant继承的类,并重写Track方法:
protected override void Track(TrackingRecord record, TimeSpan timeout)
{
ActivityStateRecord activityStateRecord = record as ActivityStateRecord;
string CurrentActivityName = activityStateRecord.Activity.Name,
}
然后,将跟踪类附加到工作流,然后再运行。
_workflowApplication.Extensions.Add(_yourWorkFlowTrackingClass);
_workflowApplication.Run();
您还可以将TrackingRecord强制转换为WorkflowInstanceRecord。在它们之间,ActivityStateRecord和WorkflowInstanceRecord提供了大量有关工作流及其活动的信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句