简介
- 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流逻辑进行工作流实例的执行。工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。 - 常见的工作流框架
Activity5.13、JBPM4.4、OSWorkFlow、WorkFlow
工作流框架底层需要有数据库提供支持,activiti5.13版本,有23张表。JBPM4.4框架底层有数据库支持,18张表。JBPM底层使用hibernate操作数据库。Activiti框架底层使用的mybatis操作数据库。 - 安装插件
解压安装包,复制到eclipse中的dropins目录中 - 初始化表结构
使用activiti框架提供的建表语句
使用activiti框架的自动建表功能
不使用配置文件(不推荐使用)
使用配置文件 要求配置文件名称必须为activiti-context.xml或者activiti.cfg.xml
- 可以进一步简化
- 了解23张表
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
ACT_RE_: 'RE’表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
ACT_RU_: 'RU’表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
ACT_ID_: 'ID’表示identity。 这些表包含身份信息,比如用户,组等等。
ACT_HI_: 'HI’表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
ACT_GE_*: 通用数据, 用于不同场景下。
使用框架提供的API完成流程操作
-
部署流程定义
-
查询部署表
-
查询流程定义列表
-
删除部署信息(删除流程定义依赖删除部署信息)
-
查询一次部署对应的流程定义文件名称和对应的输入流(bmpn png)
只获取图片文件:
-
启动流程实例
根据一个流程定义具体的一次执行过程就是一个流程实例,一个流程定义对应多个流程实例(一对多关系)
ByKey启动流程(推荐使用。因为他会选择最新版的)
-
查询流程实例列表
-
结束流程实例
-
查询个人任务列表
-
办理任务
-
直接把任务向下执行一步
-
查询最新版本的流程定义列表
-
查询历史数据查询
-
Activiti框架提供的Service对象
RepositoryService----操作静态的资源(流程定义,bpmn、png)
RuntimeService-----操作流程实例(启动流程实例、查询流程实例、结束流程实例)
TaskService-----操作任务(查询任务、办理任务)
HistoryService----操作历史数据 -
Activiti框架提供的对象(和表有对应关系)
Deployment-----act_re_deployment
ProcessDefinition----act_re_procdef
ProcessInstance-----act_ru_execution
Task-----act_ru_task -
流程变量
Jdk中提供的数据类型(String、Integer、List 、Map…)
自定义的实体类(要求实现序列化接口)
设置流程变量
- 在启动流程实例时设置
- 在办理任务时设置
- 使用RuntimeService的方法设置
- 使用TaskService的方法设置
获取流程变量
- 使用RuntimeService的方法获取
- 使用TaskService的方法
任务的类型
- 个人任务
由某一个负责办理,在任务表中通过assignee字段记录 - 公共任务(组任务)
- 接收任务
接收任务不是由某个人负责办理,通过signal方法让流程执行的
监听器(执行、任务)
- 执行监听器
第一步:按照框架的规则编写监听器类
第二步:设计流程图,注册监听器类
第三步:启动流程实例,Activiti框架通过反射调用监听器类 - 任务监听器
第一步:按照activiti框架的规则编写一个任务监听器类
第二步:注册监听类
第三步:办理任务,由框架通过反射调用监听器类
网关(并行、排他)
- 排他网关
第一步:设计流程图,使用排他网关
第二步:执行流程,由框架根据设置的流程变量选择执行其中的一个分支 - 并行网关
与spring整合
第一步:提供spring配置文件,配置数据源、事务管理器、流程引擎配置对象、流程引擎对象
第二步:读取spring配置文件,创建spring工厂,获取流程引擎对象
搭建web项目环境
第一步:创建一个动态web项目
第二步:创建一个数据库,用户,为用户授权
第三步:导入jar(struts2.3.7+spring3.2+hibernate3.6.10+activiti5.13)
第四步:提供一个struts配置文件
第五步:在web.xml中配置过滤器
第六步:提供spring的配置文件applicationContext.xml