00:00
各位同学大家好,下面呢,我们继续来学习ACTIVITY7的经过内容,下面咱们来看一个内容叫任务组。首先啊,解释一下什么叫任务组,大家看这词任务组组什么意思,指的是里边是不是有很多的人,那咱说一下他的需求啊,比如说大家注意我们之前呢,在选择任务的处理人或者任务的负责人的时候,咱是不是都写固定了,不管你是在这个流程图中直接设置,还是通过代码都是固定某个人,那这个时候有个问题啊,比如说我现在啊,我指定啊,我这个部门经理进行审批,比如说部门经理他临时有事情,或者临时他这个事情处理不了,那这个时候我们这个系统是不是要进行变更,就是你的负责人要进行修改,那修改的话,这过程是不是会特别不方便,你的流程都需要进行修改,所以这个时候我们针对这个问题有一种解决方案,什么方案?我们可以设置多个候选人,从候选人中选择来某个人来完成我的任务,比如说现在我有两个人,一个张三,一个李四。
01:09
我们可以选择张三或者选择李四来完成这个任务,假如说你的部门经理不在,那你部门主管也一样可以审批,这就是我们说的任务组的概念,它的目的是什么呢?让你系统的扩展性增强。如果说咱们要变更这个任务的负责人,咱可以用多个候选人的方式进行实现,你这个人不行,我换一个人进行实现,这就是任务组的需求。我不知道我是否说清楚了啊,再说一遍。如果说啊,咱们要临时变更任务的负责人,这个时候我们按照原始方式就需要改咱的流程定义,那这样的话,你的系统扩展性会特别特别的差,那咱怎么做?针对这个问题,我们可以给这个任务设置多个候选人,从候选人中选择某人最终来完成任务,那下面呢,咱们看一下具体该怎么进行实现啊,首先看它的过程啊,第一部分我们在这个流程图里边设置你的候选人,然后在里边比如说张三。
02:12
零一张三零二用逗号隔开,然后咱们下面过程中,我可以查询组任务,然后拾取任务,就是比如说张三零一它去做这个事情,然后查询他的任务,最终进行办理,所以下面啊,咱就来具体做一下这个事情。首先啊,来到流程图里边,把流程咱改一下,我就用之前这个加班这个改一下啊,当然你新画一个也可以,我这里为了方便就改一下,然后这里边比如说第一个它这个名字啊,咱改成加班。零四啊,为了跟之前区分一下啊。改成他。然后改完之后我们看啊,在经理审批这个位置中,这个位置之前我们应该是写了一个这个监听器,我把它去掉啊,因为目前不需要这种方式,但是用别的方式进行实现给它保存。
03:03
然后之后呢,在人事审批这里边,把它那个监听器也先给他去掉。现在啊,这都去掉了,然后去掉之后咱们来到经理审批这个位置,找到里边这个assign这个位置,然后在里边我们看这位置啊,这是什么?就是咱说那个候选人或者叫候选用户,现在比如说我写两个,第一个咱们叫这个汤姆零一啊,加上逗号再来一个汤姆零二,我现在就写这么两个人啊,这是我们写的这部分。然后我把它啊,就是保存一下啊。这个位置给他。保存一下啊,汤姆零一汤姆零二这个完成,然后完成之后在人事审批这里边我也加上,比咱加两个人,我就随便加两个啊,比如汤姆杰克啊,咱加这个ROSE01。然后ROSE02。
04:00
现在啊,把这个我们都加上了,这个流程图的部分咱们就完成了,都加了多个候选人,这里边加的是这个汤姆零一汤姆零二啊,那里边加的是这个ROSE01 rose02。这个各位啊,给他记住,你一会儿咱用它进行操作,然后这个之后把它保存,我们叫这个加班啊,还是叫它了啊保存之后把里边这个文件给它导出来,加班零四这个文件。现在啊,完成了下载,完成下载之后,把文件就是放到咱们当前的项目中来,OK,好直接复制过来。所以现在啊,这个流程图的部分我们就完成了,完成之后呢,下面按照这个步骤,咱们就写下这个代码,然后把这个最终过程进行实现,那下面啊,我们来写一下这个代码,为了跟之前区分,我再重新建个测试类进行实现,因为里边很多部分都是一样的啊,所以咱们有些部分我就直接复制了,因为咱之前写了很多遍啊,那咱看怎么来进行操作啊。
05:06
我这里给大家详细来写一下啊,这个实验过程。首先啊,我们的第一部分跟之前一样,咱们还是做这个部署流程定义,我这里边部署一下啊,咱们这个文件的名字叫加班零四,这里改成啊零四。把这个做部署,比如叫加班申请流程零四。这是第一部分啊,咱先写完,然后就是测试,然后这个之后呢,下面。我们进入到第二部分啊,第二部分应该写的不是这个,咱先保留,然后按照我们这个特点来写啊。写一下啊,第一部分部署流程定义,然后第二部分干什么呢?它叫做查询你的组任务啊,这是第二部分,什么叫组任务呢?就是你可以这么理解,比如现在我这个流程中的人,有张三,有汤姆,有什么杰克啊,你要查一下,看这个张三或者这个李四啊,根据他查询他当前有没有个任务啊,咱可以做一个查询。
06:08
然后查询之后,比如现在啊,在这过程中,咱们就是张三或者李四让他来拾取任务,就是让他来处理这个任务,这里注意啊,就算你这个人没有这个资格,他也能查询,只查不到他的这个任务而已啊,所以咱们下面来做第二部分查询这个组任务,我这里写一下啊。第二部分就查一下啊,这个人能不能在这里边做这个操作。Public加上我们这个方法。然后在里边加上我们的具体代码啊,咱们来写一下啊,这个代码呢,我们用这个叫task service,就是任务的service里面一个方法叫task query,然后加上里面这个条件啊,我们叫这个。Task就是里边的这个啊,应该是他啊,应该有一个user,我们找一下啊。
07:06
那这个加一个user,加上你的用户,比如咱查一个叫汤姆零一,因为刚才咱们有这个用户,最后再点上一个叫list。然后得到我们这个历次集合啊,现在我们做个查询之后呢,咱把这历史集合做一个便利。加上这个task。然后加上list,最终我们做一个输出啊,就是把里面一些基本值给它输出一下,这个我就拿过来啊,然后大家看一下,首先流程实例ID,任务ID啊,任务负责人,包括任务名称等等啊,这是我们要做的第二部分。然后这个之后我们再来看啊,下面我们写第三部分,我们叫做拾取组任务,就是哪个用户啊,他来处理的一个任务,比如现在咱有汤姆零一,汤姆零二,我们让汤姆零一做这个任务,或者让汤姆零二做这个任务,这个叫拾取组任务,两个候选人最终谁去做这个事情,因为不可能两人都去做,也不能说两人都不做,谁去做,在里边进行拾取。
08:11
这个写下啊,咱们的第三部分叫做。拾取这个组任务。我们加上方法做个测试啊。加上test public叫task在里边,我们做一个拾取。然后时区怎么做呢?首先啊,咱们先做这么一个操作,用task里边那个方法,就是还是刚才那方法跟刚才类似的啊,叫create task query,点上这个。User啊,里边加上咱们叫汤姆零一啊,咱就直接点上一个叫single result,返回一个task对象。这是我们做了一个查询,然后下面做一个判断,如果说啊,这个task这个对象就是反问这个任务对象它不等于空,那咱就让当前的用户来拾取这个任务,我们用task service里边有一个方法,这方法就叫啊,然后里面加上你那个任务ID,以及啊,我们在里边有这个就是用户这个名称,就咱这个汤姆零一啊,咱给他加上啊。
09:30
Task get ID。然后加上这个叫汤姆零一,由汤姆零一去拾起这任务,然后最终比如做一个输出,啊,说这个任务。就是拾取了,或者拾取完成了啊,做一个输出,为了咱看着方便,这就是我们的第三部分,让某个人去做这个事情,就是张三李四都能做,谁去做呢?张三去做或者李四去做啊,这是咱们做的这个过程,然后之后在里边特别提到啊,如果说张三做了任务的事,去李四就不能做了,只有一个人做这个事情,不能两人同时做。
10:08
然后下面咱做查询,查询这个人的代办任务,这咱之前写过啊,这个咱们就找一下,下面有一个方法。当天这个人那个任务啊,就是他。我把这个啊拿到上面来。是放到我们的。这个位置。就是他啊。呃,下面那个方法就去掉了啊,咱给它移到上面来。然后这个方法就是查询个人这个代办任务啊,咱目前改成这个叫汤姆零一,就这位置啊改成。汤姆零一就是之前写过代码,对现在这个可以查询,然后查询之后下面咱可以继续做,比如现在这个办理个人任务,包括归还组任务,包括里边做任务交接,比如这个汤姆零一他不想干了,把这给汤姆零二让他去做啊,所以依次完成可以了,下面有一个办理个人任务。
11:04
我们继续来写啊,办理任务应该就是。这个方法啊。咱们拿到这里是我们的,这是第四个,那下面是第五个。放到这个位置啊,第五个办理。个人任务。我们放到这个位置啊,然后把里面一些这个值给它改一下。首先啊,在里边这个名字叫汤姆灵一。然后咱们把任务我们进行这么一个办理啊,他的办理就用这个。啊,最终做到,但目前没有这个设置啊,把这个去掉。所以现在啊,这部分就完成了,完成之后呢,下面还有一个操作叫做归还组任务,什么意思呢?比如我现在啊,我这个汤姆零一,他要做这个事情,是他现在不想做了,所以把这个在还给这个组,让别人去做,这个叫归还,除此之外还有一个叫任务交接,我现在汤姆零一把这任务交给汤姆零二,让他去做,还有这两个操作啊,咱们先写到这里,先做个测试,然后一会儿再往下进行实现。
12:16
那咱们啊,下面我们来具体给他就是测试一下啊,看一下目前这个基本效果。那我们来实现啊。第一部分咱们部署流程定义,把这个代码先执行一下啊。部署流程定义执行之后咱们继续执行啊,其实第二部分呢,应该是在里边呢,创建一个流程实例啊,咱就直接执行之前这个方法,把里边这些值给它注掉,我们叫加班零次,这个给它执行一下啊,这步我刚才忘了写了,但是这代码是有咱把它执行一下,然后大家看我课件里边,我课件中是把它写到了一起啊,就是部署流程定义,然后启动流程实例,这个肯定就要进行启动,这是我们的第一部分啊。
13:03
我这里特别补充一下啊。就是。在这里边。第一部分部署流程定义和启动流程实例,这是第一部分啊,等它完成,然后这里边我这单独写出来啊,然后之后我们看第二部分,第二部分呢,咱们查询组任务就是汤一看它啊里边有什么任务,那现在我来做一个查询。等他成绩出来啊。查询组任务方法执行之后,大家看啊,里边报错了,咱们看他报的什么错啊,我们看这里边我们看啊,这错误应该是数据库相关的,然后后面看他说这个username not found就用名不存在,看他报具体什么原因造成的啊,大家这个。还记得吗?我们当时第一天讲这个activity中给大家提过啊,因为它默认用到了,所以要求咱们测试中里边的用户就要在你的数据表里存在,然后大家看啊,他查了咱们的这个表,根据姆零一查询,然后这个表是什么,你看这个。
14:12
应该记得啊,做权限管理中那个用户表,所以咱为了测试,我们在用户表中加一条这个用户的数据,我们现在查的是汤姆零一,所以咱给他手动加一下,为了咱们测试,当然后面咱们在完整项目中的用户可能都是登录之后进行实现的,目前啊,咱里边加一下,因为他要从这里边查与的用户,如果不存在就报刚才这个错误,说用户名不存在,那我们来加一下啊。找到咱这个表叫user。然后在里边呢,我就加一个叫汤姆零一啊,咱们随便改一个数据啊,我就把这个改一下吧。汤姆零一。加上之后保存特别注意啊,你加的时候这里边啊,这些值要是零,如果是一表示逻辑删除了,我现在把这就加上了,然后加上之后咱们把这个方法再来试一下查询组任务啊,根据汤姆零一进行查询。
15:10
然后它里边如果正确的话,会返回相关这些信息,等它进行出来啊。咱们看到啊,已经查询出来了,这个组任务啊,就在最后已经有了,然后下面咱们开始拾取组任务,刚才咱们说到了,我们现在有两个候选人,汤姆零一,汤姆零二啊,这位置啊,刚才写错了,应该是汤姆零一。咱们来做这个拾取,如果说汤姆零一拾取之后,那汤姆零二它就不能在精拾取,因为你这个任务只能一个人做,你不能两人同时做,比如说你汤姆零一通过,汤姆零二不通过,那最终就没有一个结果,所以咱们啊,一个人失去之后,另一个人就不能再失去,咱们用汤姆零一完成逝去。等他定出来啊。
16:01
啊,咱们看到啊,最终我这里做了输出,就是提出我们任务实际完成了,然后咱们查询一下汤姆零一这个人的代办任务,就是他目前应该有这个正在或者代正在等待办理的任务啊,咱给他查出来,查出来之后咱就来办理他的任务,然后最终完成这个流程啊,等他。查出来啊,带分任务。最终咱们进行这个办理。现在啊,也已经查出来了,然后最后我们就完成这个个人任务的办理,咱们等他最终执行完成。啊,大家看啊,这个也已经完成了,就是现在啊,他已经完成这个任务的办理,所以咱们现在啊,把这过程就最终完成了,这周我们说到里面这个叫任务组,当然在过程中,比如现在啊,我们根据里边这个叫任务ID,可以把任务再归还给这个组里面去,这个我就不测试了,因为过程都差不多啊,咱通过它,比如我现在汤姆零一这事情不想做了,可以把它放到任务组中,由别人再去做这事情,或者说现在汤姆零一可以把任务交接给汤姆零二,由汤姆零二把这个最终完成。所以以上就是关于任务组一个说明,最后再总结一下啊,如果说我们要临时变更任务负责人,按照之前方式就要改流程,这样的话系统扩展性会很差,所以咱可以怎么做,设置多个候选人,从候选人中选择某个人来完成这个任务,这就是任务组的一个最终的说明。
我来说两句