欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

WF 4.0 之持久化操作一:SqlServer方式的存储

程序员文章站 2022-05-05 11:13:51
...

没有 持久 化的WF 能称为一个完整的WF吗,答案是否定的;如果WF不能 持久 化,那么流程就需要一次就执行完毕,所有的 操作 就要一次走下去,可现实中的工作流是这样吗,答案同样是否定的。一个投票流程需要多个评委投票之后确定一个票数最高的组长才可以进入

没有持久化的WF 能称为一个完整的WF吗,答案是否定的;如果WF不能持久化,那么流程就需要一次就执行完毕,所有的操作就要一次走下去,可现实中的工作流是这样吗,答案同样是否定的。一个投票流程需要多个评委投票之后确定一个票数最高的组长才可以进入下一个流程,如果不能持久化,那么在此流程中每个评委使用的数据(在流程中需要处理的公共数据,可能为简单类型,也可能为复杂类型)则完全不同,甚至说每个人都是不一样的,我们要在每一个步骤记录下数据,在流程结束时候进行汇总分析,很明显流程没有根据原始的思路一步一步走下去,所以我们需要在所有投票完成之前都保持一个挂起状态,只有等所有的投票完成,流程才结束,此时我们想到了持久化。

持久化分析之BookMark:

持久化之前,我提到了需要挂起状态,为什么要挂起,挂起是一个怎样的操作。在WF中一个挂起很简单,就是一个BookMark(书签),顾名思义,先存放一个书签,暂时结束,如果下次需要根据书签找到上次停止的地方,继续进行操作

持久化分析之InstanceStore:

这个类为WF提供的,用于进行持久化的操作,WF中已经包含了一个实现它的SqlWorkflowInstanceStore,用于保存到数据库中,当然本文还会介绍另外一种是使用XML的方式。此类保存到的数据库有些要求,使用的sql脚本微软已经提供,下文将会一一说明。

持久化分析之PersistenceParticipant:

PersistenceParticipant