工作流系统,可以实现工作流程的自动化,提高企业的运营效率、改善企业的资源利用、提高量化考核业务处理的效率、减少浪费。而如果是手工处理较多的工作流程时,很多情况下是无法进行量化统计的,不利于查询、报表及绩效评估。下面,我们就来看看以Activiti7为基础的,Java工作流框架的一些实现方式。在Java领域,JBPM和Activity是两个主流的工作流系统,而Activity的出现无疑将会取代JBPM。
1.一个插件,
2.一个引擎,
3.一个xml文件(springboot直接在yml中配置,不需要额外的xml文件),
4.25张表:不同的表存放不同方面的数据,有流程定义表、任务结点表、流程变量表、任务历史表等;
5.常用5个service:
RepositoryService activiti的资源管理类
RuntimeService activiti的流程运行管理类
TaskService activiti的任务管理类
HistoryService activiti的历史管理类
ManagerService activiti的引擎管理类
1、1个插件
在Eclipse中安装Activity插件actiBPM,绘制Activity工作流图(建模语言BPMN)
创建bpmn文件,在resources目录下,创建一个新的目录processes,用来放置bpmn文件,springboot就可以自动部署Activiti7流程。创建一个简单的Bpmn流程文件,并设置任务的用户组Candidate Groups。Candidate Groups中的内容与上面DemoApplicationConfiguration类中出现的用户组名称要保持一致,可以填写:activitiTeam 或者 otherTeam。这样填写的好处:当不确定到底由谁来负责当前任务的时候,只要是Groups内的用户都可以拾取这个任务。
2、1个引擎
ProcessEngine对象,Activity工作流引擎,这是Activiti工作的核心,负责生成流程运行时的各种实例及数据、监控和管理流程的运行。
所有的操作都是从获取引擎开始的,所以一般会把引擎作为全局变量,
ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();
3.1个配置文件
activiti.cfg.xml,Activiti核心配置文件。配置流程引擎创建工具的基本参数和数据库连接池参数,springboot直接在yml中配置,不需要额外的xml文件。
添加yml文件配置:
spring: datasource: url: jdbc:mysql:///activiti?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT username: root password: root driver-class-name: com.mysql.jdbc.Driver activiti: #1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常 #2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建 #3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表) #4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎) database-schema-update: true #检测历史表是否存在 activiti7默认没有开启数据库历史记录 启动数据库历史记录,需要手动配置开启 db-history-used: true #记录历史等级 可配置的历史级别有none, activity, audit, full #none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。 #activity:级别高于none,保存流程实例与流程行为,其他数据不保存。 #audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。 #full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。 history-level: full #校验流程文件,默认校验resources下的processes文件夹里的流程文件 check-process-definitions: false
4.7项基本操作
设计流程图(各种组件,如连线、用户任务、网关)
流程定义增删改查
流程变量增删改查
启动流程定义
任务增删改查
完成任务
历史信息查询
5.状态机模式简单工作流实现:
第一种:加一个中间表,记录自己的电子流申请,表中加角色,通过角色去控制,一级一级的审批,生成多个审批记录。
第二种:通过一条记录的状态来审批,不会同一个电子流,产生多条记录,只有1条记录,状态不同。
6.Activiti与Flowable的简单对比:
目前主流的开源工作流框架有Activiti、Flowable,它们都源自于Jbpm。先是有了Jbpm4,随后出来了一个Activiti5,Activiti5经过一段时间的发展,后面就发布了Flowable。对比之下Activiti比Flowable更轻量级,若是项目比较小,可以考虑用Activiti;若是对功能和性能要求更多,可以考虑Flowable。
以上便是Activiti7实现工作流框架的基本操作,更多了解请看 Java工作流框架搭建大全 。