一、前置准备
对于第一次使用Flowable,我们先采用官方提供的flowable-ui进行模型的绘制,让各位读者可以感受到整个流程的运行变化,从而在后期的编码中不会感到迷惑,这也是我本次选择使用7.0版本以下的flowable的原因(前文提过:官方将7.0以上的版本已经移除flowable-ui)。
1.启动flowable-ui
将下载的压缩包中的flowable-ui的war包解压出来。 通过java -jar命令启动该应用。 应用启动成功后,就可以通过:http://localhost:8080/flowable-ui/idm/#/login 进行访问,管理员账号admin、密码test。
2.创建模型
登录进系统后,点击建模器应用程序菜单进入模型管理界面。 接着通过创建流程就可以为模型设置基础属性。 设置完成基础属性后,点击创建就可以进入模型绘制界面,正式开始绘制流程。这里需要提一嘴的是:在实际业务中,模型key我们需要采用UUID生成,需要尽可能保证该key的唯一性。 绘制界面大致分为以下四个区域,主要说明下"物料区"和"设置区","物料区"提供了很多流程图需要的组件,"设置区"则是可以为整个流程或每个节点进行属性设置。 一个最基础的流程应包含开始节点、任务节点和结束节点,接下来我来绘制一个简单的绩效流程。
3.绘制模型
开始节点会默认创建,我们需要点击这个"人"图标添加任务节点,点击"圆"图标添加结束节点。 为开始节点和结束节点添加名称,点击具体的节点,在下方的设置区就可以进行相关设置。 为各任务节点添加节点名称,这个简单的绩效流程我们设立自评、上级评、隔级评三个节点。 为各任务节点分配处理人,每个用户任务节点都需要有人去处理,比如:在日常的工作中,你要请假就需要向领导申请,领导批假后才可以休假。Flowable在任务节点提供了分配人的选项,让我们可以设置各任务节点的责任人。 关于这里的分配用户设置,需要给各位读者说明下:身份存储用的是Flowable内置的用户和权限配置,如果我们要用自己业务系统的用户关系就用固定值的方式分配责任人。这里需要提醒下:如果我们要采用自己的用户关系,Flowable是不会进行鉴权的,包括节点引用的表单(Ps:大家这个时候不知道表单是什么没影响,后面的文章中都会讲,先知道有这么个概念。)需要我们在代码层面根据业务自己进行鉴权,也就是说如果我们自己也不校验,任何用户都是可以完成节点任务的。我这里为了方便演示,三个节点分别指派a、b、c三个用户执行。 如果需要配置流程属性,点击节点外的空白区域就可以。到此,我们这个简单的绩效流程就建好了,保存模型就可以开始部署了。
二、流程发布
完成了模型的创建,现在就需要我们创建应用,把这个流程发布出来使用。
1.创建应用
在模型管理界面点击应用程序,进行应用的创建与发布。 创建应用的流程和创建模型差不多,这里就不赘述了,直接看图,再强调一下Flowable里你创建的每个东西如果需要填写key,那么都要保证唯一性,我建议采用业务前缀+UUID的方式生成。这里说一下,绘制模型时的三个任务节点其实也都有id,如果我们不配置,引擎会自动生成,但在实际业务中,建议还是自己结合业务生成。
2.发布应用
在创建应用成功后,自动跳转到应用编辑界面,在这里为应用关联我们刚刚保存的绩效模型。 之后就可以保存我们创建的这个应用。 保存成功之后点击我们创建的这个应用,将这个应用发布,此时,这个流程就可以使用了。
三、流程演示
应用发布成功后,就可以开始这个流程的体验了。
1.开始流程
回到首页,就可以看到我们刚刚发布的这个绩效流程。 进入应用界面,通过流程菜单点击开启流程就可以开始执行这个绩效流程。 在创建流程的时候我们分别采用固定值的方式指派了a、b、c三个节点的处理人,实际上这里如果用代码执行的话,只要节点处理人这个字段有传值都可以完成相应的节点。但flowable-ui这里如果不登陆对应处理人账号的话,对应节点其他账号是看不到的,这里方便演示还是创建三个处理人账号。
2.创建新用户
管理员账号通过身份管理应用程序进行新用户的添加。 简单地创建a、b、c三个用户,分别对应我们前面各节点的配置。 并在权限控制页为三个用户按需配置一下权限,否则用户登录进来什么也看不到。
3.执行任务
首先a用户登录系统,进入绩效应用就可以看到自己有个待完成的任务,点击完成后该流程进入下一个节点。 在流程页可以看到当前流程的执行情况,可以看到该流程已经执行到上级评节点。 接着如法炮制,分别登录b、c用户,完成上级评、隔级评节点任务,在完成隔级评后,该流程执行完成,此时流程界面就看不到该流程了。 在已完成的流程里,可以看到该流程已经执行完成了。
四、小结
这篇文章主要是带领大家使用官方自带的demo体验了一下流程的创建、部署、启用等过程,让大家对流程有了一个初步的认识,比如节点是什么、一个流程应包含哪些元素、一个节点又包含什么属性等等。但我们在业务开发中肯定不能靠Flowable提供的这个demo进行流程控制,所以在下篇文章中将带领各位读者使用Java代码的方式来控制流程。