基于FSM的OSWorkflow

<o:p> </o:p>       OSWorkflow是基于FSMfinite state machine,有限状态机)理论。每一个state表示了step及其所属的statusstate=stepID+status)。<o:p></o:p>

<o:p> </o:p>

    首先,有必要简要介绍一下FSM<o:p></o:p>

    最基本的FSM包含三部分:StatesStart StateTranstion/Actions<o:p></o:p>

    如下图所示:<o:p></o:p>

<v:shapetype o:spt="75" coordsize="21600,21600" stroked="f" id="_x0000_t75" filled="f" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path gradientshapeok="t" o:connecttype="rect" o:extrusionok="f"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><o:p></o:p>

基于FSM的OSWorkflow
   
一个state到另一个state就称为Transtion<o:p></o:p>

<o:p> </o:p>

    下面,我们来看看OSWorkflow的核心设计思想:<o:p></o:p>

    一个state到另一个state的转移(Transtion),依赖于action的发生。在一个workflow的生命周期中,总会存在至少一个或多个state:这就是osworkflow engine的最核心理念。<o:p></o:p>

<o:p> </o:p>

    OSWorkflow的最基本的元素:<o:p></o:p>

       OSWorkflow主要包含如下几个基本元素:StepStatusActionResult;还有两个特殊的元素,用于描述聚合分散的:SplitJoin

       这几个概念的详细解释,在此就不像再解释了,如果有必要,大家可以看看gigixblog,上面有篇《OSWorkflow基本概》。

       针对这些基本元素之间的关系,我画了如下的图:

<o:p>
 </o:p>

说道这儿,可以说一句了:OSWorkflow其实是很简单的,理解了这些(state,step,status,action,transtion),就可以知道osworkflow最为核心的本质了。

你可能感兴趣的:(workflow,F#,ext,Blog)