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