跟踪子工作流内部活动

时间:2012-09-13 16:05:25

标签: c# workflow-foundation-4 workflow-foundation workflow-activity

由于 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

1 个答案:

答案 0 :(得分:1)

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

类似的东西:

var invoker = new WorkflowInvoker(dynamicActivity);
var tracker = context.GetExtension<TrackingParticipant>();
invoker.Extensions.Add(tracker);
outArgs = invoker.Invoke(inArgs);