1

我面临一个关于WF4CustomTrackingRecord的问题,用于通过WorkflowInvoker从 .xaml 动态加载的子工作流。执行效果非常好,我能够跟踪 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 发生了什么。

任何的想法?语境问题?类型问题?

谢谢,弗朗西斯科

4

1 回答 1

1

WorkflowInvoker 是具有自己扩展的不同执行。因此,要将这些事件添加到同一个 TrackingParticipant 中,您需要将其添加到 invoker.Extensions 集合中。

就像是:

var invoker = new WorkflowInvoker(dynamicActivity);
var tracker = context.GetExtension<TrackingParticipant>();
invoker.Extensions.Add(tracker);
outArgs = invoker.Invoke(inArgs);
于 2012-09-13T17:54:51.603 回答