什么是工作流,工作流可以说是对业务处理过程的建模,当我们设计工作流的时候,我们首先要分析业务处理过程中要经历的步骤。然后,我们就可以利用WF创建工作流模型来模拟业务的处理过程。
WF工作流包含两种类型的工作流:顺序工作流和状态机工作流。
顺序工作流
提供了一系列有组织的步骤,一般情况下,步骤是逐一执行的。可能有的步骤需要等待某些事件的发生才可以继续执行,但通常情况下顺序工作流一般用于无需人工干预的操作。
状态机工作流
提供了一系列的状态。工作流从初始状态开始,到终止状态结束。两个状态之间定义行为进行过渡。通常情况下,状态机工作流对事件作出反应,事件的发生将会使状态发生改变。
到底采用哪种类型的工作流,取决于具体的业务管理过程。
申请使用笔记本电脑流程:
员工提交申请表单信息(员工姓名、所在部门、职位)等信息--->如果当前公司空闲笔记本电脑数量=0则返回,否则继续--->如果当前员工为正式工则继续,否则返回--->如果当前员工为技术部、市场部、商务部则继续,否则返回--->通知综合部人员提取库存电脑发放给申请人并系统备案,流程结束。
申请笔记本电脑的流程由电脑自动根据用户提交的申请信息就可以完成,期间不需要人工交互或者因等待其它事件而暂停或者中止,这就是常见的顺序工作流。
公司请假流程:
员工提交申请请假表单信息(员工姓名、所在部门、职位)等信息--->如果是普通员工,自动流转到员工所在部门审批,如果部门审批通过且请假天数<=3则成功并系统备案,如果请假天数>3则自动流转到综合部审批,综合部审批通过则请假成功并备案--->如果是部门领导,自动流转到综合部门审批,综合部审批通过则请假成功并备案
请假流程有些过程需要暂时中止并等待其他过程的开始,需要与人交互来完成的。所以这个常见的状态机工作流。
状态机工作流的好处在于它可以定义状态,定义工作流如何从一个状态到另外一个状态。当外面的事件发生的时候,状态机工作流可以移动到不同的状态。外部行为可以是宿主程序引发工作流内部事件,也可以是宿主程序编程实现的下一个状态,也可以利用SetStateActivity移动到下一个状态。
也就是说,状态机工作流强调职工与职工之间的工作交互,而顺序工作流更强调职工与计算机之间的工作交互。