00:00
各位同学大家好,下面呢,咱们继续来完成启动流程实例,那下面呢,我们进入到第五步操作,第五步做什么呢?我这里写了步骤啊,就是查询下一个审批人什么意思呢?给大家说明啊,比如说我现在张三要请假了,那张三呢,其中一个流程实例,他下一个比如说是李四审批,或者说王五审批,所以我现在把张三提交这个实例的下一个审批人给他查出来,而查出来的目的是什么呢?给大家强调啊,各位可能会想,我们用的是activity,其实不需要这里边完成它后续的推进,Activity会帮我们做到。而我们查主要是两个作用,第一个作用给下一个审批人推送一个消息,通知他你需要进行审批,然后第二个把咱们相关表里的流程进行更新,就是咱的业务表跟流程进行关联,更新里面数据,比如说更新里边包含咱们现在谁马上要进行审批,或者说谁已经审批过了等等。
01:05
那下面呢,咱们把这个写一下啊,查询下一个审批人,我在里边做一个实现。然后这里边要特别说明啊,这里边的审批人可能是有多个啊,写一下啊,就审批人可能会有多个,如果说多个的话,那咱们就并行审批,所以现在我来写一下啊,它返回的可能有多个,咱们加上一个集合,然后里边加上一个叫task。就这个啊,任务加上这个task,然后之后呢,在里边我们一下我们这个方法。啊,这个方法呢,咱就单独写个啊,我加一个点。Get,就是当前任务。这个task加上list,然后咱们怎么来查呢?大家看我们的这个步骤啊,咱们启动流程实例之后,返回一个对象,我们根据这个流程实例的ID进行查询。
02:03
那这里边啊,我们把它的ID给它得到。Get ID。然后下面呢,先来写一下这个方法啊,咱们把方法在下面给它创建出来。我就写到这个位置啊,这个方法做的事情就是获取当前任务,就是当前这个谁需要审批啊,冲突说就是当前任务的列表是要审批,就这么一个流程,然后咱们来查一下啊,这个怎么查呢?咱们在里边啊注入一个service,之前用过叫task service,我在里边完成这个注入。然后咱们写一下啊。加上奥拓二。Private。Task。Service。把这个我们给它注入进来,然后注入之后咱们调用里边的方法完成这个查询,我们调用task service里边这个方法,Task再点上一个方法叫。
03:13
实例ID进行查询,然后传入ID值,再点上一个方法叫list的最终返回这个任务,这个集合返回之后,最终啊,咱给它加上一个内退。我们加上task list,所以现在啊,把这个我们就完成了啊。然后这里边啊,就有一个这个呃,包的问题,咱看这包啊,是不是导错了,我们来检查一下啊,那咱们啊来到最上边,把那个task包先给它去掉,咱们重新导一下啊,应该导的不是这个给改一下啊。Task or activity task?
04:03
把这个包给它导进去啊,应该倒的是这个。所以大家看啊,现在就正确了,然后正确之后呢,我们这里边得到里面这个任务就是进行审批那个任务的信息的集合,那下面怎么做呢?咱们把这集合是不是要进行便利。便利之后我们再往后进行,那咱们继续写下啊,我这里边加上一个负循环。然后在里边加上。加上这个啊,咱给改个名字啊,叫task list,我们叫这个名字。把这个进行遍历啊,然后遍历之后呢,咱这里边怎么做呢?在task中啊,有一个方法,大家看这个方法应该记得啊,Get就得到当前这个审批人是谁,咱把这个得到就通说是我们那个用户名称,或者说咱们审批啊加这个。
05:03
然后得到它之后怎么做呢?这里边强调啊,这个审批人,其实咱们可以根据这个名称得到我们那个用户信息啊,包括做后续的一些处理啊,那这里边啊,我们给他。就是得到一下啊。那现在呢,我们在里边啊,咱们做一个查询调用service里面一个方法,我们叫get user by username,然后这个最呢返回一个这个,从里边我们得到这个的这个实名就是里这个。然后这里特别说明啊,咱这么写目的是什么?大家可以这么理解,在咱们用户表里面其实有两个名字,一个叫登录名称,一个叫真实姓名,我们目前写审批人应该是他那个登录名称,所以咱们现在根据他的登录名称得到用户的真实姓名啊,当然你也可以存这个登录名称都是可以的啊,我就要加上他的真实姓名。
06:00
这是我们写的这个名字啊,然后这个得到之后,我们怎么做呢?因为这个过程中可能会产生有多个这个审批人,所以咱把它可以放到一个例子集合中去啊,包括给它进行存储,或者说我们这里边可以做其他处理,那咱们啊,我这么来做啊,把这个多个名字给它放到一个例子集合中去。加上一个词缀啊,当然你也可以不放,看你的实际啊,我就这么来写了。加上这个叫name list,等于上一个a list,然后把它放到这里去啊,你也可以直接存那个用户名。也可以啊,可以不放真实姓名,我就把这个都写一下,为了咱们看着就是更明确啊,把咱之前知识目的都是为了练习一遍。这个啊,Name。现在啊,这就放进去了,然后这个之后呢,我们提到啊,比如现在我们查询,比如张三提交了请假申请,查询到要李四进行审批,那这个时候咱们给李四是不是要发送一个消息,就给他推送一个消息,通知他说你现在有这个任务需要进行审批,或者有审批需要进行处理,这里边有一个任务的推送或者消息的推送,而这个推送呢,咱们后面实现,我们这个位置呢,会通过微信公众号发送一个消息实现啊这咱们后续给它做到,所以现在啊把这分就完成了,然后完成之后呢,我们还有最后一部分,咱们可以把这个OA。
07:35
然后更新什么呢?强调啊,大家看我的这个表里边我们找到啊,就是这个表。OA这个表,然后在表里呢,之前加了很多的值,但是有这么几个没有加进去,第一个是这个,就咱们那个实例的ID1给做个更,除此之外边咱们可以完善一个咱们一啊,大家这个description是不是描述,比如咱们加个描述说这个。
08:06
目前这个任务正等待这个李四要进行审批,可以加上一个描述啊,所以现在啊,咱们把这些给他就完善进去,我在里边啊,咱们来写一下啊,就是把它最终做更新。这个推送消息后续我们进行完善。然后我把它角这位置啊,首先我们加上点这个。Instance ID,把这个实例的ID给它先进去,咱们在这给它取下啊。点get ID。就是里边的这个值啊,这是我们做的这个部分啊,注意这个值不要写错啊,咱们启动流程实例,然后在里边会返回它这个ID值啊,你别写这个啊,不是这个定义ID,是我们当前这个实例ID。
09:01
然后这个之后我们再来做个set,这个里边咱们一描述信息,比如说我们写一个啊,说当前的任务正等待这个张三或者李四进行这个审批。啊,审批。然后这个位置,其实我们这个审批人应该就是这个list集合,所以咱们把这list集合给它在里边,我就直接做一个输出了啊,咱们用这个。这个方法直接给他输出一下啊。我这里写一下啊,比如说我们用这个叫name。厉道。点上这个。To瑞,呃,这样输出其实可以啊,但这么输出呢,有时候效果看的不是特别明确啊,咱给它稍微改进一下,怎么改进呢?我们来看一下啊,这里边有个工具类叫strings,然后里边有个方法叫咱们可以怎么做,把这个集合变成数组,然后在里边用逗号隔开,最终显示就是张三,逗号李四或者逗号王五啊,咱用它最后处理。
10:12
但这个啊,看你自己的实际啊,咱只是在里边存入那个信息,为了咱们看着更加的方便啊,把这个给它拿来,此缀UT里边的join印方法,然后在里边把name list集合变成数组,通过逗号隔开,最终显示值就是张三逗号,李四逗号啊里边这些值。这个啊,是我们看到这么一个基本效果。好,我们把这个依赖啊给它引入,应该是这个依赖啊,所以现在这个就完成设置,完成设置之后,最后呢,我们来做个更新,调用map中的updated。然后传入对象,所以咱们到这里呢,就把这个功能就完成了,启动流程实例,这个咱们就做到这里,然后做到这里之后,最后我们来再总结一下这个过程,看他是怎么做的啊。
11:09
最后总结一下,首先第一部分我们在那个表单页面中,刚才说过了,我们点提交,然后提交之后这个过程中要启动流程实例,咱们通过这个process phone VO得到切换数据,然后调用setup方法,在setup里边我们怎么做,首先步是得到关信息,包括用对啊,包括你这个信息,然后之后呢,我们这个加上你个提交审批信息,包括里面一些相关数据。这个之后呢,我们下面开始启动流程实例,我这个启动过程中里边传了三个参数,咱们刚才刚说过啊,第一个参数是什么呢?这里面那个流程定义的那个key,第二个是业务key,第三个是那个流程参数,或者叫流程变量啊把这个都传进去,这个流程参数是通过表单的Json数据转成了map,传入之后呢,我们查询下一个审批人是谁,这里边我们可以给这审批人进行消息的推送,就通知他啊,你这里边有任务需要进行审批,这单后面通过微信公众号进行实现,然后最后呢,把proceed信息做更新,主要更新两个,一个是实例ID,一个是这个描述信息,比如当前啊,等待这个张三或者说等待李四要进行审批,最终要方法更新。
12:39
所以以上啊,到这里咱们把这个功能就完成了,启动流程实例啊,这咱们就做到这里啊,然后这个前端应该已经都完成了,咱们重点把接口给它做。
我来说两句