C# 在为简历添加书签之前,将数据存储在工作流中

C# 在为简历添加书签之前,将数据存储在工作流中,c#,workflow,workflow-foundation-4,workflow-activity,C#,Workflow,Workflow Foundation 4,Workflow Activity,是否可能以某种方式在工作流活动中保留某些信息,以便在恢复时使用 基本上,我有一个标准的工作流程活动,我调用一个服务来获取ID列表 这是一个例子 public class MyGoDoStuffActivity: NativeActivity<bool> { public InArgument<int> VersionId { get; set; } public int[] Jobs { get; set; } protected overrid

是否可能以某种方式在工作流活动中保留某些信息,以便在恢复时使用

基本上,我有一个标准的工作流程活动,我调用一个服务来获取ID列表

这是一个例子

public class MyGoDoStuffActivity: NativeActivity<bool>
{
    public InArgument<int> VersionId { get; set; }
    public int[] Jobs { get; set; }

    protected override bool CanInduceIdle
    {
        get { return true; }
    }

    protected override void Execute(NativeActivityContext context)
    {
        var container = context.GetExtension<IContainer>();
        var versionId = context.GetValue(VersionId);

        using (var service = container.Resolve<IJobsService>())
        {
            Jobs = service.StartJobs(versionId);

            context.CreateBookmark("Bookmark_Wait_For_Jobs_VersionId_" + versionId, BookmarkCallbackResult);
        }
    }

    private void BookmarkCallbackResult(NativeActivityContext context, Bookmark bookmark, object value)
    {
        var container = context.GetExtension<IContainer>();
        var versionId = context.GetValue(VersionId);

        using (var service = container.Resolve<IJobsService>())
        {
            var status = service.HaveAllJobsCompleted(Jobs);

            if (!status) 
            {
                context.CreateBookmark("Bookmark_Wait_For_Jobs_VersionId_" + versionId, BookmarkCallbackResult);
                return;
            }
        }

        context.SetValue(Result, true);
    }
}
公共类MyGodosFactivity:NativeActivity
{
公共InArgument版本ID{get;set;}
公共int[]作业{get;set;}
受保护的覆盖布尔Caninducidel
{
获取{return true;}
}
受保护的覆盖无效执行(NativeActivityContext上下文)
{
var container=context.GetExtension();
var versionId=context.GetValue(versionId);
使用(var service=container.Resolve())
{
Jobs=service.StartJobs(versionId);
CreateBookmark(“Bookmark\u Wait\u For\u Jobs\u VersionId\u”+VersionId,BookmarkCallbackResult);
}
}
私有无效书签回调结果(NativeActivityContext上下文、书签书签、对象值)
{
var container=context.GetExtension();
var versionId=context.GetValue(versionId);
使用(var service=container.Resolve())
{
var状态=服务。HaveAllJobsCompleted(作业);
如果(!状态)
{
CreateBookmark(“Bookmark\u Wait\u For\u Jobs\u VersionId\u”+VersionId,BookmarkCallbackResult);
返回;
}
}
SetValue(结果,true);
}
}
有点像下面

书签,恢复,所有这些东西都能工作,但我不知道如何保存一些额外的信息以用于恢复书签


如果我可以在等待下一次状态更改时更新作业状态和书签,那么简历上的值可能会很有用。

Uh,@Will-我尝试了In/OutArguments,但它们似乎没有保留修改后的值,因此它们在简历上丢失。不是arguments。变量。它们在简历上被重新水化。