读取活动InArgument值

时间:2014-08-01 17:58:44

标签: c# .net workflow-foundation-4

我正在使用工作流基础4.5创建自定义本机活动。我想为活动设置书签,并在WorkflowApplication的PersistableIdle回调中进行一些自定义处理。在该回调中,我想要读取提供给活动的InArgument<>中的数据。在工作流实例被持久化之前和/或属性。基本上,我希望在完成持久化过程之前,在执行活动的上下文之外和运行时之外读取这些值,作为前一步骤。

我认为我可以使用WorkflowInspectionServices帮助程序类执行此操作,但是不清楚是否可行,因为我必须从上下文中读取该活动实例的InArgument<>。

是否还有另一个助手类可以通过wf4.5实现这一点,但我还没有发现?感谢。

 wfApp.PersistableIdle += args =>
        {
            using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew))
            {
                wfApp.Unload();
                args.Bookmarks.ForEach(bookmark =>
                {
                    var activityId = bookmark.BookmarkName;

                    //Doesn't seem this will really work?
                    var activityInfo = WorkflowInspectionServices.Resolve(activity, activityId) as MyCustomActivity;


                    var recipientId = activityInfo.RecipientId.Get(<I have no context>);
                   workflowSuspendedCallback.Invoke(activityId, recipientId));
                });
                scope.Complete();
            }
            return PersistableIdleAction.None;
        };

1 个答案:

答案 0 :(得分:0)

使用activity extensions就可以了。 谢谢Will。