Skip to main content

工作流概述

工作流(Workflow)是通过计算机对业务流程自动化执行管理。

1. 什么是工作流?

工作流,主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。

工作流简述:完成一个企业中具体业务的一系列工作步骤,所有的步骤合在一起,自动进行的业务活动或任务,从开始到结束的流转过程。

工作流系统表示:业务过程的部分和整体在计算机应用环境的自动化操作。

工作流系统应用:许多公司采用纸张表单,手工传递的方式,一级一级审批签字,工作效率非常低下,对于统计报表功能则不能实现。而采用工作流系统,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下推进,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率。

2. 工作流三要素

img

2.1 请假工作流示例

img

2.2 工作流的相关概念

概念概念解析
流程定义(ProcessDefinition)流程定义(模板),通过工作流定义工具建立的一个流程模板
平台提供了可视化的建模工具用于生成流程定义。
流程定义ID:指的是创建的流程模版的ID,唯一标示一个流程;
定义流程的id、deploymentId、name、key、version、suspended; 部署相同id的流程定义(模板),会产生多个流程定义(模板)版本,用户可以根据version来选择挂起和唤醒对应版本来进行部署。
流程定义部署(Deployment)流程定义部署,根据流程定义文件部署的流程,已经将基本的流程都定义好,形成一个部署。
流程实例(ProcessInstance)启动一个流程实例表示开始一次业务流程的运行,比如员工请假流程部署完成,如果张三要请假就可以启动一个流程实例,如果李四要请假也启动一个流程实例,两个流程的执行互相不影响,就好比定义一个java类,实例化两个对象一样,部署的流程就好比java类,启动一个流程实例就好比new一个java对象。
流程实例,根据流程定义id启动形成流程实例(每启一个都形成一个新的)。如:张三昨天按请假流程请了一次假为一个请假流程实例.张三今天又请了一次假就是一个新的实例。一个流程实例包括了流程定义的所有运行阶段。
流程变量(Process Variable)1、用来传递业务参数,目的就是审核人可以通过流程变量查看申请人的一些审核信息。
2、在连线的condition中设置流程变量,用来指定应该执行的连线。
3、使用流程变量指定个人任务和组任务的办理人#{userID}流程变量,大概也就是和咱们业务相关的数据,例如我要请假,那我得知道是谁在请假请假人是谁,也就是我要知道activiti的实体和咱们业务的JavaBean如何关联起来。

流程变量(key ---value)在整个工作流中扮演很重要的作用。例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的。
任务(Task)Task工作(任务)项:启动一个业务流程后,流程实例运行到某一个活动时,对应这个活动项会产生1个或多个任务,需要不同的人、角色或者组织去执行,每一个任务被称为工作项。工作项ID:TaskID唯一标示一个具体的任务。
起始,结束(Start,End)表示流程实例的开始或者结束,在流程图中用作为起始框或者结束框。
如果有一个出口,则代表是一个单线流程;如果有多个出口,则代表是开启并发流程

流程的执行监听器可以捕获的事件有:
流程实例的启动和结束。
选中一条连线。
节点的开始和结束。
网关的开始和结束。
中间事件的开始和结束。
开始时间结束或结束事件开始。
网关(Gateway)Exclusive Gateway排他网关
排他网关必须给一个流程变量,若没有符合条件的判断结果,就会走默认的连线。不给流程变量,会报错,因为无法判断。
排他网关和直接连线的最大区别:排他网关有个默认值,连线必须是每根先都得给条件。
活动实例(Activity)对应流程实例中的活动环节
活动实例ID:指的是你在server中启动一个业务流程后,流程中的每一个环节会产生对应的活动实例ID,也就是活动项ID,唯一标示某个流程实例中某个活动节点。