背景
工作流引擎是互联网架构中一类不可或缺的通用组件,它可以根据预定义的规则和条件自动执行任务,普遍应用于业务流程的管理和执行。优秀的工作流引擎能将许多业务无关的工作进行封装,通过提供一组独立的、可视化的功能模块和方便易用的API,让开发人员无需关注流程中复杂的事务处理、状态流转、规则判断等工作,专注于业务逻辑方面的研发。它避免了大量重复造轮子的工作,大大节省研发人员的时间,降低了学习成本,提升了研发效率。
Flowable就是一个基于Java的优秀的开源工作流引擎,它是Activiti工作流引擎的一个分支,继承了Activiti的大部分特性,并在此基础上进行了进一步改进和完善。提供了强大的工作流引擎和一套丰富的工具,使开发人员能够轻松地建模、部署、执行和监控各种类型的业务流程。
因工作关系,我有幸接触它,并领略了它的魅力。本着一颗白嫖勇猛精进,不断进取的心,我将自己从零到一的学习Flowable的过程记录了下来,期望能对后来者有所帮助。
Flowable实操
对程序员而言,实操永远是了解一项新技术最快的途径之一。本次咱们也是从实操入手,一步步揭开Flowable的神秘面纱。在实操之前,咱们先设想这样一个场景:假设要通过Java代码实现一个简单的请假功能,包含“提交请假申请-主管审批-人事确认审批”这一系列工作,咱们需要做哪些事?我列了一下,大概有以下内容:
1、需求分析,功能设计,数据库设计等。
2、提交申请功能研发:包括保存、提交申请信息,给领导发待办等。
3、领导审批功能研发:包括查看申请信息,审核通过/驳回请假,根据审核结果给申请人或人事发待办。
4、人事确认功能研发:包括查看申请信息,确认请假,给申请人发待办等。
5、流程查看研发:用于查看流程走到哪一步,哪些人做了审批,以及相关审批结果。
那么,如果用Flowable来实现,需要做哪些事呢?接下来咱们分别从“纯手工操作”和“程序实现”这两部分来说明实现过程。
一、手工操作
Flowable提供了比较完备的应用包,通过运行该应用包,可以完成用户管理,流程定义,流程启动,任务处理等一系列工作,而不用开发人员编写任何代码。下面是具体操作步骤。
1、下载Flowable包, 注意,不同的版本会有些微小的差别,雷袭下的是6.8.1版。
2、下载完成后,打开flowable-6.8.1\wars\, 在该路径下打开cmd,执行java -jar flowable-ui.war,(请注意在安装了jdk的环境执行)。
3、启动成功后,打开浏览器,输入http://127.0.0.1:8080/flowable-ui,通过admin/test登入系统。
4、登陆成功的界面如下,该flowable-ui有四个主要功能:
身份管理应用程序:用于管理用户信息,比如上文中说的主管,人事等角色,都需要在身份管理里去维护,这是流程定义和执行的基础。
建模器应用程序:用于流程定义,创建等相关工作。
任务应用程序:用于管理承载流程的应用模块,比如在工时模块里需要用到请假流程,加班流程,在采购模块里需要用到报销流程,则需要在系统中维护工时模块,采购模块,流程没办法独立应用而存在。
管理员应用模式:提供管理员看板,可以对流程引擎,表单,应用程序等进行全局管理。
5、创建用户和组,咱们在身份管理应用程序中创建几个用户,并把它们添加到不同的组里,给用户添加权限,如下:
注意:一定要给用户或组配置相关权限,不然用户登入后就看不到相关界面,也就无法执行操作了。各权限说明如下:
访问idm应用:访问身份管理应用,如果没有这个权限,则用户首页上没有身份管理应用程序菜单项。
访问admin应用:访问管理员应用,如果没有这个权限,则用户首页上没有管理员应用程式菜单项。
访问modeler应用:访问建模器应用程序,如果没有这个权限,则用户首页上没有建模器应用程序菜单项。
访问workflow应用:访问任务应用程序,如果没有这个权限,则用户首页上没有任务应用程序菜单项。
6、创建流程,根据业务要求,通过建模器应用程序,创建流程。
7、绘制流程图,这里分成以下几个小步骤一一说明。
7.1、进入流程编辑页面,通过对左边组件的拖拉拽,把大致流程图画下来,如下:
7.2、给每个活动配置分配人,即谁去做这个工作。提交申请肯定是谁发起,谁执行,因此分配人应该配置“流程发起人”,而主管审批则应该配主管组,人事确认应该配置人事组,当然,我也可以分配给某个固定人事,如下列图:
7.3、给每个活动配置表单,表单的意义在于执行活动时的数据载入,比如提交请假时,需要写明从哪天开始,到哪天结束,请几天,主客审批时需要确定是审批通过还是驳回等,配置方法如下:
主管审批的表单可以设置的简单点,人事的同理,如下: