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);
            }

        }
    }
}
时间: 2024-12-25 18:02:34

Asp.net工作流workflow实战之书签(二)的相关文章

【无私分享:ASP.NET CORE 项目实战(第十二章)】添加对SqlServer、MySql、Oracle的支持

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 增加对多数据库的支持,并不是意味着同时对多种数据库操作,当然,后面,我们会尝试同时对多种数据库操作,这可能需要多个上下文,暂且不论.分布式数据库,我们采用的是阿里云的Mycat,这个后面会更新出来.我们今天的场景是:我们的项目可能是在windows上开发的使用的是SqlServer,我们要发布到linux上,SqlServer 2017 据说是支持liunx的,但是还没出... 当然不是说 SqlServer 就不能装在l

【ASP.NET Core分布式项目实战】(二)oauth2 + oidc 实现 server部分

原文:[ASP.NET Core分布式项目实战](二)oauth2 + oidc 实现 server部分 本博客根据http://video.jessetalk.cn/my/course/5视频整理(内容可能会有部分,推荐看源视频学习) 资料 我们基于之前的MvcCookieAuthSample来做开发 MvcCookieAuthSample下载地址:https://files.cnblogs.com/files/wyt007/ASPNETCore%E5%BF%AB%E9%80%9F%E5%85

ASP.NET MVC4+BootStrap 实战(二)

上一篇文章我们讲述了页面初始加载数据的一些东西,本篇我们来讲一下查询按钮和分页按钮.在很久以前我写过一篇ASP.NET MVC4切近实战的文章,有关于分页的代码,本篇我们不采用微软的AJAX框架. 先看一下查询效果,在点击Get按钮之后,会进行AJAX请求. js代码如下 jQuery(document).ready(function () {     setRowBackColor();     $("#btnsearch").click(function () {         

【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生了问题:我们使用的是在 Startup.cs 中(如下图)来实现配置读取,有两个问题 ① 我们如果定义N种配置,是否要再这里添加N条这样的配置 : ② 如果我们的配置不想写在appsettings.json中呢 解决问题 带着上面的两个问题,我们首先来添加一个配置文件 siteconfig.json

【无私分享:ASP.NET CORE 项目实战(第七章)】读取配置文件(二) 读取自定义配置文件

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生了问题:我们使用的是在 Startup.cs 中(如下图)来实现配置读取,有两个问题 ① 我们如果定义N种配置,是否要再这里添加N条这样的配置 : ② 如果我们的配置不想写在appsettings.json中呢 解决问题 带着上面的两个问题,我们首先来添加一个配置文件 siteconfig.json

深入理解OpenERP的工作流(Workflow)

原文源自老肖 一.工作流定义:< ?xml version="1.0"?>  < terp><data>    <record model="workflow" id=workflow_id>    <field name="name">workflow.name</field>    <field name="osv">resource.mo

【无私分享:ASP.NET CORE 项目实战(第四章)】Code First 创建数据库和数据表

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 本章我们来介绍下Asp.net Core 使用 CodeFirst 创建数据库和表,通过 控制台 和 dotnet ef 两种方式 修改EF上下文对象,添加测试类 我修改了一下名字,Domains 改为了 wkmvc.Data 我们新建一个文件夹 Models 用于存放 模型类 我们在Models下面再新建一个文件夹SysModelsMange 用于区域模型类 我们新建一个测试类SYS_USER namespace wkm

《ASP.NET MVC企业实战》(一) MVC开发前奏

一.工具和方法 学到了一些没用过的工具和方法: a)删除多余的using指令并排序:一个类头部的using一般会有很多用不到的,在完成类的编写后,可以右键选择"组织using"来删除没用的using并排序. 复制或删除一行代码时不用选中:可以直接把光标置于这一行,直接进行ctrl+c ctrl+x的整行操作.之前用过shift+delete也是整行剪切. 查找匹配的标记:成对出现的标记如{}.#region #endregion等,把光标放在其中一个上,使用ctrl+]可以跳转到符号对

【无私分享:ASP.NET CORE 项目实战(第十一章)】Asp.net Core 缓存 MemoryCache 和 Redis

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 经过 N 久反复的尝试,翻阅了网上无数的资料,GitHub上下载了十几个源码参考, Memory 和 Redis 终于写出一个 简陋 的 封装,为了统一和易用,我们两种缓存都统一实现了一个接口 ICacheService,微软也有很多是通过IDistributedCache,大家可以参考 https://docs.asp.net/en/latest/performance/caching/distributed.html