Workflow:添加工作流存储功能

数据库准备:

1. 创建database(这里我们用的是MSSQL。Workflow支持其它数据库,但是MSSQL是配置最方便,不要问我为什么!)。

2.
运行位于[%WINDIR%\Microsoft.NET\Framework\v4.xxx\SQL\EN]的的脚本文件SqlWorkflowInstanceStoreSchema.sql和SqlWorkflowInstanceStoreLogic.sql。这时数据库中表应该类似于下图:

开工:

1.
在上一个项目的基础上,引入System.Activites.DurableInstancing和System.Runtime.DurableInstancing。如下图所示:

2. 修改Console Project的program.cs如下:


 1         static void Main(string[] args)
2 {
3 // Workflow Store of SQL Server
4 SqlWorkflowInstanceStore store =
5 new SqlWorkflowInstanceStore("Data Source=192.168.3.26;Initial Catalog=workflow_hour3;Persist Security Info=True;User ID=sa;[email protected]");
6
7 AutoResetEvent syncEvent = new AutoResetEvent(false);
8
9 Activity wf = new WorkflowsProject.Activity1();
10
11 // Create the WorkflowApplication using the desired
12 // workflow definition.
13 WorkflowApplication wfApp = new WorkflowApplication(wf);
14
15 // Assign workflow store to the current workflow
16 wfApp.InstanceStore = store;
17
18 wfApp.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs e)
19 {
20 Console.WriteLine("Workflow {0} persisted at {1}",
21 e.InstanceId, System.DateTime.Now.ToLongTimeString());
22 return PersistableIdleAction.Persist;
23 };
24
25 wfApp.Idle = delegate(WorkflowApplicationIdleEventArgs e)
26 {
27 Console.WriteLine("Workflow {0} idled at {1}",
28 e.InstanceId, System.DateTime.Now.ToLongTimeString());
29 syncEvent.Set();
30 };
31
32 // Handle the desired lifecycle events.
33 wfApp.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
34 {
35 Console.WriteLine("Workflow {0} completed.", e.InstanceId.ToString());
36 syncEvent.Set();
37 };
38
39 wfApp.Aborted = delegate(WorkflowApplicationAbortedEventArgs e)
40 {
41 Console.WriteLine("Workflow {0} terminated because {1}", e.InstanceId, e.Reason.Message);
42 syncEvent.Set();
43 };
44
45 // Start the workflow.
46 wfApp.Run();
47
48 // Wait for Completed to arrive and signal that
49 // the workflow is complete.
50 syncEvent.WaitOne();
51
52 // Keep the console screen alive when workflow comnpletes
53 Console.WriteLine("Press enter to continue");
54 Console.Read();
55 }

3. 修改Delay的Duration为30秒,方便我们观察数据库的数据变化:

4. 运行。结果如下:

5. 在workflow
persisted阶段,还没有到completed的时候,如果查看数据库中的[System.Activities.DurableInstancing].[InstancesTable]表,我们就会发现诸如如下的记录:

而当workflow运行到completed的时候,在查询这张表,就会发现这条记录已经不存在了。说明工作流的数据存储运行正确。

时间: 2025-01-12 22:51:10

Workflow:添加工作流存储功能的相关文章

Gemini.Workflow 双子工作流入门教程四:流程应用

简介: Gemini.Workflow 双子工作流,是一套功能强大,使用简单的工作流,简称双子流,目前配套集成在Aries框架中. 下面介绍本篇教程:定义流程:流程应用. 流程应用: 流程图设计好后,将下来就是创建一个流程应用: 点击添加: 起好应用名称,和别名,并在弹窗中选择流程定义: 同时设置好业务表单所在的路径: 系统是以Iframe的方式加载的表单,所以只支持页面类型. 权限设置与说明: 如果需要限制应用只能被某些角色使用,可以选择允许的角色(默认是所有拥有发起工单权限的角色都可以).

XenServer部署实录——添加共享存储

XenServer部署实录系列之04添加共享存储 作业环境 XenServer服务器 OS:XenServer 6.2 Hostname:xsr01 IP:192.168.0.241/24 Gateway:IP:192.168.0.1/24 硬件环境:Dell PowerEdge R720 NFS服务器 OS:CentOS 6.4 Hostname:nfs01 IP:192.168.0.204/24 Gateway:IP:192.168.0.1/24 运行软件:nfs,rpcbind 一.关于X

探索HTML5本地存储功能运用技巧(1)

