Flowable学习(1):SpringBoot整合Flowable


  大体的基本配置的参考文章:SpringBoot集成Flowable Modeler
  看了大佬的文章,还是踩了不少的坑,查资料也没有找到相关的解决办法,只能自己记录下。

   第一部分都是废话,可以直接跳过。。。。直接看解决办法


一、打死跳不出去的SpringBoot Security登陆页

  按照最开始大佬文章进行配置了之后,会发现,还是永远也跳不出SpringBoot Security的登陆页面
Flowable学习(1):SpringBoot整合Flowable
  emmm,查了很久的资料,在网上也没人碰到相同的问题,所以,只能自己一点点试验。

Flowable学习(1):SpringBoot整合Flowable
Flowable学习(1):SpringBoot整合Flowable

  先选择不排除SpringBoot Security。
  即:不按照开头的参考文章中的exclude掉SecurityAutoConfiguration

  然后自己配置个配置类,放跑所有的请求。

  完美,成功进来了!!!

Flowable学习(1):SpringBoot整合Flowable

  当我自己满心欢喜,开始创建一个流程模型的时候,会发现什么都没有出现,然后查看idea,发现运行也没有出现异常。

  后来多试验了几次,发现了一闪而过的红色(一闪就不见了),最后凭借单身20年手速,截了图下来。如下:

Flowable学习(1):SpringBoot整合Flowable

   ???这是个什么错误?没办法,找接口去吧,按下F12,找到对应的button,会发现此时按钮点击事件绑定的ok()方法

Flowable学习(1):SpringBoot整合Flowable

   那么就只能去从源码中拷贝下来的那些个静态资源页面中找ok()方法发送的是什么请求,从而去找到这个接口debug,看看哪里出问题了。

   其实也不是很难找,我们在flowable Modler给出的页面中可以看见,整个分为5大类
Flowable学习(1):SpringBoot整合Flowable
   然后会发现,命名其实就是和这5大类相关:
     app:应用程序
     fdecision:决策表
     form:表单
     model:案例模型
     process:流程
Flowable学习(1):SpringBoot整合Flowable
   所以我们需要的就是找process相关的js文件,最后找到了我们要的接口

Flowable学习(1):SpringBoot整合Flowable

  完美,点进去就能看见发送的请求的url
Flowable学习(1):SpringBoot整合Flowable

  然后去源码中,找到这个接口,项目结构也能看出来,接口都在rest这个依赖下面

Flowable学习(1):SpringBoot整合Flowable

  需要注意,有很多非常类似的接口,所以要注意url的匹配

Flowable学习(1):SpringBoot整合Flowable
  找到方法,打上断点,再跑会发现:根据就进不来这个断点,然后F12查看一下network,也能够发现,根本就没有发送这个请求

Flowable学习(1):SpringBoot整合Flowable
  图中红色标出的请求,查看接口后会发现是一个只是一个查询Model的请求,而不是创建Model的请求

Flowable学习(1):SpringBoot整合Flowable
  也就是说,实际上的流程应该是这样的:创建Model 存到数据库,然后再从数据库中查询所有的Models,显示到界面上。

  然后根据查询接口的方法,找到对应的Mybatis的mapper.xml,可以找到查询和存储流程的数据库表应该是:act_de_model。此时去查询数据库也能发现根本就不存刚才新建的Model,这也能够验证是否成功创建的Model。

  最后没办法从页面发送请求,那么最后再自己利用PostMan试验发送一次请求,看能不能进入方法成功创建Model:
Flowable学习(1):SpringBoot整合Flowable
  成功看见了那个一闪而过的错误,和403,403的大概意思就是服务器觉得你权限不够,不让你访问,也就找到了问题所在:SpringBoot Security没有绕过去。。。。

  所以,不排除SpringBoot Security是不行的,还是得回到原点


二、解决办法

  一切回到原点,还是只能参考大佬的文章(最开始的链接),突然想起了前几天看的Activiti

Activiti,其实也挺好用的,只是没有Flowable这样官方的Web端编辑BPMN的模块,官方只提供了eclipse插件,idea插件在2014年就不更新了,不太符合项目要求

  Activiti会存在一个SpringBoot的版本不匹配而导致的无法启动的问题。

吐槽一句:Activiti的官网写得真烂。。。官网提到了适配的SpringBoot版本,但是字特别小,看着看着就漏掉了,这方面SpringCloud做得还是特别好的,每个版本适配什么,都直接给一张表,清楚明了。

  突然想到Flowable的开发团队是Activiti出来的,所以去仔细找了下官方文档

Flowable学习(1):SpringBoot整合Flowable
  看到了吧。。。。自己用的是2.2.6,别人根本不适配。

  所以SpringBoot退回到 2.0.9 版本,最后成功访问。

  最后提一句:如果项目必须要用到新版本的SpringBoot,可以去将flowable的那几个包依赖的SpringBoot Security排掉,然后自己手动加入老版本的SpringBoot Security 也是可以的。

  说到底。。。大佬文章提到的方法无法绕过新版的SpringBoot Security。
Flowable学习(1):SpringBoot整合Flowable
  大概的原因是,Spring对于Security模块进行了重构,很多都失效了,所以只排除SecurityAutoConfiguration是不够的。

  有时间会去看看如何做到新版本排除SpringBoot Security。

  希望有大佬知道,也能评论区告诉小弟下。。。跪谢