首页 > 代码库 > Asp.net工作流workflow实战之书签(二)
Asp.net工作流workflow实战之书签(二)
1、winform(web程序)下使用工作流
怎样才能像控制台那样让winform或web页面窗体阻塞等待工作流的继续执行呢
2、BookMark书签
书签:和一般的书签看书的时候方便查看上次看的内容,工作流中的书签意思是让工作流停顿下来,等待用户在当前状态继续操作。
3、书签的制作
在项目中点击右键→添加新建项→代码活动。名称为BookMarkCodeActivity.cs//代码活动的一个基类是CodeActivity
下面的代码是创建出来的一个代码活动
namespace EazyBPMS.WorkFlow{ public sealed class ceshi : CodeActivity { // 定义一个字符串类型的活动输入参数 public InArgument<string> Text { get; set; } // 如果活动返回值,则从 CodeActivity<TResult> // 并从 Execute 方法返回该值。 protected override void Execute(CodeActivityContext context) { // 获取 Text 输入参数的运行时值 string text = context.GetValue(this.Text); } }}
但是如果是做为书签使用必须做以下修改
//1、改基类将CodeActivity 改为NativeActivity
//2、重写属性CanInduceIdle
//3、修改传入参数CodeActivityContext修改为NativeActivityContext
//4、创建书签
namespace EazyBPMS.WorkFlow{ //1、改基类将CodeActivity 改为NativeActivity //2、重写属性CanInduceIdle //3、修改传入参数CodeActivityContext修改为NativeActivityContext //4、创建书签 public sealed class WaitInputDataActivity<T> : NativeActivity {//这个属性的意思是是否允许工作流空闲/停顿下来 protected override bool CanInduceIdle { get { return true; } } // 定义一个字符串类型的活动输入参数 public InOutArgument<string> BookMarkName { get; set; } public OutArgument<T> OutResult { get; set; } // 如果活动返回值,则从 CodeActivity<TResult> // 并从 Execute 方法返回该值。 protected override void Execute(NativeActivityContext context) { // 获取 BookMarkName 输入参数的运行时值 string text = context.GetValue(this.BookMarkName);
context.CreateBookmark(text, new BookmarkCallback(MyCallback)); } //把传过来的数据value作为输出参数outResult的值 传到书签外面 private void MyCallback(NativeActivityContext context, Bookmark bookmark, object value) { var data = http://www.mamicode.com/value as BaseResumeBookMarkValue; if (data != null) { context.SetValue(OutResult, (T)data.value); context.SetValue(BookMarkName, data.BookMarkName); } } }}
Asp.net工作流workflow实战之书签(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。