目录
BPM(Business Process Management)
BPMN(Business Process Model And Notation)
一、Activiti介绍
Activiti是一个工作流引擎,activiti 可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言(BPMN2.0)进行定义,业务系统按照预先定义的流程进行执行,实现了业务系统的业务流程由 activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。
工作流
工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。
具体应用:
- 关键业务流程:订单、报价处理、合同审核、客户电话处理、供应链管理等
- 行政管理类:出差申请、加班申请、请假申请、用车申请、各种办公用品申请、购买申请、日报、周报等凡是原来手工流转处理的行政表单。
- 人事管理类:员工培训安排、绩效考评、职位变动处理、员工档案信息管理等。
- 财务相关类:付款请求、应收款处理、日常报销处理、出差报销、预算和计划申请等。
- 客户服务类:客户信息管理、客户投诉、请求处理、售后服务管理等。
- 特殊服务类:ISO系列对应流程、质量管理对应流程、产品数据信息管理、贸易公司报关处理、 物流公司货物跟踪处理等各种通过表单逐步手工流转完成的任务均可应用工作流软件自动规范地实施。
BPM(Business Process Management)
即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的系统化方法,常见商业管理教育如EMBA、MBA 等均将BPM包含在内。
BPMN(Business Process Model And Notation)
业务流程模型和标注。是由 BPMI(Business Process Management Initiative)开发的一套标准的业务流程建模符号,使用 BPMN 提供的符号可以创建业务流程。BPMN是BPM及workflow的建模语言标准之一。
主要是用来描述业务流程的基本的符号,利用各个组件能够组成一个业务流程图,整个业务也是根据这个图来走的,其实用xml格式打开,就是一个xml文件。

二、Activiti使用
1、部署 Activiti
activiti是一个工作流引擎(其实就是一堆 jar 包 API),业务系统使用activiti来对系统的业务流程进行自动化管理,为了方便业务系统访问(操作)activiti的接口或功能,通常将 activiti 环境与业务系统的环境集成在一起。
2、流程定义 (ProcessDefinition)
使用activiti流程建模工具(activity-designer)定义业务流程(.bpmn文件) 。.bpmn 文件就是业务流程定义文件,通过xml定义业务流程。
3、流程定义部署 (ProcessDeployment)
使用activiti提供的 api 向 activiti 中部署.bpmn 文件(一般情况还需要一块儿部署业务流程的图片.png)
4、启动一个流程实例(ProcessInstance)
启动一个流程实例表示开始一次业务流程的运行,比如员工请假流程部署完成,如果小明要请假就可以启动一个流程实例,如果小王要请假也启动一个流程实例,两个流程的执行互相不影响。好比定义一个 java类,实例化两个对象一样,部署的流程就好比 java 类,启动一个流程实例就好比 new 一个 java 对象。
三、Activiti 7表结构 (共25张)

1、ACT_RE_*:RE表示 repository。这个前缀的表包含了流程定义和流程静态资源(图片,规则等)。
(1)act_re_deployment:部署信息表,存储流程定义、模板部署信息
(2)act_re_procdef:已部署的流程定义数据表,存储流程定义相关描述信息
(3)act_re_model:流程模板信息表,存储流程模板相关描述信息
2、ACT_RU_*:RU表示 runtime。表示运行时的表,包含流程实例,任务,变量,异步任务等运行中的数据。Activiti只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。
(1)act_ru_execution:运行时流程执行实例表,记录运行中流程运行的各个分支信息
(2)act_ru_identitylink:运行时流程人员表,主要存储任务节点与参与者的相关信息
(3)act_ru_task:运行时任务节点表,存储运行中流程的任务节点信息,常用于查询人员或部门的待办任务时使用
(4)act_ru_variable 运行时流程变量数据表,存储运行中的流程各节点的变量信息
(5)act_ru_suspended_job:运行时暂停任务
(6)act_ru_timer_job:运行时定时任务
(7)act_ru_job:运行时定时任务数据表,存储流程的定时任务信息
(8)act_ru_deadletter_job:执行失败任务表
(9)act_ru_event_subscr:监听信息表,不常用
(10)act_ru_integration:未知
3、ACT_HI_*:HI表示 history。这些表包含历史数据,比如历史流程实例, 变量,任务等。
(1)act_hi_actinst:历史节点表,存放流程实例运转的各个节点信息(包含开始、结束等非任务节点)
(2)act_hi_identitylink:历史流程人员表,存储流程各节点候选、办理人员信息,常用于查询某人或部门的已办任务
(3)act_hi_procinst:历史流程实例表,存储流程实例历史数据(包含正在运行的流程实例)
(4)act_hi_taskinst: 历史任务实例表,存储历史任务节点
(5)act_hi_attachment:历史附件表,存放历史节点上传的附件信息(不常用)
(6)act_hi_comment:历史意见表,可改造用于保存节点审批意见、备注
(7)act_hi_varinst:历史变量表,存储流程历史节点的变量信息
(8)act_hi_detail:历史的流程运行中的细节信息,存储节点运转的一些信息(不常用)
4、ACT_GE_*:GE表示 general。通用数据,用于不同场景下。
(1)act_ge_bytearray:二进制数据表,流程定义的bpmn文件及png文件的字节流文件
(2)act_ge_property:属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录(不常用)
5、其他
(1)act_evt_log:事件处理日志表(不常用)
(2)act_procdef_info:流程定义扩展表(不常用)