C# 在为简历添加书签之前,将数据存储在工作流中
是否可能以某种方式在工作流活动中保留某些信息,以便在恢复时使用 基本上,我有一个标准的工作流程活动,我调用一个服务来获取ID列表 这是一个例子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
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。变量。它们在简历上被重新水化。