00:00
各位同学大家好,下面呢,我们来学习activity中的下一个内容网关,网关这个内容呢,咱们之前呢做过一个简单的说明,下面给大家进行详细的讲解。首先我们看第一个网关是什么呢?网关用来控制流程的流向,比如我现在我们这个流程他该往哪个节点中进行执行,通过网关可以控制,其实没有网关这个流程也能进行这个往下执行,但是有网关之后,咱们可以做一些复杂的流程。比如说大家注意啊,咱们之前呢,讲那个流程变量的时候,曾经提过一个场景,当时咱们只做了一个说明,并没有做演示,我这里边集合网关给大家做演示,咱们看一下啊,就这个过程,比如现在我进行请假,我们约定如果请假小于等于两天,由部门经理审批,如果说大于两天由总经理直接审批,最终到人事那里进行备案,这个过程中大家看到啊,是不是有一个判断的过程,判断你的请啊天数是否大于两天,如果大于两天是不是做不同的这个流向,所以咱们这个过程中通过网关可以实现,没有网关也可以做到,但是用网关之后,它会变得更加的方便,另外网关能实现更复杂这种流程。
01:24
包括咱们之前提到了啊,我们这个流程变量可以用UEL表达式进行实现,咱们之前只演示的第一个,所以下面给大家结合这个网关会演示第二个场景,然后这过程中咱们看到啊,在我们任务和任务间的连线上边使用这种表达式,比如咱们决定这个天数大于二,或者天数小于等于二,它执行不同的六项,这个咱们马上进行演示,所以我这里边特别写到大家看这段话啊。网关通常和流程变量一起使用,这是我们说的网关的说明。网关有很多种类,分别包含排他。
02:08
并行包含,还有一个叫事件网关,但是事件网关呢,在实际中用的并不多,咱们比较常见的是我写的这三个排他、并行,还有包含,那下面呢,给各位分别进行演示,首先我们看第一个啊,叫排他网关,咱们看这个词啊,排他什么叫排他?说的通俗点啊,就是他很孤独,跟谁都不能混到一起去,就我自己做任何事情,排他往外怎么理解,只有一条路径会被选择,这个就叫排他网关,那咱举个例子给大家说明啊。比如现在啊,我有这么一个场景,什么场景,大家看这张图里边啊,我把图先给大家复制出来,然后一会儿我实际给大家把这图咱们现场来画一遍,看一下这个图在我们这个工具中该怎么去画,那咱们啊到这里边把这图先解释一下啊。
03:04
大家看到啊,这是一个最基本的一个请假的一个流程。然后流程是怎么样,我们来看啊,首先我现在开始请假,然后这里边你看啊,加了一个东西,就这个是不是一个差,它叫什么,就是咱说那个叫排他网关。我写到这里啊,排查网关,然后那个网关怎么决定的呢?比如现在我约定啊,当我请假天数小于等于两天,那是由部门经理审批,部门经理审批之后,最终人事经理进行备案,这是一个基本流程。而现在还有另外一个流程,当我请假天数大于两天,那怎么做,由总经理直接审批,最终人事经理进行备案,这是一个基本流程,而在流程中大家看啊,我现在这过程中是不是只能执行一条路径,就是执行一条路径会被选择,就是要么你的天数小于等于二,要么天数大于二小于等于二执行这个流向,大于二执行这个流向,这个就叫排他网关,通过它可以进行实现。
04:13
所以以上啊是咱对于它的一个说明,我再重复一遍啊,然后咱画下这个流程图,排查网关,指的就是只有一条路径会被选择。这个是咱们对它的一个介绍啊,然后下面呢,咱就结合这个具体例子给大家画一下这个流程,然后咱们通过代码来做一个测试。那这里边我来写一下啊,比如现在我就参考这个图来画一下啊,这里写着三天,那咱就来个两天了啊,但是其实都一样啊,咱就写的更。严禁点两天,比如现在按照这个流程,我们约定啊,当我请假天数小于等于两天,由部门经理审批人事备案,如果说这个天数就是大于两天,或者说在两天以上,那需要由总经理就是直接进行审批,就是不经过部门经理大约两天,直接找总经理审批,最终认证备案。咱们现在啊,用排查网关把这流程图给大家来画一下。
05:15
我现在啊,来这个工具里边,咱们之前画的大家也看到了,是不是都比较简单呀,没有什么特别条件,所以咱们现在就画一个复杂流程,那我来画一下啊。我在流程里边点击新建模型,然后咱起个名字啊,我就叫这个请假。或者说写一个叫这个完整的。请假啊,咱就起这个名字啊,然后把它创建,创建之后呢,在里边咱来画一下啊,首先我们有一个事件的开始肯定是必须的,然后开始之后在里边有很多这个用户的这个任务啊,那我们来画一下啊,那先在里边写上三个用户任务,一会儿我们再进行完善。
06:02
我就放到这个位置啊。放到这里。这个地方啊,然后这里边还有一个结束的这么一个部分,就是结束世界啊,就是它。咱们现在啊,把这都放到这里,那这个写完之后咱怎么看呢?比如现在啊,我在这里边。这个部分咱们叫做部门经理审批。然后这个我们起个名字,我们叫做总经理审批,最后这个叫人事备案。因为这是备案嘛,要决定你比如说你请几天假,然后扣你几天工资啊,他是为了这个目的,所以现在这么一个流程,那流程怎么样,大家注意啊,我现在开始之后,咱们进行这个走向,那我们首先是不是一个判断过程,这一判断过程中呢,我就加上一个叫排他网关,那网关怎么加,大家看里边啊,我们看这个位置。叫什么?是不是叫get with,这叫网关,第一个就叫排他,然后包括其他种,咱先写第一个啊,我把这个给它拖过来。
07:08
然后大家看啊,就是你写一个这个菱形加上一个叉,这叫排他网关,那呢给它连到一起去。首先啊,加个连线,我先给他加上啊,一会咱再完善,然后这里边部门经理审批,另外在这过程中总经理审批。等到这位置啊,然后最终都要进行这个人事的备案,不管你是部门经理审批,还是这个总经理审批,都要人事备案,人事备案之后,最终这个流程结束啊,这是咱们画的一个基本的过程,然后这个画的过程中,下面咱要加上一个条件部分,就是在这个两条连线上加上条件,比如说咱们写上这个啊,我再加一个名字,就是这个请假天数,比如说咱们写一个大于等于两天。
08:00
那咱们部门经理啊,小于等于两天啊,说错了啊,小于等于两天部门经理审批,然后这个位置再加一个,我们叫大于两天,那就是总经理直接审批啊,这是我们写的这么一个文字的描述啊,小于等于两天部门经理审批,大于两天,那就是总经理直接审批,最终都要人事备案。但是我这么写的话呢,只加了一个文字,它并没有做执行,所以咱在里边啊,就要加上一个东西,就刚才一直提到的这个东西。叫什么流程变量啊,咱也把之前说这个啊,再复习一遍啊,这怎么去用。它包含global的,然后用表达式进行实现,你可以写上单个的表达式,或者在里边加上你这个条件,也就你流程的走向,而我们现在写的大家看啊,是不是就是这种写法,那我在里边加上一下啊,注意怎么加啊,第一个我点中这条线。
09:01
就是这条线啊,然后这条线下面看,这里边叫flow condition是这个流向的条件,把它点开,里边加上咱这个条件的表达式。我加下啊,这里边就是这个天数小于等于二,这就是表达式保存,保存之后在这条线上我们继续来加,同样加上表达式。天数大于二总经理审批,所以现在啊,两条线的表达式我们就加上了,也说以上这个基本的流程就完成了,完成之后咱们在这个几个用户任务里边加上它那个就是任务人啊,或者那个执行任务这个人,这里边我就直接写固定了啊,比如现在部门经理审批,指定他这个审批人,我们给他起个名字啊,比如我叫这个就是。这个。照六就是它了啊,就照六进行审批。然后这里边总经理啊,加上一个人,比如这个总经理啊,他叫这个。
10:05
这叫这个什么狗剩啊,这是总经理嘛。啊,名字不重要啊,这个名字就叫什么都是一个代号已啊总经理,比如他叫狗剩啊,就算他叫狗剩,他也能当你总经理啊,然后最后有一个人事备案,这个人事呢,咱也加上这么一个人,比如这个人我们叫这个。啊叭如叫这个什么小翠啊,就是它啊,把这个保存现在啊,这里边就完成了,咱们再检查遍啊,我们开始,然后经过这个排他网关进行判断,如果说你的请假天数小于等于两天,由部门经理这个赵六进行审批,如果请假天数大于两天,由总经理这个狗剩进行审批,最终不管谁审批之后,都要进行到这个人事小翠这里进行备案,最终结束,这是我们画的这么一个排他网关的流程图啊,所以大家把这个自己好好去画一下啊,比之前画的要稍微复杂一点。
11:03
然后这个之后,咱们现在把它保存啊,包括这里边啊,我给它改一个名字,因为这个名字咱就叫这个。请假啊,我们叫这个,比如叫。002啊,咱就叫这个名字啊,给它起一个名字,为了咱们后面操作方便。然后最后把它保存,保存的话,咱就叫这个完整请假,所以现在啊这个就完成了,是咱画的这个流程图,流程图画完之后,下面呢,咱把它进行导出,咱就叫这个请假002啊这个名字把它导出出来,现在啊这个流程图就画了,用的是排他网关,各位注意这个特点啊,就是它里边再重复一遍啊,我重复这么多遍,各位应该给它能记住啊。只有一条路径会被选择,这个叫排他网关,现在这就完成了啊,完成之后呢,下面我们做一个最基础的测试,测试代码我这里就不写了,因为之前咱都写过啊,咱就把一些核心代码复制过来,改成咱们实际效果,最终试一下这结果是怎么样的,现在文件拿过来了。
12:15
然后我在里边呢,比如现在啊,我创建一个测试文件,我们叫这个process task啊,咱为了区分啊,咱加上一个叫getway。就是网关嘛,Getaway。然后点OK,把这创建啊,创建之后在里边呢,加上几个基础的方法,跟之前一样啊,首先第一个方法我们就是部署流程,定义一个方法,然后第二个方法应该是启动这个流程的实例,我给他拿到上面来啊。一会儿咱再改,我先把这个结构先拿过来。这个啊,放到第二部分,或者说你把它写到一起去也都可以啊。定义流程部署,然后启动流程实例,然后这个之后我们的下一部分啊,就这里边,比如说我们看一下啊,这代码咱们换一个啊,因为之前这个代码咱找这里边的啊,比如咱们的下一部分,那咱可以把这个任务进行完成,包括查看这个个人的代班任务啊,咱加上这两个方法。
13:20
为了我们啊,测试进行使用。给他拿过来啊。这里边是刚才我们写那个任务组,那个拾取组任务啊,这个先给它去掉。你就保留一个最基础的这个部分。这个过来啊,所以下面咱们这里边做个修改啊。首先我们看第一个方法,第一个方法呢,那我们就是进行流程定义的部署,咱们找一下我现在这个文件的名字叫请假002啊,这个改一下啊。为了防止写错这个给他复制管啊,就是各位避免这种没有必要的问题啊,你把这个文件名字写错了,这个就没有什么意义啊,咱就直接复制就可以了,这里边为了区分我教这个。
14:06
请假申请流程002,这个是我们做的第一部分,然后第二部分呢,咱们把这个实例进行启动,但是启动过程中各位注意啊,我刚才在里边咱们看一下是不是加了这个表达式啊,表达式里边有这个D,就是它的天数,这个值你可以写个对象传入都是可以的,比如说我现在啊,写个右侧对象,然后里面有个name,你可以来一个右侧点name进行传递,都是可以做到的,给咱之前也做个测试啊,现在我就写个D,通过它传入你的天数。那我在里边写一下啊。就是设置请假的这个。天数,咱们建个map集合,通过map来设置它的变量名字叫Z加一个值,比如咱就写一个二啊,比如现在我请假两天,按照流程各位都明确啊,请假两天是不是就是部门经理这个照六审批,最终人事备案,然后给他完成啊,这时候写到的啊,然后下面我们进行实例的这个启动,这里边加上他的名字啊,他这个名字看一下啊,叫请假002。
15:18
把这个拿过来。所以现在啊,这个实例就完成了,然后完成之后我们继续来看啊,下面咱可以查一下它那个相关的一个任务,把任务做个查询。那这个任务怎么查,比如说咱们看到啊,如果说现在啊,我这个天数是二,那咱流程是不是应该到这个照六的位置,那要查一下照六它里边有没有当前它这个就是代办的任务,把这个我们做个查询就可以了,查询赵六的这个代办任务,也就是这个方法。这个啊,拿到上面来啊,这个位置。就按照我们这个步骤啊。查询代办任务,通过他就看一下你的流程是否到了这个位置,咱们这里边两天嘛,应该是照六进行审批。
16:05
这是啊,我们看到的,所以咱们通过它进行实现,包括这个照六啊,它可以把任务进行完成,包括做后续处理啊,这个咱也做个测试啊,就是。赵六。这个给他就去掉了啊。直接完成这个任务。所以现在啊,我们写了一段测试代码,然后下面咱做一个测试啊,那咱们执行一下。为了视频效果啊,因为这执行过程中呢,可能有的时候时间会稍微长一点,所以我在运行过程中,我把视频就暂停了,咱们直接运行,直接看最后的结果,那首先第一个啊部署流程定义,我们先进行执行,然后咱们等待它效果出来。这个效果已经出来了啊,然后咱们执行第二个方法启动流程实例,在这个创建过程中,我们就是把它请假天数给他就设置进去,这个方法现在我们做个执行,目前的天数是二,当我这个一启动执行之后啊,指示力执行之后,然后它里边应该是到了我们这个部门经理审批这个地方,因为它这个里边是处理小于等于两天的这个相关,这个就是审批。
17:19
那等他顶出来啊。好,我们看啊,刚才执行之后呢,里边出错了,看他出了什么错啊,他告诉我们说这个表达式里边的属性未知,就是他不知道这里边这是什么东西,大家看一下我这里边是哪里写错了,各位看我的这个位置啊,你看我现在是不是启动了一个流程实例,然后在启动过程中,咱是不是要指定你这个流程变成这个值,你看我这里边好像咱们没有指定啊,所以我现在把这个map咱们给他。放进去。这个map啊,现在应该就可以了,刚才少写的这个代码,这个各位特别注意一下啊,你这里边要进行指定,因为你的流程图里边有那个表达式的部分,这里边必须把它做一个指定,现在我给他指定了,然后咱们再进行执行,再看下这个效果怎么样啊,我们再执行一下啊,这样这个结果。
18:16
现在呢,流程实例正常启动了啊,里边是可以了,然后咱们进入到下一步操作,下一步操作呢,我们就查询一下这个赵六这个人有没有代办的任务,因为按照我们的流程,目前应该是到了赵六这个地方,就是部门经理这个地方,那咱看他到底有没有,我现在根据赵六我们来查询一下他当前这个代办的任务有没有相关这个内容啊,咱等他执行看一下啊,如果赵六有的话,一会儿咱再用这里边这个狗剩查一下,狗剩目前还是没有看他能不能查到啊,咱们一点来试一下啊,先查这个赵六。然后大家看啊,赵六是不是查出来了,证明这是正确的,就是现在流程到了赵六这里,然后咱们查一下这个狗哨。
19:04
啊,看这个名字啊,应该叫狗剩这个名字,看一下狗剩有没有啊,正常来讲狗剩应该是查不到的,因为咱们目前流程没有到他这里啊,咱们试一下啊,看它对不对啊。然后各位来看啊,最终的结果是不是零啊,就是狗剩他当前没有代位任务,因为当前到了赵六这里啊,证明咱们这个完成了,然后照这个任务呢,咱可以把它完成,它完成之后就到了下一个这个位置,就是人事备案这里就是咱说这小翠啊,它这个位置,然后这个执行下啊,咱让它执行完成。把这个执行,把赵六这个代办任务让他执行完成。赵六的任务呢,应该是已经完成了啊,完成之后呢,我们查一下这个小翠啊,他当前应该是就那个人事的备案啊,应该有一个代办任务。然后最后啊,这个小翠把它任务完成,那这流程就走完了,比如咱们之前说这个TV的一个特点,它会自动往下知晓,当我这个当前节点完成之后,会自动推进到下一个节点,就是用这个过程进行实现啊,咱给它做一个比较完整测试,先查一下这个小翠当前的任务。
20:21
等他啊,出来。然后大家看啊,这个小翠人事备案是不可以了,最后把这个小村这个执行,那它主要的流程,就整个这个完整流程就都做到了以上啊是咱家这个叫排他网关,咱们一个完整测试。那这个之后呢,咱可以再试另外一条线,另外怎么试呢?比如说咱们改一下这个地方,各位注意啊,刚才咱的天数是不是二,比如现在啊,我给他加上一个三,这什么意思,我请假天数是三天,按照流程会怎么样,这很明确啊,如果说你大于三是不是应该是总经理审批,就是狗剩经审批,那咱们把这个也试一下啊,我在这里边加个三。
21:10
然后这里边改成这个叫狗剩。由他进行审批,然后狗剩之后啊,把它任务完成,也是到小翠那里,然后由他最终备案,把这整个流程完成,那咱把这个再来试一下啊,我现在启动流程实例,他的请假天数是三天,当这个一行之后,应该是到了狗剩这里,咱通过狗剩再做一个查询。咱们先启动这个实例。这个实例啊,已经启动了,然后咱们查一下啊,这个总经理狗剩他当前的代办任务正确的话,应该是能查出来,如果能查出来,因为咱们这个流程就真正正确了啊,按照里面的这个流程变量加上排他网关,实现了最终这么一个流程的效果。啊,等他最终查出来啊,我们来看一下啊。
22:03
然后大家看一遍啊,最终查的结果是什么?狗剩是不是总经理审批,所以证明啊,咱这过程就完成了以上啊,就是我们说这个排他网关的使用。咱们通过这个具体例子给大家做了演示,所以各位啊,记住这个网关的使用,包括要会结合流程变量一起进行使用。
我来说两句