工作流
内容安排:
1、 工作流概念
2、 常见的工作流框架
3、 在eclipse中安装activiti框架的流程设计器插件
4、 activiti框架提供的数据库表结构
5、 学习activiti框架提供的API
1. 工作流概念
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。
工作流管理系统(Workflow Management System, WfMS)是一个软件系统,它完成工作量的定义和管理,并按照在系统中预先定义好的工作流逻辑进行工作流实例的执行。工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。
工作流框架:用于处理工作流相关问题的框架
常见的工作流框架:activiti5.13、JBPM4.4、OSWorkflow
工作流框架底层是有一套数据库提供支持的,针对不同的数据库提供不同的sql建表语句。Activiti5.13框架对应23张表,JBPM4.4框架对应18张表。开发人员不需要自己编写sql操作这些表的,框架底层会生成sql操作。Activiti框架底层使用mybatis操作数据库,JBPM框架底层使用hibernate操作数据库。
Activiti框架目录结构:
2. 安装eclipse插件----流程设计器插件
第一步:将上面的zip压缩文件解压到eclipse目录中 的dropins目录
第二步:重启eclipse,勾选save菜单中的复选框
第三步:使用插件设计流程图
3. 创建activiti框架提供的数据库表
3.1 使用activiti框架提供的sql脚本建表
Activiti框架提供了sql文件,用于建表
第一步:手动创建一个数据库
第二步:进入数据库,执行框架提供的sql文件
3.2 使用activiti框架自动建表
3.2.1 没有提供xml配置文件
3.2.2 提供xml配置文件
3.2.3 使用默认配置文件
要求配置文件必须在类路径的根路径下,配置文件的名称必须为activiti-context.xml或者为activiti.cfg.xml,xml配置文件中必须配置流程引擎配置对象,id必须为processEngineConfiguration,必须配置流程引擎工厂bean,id必须为processEngine
4. 了解activiti框架提供的23张表
Activiti的后台是有数据库的支持,所有的表都以ACT_开头。 第二部分是表示表的用途的两个字母标识。 用途也和服务的API对应。
1) ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。
2) ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。
3) ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。
4) ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。
5) ACT_GE_*: 通用数据, 用于不同场景下。
5. BPMN
业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram)
6. Activiti的API使用
使用流程设计器插件设计一个流程
6.1 部署流程定义
操作的数据表:act_re_deployment部署表、act_re_procdef流程定义表、act_ge_bytearray二进制表
6.2 查询流程定义
操作的数据表:act_re_procdef流程定义表
6.3 启动流程实例
什么是流程实例??根据某个流程定义的一次具体执行过程,就是一个流程实例。流程定义和流程实例是一对多的关系。
操作的数据表:act_ru_execution流程实例表、act_ru_task任务表
6.4 查询任务
操作的数据表:act_ru_task任务表
6.5 办理任务
操作的数据表:act_ru_task任务表、act_ru_execution流程实例表
7. 总结activiti中的几个对象
l 几个和流程相关的对象
Deployment:部署对象,和部署表对应act_re_deployment
ProcessDefinition:流程定义对象,和流程. 定义表对应act_re_procdef
ProcessInstance:流程实例对象,和流程实例表对应act_ru_execution
Task:任务对象,和任务表对应act_ru_task
l 几个Service对象
RepositoryService:操作部署、流程定义等静态资源信息
RuntimeService:操作流程实例,启动流程实例、查询流程实例、删除流程实例等动态信息
TaskService:操作任务,查询任务、办理任务等和任务相关的信息
HistoryService:操作历史信息的,查询历史信息
IdentityService:操作用户和组
l 几个Query对象
DeploymentQuery:对应查询部署表act_re_deployment
ProcessDefinitionQuery:对应查询流程定义表act_re_procdef
ProcessInstanceQuery:对应查询流程实例表act_ru_execution
TaskQuery:对应查询任务表act_ru_task
8. 流程变量
8.1 设置流程变量
注意:如果需要设置自定义的实体类到流程变量表中,需要实现序列化接口
8.2 获取流程变量
9. 组任务
个人任务:只有一个人负责办理的任务为个人任务。
组任务:可以有多个候选人,这些人都可以办理的任务为组任务。