C# 阅读活动中的粘滞值 我使用工作流基础4.5创建自定义本地活动。我想为活动设置一个书签,并在WorkflowApplication的PersistableIdle回调中执行一些自定义处理。在该回调中,我希望在持久化工作流实例之前,将提供的数据读取到活动的InArgument和/或属性中。因此,本质上,我希望在完成持久化过程之前,作为一个预步骤,从执行的活动上下文外部和运行时外部读取这些值
我想我可以用WorkflowInspectionServices助手类来实现这一点,但鉴于我必须从该活动实例的InArgument中读取上下文,所以还不清楚这是否有效 有没有另一个助手类可以让wf4.5实现这一点,我还没有发现?谢谢C# 阅读活动中的粘滞值 我使用工作流基础4.5创建自定义本地活动。我想为活动设置一个书签,并在WorkflowApplication的PersistableIdle回调中执行一些自定义处理。在该回调中,我希望在持久化工作流实例之前,将提供的数据读取到活动的InArgument和/或属性中。因此,本质上,我希望在完成持久化过程之前,作为一个预步骤,从执行的活动上下文外部和运行时外部读取这些值,c#,.net,workflow-foundation-4,C#,.net,Workflow Foundation 4,我想我可以用WorkflowInspectionServices助手类来实现这一点,但鉴于我必须从该活动实例的InArgument中读取上下文,所以还不清楚这是否有效 有没有另一个助手类可以让wf4.5实现这一点,我还没有发现?谢谢 wfApp.PersistableIdle += args => { using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew
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;
};
wfApp.PersistableIdle+=args=>
{
使用(var scope=newtransactionscope(TransactionScopeOption.RequiresNew))
{
wfApp.Unload();
args.Bookmarks.ForEach(bookmark=>
{
var activityId=bookmark.BookmarkName;
//这看起来真的不管用吗?
var activityInfo=WorkflowInspectionServices.Resolve(activity,activityId)作为MyCustomActivity;
var recipientId=activityInfo.recipientId.Get();
workflowSuspendedCallback.Invoke(activityId,recipientId));
});
scope.Complete();
}
返回PersistableIdleAction.None;
};
使用了这个技巧。
谢谢您。只需创建您自己的,即可从您的活动中获取此信息。太棒了。很好的进入运行时间。我还查看了工作流跟踪器,但这似乎有些过分,因为我只关心某些活动。