00:00
各位同学大家好,下面呢,我们按照刚才咱们编写的步骤来具体实现功能的代码,那咱们一步一步来写一下代码,首先我们看第一步根据当前用户ID获取用户信息,那我们来写一下啊,因为这里要操作用户相关的,所以咱把用户相关的service给它先注入进来,我在这位置写一下啊。Private。System user。Service把这个我们先进行注入,然后注入之后我们在里边写一下啊,咱们调用里边的方法进行询来据ID查询这个ID一个log。User这IDID用户信息最终反映这个对象,为了咱们一会儿使用方便,这是第一步操作,然后这个之后,下面咱们写第二步,第二步呢,根据模板ID得到模板信息,那咱们调一下这个方法啊,这个模板的service咱们同样在里边注入进来。
01:20
我这位置做个注啊,咱们叫OA。里service,那咱们啊把这个注之后,咱们开始调它的方法,我们来调一下啊,在这里边我们写个方法,同样是根据ID查询,这个ID呢,我们可以从这个中给到,在这里有这个模板ID。然后咱们得到它的对象。把这个啊,我们给它获取一下。然后对象起个名字,所以以上啊,第一步和第二步我们就速完成了,然后完成之后呢,下面咱做第三步,第三步就是啊,把咱们提交审批的信息保存到咱的业务表里边,也就是我们的这个表叫OA里边,在里边保存咱们的信息,那咱来看一下怎么做啊,这个过程中呢,我们要用到这个service里边的保存的方法,因为咱目前就在这个service里边,也是我们直接调用。
02:27
Map中的色的方法里边一个对象就可以了,咱把这对象在里边给它出来啊。New这个对象,然后向里边保存咱们相关的信息,存到咱们这个业务表中,那这个信息呢,其实我们就是一个一个往里边就可以了,那怎么做大家看啊,在这个process form view中有这么一些属性,这些属性跟这个里边应该是一个对应的关系,所以把它可以放进去,那怎么放啊,有太多种方式了,咱们都给它下啊。首先我们这么来做,有一个工具类。
03:11
不知道各位同学是否知道啊,它叫做bus,里边有一个方法叫copy,它可以把一个对象中的值复制到另外一个空的对象中去,那咱就这么来做,把process view中的值复这个process里面去,所以现在完成这个部分啊,然后它复制什么原则就是找到两个类中的属性相同,如果它们相同进行复制,它一般用于啊,一个有值的对象,一个空对象,咱目前把VO中的值就复制到这个process里面去。我加个注释啊,复制到。对象里去,现在完成了,然后完成之后呢,里边还有一些。
04:01
其他的值,其他的值呢,那咱们就一个一个往里边set就可以了,那我们set一个啊,其他的我就从里边复制一下,比如说里边我们一个the啊,咱就来一个这个状态值是一,咱们看一下表里啊,就这个表里。大家看到啊,代表里面有状态啊,一代表什么,是不是审批中,二代表通过,负一代表驳回,咱目前应该是一,就是这个状态,是审批中的状态。这是一个纸啊,然后其他的也是一个一个往里边塞,那咱们来到我的课件里边啊,我把这个找到,我们找到。这个位置啊,咱再往里边set一些其他的纸,这个我就拿过来啊,咱们看一下啊,然后这纸里边有什么,首先在里边有一个这个code,我们就用当前这个时间生成啊code,然后除此之外有一个用户ID,还有你这个表单的信息,就是这个Jason这个字符串信息,另外有个title title里边咱们加一段话,就是当前这个用户,比如张三他发起了这个就这个请求,比如说请假申请,或者说什么别的申请啊,这个啊,然后给他都再载进去,然后之后把process对象直接放到iner的方法中,现在就完成了保存,保存了提交审批信息中的信息到咱的业务表中,所以这里边第三步我们就完成了啊,各位把这个能做的啊。
05:35
然后这个之后我们继续来看啊,下面来看第四步,第四步呢,我们就开始启动一下这个流程实例,启动过程中需要用到一个runtime service,我把这个啊在上面也是做一个注入。加上奥特。Private run service,然后在里边咱们开始启动这个实例,启动实例之前应该都讲过啊,就之前我们讲那个activity的时候应该提到过,里边有多种方式啊,比如我们写一下在里边我们可以调它的一个方法进行启动,那这个方法各位是否记得?
06:18
这个方法是不是这个。Start process by key,通过它是不是进行实现,然后这里边啊给我们载了很多方法,咱们目前啊在里边我们用这个进行实现,通过它我们可以做到啊,就调这方法,然后这个方法中啊,咱目前这么来做,比如说咱可以看下它的源码里边啊,我把这源码找到。看到源码中啊,大家看啊,重载了很多方法,这是两个参数,这是两个,这是三个,所以咱现在啊用一下这个三个参数的,这个好像之前没用过啊,咱之前用过两个的。用过一个的,然后这个没用过,咱现在把这个用一下,就是通过这个方法传三个参数,三个参数是什么呢?我这里都列出来啊,首先第一个参数就是咱们里边个流程定义的那个key啊,这是第一个参数,第二个参数是什么?是咱们这个业务的,比如咱们刚才加了它的ID,是咱务,因为通过查到一些信息,然后第三个就是咱那个流程参数,这流程参数咱们把这个表单的数据转成map传进去,所以现在啊,我在里边要传这三个参数,那把三个参数咱分别写一下啊,第一个就是这个,比如咱写这个就是流程定义的K。
07:38
把这个我们先得到啊,给找到啊,那怎么做呢?通过里边有这个方法,大家看里边啊,有这个部分。就是里边的我们的这个方法啊,写一下就是get。啊,Get这个。DeFinition key是不是就是流程定义的key,这就是第一个啊,把这个得到一咱们传就可以了,然后再看第二个啊,第二个是咱的业务key,这个业务呢,我就用这个ID们业务,那我加上啊get ID们务business。
08:25
啊,Business key,咱的业务key这是第二个,然后除此之外还有第三个参数,第三个参数呢,是咱的流程参数,这流程参数我用这个表单这部分由于我们的流程参数,但是需要把它转成一个麦克集合啊,那我们来看一下啊,这个表单是一个字符串啊,其实它是一个那个Jason数据,所以咱把它需要给它做一个转换啊,那这里边我们来给他写一下啊。那咱们看怎么做啊,首先我们看一下啊,刚才输出的时候,咱发现它的名字是固定的,叫什么,是不是叫form date,所以这里边跟它是相关的啊,那我把名字过来来用它来具体写下这个部分啊。
09:12
我想这位置名称叫form,那怎么做呢?做法还是有太多种方式啊,我就用我习惯的方式来做了,首先第一个啊,我加一个叫Jason,就是Jason中这个类,然后里边有一个方法叫这个pass啊,Pass这个object转成一个Jason object类型,咱们加上这个叫。Value。转成一个叫Jason这个object类型啊,用它我们操作就方便,然后转成之后呢,从里边把这个名字是form date的值给它取出来,咱从里边取一下啊。用Jason这个方法get这个。Jason object加上它的名字,就这个名字咱刚才看到了啊,这名字是固定的,就叫form date,把这个得到,然后得到之后返回到啊是一个,这就叫这个form date,现在啊,这部分就得到它那个具体部分叫form date,然后得到之后我们怎么做呢?各位注意啊,咱就你可以理解为我们下面做的就是啊,把这个值进行遍历,然后把里面的值,就名字和值最终都封装到你的map集合中,因为它里边你看啊,有名字有值,有名字有值,把这个最终放到一个map集合中就可以了,那下面啊,咱来做一下啊。
10:41
往下来写。就是最终啊,我们便利这个。Form data。得到里边的内容封装到一个map集合中去,就作为我们里边的第三个参数,那咱写一下啊,我先创建一个迈步集合。
11:00
加上缀。然后加上一个啊,是等于上一个。一部分后把这个结构啊,跟我们的集合类似,就是咱们看到的这个部分就这里。也是KY6KY,所以咱们历方式跟其实是差不多的啊,我在里边写一下啊给它历。呃,就写到啊这个位置啊,咱们加上一个这个。后循环。然后在for循环里边我们加上啊,应该有一个叫map,点上里边这个叫entry。啊entry entry里边呢,加上它的泛型,那就是。我们起个名字叫entry,再加上这个叫form。Date,点上这个entry。
12:03
各位注意啊,这段代码呢,跟那个集合是基本一致的,是他用的是Jason object类型,如果说这个你不清楚啊,那我觉得你把Java基础好好看一看,你就是map遍历这个写法,Map遍历中也是类似于这种写法。然后之后我们怎么做,通过ent.get k得到K值,Get y得到Y值,放到外集合中去,咱们放下啊。Entry get key,然后entry.get所以现在在map中有咱们的参数啊,咱现在就得到这个值,但是这个放的过程中各位注意啊,这里边有一个小细节。什么细节呢?就是我现在啊,把这map其实直接传进去可以啊,但这map中因为它有很多的值,这里边会涉及到多个key,都有value,所以咱这么做,我在外边啊建一个就是一个重新建个map集合,然后把这给它起个名字,把这map作为一个整个这个参数给它放进去,也就是这个意思啊,我现在再来个,可你放它也是可以的啊,我就想这么来写了,我这里给它起个名字,我们叫这个VR,呃,VR可能是关键字给改一下啊。
13:19
这个where are?这个。啊,应该是这个单词啊。呃,我们看一下啊,VR就是这个变量这个单词,咱看一下课件里边也就是这个啊,把它拿过来。啊,你没写错啊,然后在里边我用这个里边的pull的方法给它起个名字,我们就叫date,然后把放进去,咱现在这么来做啊,把这个传进去就可以了,你传它也没有错啊,所以现在我们把三个参数都准备好了,然后准备好之后呢,下面咱开始就启动这个流程的实例啊,咱就开始做真正的启动。那咱们写一下这个步骤啊,启动run service方法start里边三个参数,第一个是你的流程定义的K。
14:12
我们把这个给他来啊,就这个,然后第二个是你那个务的,咱们叫三个是这个流程这个变量这个。Valuable这个map集合啊,现在咱把它应该说都传进去了啊,这是我们写的里边这个特点啊,然后这里边啊,这个呃,流程的这个。里边啊,第二个参数中,他报了一个错,这个类型呢,应该是一个这个死润类型啊,咱给他改一下,这里写的了,咱给他改成死润类型,因为它要求是死润类型。但这个给它做一个类型的转换啊,我们就这么来做了。缀value,然后。变成一个词润类型,所以现在啊,这一部分就完成了,咱们就完成一个启动流程实例,最终啊,它会返问这个对象就是process。
15:12
所以现在啊,第四步我们就完成了啊,各位把这个参数准备好,最终把这能做到。
我来说两句