通过实例,我们可以加深对HTML5本地存储的理解,并且可以熟练运用. 我们来实现一个简单应用,该应用中用户输入用户名和手机号,相关因袭可以保存到保存到本地,并可以进行查找.展示等基本操作. 以下只给我出关键代码,项目结构和基本代码以及CSS样式大家可以自己添加. 我们按照功能进行分布完成. 1.         存储功能 这里我们要完成,当用户输入姓名和手机号时,自己的信息存储到Web Storage中,html中代码如下: <form> <labelfor="username

为VMware ESXi主机添加本地存储的过程及注意事项-之1

为VMware ESXi主机添加本地存储的过程及注意事项之1 在规划数据中心的时候,除了考虑当前的实际情况下,还要考虑将来二至三年的可能出现的问题.但有的时候,虽然已经做了多种考虑,但在信息化实施的过程中,仍然会碰到问题,这时就需要管理员根据实际情况进行处理. 例如,在规划虚拟化数据中心的时候,作为群集中的虚拟化主机,一般不配置本地硬盘,而是采用共享存储,以实现系统的高可用性.即时为服务器配置本地硬盘,一般也只是配置一个较小的磁盘,例如60-120GB的固态硬盘安装系统.相信这是大多数虚拟化数据

为VMware ESXi主机添加本地存储的过程及注意事项-之4

4 在添加本地存储中碰到的问题及解决方法 4.1 添加RAID卡后出现PCI故障报警 如果添加RAID卡之后,服务器面板报警,显示"PCI"故障,如图2-2-10所示,则需要进入CMOS进行设置,主要步骤如下. 图2-2-10 PCI故障灯 (1)开机按F1进入系统设置,选择"Load Default Settings"加载默认设置,如图2-2-11所示. 图2-2-11 恢复默认设置 (2)然后进入"System Settings"(系统设置)

Gemini.Workflow 双子工作流入门教程一:定义流程:流程图属性

简介: Gemini.Workflow 双子工作流,是一套功能强大,使用简单的工作流,简称双子流,目前配套集成在Aries框架中. 下面介绍本篇教程:流程定义:流程图属性. 步骤一:在流程管理的流程定义中,新增流程 步骤二:设置流程图属性,控制总开关: 流程图右侧,有些属性可以设置,这里设置的是总开头,流程节点有有相应的设置,只有满足总开关和流程节点同时打开,开关才有效. 下面介绍属性控制的地方: 1.是否显示流程图: 在流程办理界面中,右上角有个“查看流程图”按钮. 点击的话可以看到: 2.其

Gemini.Workflow 双子工作流入门教程三:定义流程:流程节点、迁移条件参数配置

简介: Gemini.Workflow 双子工作流,是一套功能强大,使用简单的工作流,简称双子流,目前配套集成在Aries框架中. 下面介绍本篇教程:定义流程:流程节点.迁移条件参数配置. 一.普通节点介绍: 先介绍这个,是因为普通节点,拥有所有的配置,其它类型的节点(会根据类型,隐藏或减少相应的配置) 所以介绍这个,就等于把所有的可配置项都介绍完了. 点击不同的地方,右侧会出现不同的配置项. 下面看普通节点的配置项: 流程图属性: 步骤名称(这个是可以更改的,在表单上如果想通过API控制节点,

Gemini.Workflow 双子工作流正式上线(支持.NET Core)

接触工作流: 最早接触工作流,是在04年左右,那年,我创造了 Aries 框架的前身第一版框架,另一个同事,创造了工作流的第一版框架. 只是那时候,我并未参与工作流的核心设计,仅仅是帮写了个流程设计器,就是下图这个怀旧的样子: 然后提供一些(撤回.退回)回收算法的意见. 并提供:CYQ.Data 的源码作为底层数据层,那时候还没开源 CYQ.Data. 悲催的是,同事拿到 CYQ.Data 框架的源码,却把它打散了,没用MAction,只用MProc,并来了个二次封装,把sql语句搞了一堆配置的

添加顶踩功能

phpcms如何添加顶踩功能步骤: 1.在后台模型增加两个字段,一个goodpost,一个badpost;这个步骤简单,按后台新增加字段下一步就行了. 2.在模块/phpcms/modules/content/增加扩展函数newindex.php,代码如下: <?php defined('IN_PHPCMS') or exit('No permission resources.'); class newindex{ function __construct(){ $this->db=pc_ba