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);
} }
}
}
Asp.net工作流workflow实战之书签(二)的更多相关文章
- Asp.net工作流workflow实战之给书签命名(四)
之前我们的书签名字是通过手动录入的方式,在实际开发中要在流程设计的时候定义好: namespace EazyBPMS.WorkFlow { public sealed class SetStepAct ...
- Asp.net工作流workflow实战之工作流启动与继续(三)
工作流帮助类: //让工作流继续沿着书签的位置向下执行value是向书签传递参数 wfc.ResumeBookmark(bookmarkName,value); //把传过来的数据value作为输出参 ...
- Asp.net工作流workflow实战(一)
最近开发一个项目用到了工作流引擎,之前研究过微软的workflow所有就用它了,距离上次用有一段时间了,好多东西有点模糊了,就在此处一遍写代码一遍回忆. 首先,在我的项目中新建了.netframwor ...
- Asp.net工作流workflow实战之工作流持久化(五)
直接看msdn https://msdn.microsoft.com/zh-cn/library/ee395773(v=vs.100).aspx
- 【无私分享:ASP.NET CORE 项目实战(第十二章)】添加对SqlServer、MySql、Oracle的支持
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 增加对多数据库的支持,并不是意味着同时对多种数据库操作,当然,后面,我们会尝试同时对多种数据库操作,这可能需要多个上下文,暂且 ...
- 【无私分享:ASP.NET CORE 项目实战(第八章)】读取配置文件(二) 读取自定义配置文件
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 我们在 读取配置文件(一) appsettings.json 中介绍了,如何读取appsettings.json. 但随之产生 ...
- 《ASP.NET MVC企业实战》(二) MVC开发前奏
在上一篇“<ASP.NET MVC企业级实战>(一)MVC开发前奏”中记录了作者介绍的一些比较实用的VS使用方法以及C#2.0中添加的新特性.本篇继续大概了解之后版本的一些新特性. ...
- 【无私分享:ASP.NET CORE 项目实战】目录索引
简介 首先,我们的 [无私分享:从入门到精通ASP.NET MVC] 系列已经接近尾声,希望大家在这个过程中学到了一些思路和方法,而不仅仅是源码. 因为是第一次写博客,我感觉还是比较混乱的,其中 ...
- 【无私分享:ASP.NET CORE 项目实战(第十四章)】图形验证码的实现
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 很长时间没有来更新博客了,一是,最近有些忙,二是,Core也是一直在摸索中,其实已经完成了一个框架了,并且正在准备在生产环境中 ...
随机推荐
- elasticsearch从入门到出门-01windows上安装使用
elasticsearch 1.安装JDK,至少1.8.0_73以上版本,java -version2.下载和解压缩Elasticsearch安装包,目录结构3.启动Elasticsearch:bin ...
- 洛谷 1641 [SCOI2010]生成字符串
题目戳这里 一句话题意 求\(C_{m+n}^{m}\)-\(C_{m+n}^{m-1}\) Solution 巨说这个题目很水 标签居然还有字符串? 但是我还不很会用逆元真的太菜了,还好此题模数P为 ...
- 矩阵乘法 NOI2012的一道题
今天,kzj大佬教了我矩阵加速. 让我以这篇随笔表示感谢吧! 这是我刷的一道题:NOI2012 随机数据生成器. 就是普通的矩阵加速,只是要注意的是: 直接用乘法会爆long long,可以参考一下 ...
- C语言之基本算法12—谁是冠军
/* ================================================================== 题目:甲乙丙丁四人猜A,B,C,D,E,F6个人谁是冠军,甲 ...
- Android环境搭建 NDK+ADT(免cywgin)
JDK下载: 1下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html 2配置环境变量 JAVA_HOME:创 ...
- 3.15课·········out传值(传址)
public void Hs(out int a, out int b) { a = 4; b = 6; a = b++;//a=6,b=b+1=7//b先赋值给a,然后b+1 b = ++a;//a ...
- 每天一个Linux命令(36)ps命令
Linux中的ps命令是Process Status的缩写. ps命令用于报告当前系统的进程状态.可以搭配kill指令随时中断.删除不必要的程序. (1)用法: ...
- C# 自定义异常类 throw语句抛出异常
Exception概述: 异常(Exception)一般分为两大类SystemException.ApplicationException,前者是预定义的异常类,后者是用户自定义异常类时需要继承的类 ...
- Python问题解决记录
Python如何进行中文注释:网址 解决Python UnicodeEncodeError: 'ascii' codec can't encode: 网址1.网址2.网址3 Python 字符串转换为 ...
- Spring Cloud之ZuulFilter拦截请求参数
过滤器放到网关: package com.toov5.filter; import javax.servlet.http.HttpServletRequest; import org.apache.c ...