• 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 = value as BaseResumeBookMarkValue; if (data != null) { context.SetValue(OutResult, (T)data.value); context.SetValue(BookMarkName, data.BookMarkName); } } } }
  • 相关阅读:
    java web 自定义错误页面 完整jsp错误页面代码(同时写错误日志) error.jsp
    linux ps命令详解
    Cocos2d-x MultipleTouch & CCControllButton's confusion
    android 处理图片之--bitmap处理
    JBoss 目录结构
    如何将Android默认的Camra程序导入到eclipse中
    SGU107——987654321 problem
    解析Systemtap
    csdn 刷分小工具(刷了1000多被封了,慎用)
    OpenCV——基本图形绘制(椭圆、圆、多边形、直线、矩形)
  • 原文地址:https://www.cnblogs.com/yabisi/p/6056816.html
Copyright © 2020-2023  润新知