Step Of WorkFlow----了解WorkFlow运行思路

Technorati 标签: WF

1。谈谈什么是工作流?

使用软件去描述一个商业活动(Business Process)是非常复杂的。这个活动也许是一个Pizza订单,或者是一个商业交易,或者是一个健康保健活动。在平时的工作中,我们经常的谈论这些事情时候,就会出现工作流(WorkFlow)这个词了。听上去Workflow也许很简单,但是常言道:成功决定于细节

2。工作流需要做些什么呢?

  • 我们需要数据表,数据访问类去管理工作流的状态(Workflow State)。
  • 我们需要组件(components)去发送消息,需要组件(components)去等待消息到达。
  • 我们需要将工作流(Workflow)转化成计算机可以执行的命令。

3。工作流很简单么?

下面我们看个简单的例子:

// The workflow for a newly submitted Purchase Order
class PurchaseOrderWorkflow
{
   public void Execute(PurchaseOrder order)
   {
      WaitForManagerApproval(order);
      NotifyPurchaseManager(order);
      WaitForGoods(order);
   }
  …
}
按照我们对于工作流的简单理解我们写出了一个简单的“工作流”。在这个类里面有三个方法,但是工作流肯定不是这么简单的。

4。作为一个工作流我们需要哪些代码?

  • 我们需要处理(Handing)工作流服务日志(Logging),诊断(diagnostics)异常的代码。
  • 我们需要事件处理(Event),记录程序运行状态(Hook to track),随时取消正在运行的工作流(Running Workflow)。
  • 我们需要工作流在大部分时间内可以为空闲(idle)并且等待事件发生,因为我们不能为了等待事件而去阻塞应用程序的线程几周时间。
  • 我们需要一个机制去保存工作流状态(Workflow State),把它存在持久性数据文件中(persistent data store)移除内存中的工作流数据。当事件发生时候还原工作流状态,继续执行工作流。

5。我们创建工作流所遇到的问题。

不幸的是,在工作流里面以及周围有着大量的代码,因此我们就无法很容易地看到真正的工作流(Workflow)。依赖代码则会将我们工作流的模型化的过程隐藏起来。

  • 一个工作技术人员由于没有代码能力而无法看到工作流。
  • 一个程序员需要很深的代码技术才能把工作流从代码堆里挖掘出来。

6。我们现在的开发目的是什么?

  • 开发Workflow的目的就是将工作流依赖代码分离开。
  • 这个模式(Style)允许开发人员,甚至是商人去陈述(Express)工作流需要做些什么(What the Workflow should be)。
  • 而工作流引擎则注意如何执行工作流中的服务(How to execute the Workflow).

7。那么一个工作流到底是什么样子呢?

<Workflow Name="PurchaseOrderWorkflow">
  <Steps>
   <WaitForTask Event="ManagerApproval"/>
   <NotifyTask Target="PurchaseManager"/>
   <WaitForTask Event="Delivery"/>
  </Steps>
  <Parameters>
   <Parameter Type="PurchaseOrder" Name="order"/>
  </Parameters>
</Workflow>

上面的XML文档就是一个工作流。

8。工作流引擎。

而我们所说的工作流引擎就是可以明白了解这个XML文档,并且将XML文档翻译成计算机语言。

工作流引擎的功能包含处理工作消息,对于异常的处理,以及对于取消工作流的处理

9.XML与工作流之间联系。

  • XML文档是用途最为广泛的工具。
  • XML可以读,修改,创建,改变XML。

通过C#语言很容易解析XML文档,使用模块和箭头生成可视化的工作流(Workflow)。可以让软件使用者通过连接模块,制作成可视化的工作流,并将其生成为XML文档。

10。让我们想想在工作流中我们需要什么?

  • 我们需要指定一个工作流,通过声明化方式或者是可视化设计器方式。
  • 我们需要将添加工作流定义为工作流引擎,这个引擎管理异常事件工作流的跟踪还原工作流(activation)和暂停工作流(de-activation)

 

posted on 2010-05-05 20:38  可乐龙  阅读(370)  评论(0编辑  收藏  举报

导航