工作流概述
工作流(Workflow)是通过计算机对业务流程自动化执行管理。
1. 什么是工作流?
工作流,主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。
工作流简述:完成一个企业中具体业务的一系列工作步骤,所有的步骤合在一起,自动进行的业务活动或任务,从开始到结束的流转过程。
工作流系统表示:业务过程的部分和整体在计算机应用环境的自动化操作。
工作流系统应用:许多公司采用纸张表单,手工传递的方式,一级一级审批签字,工作效率非常低下,对于统计报表功能则不能实现。而采用工作流系统,使用者只需在电脑上填写有关表单,会按照定义好的流程自动往下推进,下一级审批者将会收到相关资料,并可以根据需要修改、跟踪、管理、查询、统计、打印等,大大提高了效率。
2. 工作流三要素
2.1 请假工作流示例
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,唯一标示某个流程实例中某个活动节点。 |