首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

工作注入门

2012-10-09 
工作流入门工作流入门? 工作流无疑是一个热门话题,以前的开发中一直不会接触到这个层面,所以一直没有来得

工作流入门
工作流入门

? 工作流无疑是一个热门话题,以前的开发中一直不会接触到这个层面,所以一直没有来得及看到。现在由于工作需要开始接触工作流,这里留下一个我学习的过程,提供一些好的资源和一些自己的体会,方便大家学习探讨。

一、为什么使用工作流、工作流这个技术的现状
出于习惯,每当我学习一个技术的时候,必须要知道为什么要学习它,它能给我带来什么好处,了解了这个才能让我决定是否使用,在什么时候使用。另外了解一下这个技术的现状有助于从总体上把握这个技术。对于一个发展阶段的技术和一个成熟的技术对待方式是不一样的。
关于这点,参考这篇文章:http://www.joinwork.net/document/The%20State%20of%20Workflow2.htm
所有我看过的文章中,这篇文章最清晰的说明了我上边的两个问题,而且以问答的方式来写的,适合从头开始的人。
这篇文章的作者Tom Baeyens (jbpm工作流框架的作者)翻译dinghong,感谢他们提供了一个好的文章。
二、工作流框架的选择
由于开源的流行我们可以有更多的选择,这给我们带来了很多的方便,好处多多不用说了,但也给我们带了了一些麻烦,用Java 的人都了解,百家争鸣让人眼花缭乱,一个重要的事情是选择,哪一个适合自己,或者说你更喜欢哪一个。选择也是一个难题。选择的好能节省很多时间,少走弯路。
在这个问题上我没有选择,因为我不是这个方面的主要负责人,框架的选择已经定下来了,OSWorkFlow.这对我也许是个好消息,因为我不需要再在大量的框架中去选择,只需要专一于一个,省去大量的时间。
三、OSWorkFlow主要优势
OSWorkflow?给你绝对的灵活性。OSWorkflow?被认为是一种“低级别”工作流实现。与其他工作流系统能用图标表现“Loops(回路)”和“Conditions(条件)”相比,OSWorkflow?只是手工“编码(Coded)”来实现的。但这并不能说实际的代码是需要完全手工编码的,脚本语言能胜任这种情形。OSWorkflow?不希望一个非技术用户修改工作流程,虽然一些其他工作流系统提供了简单的?GUI?用于工作流编辑,但像这样改变工作流,通常会破坏这些应用。所以,进行工作流调整的最佳人选是开发人员,他们知道该怎么改变。不过,在最新的版本中,OSWorkflow?也提供了?GUI?设计器来协助工作流的编辑。

OSWorkflow?基于有限状态机概念。每个?state?由?step?ID?和?status?联合表现(可简单理解为?step?及其?status?表示有限状态机的?state)。一个?state?到另一?state?的?transition?依赖于?action?的发生,在工作流生命期内有至少一个或多个活动的?state。这些简单概念展现了?OSWorkflow?引擎的核心思想,并允许一个简单?XML?文件解释工作流业务流程。

上边这段话是从OSWorkFlow的教程中得到的,总结一下,OSWorkFlow是基于xml手工配置的,它特点是灵活,它认为工作流的调整应该是程序员的事情。
四、OSWorkFlow核心概念
步骤(Step)
????一个?Step?描述的是工作流所处的位置。可能从一个?Step?Transtion(流转)到另外一个?Step,或者也可以在同一个?Step?内流转(因为?Step?可以通?Status?来细分,形成多个State)。一个流程里面可以多个Step。

状态(Status)
????工作流?Status?是用来描述工作流程中具体Step(步骤)状态的字符串。OSWorkflow?的有?Underway(进行中)、Queued(等候处理中)、Finished(完成)三种?Status。一个实际State(状态)真正是由两部分组成:State?=?(Step?+?Status)?。

流转(Transtion)
????一个State到另一个State的转移。

动作(Action)
????Action?触发了发生在?Step?内或?Step?间的流转,或者说是基于?State?的流转。一个?step?里面可以有多个Action。Action?和Step?之间的关系是,Step?说明“在哪里”,Action?说明“去哪里”。?一个?Action?典型地由两部分组成:可以执行此Action(动作)的
Condition(条件),以及执行此动作后的?Result(结果)。????

条件(Condition)
类似于逻辑判断,可包含“AND”和“OR”逻辑。比如一个请假流程中的“本部门审批阶段”,该阶段利用“AND”逻辑,判断流程状态是否为等候处理中,以及审批者是否为本部门主管。

结果(Result)
Result?代表执行Action(动作)后的结果,指向新的?Step?及其?Step?Status,也可能进入?Split?或者?Join。Result?分为两种,?Contidional-Result?(有条件结果),只有条件为真时才使用该结果,和?Unconditional-Result(无条件结果),当条件不满足或没有条件时使用该结果。

分离/连接(Split/Join)
流程的切分和融合。很简单的概念,Split?可以提供多个?Result(结果);Join?则判断多个?Current?Step?的态提供一个?Result(结果)。

好了,到这里,工作流的一个概貌是出来了。在下边的文章中会以OSWorkFlow为例来进入工作流的天地。

热点排行