WF4.0和BookMark
来源:互联网 发布:网络电玩游戏 编辑:程序博客网 时间:2024/05/02 00:02
WF4.0中加入了书签(Bookmark)机制,可以让活动在书签的位置挂起(Idel),是线程挂起,等待恢复。如果我们需要在活动没有完成的时候,提供额外的数据,这个时候我们就可以给活动注册一个书签,我们需要使用CreateNamedBookmark方法创建书签,该方法有三个参数一个名字,一BookmarkCallback的委托,当活动恢复的时候执行。和BookmarkOptions,Runtime为每个工作流实例维护一个Bookmarks的Table,每次有Bookmark要恢复的时候都回去check。
流程代码:
<span style="font-size:18px;">namespace workflow{ public sealed class TestActivity :NativeActivity { #region 设置是否可以被持久化:bool CanInduceIdle { get { return true; } } /// <summary> /// 设置是否可以被持久化 /// </summary> protected override bool CanInduceIdle { get { return true; } } #endregion // 派生并从 Execute 方法返回该值。 protected override void Execute(NativeActivityContext context) { //活动“workflow.TestActivity”无效。对于 NativeActivity 派生的活动,若其调用 System.Activities.NativeActivityContext 中定义的某个 CreateBookmark 重载,以便执行异步操作,则必须覆盖 CanInduceIdle 属性且返回 true。 Console.WriteLine("创建书签,终止工作流"); //创建书签 context.CreateBookmark("bookmark", new BookmarkCallback(this.Continue)); Console.WriteLine("恢复书签,流程继续"); } void Continue(NativeActivityContext context, Bookmark bookmark, object obj) { //根据自己的需求,传一些值 } }}</span>注意,这个函数是在BookMark创建时候的一个委托,表示在恢复Bookmark后调用的方法
新建一个windows窗体
<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">namespace from{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string processInstanceID; private WorkflowApplication application; //启动流程并创建书签 private void button1_Click(object sender, EventArgs e) { TestActivity activity = new TestActivity(); application = new WorkflowApplication(activity); processInstanceID = application.Id.ToString(); application.Run(); } /// <summary> /// 恢复书签 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { TestActivity activity = new TestActivity(); BookmarkResumptionResult BRR = application.ResumeBookmark(application.GetBookmarks()[0].BookmarkName, "inPut"); MessageBox.Show("Bookmark恢复执行:" + BRR.ToString()); } }}</span></span></span>
依次执行按钮结果为:
这几篇总结的工作流知识点比较散,下来会通过一个实例来连接起来。敬请期待。
0 0
- WF4.0和BookMark
- WF4.0 基础篇 (十七) Bookmark
- WF4.0 Beta1之旅(4):Bookmark的使用
- [WF4.0 实战] WF4.0 Receive && Send
- WF4.0 学习系列
- WF4.0_1
- WF4.0_2
- WF4.0_3
- WF4.0_4
- WF4.0与多线程
- WF4.0持久化
- wf4
- bookmark
- bookmark
- bookmark
- BOOKMARK
- bookmark
- bookmark
- Android TraceView工具使用
- GDKOI模拟 Manufactoria
- libcurl库进行http通讯-开篇
- Java基本类型和取值范围
- ios开发小技巧
- WF4.0和BookMark
- windows多线程同步机制---原子锁
- 浅析计算机接口技术
- struts2 零配置代码
- Excel大小写转换函数
- MD5值 计算_
- 使用JavaScript实现下拉菜单的效果
- Struts2 零配置文件
- Linux操作文件命令