分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

.net WCF WF4.5 状态机、书签与持久化

发布时间:2023-09-06 01:48责任编辑:沈小雨关键词:暂无标签

想看源码请直接翻到最后,使用方式如下图

如果同时需要多个书签可以直接在需要的位置创建书签,会认为是同一个实例。

若需要实现的效果是同时需要好几个部门审核,那么只要在对应的位置同时创建多个书签即可。

编写书签代码活动

注意几个地方,创建书签需要继承NativeActivity,随之要修改的就是Execute的参数类型

如下所有注释部分

public sealed class BookmarkActivity : NativeActivity ???{ ???????// 定义一个字符串类型的活动输入参数 ???????public InArgument<string> Text { get; set; } ???????public OutArgument<string> bookMark{get;set;} ???????// 如果活动返回值,则从 CodeActivity<TResult> ???????// 并从 Execute 方法返回该值。 ???????//2.修改上下文类型 ???????protected override void Execute(NativeActivityContext context) ???????{ ???????????// 获取 Text 输入参数的运行时值 ???????????string text = context.GetValue(this.Text); ???????????//3.创建书签并设置书签恢复会的回调函数 ???????????context.CreateBookmark("name", new BookmarkCallback(final)); ???????} ???????//4.重写CanInduceIdle ???????protected override bool CanInduceIdle ???????{ ???????????get ???????????{ ???????????????return true; ???????????} ???????} ???????//5.通过恢复书签时自动调用此函数来将书签传递给外部变量 ???????protected ?void final(NativeActivityContext context,Bookmark bookmark,object obj) ???????{ ???????????Dictionary<string, object> o = (Dictionary<string, object>)obj; ???????????context.SetValue(bookMark, context.ActivityInstanceId); ???????}

1.使用WorkflowApplication启动活动

//与主线程同步AutoResetEvent syncEvent = new AutoResetEvent(false); ???????????var act = new Activity1(); ???????????Dictionary<string, object> dictionary = new Dictionary<string, object>(); ???????????dictionary.Add("pic","1"); ???????????WorkflowApplication app = new WorkflowApplication(act, dictionary); ???????????//运行活动 ???????????app.Run(); ???????????//等待信号 ???????????syncEvent.WaitOne(); ???????

 2.持久化的sql路径

C:\Windows\Microsoft.NET\Framework\v4.0.30319\SQL\en 

 3.添加程序集

 3.添加引用

using System.Activities.DurableInstancing;

4.在合适位置绑定数据持久化使用的数据库

SqlWorkflowInstanceStore store = ???new SqlWorkflowInstanceStore(@"Server=DESKTOP-OIGV51O\SQLEXPRESS;database=WFTest;uid=sa;pwd=123");//绑定数据库 ???????????app.InstanceStore = store;

到这一步数据库中便已经能够查看到数据了,接下来要在需要的位置获取我们的书签

 5.继续执行后续步骤

 ???????????//继续执行 ???????????//此处使用数据库中工作流的ID,而不是使用书签名 ???????????app.Load(Guid.Parse(textBox2.Text)); ???????????app.ResumeBookmark(textBox1.Text,null);

代码:下载

上一篇:.net WCF WF4.5

.net WCF WF4.5 状态机、书签与持久化

原文地址:https://www.cnblogs.com/ives/p/WF_BOOKMARK.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved