工作流

一、工作流

  工作流最早起源于生产组织和办公自动化领域,它是针对平时工作中的业务流程活动而提出的一个概念,近乎业务流转,目的是根据将工作分解成定义良好的任务或角色,根据一定的原则和过程来实施这些任务并加以监控,从而达到提高效率、控制过程、提升客户服务、增强有效管理业务流程等目的。为了更好地实现某些业务工作目标,可以利用计算机在很多个参与人之间按某种既定原则自动传递文档、信息内容或者任务。因此,轻流认为只要信息在人与人、人与系统或者系统与系统之间进行传递,就必须构建工作流。

  工作流是在整个工作区中发生的,有些是结构化的,有些是非结构化的。当数据从一个任务转移到另一个任务时,工作流就存在了。但是,如果数据没有流动,就没有工作流。比如遛狗、去杂货店和取干洗衣物等,这都不是工作流,而是任务管理。

工作流(Workflow)与BPM(Business Process Management,业务流程管理)区别:

  工作流是指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。BPM是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法。

  Workflow是IT技术和工具,主要给开发人员使用,进行系统的搭建和设计,它从围观角度出发。BPM是管理理念,BPM的管理理念可通过IT工具来落地,它从宏观角度出发,需要全面监控整个公司的流程扭转,流程效率,流程预警等功能。

二、工作流分类

1.流程工作流(Process Workflow)当一组任务具有可预测性和重复性时,就会发生流程工作流。也就是说,在项目开始工作流之前,您已明确数据的流转方向。比如采购申请批准工作流,一旦申请提交,每一步处理工作相对固定,工作流几乎不会有变化。

2.项目工作流(Project Workflow)项目具有类似于流程的结构化路径,但在此过程中可能具有更大的灵活性,项目工作流只适用于一个项目。比如发布一个新版本的网站,你可以准确预测项目的任务流程,但是这个任务流程不适用于另一个网站的发布。

3.案例工作流(Case Workflow)在案例工作流中,对于数据流转的方向是不明确的。只有收集到大量的数据时,数据流转的方向才会比较明显。比如保险索赔,一开始并不知道如何处理,只有经过一番调查,才会明确。

 三、工作流引擎

  工作流引擎(Workflow Engine)是业务流程管理系统的一部分,可以嵌入其他业务系统中,提供专属的流程服务;作为工作流管理服务中心部署在支撑层,为多个业务系统同时提供流程服务。它为业务流程的管理系统提供了根据角色、分工和条件等不同决定信息的流转处理规则和路径。工作流引擎包括流程的节点管理、流程分支流向管理等重要功能。

  开发一个系统,最关键的部分不是系统的界面,也不是和数据库之间的信息交换,而是如何根据业务逻辑开发出符合实际需要的程序逻辑并确保其稳定性、易维护性(模块化和结构化)和弹性(容易根据实际业务逻辑的变化作出程序上的变动,例如决策权的改变、组织结构的变动和由于业务方向的变化产生的全新业务逻辑等等)。 Workflow 引擎解决的就是这个问题:如果应用程序缺乏强大的逻辑层,势必变得容易出错(信息的路由错误、死循环等等)。

常见工作流引擎:

1、jBPM4引入PVM,使其拥有更强大的扩展性,同时增加BPMS特性,这些特性包括了对BPMN的支持、面向业务人员的Web建模器和简单统计分析功能的加入。

2、jBPM5基于原先的Drools Flow,支持BPMN,通过与Drools的合并支持BAM,通过内容仓库增加对流程可视化的支持。由于放弃了jBPM4的PVM,引擎的可扩展性受到损害,并且不再支持jPDL。

3、Activiti5基于jBPM4的开源工作流系统,与Alfresco的集成增加了其流程可视化与管理能力,同时通过创新的Activiti Cycle协作组件支持流程相关人员之间的协调,最后,它加强了集成能力。

4、SWF与其说是工作流引擎,不如说是分布式计算调度框架,SWF中只包括Task和History两部分,甚至是每个Task之间如果要传递一些数据的话,都只能通过第三方存储(比如Message Queue或者Redis),不过这也给了编程更大的灵活性,问题是这种灵活性是不是非常需要。

原文地址:https://www.cnblogs.com/guanghe/p/14549716.html