Springcloud项目集成activiti工作流(一)环境搭建和简单的demo

最近项目出现一个应用场景,在加油站有很多用户使用微信、支付宝支付,但是由于网络等问题会出现用户支付成功,但是后台未到账的情况。为了补救这种问题,需要进行一系列的审批审核操作。

(1)加油站员工对用户支付成功的手机界面进行拍照,然后上传,提交给客服人员。也可以是对有争议的交易进行提交。

(2)客服人员对照片的清晰度和有效性进行审核,然后继续提交给运维。

(3)运维人员根据审核后的照片对这笔交易进行核查,核查通过后在报表中进行修改和确认到账。然后提交给财务。

(4)财务对这笔交易在系统中进行确认进行打款。然后提交给财务主管。

(5)财务主管确认后对这笔交易再次核对,然后提交给客户方的财务。

(6)客户方的财务确认,对这笔交易进行核销。

这一现实需求考虑到使用activiti工作流来实现。下面将在我们原来的springcloud的项目中新建一个moudle,命名为example-activiti。话不多少直接开始。

1,file--》new moudle,选择spring initializr。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第1张图片

2,填写项目相关信息,注意红框部分的填写。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第2张图片

3,选择eureka client。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第3张图片

4,这里的路径一定不能选错。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第4张图片

5,项目建成的目录结构如下。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第5张图片

6,把原来创建的web或者service的pom文件和properties文件复制一份过来,删除掉无用的引用,并且修改项目名即可。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第6张图片

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第7张图片

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第8张图片

7,安装actibpm插件。file--》plugin--》搜索actiBPM安装即可。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第9张图片

8,安装后要修改一些配置,防止编辑的流程图乱码。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第10张图片

9,加上一行-Dfile.encoding=UTF-8就可以了。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第11张图片

10,添加activiti和数据库的依赖。新建一个数据库,表格会自动生成。在配置文件中加入数据库的连接配置。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第12张图片

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第13张图片

11,下面几个步骤一定要做,要不然启动报错。因为springboot2.0不能与activiti6.0.0直接集成使用,因为activiti6.0.0出来的时候springboot2.0还没有出来。

(1)springboot启动类注解上增加以下内容。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第14张图片

(2)在配置文件中增加以下配置。

(3)项目的resource目录下新建一个processess文件夹。file-->new-->directory

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第15张图片

(4)在processes里创建一个bpmnfile文件,随便创建一个即可。(不创建也可以,在配置文件中配置的spring.activiti.check-process-definitions=false就是不检查这个文件,我没有测试,最好还是随便创建一个吧)

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第16张图片

(5)把右侧的图标直接拖进来即可。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第17张图片

(6)把光标悬停的图标的中心中,然后等变化了以后拖拽就可以连线了。然后完成绘制。此时启动项目就不会报错了。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第18张图片

12,新建一个config包,并创建一个配置类,防止流程图中文乱码。

13,在processes里绘制一个流程图。中间步骤都选择的是usertask。注意要点击空白处,给你的流程命名和id。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第19张图片

(1)点击空白处设置id和name。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第20张图片

(2)复制一份shenhe.bpnm文件,并重命名为shenhe.xml。修改里面的值。这里是因为不知道为什么,直接修改bpnm里的不生效。然后把bpnm删除掉,把shenhe.xml复制一份,重新命名shenhe.bpnm。

14,启动eureka和activity两个项目,会在数据库中自动生成27张表。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第21张图片

15,activiti默认的ID生成策略在高并发场景下会出现ID重复的情况,因此在高并发场景下建议采用UUID的策略。修改activiti配置文件,增加以下语句,并增加IdGen类。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第22张图片

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第23张图片

16,创建controller,service,impl包,准备进行简单测试。

17,新建ActivitiController。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第24张图片

18,新建service接口和实现。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第25张图片

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第26张图片

19,打开ie请求接口的测试地址,或者写个test也可以。

20,多次请求,返现每次请求,都会多一项任务。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第27张图片

补充介绍:

(一)配置文件详解。

(1) spring.activiti.database-schema-update。databaseSchemaUpdate配置项可以设置流程引擎启动和关闭时数据库执行的策略。 

false:false为默认值,设置为该值后,Activiti在启动时,会对比数据库表中保存的版本,如果版本不匹配时,将在启动时抛出异常。

true:设置为该值后,Activiti会对数据库中所有的表进行更新,如果表不存在,则Activiti会自动创建。

create-drop:Activiti启动时,会执行数据库表的创建操作,在Activiti关闭时,执行数据库表的删除操作。

drop-create:Activiti启动时,执行数据库表的删除操作在Activiti关闭时,会执行数据库表的创建操作。

(2)spring.activiti.history-level.保存历史数据级别设置为full最高级别,便于历史数据的追溯spring.activiti.history-level=full.

none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。

activity:级别高于none,保存流程实例与流程行为,其他数据不保存。

audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。

full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。

(3)spring.activiti.check-process-definitions.关闭activiti自动部署(使用流程设计器部署,不使用具体文件访问方式)spring.activiti.check-process-definitions=false.

(二)自动生成的表的作用。

Springcloud项目集成activiti工作流(一)环境搭建和简单的demo_第28张图片

 

本篇介绍了springboot+IDEA使用activiti工作流的简单环境搭建。下一篇将继续详细介绍。

关注公众号:直立行走的程序猿

公众号回复springcloud可获得git下载地址

你可能感兴趣的:(springcloud)