由于 WorkflowInvoker 从.xaml动态加载的子工作流,我遇到了 WF4 和 CustomTrackingRecord 的问题。 执行工作非常好,我能够跟踪InArguments和OutArguments,但不能跟踪内部活动,因为我已经为0级工作流程(父项)做了。这里是InArgs和OutArgs跟踪的代码。
var userRecord = new CustomTrackingRecord("InArguments");
foreach (var kvp in inArgs) {
userRecord.Data.Add(kvp.Key, kvp.Value == null ? "" : kvp.Value.ToString());
}
context.Track(userRecord);
...
WorkflowInvoker invoker = new WorkflowInvoker(dynamicActivity);
outArgs = invoker.Invoke(inArgs);
foreach (string argumentKey in outArgs.Keys) {
this.ChildArguments[argumentKey].Set(context, outArgs[argumentKey]);
}
userRecord = new CustomTrackingRecord("OutArguments");
foreach (var kvp in outArgs) {
userRecord.Data.Add(kvp.Key, kvp.Value == null ? "" : kvp.Value.ToString());
}
context.Track(userRecord);
我很确定invoker.Invoke(inArgs)应该启动标准跟踪系统,用几句话来说,用来知道Activity中会发生什么的完美工作,但它似乎忽略了DynamicActivity中发生的事情。
任何想法?上下文问题?输入问题?
谢谢,Francesco
答案 0 :(得分:1)
WorkflowInvoker是一个具有自己的扩展的不同执行。因此,要将这些事件添加到同一TrackingParticipant,您需要将其添加到invoker.Extensions集合。
类似的东西:
var invoker = new WorkflowInvoker(dynamicActivity);
var tracker = context.GetExtension<TrackingParticipant>();
invoker.Extensions.Add(tracker);
outArgs = invoker.Invoke(inArgs);