00:00
各位同学大家好,下面呢,我们继续来实现员工端的审批,刚才呢,我们完成了获取审批模板数据,生成表单,然后表单中填写信息,最终提交能得到生成的这些数据,那下面呢,我们继续往下来做,下面咱们做什么呢?那就是咱们里一个重要的部分启动流程实例,咱们之前呢已经过流程定,那后面要开始启动。而启动怎么来做,给大家说明啊,这里边呢,首先我们先做一些准备工作,然后进行实现,那准备工作是什么呢?大家看啊,就这里边呢,各位记住,我们之前呢,通过成了证授权,在认证过程中判断里边有没有token,有token取出来之后得到里边的用户ID或者用户名称,就是这么一个过程,咱之前这么做过,但是这里边呢,我们按照之前方式做,完全可以,只是说每次啊,你要从请求头里边得到你的to,再取到用户ID,再取到用户名称,它并不是特别方便,因为咱后面的这里边需要用到当前用户的信息,比如说你的ID,你的名称等等,所以这里边呢,我们换一种方式来做,怎么做呢?咱们通过一个对象来获取当前用户信息,大家看这个对象叫什么?
01:28
这各位要明确啊,第一个对象你可以理解为和当前线程进行绑定,就是咱用s local存储当前的用户ID和用户名称,然后后面从里边获取到你的用户信息,所以咱就加上一个工具类在里边通过来存储用户信息,那这里边我来加下啊。咱们在这个模块里边,这个里边我们加上一个类,这个类我就直接复制过来啊,就是加上一个local,然后在类里边我们看啊,你看这个位置local,第一个加上用户ID,第二个加上用户名称,然后生成它里面对应的这些相关的方法,这个啊咱们给他拿过来,这是第一部分加上一个。
02:18
保存当前用户信息的工具类,然后这个加上之后第二部分咱做一件事情啊,把之前咱做这个过滤器里边,咱们改个地方,大家看这个位置。你看这里啊,首先这代码咱再看一遍啊,从请求头里边得到token,如果token不等于空,咱们从token中取到用户名,用户名不等于空,那我们再从read中取到权限数据,然后做后面操作,而现在在这位置咱们做个操作,把这个当前的用户信息给它放到我们这个local里面去,通过这个工具类我们进行实现。那现在啊,咱们给他放下啊,放到这里边去,为了后面操作方便啊,不这么放也可以,只是说后面咱还要再取,我为了方便,咱们写个工具类,点上一个set user ID里边放入咱们的用户ID,通过JWT从里边取一下啊。
03:19
Get userd,这是第一个,然后第二个再放下这个用户名称,点上username,就是这个username,所以现在啊,我们做了一个最基本的准备工作,通过来记录当前的信息。然后这个之后我们继续往下来做啊,下面咱就来启动这个流程的实例,那怎么启动,各位来看啊,就是现在呢,我们在这个表单里边是不是有很多信息啊,所以咱们现在把这信息要得到,包含有其他数据,然后咱需要进行提交,那大家来看啊,我这里边呢,给各位写好了一个view类,这个类咱们看一下啊,就这个类。
04:05
它叫做。这他这ID包括有你的审批类型ID,你是人事还是财务等等,除此之外大家看这个位置。这是什么,就咱说那个表单值,也就是我刚才说的这个地方啊。我一提交,他把这内容生成是一个数据,其实就是这个,所以咱们用它,我们来得到当前信息,最终提交用了一个process view,然后下面呢,咱就开始写了一个接口启动流程实例,那这里边啊,我把准备工作先做到,然后给大家详细分析,最终进行实现,因为这个过程中啊,涉及到有很多的操作,所以咱们一点阅来写。那咱们看一下啊。
05:00
首先啊,我现在在这个CTR里边,咱们找到就刚才我们写的这个这里边process CR。在这里呢,我们加上一个方法,这个方法我们就叫start up,然后加下啊public。Startup。然后在里边呢,得到的信息就是咱刚才写这个,我通过这个加上这个叫process form view,咱把这信息给得到。这是我们写到的啊这个部分,然后写完之后,咱们下面来调用方法进行实现,在方法里边咱们完成这个启动这个流程的实例。这个方。我这里做个注入。
06:11
是叫这个名字啊。把它注入,然后注入之后调用里面的方法,咱们启动一个流程的实例,这个方法我就叫。Start up入我们这个view。啊,所以现在这部分我们就完成,完成之后最终我们加上一个result.ok。现在啊,CTRL部分咱就完成了。Ctrler完成之后呢,下面呢,咱们在里边把这方法我们进行创建。我们来到这个位置啊,创建这个方法启动流程示例。之后在实现类中,咱们最终来实现一下这个方法。就把它啊做最终实现,那咱们啊,下面给各位做个分析,咱们来写一下这个实现的步骤,然后我们再一步一步进行实现,因为这里面涉及到有很多的相关操作,那下面啊,咱们写一下步骤。
07:12
首先啊,我们的第一步要做什么呢?因为现在啊,刚才我们做了一个准备,通过local是不是记录了当前的用户信息,所以第一步呢,我们先可以做一个查询,为了后面使用我写到这个位置啊,第一步怎么做,写这里边咱可以根据。当前的这个用户ID。获取一下用户信息,为了后面使用方便,这是第一部分,然后第二步做什么呢?在这个里边,大家这里是不是有一个模板ID,所以第二步呢,咱做这个事情根据审批模板ID。把这个模板的数据给他查出来,或者说模板的信息做一个查询。
08:01
这是我们做的第二部分,为了后面要使用,然后这个之后呢,进入到第三步,第三步做什么呢?给大家强调啊,就是现在我们一点提交是不是要提交这个审批,所以第三步呢,咱们在我们当前的这个业务表中记录一下这个提交信息,我们当前的业务表就这个表叫OA process,在里面记录一下你的提交信息,大家看里边啊,有你这个编号,有用户ID模板,ID模板类型,标题描述,包括有一个叫form values,就咱说那个表单部分等等,所以在里边我们做一个记录。这是第三部分。写到这个位置啊。保存提交的审批信息。到我们的业务表里进行存储,业务表就是咱们这个OA。这是第三步,然后这个之后我们在第四步做什么呢?就是咱们最核心部分启动一个流程的实例啊,通过这个进行启动,然后启动过程中各位应该记得啊,咱们这里面会用到这么一个service叫runtime service进行启动,我这里边啊给大家标注一下这个。
09:18
Runtime service通过它进行启动,然后在启动过程中呢,咱之前做到过啊,这个里边可以根据那个流程key,或者说根据别的进行启动,另外里边可以包含你的业务key,可以包含你的流程参数等等,这里边我们都进行操作,然后写一下啊,就是写个4.1。咱这里面会包含你的流程定义的K,这是第一个,然后第二个参数呢,会包含咱们那个业务的key,这业务key呢,咱就用这个业务这个里这个ID,通过我们这个业务key啊,就这个ID。这是4.2,然后这里边还有第4.3,就是咱们说的那个流程的。
10:06
参数,这流程参数呢,咱就用那个form表单里边那个数据,它里面应该是一个Jason数据,咱们把Jason数据呢,给它转换成一个map集合传入,所以咱们的流程参数,这就是咱的第四步启动流程实例,然后这个之后大家看啊,咱的下一步干什么,比如说现在我这实例启动了,那下一步咱就查询一下,我这里边就是它的下一个审批人是谁。啊,就查询一下当前这个我的下一个审批人到底是谁,这个过程中咱也做过,用那个叫task service进行实现,然后查询审批人之后,我可以给审批人发送一个推送消息,然后后面会整合微信公众号进行实现,啊通过它我们进行做到给他推送一个消息,就通知他你现在有任务需要审批,请及时审批。
11:03
然后这些都做完之后,咱们最后一步就是第七步。把这个我们当前这个业务和流程进行最的关联,业务和流程进行最终的关联,比如说我现在啊在里边,比如说现在我做的这个。流程的这个启动啊,实例也做到了,里有一个实例ID,咱们在这个表里去更新相关的数据,包括大家看表里有很多值,然后往后看,你看这位置是不是这个实例ID啊,包括里边有表单,有描述等等,就是把它最终在做更新,保存咱们最完整这个数据。所以以上啊,就是咱们对于它这个步骤的说明,通过这个步骤,咱就开始启动一个流程的实例。
我来说两句