码迷,mamicode.com
首页 > Web开发 > 详细

Asp.net工作流workflow实战之书签(二)

时间:2016-11-12 16:40:20      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:flow   ret   新建   工作   namespace   操作   var   aac   cut   

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 = value as BaseResumeBookMarkValue; if (data != null) { context.SetValue(OutResult, (T)data.value); context.SetValue(BookMarkName, data.BookMarkName); } } } }

 

Asp.net工作流workflow实战之书签(二)

标签:flow   ret   新建   工作   namespace   操作   var   aac   cut   

原文地址:http://www.cnblogs.com/yabisi/p/6056816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!