一 概述
在没有持久化之前,流程实例是存在于内存中的,所以我们最多只能有一个宿主来使用这个流程实例,一旦流程包含多个节点,需要多次使用这个流程实例,那么流程示例的持久化就是不可或缺的一个过程。Workflow4将工作流持久化封装成一个插件来提供持久化服务,并且通过调用SqlWorkflowPersistenceService类来实现SQL Server数据中流程实例的持久化。
二 工作原理
工作流提供了持久化服务,我们只需要通过开启持久化服务即可实现流程实例的持久化。在初始化工作流宿主时同时初始化流程实例,然后我们就可以在工作流生命周期中的特定时间来进行流程实例的持久化。这里的指定时间有以下几种情况:
1 工作流空闲时;
2 工作流完成或终止时;
3 活动TransactionScopeActivity/CompensatableTransactionScopeActivity/CompensatableSequenceActiviy 完成时;
4 自定义活动完成时;
5 调用WorkflowInstance的一种方法,且这种方法又会导致持久化操作时。
对于开发者来说,不需要额外去控制持久化服务,流程实例的持久化是由工作流引擎自动控制的。
三 数据模型
1 添加System.Activities.DurableInstancing 和 System.Runtime.DurableInstancing的引用。
3 表说明
在没有持久化之前,流程实例是存在于内存中的,所以我们最多只能有一个宿主来使用这个流程实例,一旦流程包含多个节点,需要多次使用这个流程实例,那么流程示例的持久化就是不可或缺的一个过程。Workflow4将工作流持久化封装成一个插件来提供持久化服务,并且通过调用SqlWorkflowPersistenceService类来实现SQL Server数据中流程实例的持久化。
二 工作原理
工作流提供了持久化服务,我们只需要通过开启持久化服务即可实现流程实例的持久化。在初始化工作流宿主时同时初始化流程实例,然后我们就可以在工作流生命周期中的特定时间来进行流程实例的持久化。这里的指定时间有以下几种情况:
1 工作流空闲时;
2 工作流完成或终止时;
3 活动TransactionScopeActivity/CompensatableTransactionScopeActivity/CompensatableSequenceActiviy 完成时;
4 自定义活动完成时;
5 调用WorkflowInstance的一种方法,且这种方法又会导致持久化操作时。
对于开发者来说,不需要额外去控制持久化服务,流程实例的持久化是由工作流引擎自动控制的。
三 数据模型
1 添加System.Activities.DurableInstancing 和 System.Runtime.DurableInstancing的引用。
2 新建数据库countersignatureDB;运行C:\Windows\Microsoft.NET\Framework\v4.0.30319\SQL\en下的SqlWorkflowInstanceStoreSchema和SqlWorkflowInstanceStoreLogic脚本,截图如下:
3 表说明
[System.Activities.DurableInstancing].[InstancesTable] |
实例表 |
[System.Activities.DurableInstancing].[RunnableInstancesTable] |
运行实例表 |
[System.Activities.DurableInstancing].[KeysTable] |
关键字表 |
[System.Activities.DurableInstancing].[LockOwnersTable] |