00:00
各位同学大家好,下面呢,我们继续来演示如何进行任务分配,刚才咱们完成了固定分配以及表达式分配,在表达式里边我们分别演示了通过uel y以及通过uel me的方式进行实现。那下面呢,我们看第三种方式,就是监听器分配,首先我们做一个基本说明,然后咱们进行实现。使用监听器方式呢,来指定你的负责人,那么这个过程中呢,咱们就不需要在流程设计的时候来指定你的是谁,比如说我们之前只经过张三李四,或者在里边加上表达式,目前就不需要这么做了,而目前怎么做呢?我们的做法就是通过监听器的方式,在你发生对应任务相关事件的时候,执行自定义的这个Java逻辑或者表达式,那什么意思呢?比如说我现在啊,我在任务创建之后就进行触发,我在任务分配的时候进行触发,或者任务完成或者所有事件的时候进行触发,这个时候来进行任务的分配。
01:08
那咱们具体怎么做,给大家先做个分析,然后进行实现。首先我们的第一步操作,咱们需要监听器的类,让这个类呢来实现一个接口,就是这个task listener。在接口中有个方法叫notify,然后咱们指定,比如说当前任务是经理审批,我们指定张三,当前任务是人事审批,咱指定李四,在我们的这个监听器中进行指定,然后指定之后我们在流程图里边配置它的监听器是谁,比如说现在啊监声器我们是在这个创建的时候进行触发,然后指定监声器的类是谁,这里边进行配置,配置之后最终完成部署与测试,部署测试跟之前应该都一样,所以下面呢,咱们通过这个过程把这个功能具体做个实现,那咱们来写一下啊。
02:05
首先我们的第一步咱们来到这里边,我现在创建一个监听器的这么一个类,我们就叫my task listener,然后让他实现一个接口,叫task listener。这是我们写的第一部分,实现之后在接口中有一个方法,这方法名字叫notify,然后通过它我们做这个具体操作,那咱们继续往下来写一下啊,怎么来写呢?就是判断,比如说当前我这个任务,或者我这个用户,这个操作叫做经理审批,我们指定是张三,如果当前是人事审批,我们指定李四,在这里边做个指定,那咱们判断一下啊,首先第一个用task中有一个方法叫get name,也就说当前我这个任务的名称什么也是这个名字,比如叫经理审批啊,这个叫人事审批,然后咱们最后判断啊。
03:03
点上ES,这是第一个经理审批,那这个时候我们做一个这个任务的指定,或者说分配你的任务。那咱分配一下啊,通过task里边有一个方法叫set a set我们指定这个指定呢,咱为了跟之前区分一下,因为之前咱有张三李四,什么Lucy Mary,李雷,韩非梅,那咱再换一个啊,为了看的更明确,比如现在第一个人我们叫这个。杰克。再加上一个判断啊,Else if。然后这个咱同样做过判断,Pass个点get name,点上equals,这个我们人事审批。那这个时候我们继续进行任务的分配,task.set我们叫这个汤姆啊,就是杰克和汤姆,为了跟之前区分一下,所以现在啊,这个监听器我们就完成了,这是我们写的这个过程啊,然后这个完成之后,咱们下面做什么呢?给大家说明啊,我们下面的做法就是在这个流程里边来做这个监听器的配置,那咱开始配置啊,首先第一个为了跟之前区分一下啊,这个我改成这个叫加班。
04:23
零三。加班零二啊,之前应该有那个零一,咱叫加班零二。就这里啊。然后改完之后,经理审批中注意啊,在经理审批里边之前,咱是不是指定了这个任务人,那我现在把这个给他去掉。单给去掉下啊,是在我们的这个位置,我们找到啊这里。给他做一个。修改啊这个位置。这些都给它去掉。这里边已经去掉了啊,然后这里边那个人事审批中的位置同样给它去掉。
05:03
因为现在不需要在里边进行指定了,现在这两个都去掉了啊,然后去掉之后怎么做呢?我们在里边呢,配置一下它那个监听器怎么配置,大家往下这个位置啊,叫task listen,把这个点开,在里边点加号进行操作,那咱看怎么做啊,首先第一个它的事件有这么几个,刚才咱们说过了啊,这事件中咱看一下这里边的描述。首先可瑞特表示任务创建后触发,然后下面表示任务分配后,任务完成后,以及所有事件触发,那我们就在任务创建后进行触发,所以我选一个create,然后第二个输入你的这个class name,就是你当前进行器里边那个类的那个部分,然后怎么写呢?注意啊,这个写的是什么?是你当前这个类的那个类,就是你的名加类的名称,那咱把它做个复制,也就是这个包名加的名字。
06:03
在里边拿过来,注意这个不要复制错啊,最后点保存这个就完成,完成之后在人事审批中用同样的方式配置这个监听器,我们给他加上啊。这个。加上create,然后加上你这个路径。最终保存。所以现在啊,这一部分我们就完成了啊,咱叫加班零二,然后在这个里边指定了监听器,这里边也指定了,然后注意啊,这位置就不需要再指定你的任务人了,因为它是通过监听器进行这么一个任务的分配。完成之后保存,我们就叫加班。保存之后啊,把这个咱给它重新导出这个模型。我们就叫加班零二就是它啊。这个导出来啊,导出之后把这个插M文件复制到我们当前的项目中来。
07:01
这个位置啊,做个复制。就是它加班零二,所以现在啊这个就完成了啊,完成之后我们最终做的那就完成这个测试,跟之前过程是一样的啊,第一步流程定义部署,第二个启动流程实例,那咱最后把这做一下啊,因为代码跟这个应该是基本是一致的啊,我就把它复制来,用它来快速改一下,因为代码没有本质区别啊,只你的这个文件名字有点变化。那咱们放到上面啊。然后这里加个注释。我们目前做的是监听器的方式分配任务啊,这个我们就叫零二。这里边也叫零二,那咱写一下啊,第一个加上你的插入文件,我们目前是这个叫加班零二。然后我叫加班零二。这个完成啊,然后第二个启动实例,咱们是加班零二。
08:03
包括就是刚才咱们演示过程中有一个小错误,大家注意避免一下啊,跟他保持一致,加班零二目前应该就正确了啊,然后正确之后下面咱开始测试,我先部署流程定义,然后启动流程实例,启动之后用里边这个任务人进行查询,看他当前有没有任务,咱们刚才分配的任务人我们也看到了,他叫做杰克啊,通过杰克我们做个查询,做测试,然后下面执行一下啊,第一个我先部署流程定义。也就这个。给他执行一下啊,等他出来结果。流程定义,我们完成了部署加班申请流程零二,然后第二个呢,咱们做这个方法。启动一个流程实例啊,加班另二。等它启动啊,启动成功之后,在我们的这个位置,我们进行查询,咱就查那个叫做。
09:02
杰克的他这个任务信息啊,那下面把这个名字啊改成这个杰克通过他做个查询,然后最终如果能查到里面这个任务就正常分围出来了,等他执行出来啊,咱们最后查一下。然后大家看啊,这任务已经就是这个已经启动了,实力啊是可以的,然后最后我们来查一下杰克,看最后的结果是怎么样啊,验证一下最终的效果。啊,大家最后来看啊,在这个输出过程中,杰克这个代办的任务信息咱们最终是不是得到了,所以证明这个任务就成功分配出来了,以上啊,就是我们演示的任务的分配,咱们最后再总结一遍啊,三种方式,第一种叫固定分配,就是你在创建流程图的时候,直接指定是张三还是李四,然后第二个用表达式分配,表达式中两种写法,第一个叫UE表,通过表达式我们通过这个名字指定,然后第二个叫u b method,通过调用method方法传参数,然后选择不同的任务人。第三种方式就是咱们刚才演示这个叫监听器分配。
10:16
咱们建个监听器的类,然后在里边进行指定,在流程图里边配置监听器,然后最终完成测试,所以以上啊就是任务分配的一个讲解。
我来说两句