像早些时候说起的那样,像他的名字所指示的那样,顺序工作流顺着一个规定好了的步骤序列,从开始向结尾移动.当他们被呈现为图形的时候,是容易理解和遵循的。因此,绝大多数人选择顺序工作流
作为他们研究工作流的开始.
顺序工作流的一个关键的原则就是参与者不能确定工作流的下一步。每个参与者仅仅提示工作流引擎,他们已经完成了他们的步骤。他们可能或者不可能有任何关于他们完成他们的任务以后会发生什么的知识。就像我在前面说的那样,顺序工作流有一个规定的路径,所以工作流引擎确定下一个步骤是基于他怎样被构造的。工作流引擎在控制之下。
你可能在Office 2007中实现工作流的时候遇到过很的场景,那么在这些场景中,顺序工作流工作得非常好
.审批
.转换
.反馈
.协作
大多数的场景,尽管如此,可以被一般化成一个单独的分类:basicrouting,在这里边,文档需要从一个人被移动到另一个人那里。每个人查看文档且接传递文档,并且可能会添加或者更改一些内容,顺序工作流处理这些场景处理得很好。
不幸的是,大部分业务处理并不是十分简单的。顺序工作流不能很好的适合模型化复杂的业务处理。有意义的异常处理,多个执行路径(经常是任意的),不平常的外界因素等,在这些场景中,研究状态机工作流的时候到了。
状态机工作流
就像我们以前提起的那样,状态机工作流由两个元素组成。
1.状态:描述你的工作流的当前状态
2.事件:描述你的工作流从一个状态移动到另一个状态的原因
在Office 2007中, 有一个普通的应用场景,那就是文档的审批,所以我们将研究一个实现审批工作流的状态机。图1-3显示了作为状态机的一个基本的文档审批过程。不计算开始和结束状态,他们多图表来说就是些标签,将不会作为我们的工作流的一部分被开发.有三个状态:
1.DocumentSubmitted:一个文档在这个状态中所处的时间只有片刻,工作流被启动直到有人批准或者拒绝这个文档的片刻。
2.DocumentRejected:当一个查看者拒绝了文档的时候,这个文档就处在这个状态
3.DocumentApproved:一旦有人批准,那么这个文档就处在这个状态
有三个事件:
1.OnDocumentSubmitted:当工作流启动的时候这个事件就会发生。这个事件的处理需要确定谁需要批准这个文档,并用某种方式通知他们:有一个文档正在等待着他们的查看。
2.OnDocumentRejected:当查看者拒绝了的时候,这个事件就会发生。这个事件的处理过程需要通知作者,他们的文档没有通过审核。
3.OnDocumentApproved:当一个用户批准了这个文档的时候,这个事件就会产生,这个事件的处理将需要执行这个工作流的任何最后的任务。