1

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 で何が起こるかを無視しているようです。

何か案が?文脈の問題?タイプの問題?

ありがとう、フランチェスコ

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 に答える