如何使用书签没有用户输入
本文关键字:用户 输入 何使用 书签 | 更新日期: 2023-09-27 18:18:56
我是Windows Workflow的新手,我使用4.5来创建一个长时间运行的工作流。我在网上做了大量的搜索,试图找到一种无需用户输入就能创建Bookmark和ResumeBookmark的方法。到目前为止,我读到的信息都需要控制台。ReadLine(用户输入),以便恢复书签。Bookmark只用于人工输入吗?我现在正在使用延迟活动,但想使用书签。
我的工作流。Xaml是这样的:
-
发送电子邮件给审稿人,要求他们完成各自的任务。的电子邮件只是一个通知。没有批准或拒绝按钮
-
延迟活动。这是为了使工作流在持久化中持久化数据库。
-
检查另一个数据库,看看是否有一些数据被评论者更新了。
-
再次延迟活动,如果审稿人没有更新数据。
-
发送邮件给审批人。如果数据已更新。审批人的答复将被记录在数据库中。这封邮件只是一个通知。
-
再次延迟活动,等待审批人在数据库中更新响应。
等等
我非常感谢你的帮助。
书签不需要用户输入。
在activity中创建书签:
context.CreateBookmark("bookmarkName", new BookmarkCallback(OnResumeBookmark));
其中"OnResumeBookmark"是你活动中的一个方法。
然后当你恢复工作流程时,你使用这个:
WorkflowApplication wfApp= new WorkflowApplication(new NameOFWorkflow());
wfApp.Run();
wfApp.ResumeBookmark("bookmarkName");
OnResumeBookmark将执行。
这里是一个完整的版本http://msdn.microsoft.com/en-us/library/ee191721(v=vs.110).aspx
关于控制台的内容。Read只是向您展示书签名称如何可以是一个变量而不是字符串的一种方式:
context.CreateBookmark(BookmarkName.Get(context), <-- get name from the InArgumen
下面是一个自定义活动的示例代码:
public sealed class WaitForResponse<TResult> : NativeActivity<TResult>
{
public string ResponseName { get; set; }
protected override bool CanInduceIdle
{
get
{
return true;
}
}
protected override void Execute(NativeActivityContext context)
{
context.CreateBookmark(this.ResponseName, new BookmarkCallback(this.ReceivedResponse));
// Put code here...
}
void ReceivedResponse(NativeActivityContext context, Bookmark bookmark, object obj)
{
this.Result.Set(context, (TResult)obj);
}
该活动将运行Execute方法并等待(持久化/卸载),直到出现ResumeBookmark。ResumeBookmark可以是WCF调用,也可以是WorkflowApplication.ResumeBookmark的调用。