<o:p> </o:p> OSWorkflow是基于FSM(finite state machine,有限状态机)理论。每一个state表示了step及其所属的status(state=stepID+status)。<o:p></o:p>
<o:p> </o:p>
首先,有必要简要介绍一下FSM:<o:p></o:p>
最基本的FSM包含三部分:States,Start State,Transtion/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>
一个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主要包含如下几个基本元素:Step,Status,Action,Result;还有两个特殊的元素,用于描述聚合分散的:Split和Join。
这几个概念的详细解释,在此就不像再解释了,如果有必要,大家可以看看gigix兄blog,上面有篇《OSWorkflow基本概念》。
针对这些基本元素之间的关系,我画了如下的图:
<o:p>
</o:p>
说道这儿,可以说一句了:OSWorkflow其实是很简单的,理解了这些(state,step,status,action,transtion),就可以知道osworkflow最为核心的本质了。