.net WCF WF4.5 状态机、书签与持久化
发布日期:2025-06-07 18:44:20
浏览次数:4
分类:精选文章
本文共 2065 字,大约阅读时间需要 6 分钟。
如何实现Windows Workflow Foundation(WF)中的书签功能
在Windows Workflow Foundation(WF)中,书签是一种强大的工具,可以在工作流的执行过程中存储和恢复状态。以下是使用书签实现持久化工作流的详细指南。
1. 创建书签活动
要创建一个支持书签功能的活动,需要继承自NativeActivity,并在Execute方法中定义输入和输出参数。以下是一个简单的书签活动示例:
using System.Activities;using System.Activities.DurableInstancing;public sealed class BookmarkActivity : NativeActivity{ public OutArgument bookMark { get; set; } protected override void Execute(NativeActivityContext context, string text) { context.CreateBookmark("name", new BookmarkCallback(final)); } private void final(NativeActivityContext context, Bookmark bookmark, object obj) { Dictionary o = (Dictionary )obj; context.SetValue(bookMark, context.ActivityInstanceId); }}
2. 启动工作流活动
在程序中启动工作流活动时,确保使用WorkflowApplication来管理活动的执行。以下是一个启动工作流活动的示例:
using System.Activities;using System.Activities.DurableInstancing;WorkflowApplication app = new WorkflowApplication( new Activity1(), new Dictionary() { { "pic", "1" } });app.Run();
3. 数据持久化与数据库配置
为了实现数据持久化,可以使用SQL WorkflowInstanceStore,将工作流的实例存储在数据库中。以下是数据库配置的示例:
using System.Activities.DurableInstancing;SqlWorkflowInstanceStore store = new SqlWorkflowInstanceStore( @"Server=DESKTOP-OIGV51O\SQLEXPRESS;database=WFTest;uid=sa;pwd=123");app.InstanceStore = store;
4. 恢复书签
在需要恢复书签的位置,使用ResumeBookmark方法,并传递书签名称和可选的上下文。以下是一个恢复书签的示例:
app.ResumeBookmark(textBox1.Text, null);
5. 绑定生命周期事件
为了更好地管理工作流的生命周期,可以绑定一些重要的事件,如Unloaded、Completed等。以下是绑定生命周期事件的示例:
app.Unloaded = delegate (WorkflowApplicationEventArgs er) { Console.WriteLine("工作流 {0} 卸载.", er.InstanceId);};app.Completed = delegate (WorkflowApplicationCompletedEventArgs er) { syncEvent.Set();};app.Idle = delegate (WorkflowApplicationIdleEventArgs er) { syncEvent.Set();}; 注意事项
- 继承自
NativeActivity:确保书签活动继承自NativeActivity,并在Execute方法中定义输入和输出参数。 - 数据库配置:确保数据库配置正确,包括服务器名称、数据库名称、用户名和密码。
- 生命周期事件处理:建议绑定
Idle事件以避免界面卡死。
通过以上步骤,可以在Windows Workflow Foundation(WF)中实现书签功能,实现工作流的持久化和状态管理。如果需要更详细的实现,可以参考官方文档或相关技术博客。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2026年05月27日 05时41分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP学习总结(2)——PHP入门篇之PHP代码标识
2023-03-01
PHP学习总结(3)——PHP入门篇之PHP的echo语句
2023-03-01
PHP学习总结(4)——PHP入门篇之PHP计算表达式
2023-03-01
PHP学习总结(5)——PHP入门篇之PHP字符串
2023-03-01
PHP学习总结(6)——PHP入门篇之PHP语句结束符
2023-03-01
PHP学习总结(7)——PHP入门篇之PHP注释
2023-03-01
rabbitmq重启失败
2023-03-01
PHP学习总结(9)——PHP入门篇之WAMPServer服务控制面板介绍
2023-03-01
php学习笔记---php调试和开发工具整理
2023-03-01
PHP学习笔记一:谁动了你的mail(),PHP?
2023-03-01
PHP安全实战
2023-03-01
php安装扩展
2023-03-01
rabbitmq重启
2023-03-01
php实现上传(多个)文件函数封装
2023-03-01
php实现下载文件方法
2023-03-01
php实现单链表
2023-03-01
php实现图片背景换色功能
2023-03-01
php实现多个一维数组对应合并成二维数组
2023-03-01
php实现多关键字查找方法
2023-03-01
PHP实现微信公众号H5支付
2023-03-01