00:00
各位同学大家好,下面呢我们继续来学习activity,刚才咱们讲到了任务分配,完成了它三种方式说明,那下面呢,我们来看一个新的内容,这个内容叫做流程变量。其实流程变量呢,咱刚才已经用过了,这里边我们再做一个更详细的说明,首先咱们说明啊,什么叫流程变量,我们来做个介绍,其实流程变量呢,在activity中呢,是一个重要的角色,我们流程转移的时候就需要用到流程变量,而流程变量里边有一个具体例子给大家解释一下啊,我这里边给各位画张图再来说明。比如我现在有这么一张流程图,这个表示开始,然后这个表示结束,在过程中,比如现在我们做个请假,那请假过程中大家想一下啊,我们的第一部分,咱们是不是要填写这个请假单,我写到这里边啊,就是填写请假单。
01:02
然后填写请假单之后,下一步操作,我们是不是要进行这个审批,有比如说我现在啊,有这么一个流程,什么流程,假如现在我请假,如果请假的天数在三天以下,那咱们直接由这个部门经理审批就可以了,我写一下啊,就是部门经理审批,如果说啊,我的请假天数大于三天,除了部门经理审批之外,还需要总经理审批,这里写一下啊,这个叫。总经理审批。然后最终呢,都是到这个人事这里边进行备案,划到这里啊,这就是人事备案。最终咱们就是。完成了啊这么一个过程。这是我们说的一个最基本一个流程,然后把流程给大家画的完整点啊,首先咱们开始先填写请假单,然后填写请假单之后,下面呢,我们走这个流程,然后流程中我们要经过这个部门经理审批,但是部门经理这个审批过程中在里边啊,有这么一个过程,就咱刚才说那个判断,我给大家划到这个位置啊。
02:20
就是在我们的这个里边,然后换一个。这个颜色啊,就换这个颜色。首先啊,这里写到,如果说啊,你的请假天数在这个三天以下,那咱们直接啊部门经理审批,然后到人事备案,如果说啊请假天数大于三天,还需要总经理审批,最终再到这个人事备案,就是最终啊人事都需要备案,只是这里边我们需要做一个判断。那判断怎么样,我写一下啊,首先比如写一下这里边,假如咱的变量就是天数嘛,这个天数如果说它小于等于三,那咱直接就是部门经理审批之后,那直接走这个人事备案,如果说这个天数他大于三。
03:08
那这个时候呢,还需要总经理审批,然后再到人事备案,所以在里边啊有这么一个过程,然后过程中大家看啊,这里边是不是根据你的请假天数进行判断,而这个请啊天数这个day,就是咱说里边的这个东西,它叫什么,刚说过啊,叫流程变量,通过它决定我这流程到底怎么去执行,就刚才我举的这个例子,我再重复一遍啊,比如现在我约定一个场景,我们现在请啊天数如果说小于等于三天,那直接部门经理审批到人事备案,如果请假天数大于三天,部门经理审批之后,总经理还需要审批,然后再到人事备案,所以它里边有这么一个过程啊,但是最终肯定是到这个。结束的这个位置。这是咱们说的这个叫流程变量,而现在这个请假天数就是咱说的流程变量啊,这是咱们对于它的一个基本的解释,大家记住啊,什么叫流程变量,然后咱们继续来看啊,流程变量呢,有它的一个作用域。
04:15
就是流变量作用域可以是一个全局的,也可以是一个局部的,那什么意思呢?强调啊,就是流程变量在默认情况下是一个叫做流程实例这么一个范围,就是在当前实例中,我这变量都可以使用,另外可以是一个logo,就咱说的局部,什么叫局部?就是当前这个任务和执行实力,仅仅针对一个任务或者一个执行范围,在这范围中能使用,超过范围他就不能用了。啊,这是提到的,另外里边有个细节,如果说啊。我们是一个global这个全局变量,那变量名字是不允许重复的,如果你设置相同名称的,你后面设置值会把前面给它覆盖掉,但是咱这个logo变量就不一样了,因为他们在不同的任务中或者不同的实例中,所以它们的作用是不会产生影响的,变量名是可以相同的,是没有影响的。
05:13
以上啊,对于它的一个基本说明,咱们在总结变啊,什么叫流程变量,就是定你这个流程转运的里边这个过程,比如咱们刚才说这个例子,我请假天数大于三天,小于三天,他怎么去执行,通过这个天数进行决定,这叫变量,它有这个范围,还有logo范围。这是一个介绍啊,然后这个之后我们继续来看啊,流程变量到底该怎么去用,其实咱之前大部分都用过了,首先我们看啊,第一种方式就是咱们之前用过的,就是咱就重点演示第一种方式,我们的做法就是咱们判断代码啊,就是咱之前刚写过的,大家找到啊,我们把这代码打开。咱们看里边就是。这个位置各位应该记得啊,就是咱们在进行任务分配的时候,我们通过这个变量是不是指定你的任务人,比如这个31LUCY a,三二叫me,这个是什么?就叫流程变量,我们在流程里边通过表达式方式进行实现,就咱之前都写过,就是do符号加上大括号和S1和S2啊,就说咱们这种写法,就是在启动流程的时候就可以设置变量,咱们的做法就是把这个变量放到map机后中,然后在里边进行设置。
06:34
啊,这是提到的,另外里面有一个细节各位特别注意啊,这里我要特别强调一个细节问题。咱们把这个再打开。大家看啊,我们刚才在演示这个的时候呢,曾经咱们设置过这么一个值。应该记得啊,是咱说那个业务标识或者叫业务key,而他的方法叫start,你看两个方法是不一样,但是传的参数的含义是不一样的,所以咱一般一个原则啊,比如说咱们现在一般来讲这个就是我们刚才说这个叫做。
07:10
流程变量,这个咱们一般要求啊,最好跟业务是分离开来的,就是跟业务是不相关的,而跟业务相关的咱就用这个叫b c key进行实现,比如现在啊,我传这个值,其实我可以传一个字符串,比如传入我那个相关的信息是可以的,但是这里边一般只做流程使用,咱们一般建议跟流程分开,就跟我们的业务分开啊,只做流程使用,而真正跟业务相关的,我们传这个b key啊,所以它里边就是我们重的很多方法,它的目的在这里个方法有自己特别的用途,跟业务相关的business key跟流相变。这个明确啊,所以它一般我们是这么来使用,另外还有第二种方式,就是我们现在啊,在这个决定流程走向里边加上表达式,比如你看我这个表达式D大于二,或者D小于等于二,比如说咱们刚才的这个里边,我就可以这么写啊,就这位置我可以这么来实现,比如加上一个表达式。
08:16
然后加上比如这个D。大于三或者说D小于等于三,通过他经实现,就是咱们刚才用那个叫uel表达式做到这个就是流程变量的使用方式啊,那下面我们来具体演示一下啊,代码都是刚才写过的,咱就快速测试一下,首先第一个给咱刚做过啊,在启动流程的时候,咱们能设置这个流程变量,就是通过这个呃三一呃三二进行设置,那这个我们来做个测试啊。那怎么测试呢,咱这么来做,我现在啊,重新创建一个测试类,我们叫这个DEMO2。然后在里边呢,保留最基础代码,因为咱们大部分代码都写过了啊,咱就保留这几个代码。
09:03
我们看一下哪几个代码啊。咱们看到。首先我们的第一个就是部署流程定义,咱们用这个。就是加班啊,这个里边叫这个名字,然后里边有这个。表达式和SIN1和S2,然后第二个呢,咱们启动一个流程实例,比如说我们叫Lucy Mary啊,咱为了区分我就叫这个LUCY02啊,零二为了区分一下啊,然后最终我们查询一下,就是当前这个人的这个代办任务,比如咱们先查这个Lucy,或者查这个Mary。啊,这个咱一会儿做个查询,这是我们用它进行测试,那咱们看具体该怎么用啊,第一种方式在启动流程时设置刚才试过了,咱们再试一遍啊,现在我来重新操作一下第一步。部署流程定义。等它启动起来,然后第二步启动流程实例,在启动的时候,向这个流程变量中设置它的任务人,一个LUCY02,一个麦零二啊,等他出来啊,然后咱们执行这个方法。
10:11
下面呢,咱们启动流程实例。然后启动之后,我们来做个查询,查询LUCY02这个代办任务啊,这个肯定能查到,因为他现在已经完成了分配,等他执行之后啊,咱们进行实现。然后咱们进行查询,查询LUCY02,最终得到它目前代办的任务啊,这就是第一种方式啊,在启动流程时进设置,然后它的作用域是整个这个流程实例啊,这咱之前测试过啊,然后这个之后呢,还有第二种设置方式,在任务办理的时候设置流程变量,那怎么做咱们看一下啊,这个代码之前也写过,比如我们现在啊为这个张三,就是他这个任务进行办理,然后办理之后我们在里边指定,比如下一个这个三二是这个赵或者说王或者什么理,然后最终完成,在这个时候可以进行设置,另外还有一个通过当前流程实例经设置。
11:10
注意这个过程中啊,你的流程必须没有执行完成进行设置,通过它进行做到啊,那咱们下面继续来演示一下啊,我把这个代码给各位复制出来,然后咱们测试,刚才这个之前都试过了,咱可以能查到LUCY02这个数据啊,那我们继续来试一下啊,咱说一下怎么做。首先啊,我们的第一部分没变,然后第二部分在启动实例的时候,咱们一会儿再进个实例,为了区分一下,我叫LUCY03,然后这个我先不设置,就设置一个,呃1LUCY03,这样的话把实例已经启动,然后启动之后呢,咱把这个LUCY03这个任务给完成,完成之后怎么做,我们设置三二是这个,比如说这个。赵啊,就叫赵了啊,然后设置之后我们再查询,应该能查询姓赵的,他里面这个代办的任务,就是通过这个过程中设置它这个任务,这个人的信息啊,通过这个做到,你看啊,Complete是不是这个LUCY03把当天任务完成,完成之后是不是到了下一个节点,下一个节点设成这个照,由他完成审批,然后咱一查这个照能查出它的内容啊,这就是我们要演示到第二个过程,在任务办理的时候设置流程变量啊,我再重复一遍啊,有同学应该没听明白,这怎么去做的,代码都是之前写过的,主要是怎么测试。
12:40
首先啊,第一部分没有什么变化,然后咱们启动流程实例的时候,我这里边为了区分改成LUCY03,然后设置任务,就是流程变量的时候,咱们这个二不径设置,然后下面我们一启动,那LUCY03是不是有这个任务,那咱把LUCY03任务给它完成,完成之后它是到了下一个节点,那下一个节点中咱之前叫麦零二,我这里没设置,我在这个时候设置,所以它的下一个节点的人是不是一个赵,咱们再查这个姓赵的这个人的这个相关的任务信息是不是能查到,所以目前我们是这么来做的。
13:18
啊,我这里边给大家再画个图,咱家特别解释一下啊,因为这个流程各位必须要给他弄清楚啊。代码就那么几行,但是过程你必须要弄明白,我这里啊简单画一下这么一张图啊,当然这图里边可能有些细节不是特别完善,比如这个结束标志啊,可能它里边不是特别对,咱就按这个图来说明这个问题啊,如果你要画的更标准,按照我们这个设计工具里边给他就笔来画一下,我这里就给大家分析这个流程。咱们啊,特别看一下啊,首先比如这里边我们的第一个,比如是这个叫部门经理审批。然后第二个,比如说是这个叫。
14:00
总经理审批,那咱怎么做呢?我们在创建流程实例的时候,来指定这个节点中它那个审批人,比如我们是这个叫LUCY02,就是这个啊,你看我刚才里边写的应该是这个LUCY03啊,就是。然后我们这个人不进行指定,就不指定它里边由谁去做这个事情,而我们怎么做,我们现在一启动实例,这是指定好了,指定好之后咱的下一个操作,让LUCY03他完成这个任务,他一完成之后到哪里是不是到了总经理审批这个节点,而他在完成任务这个时候就来指定总经理审批是由谁做到了,我们刚才指定是不是这个账。是不是这个,而现在当一完成是不是到这个位置,咱就能通过这个照查询他当前这个代办任务信息啊,这是我们目前做的事情,用这个叫流程变量这个过程进行实现,在任务办理的时候进行设置。
15:04
这是我们说的这个要做的这个测试的过程啊,那下面呢,我们来执行一下啊,首先第一个我先启动一个流程实例。就是LUCY03,然后把LUCY03的任务给他完成,办理这个过程中,设置下一个节点的任务人是再查询赵的这个代问任务,如果能查到就正确了。啊,那咱等他进行出来啊,就是创建一个新的流程实例。让他执行啊。执行之后,下面呢,咱们把LUCY03的任务给他完成啊,用那个complete完成,完成过程中设置下一个节点,这个任务人是谁,就是个三二啊,之前这个里边应该都配置过那个UEL表达式,通过它进行操作。等它完成啊。这个完成之后,咱们下面来查询姓赵的这个人的那个代办的任务信息,这里边我已经做了指定啊,最后咱看一下能不能查到内容正确,应该是能查到,证明咱这个指定任务变量是成功的。
16:12
最后啊,我们等待它执行出来看一下啊。然后大家看啊,最后这个位置是不是有这个照,然后它里边有这个相关的信息啊,所以现在这个我们就做到了啊,就是以上咱完成这个过程,然后这个设置的时候呢,还有一种方式当就是在流程啊。通过当前流程实例设置就指定它的ID,通过这个也可以设置啊,这咱就不测试了,因为过程是一样的,你也可以参考我刚才的方式把这个测试一下,但是过程都是类似的,所以以上啊就是关于这个流程变量的基本使用,另外呢,在这过程中我们也能设这个叫logo变量,过程是类似的,但也看一下啊,就是我们在这过程中只先先查询当前这个张三的任务。然后在里面设置它里面这个信息啊,最终做输出啊,这也是我们说这个logo变量,但是logo变量的特点是什么呢?它的范围肯定没有global大啊g global是一个全局的这么一个变量。
17:14
以上啊就是关于流程变量说明,最终给各位再来总结一遍啊,流程变量是什么呢?它用于我们进行流程转运时候进行使用,比如说我们现在啊,在这过程中请假天数大于两天和小于两天等等做不同处理,然后它里边有global的,有的,它的具体用法就是通过uell表达式进行实现,刚才我们做了一个简单测试,通过表达式指行它的任务人,或者说你在这个决定流向里边用表达式决定,比如大于两天或者小于两天,他会怎么去做。然后咱们分别做了最基本的测试以上啊,就是流程变量一个说明。
我来说两句