@[toc]之前松哥发过一篇文章,和小伙伴们分享了 Spring Boot+Vue+Flowable 的具体玩法,传送门:
SpringBoot+Vue+Flowable,模仿一个销假审批流程!不过在那篇文章中,所有波及到用户的中央,都是手动输出的,这显然不太好,例如开启一个销假流程:
这个流程中须要用户输出本人的姓名,其实如果以后用户登录了,就不必输出用户名了,间接就应用以后登录的用户名。
另一方面,当咱们引入了用户零碎之后,当用户提交销假申请的时候,也能够指定审批人,这样看起来就更实在了。
所以,明天咱们就整篇文章,咱们引入 Spring Security,据此来构建用户零碎,一起来看下有了用户零碎的流程引擎该是什么样子。
1. 成果展现货色我曾经做好了,先截个图给大家看下:
这个页面分了三局部:
最下面的是销假申请,用户只须要填入销假天数、销假理由,并且抉择审批人即可,抉择审批人的时候,能够间接指定审批人的名字,也能够抉择审批人的角色,例如抉择经理这个角色,那么未来只有角色为经理的任意用户登录胜利之后,就能够看到本人须要审批的销假了。两头的列表展现以后登录用户已经提交过的销假申请,这些申请的状态分为三种,别离是已通过、已回绝以及待审批。上面的列表是这个用户须要审批的其余用户提交的销假申请,图片中这个用户暂无要审批的工作,如果有的话,这个中央会通过表格展现进去,表格中每一行有批准和回绝两个按钮,点击之后就能够实现本人的操作了。这就是咱们这次要实现的成果了,相比于SpringBoot+Vue+Flowable,模仿一个销假审批流程!文章的案例,这次的显然看起来更像一回事,不过本文的案例是在上篇文章案例的根底上实现的,没看过上篇文章的小伙伴倡议先看下上篇文章,上篇文章中的案例,大家能够在微信公众号江南一点雨的后盾回复 flowable02 获取。
2. 两套用户体系玩过工作流的小伙伴应该都晓得,工作流中其实自带了一套用户零碎,然而咱们本人的零碎往往也有本人的用户体系,那么如何将两者交融起来呢?或者说是否有必要将两者交融起来呢?
如果你想将本人零碎的用户体系和 flowable 中的用户体系交融起来,那么整体上来说,大略就是两种方法吧:
咱们能够以本人零碎中的用户体系为准(因为 flowable 本人的用户体系字段往往不能满足咱们的需要),而后创立对应的视图即可。例如 flowable 中的用户表 ACT_ID_USER、分组表 ACT_ID_GROUP、用户分组关联表 ACT_ID_MEMBERSHIP 等等,把这些和用户体系相干的表删除掉,而后依据这些表的字段和名称,联合本人的零碎用户,创立与之雷同的视图。利用 IdentityService 这个服务,当咱们要操作本人的零碎用户的时候,例如增加、更新、删除用户的时候,顺便调用 IdentityService 服务增加、更新、删除 flowable 中的用户。这两种思路其实都不难,也都很好实现,然而有没有可能咱们就间接舍弃掉 flowable 中的用户体系间接用本人的用户体系呢?在松哥目前的我的项目中,这条路目前是行得通的,就是将 flowable 的用户体系抛到一边,当做没有,只用本人零碎的用户体系。
如果在读这篇文章的小伙伴中,有人在本人的零碎中,有场景必须用到 flowable 自带的用户体系,欢送留言探讨。本文松哥和小伙伴们展现的案例,就是完完全全应用了本人的用户体系,没有用 flowable 中的那一套用户体系。
好啦,这个问题捋分明了,接下来咱们就开搞!
3. 创立用户表首先咱们来创立三张表,别离是用户表 user、角色表 role 以及用户角色关联表 user_role,脚本如下:
SET NAMES utf8mb4;DROP TABLE IF EXISTS `role`;CREATE TABLE `role` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `nameZh` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;INSERT INTO `role` (`id`, `name`, `nameZh`)VALUES (1,'manager','经理'), (2,'team_leader','组长');DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;INSERT INTO `user` (`id`, `username`, `password`)VALUES (1,'javaboy','{noop}123'), (2,'zhangsan','{noop}123'), (3,'lisi','{noop}123'), (4,'江南一点雨','{noop}123');DROP TABLE IF EXISTS `user_role`;CREATE TABLE `user_role` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `uid` int(11) DEFAULT NULL, `rid` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;INSERT INTO `user_role` (`id`, `uid`, `rid`)VALUES (1,1,1), (2,4,1), (3,2,2), (4,3,2);我也大略说下我的用户:
...